{"version":3,"file":"ctt-babylon.mjs","sources":["../../../projects/babylon/src/lib/services/mapper/mapper.service.token.ts","../../../projects/babylon/src/lib/utils/scroll-config.token.ts","../../../projects/babylon/src/lib/utils/complex-links.token.ts","../../../projects/babylon/src/lib/directives/link-type/link-type.directive.ts","../../../projects/babylon/src/lib/components/shared/babylon-dynamic-heading/babylon-dynamic-heading.component.ts","../../../projects/babylon/src/lib/components/shared/babylon-dynamic-heading/babylon-dynamic-heading.component.html","../../../projects/babylon/src/lib/components/core/babylon-404/babylon-404.component.ts","../../../projects/babylon/src/lib/components/core/babylon-404/babylon-404.component.html","../../../projects/babylon/src/lib/components/core/babylon-action-banner/babylon-action-banner.component.ts","../../../projects/babylon/src/lib/components/core/babylon-action-banner/babylon-action-banner.component.html","../../../projects/babylon/src/lib/utils/utils.ts","../../../projects/babylon/src/lib/utils/normalize-items.utils.ts","../../../projects/babylon/src/lib/directives/babylon-sliders/babylon-sliders.directive.ts","../../../projects/babylon/src/lib/components/core/babylon-advantages/babylon-advantages.component.ts","../../../projects/babylon/src/lib/components/core/babylon-advantages/babylon-advantages.component.html","../../../projects/babylon/src/lib/directives/sliders/slick-init.directive.ts","../../../projects/babylon/src/lib/components/core/babylon-advantages-v2/babylon-advantages-v2.component.ts","../../../projects/babylon/src/lib/components/core/babylon-advantages-v2/babylon-advantages-v2.component.html","../../../projects/babylon/src/lib/components/core/babylon-av-c4-img-text/babylon-av-c4-img-text.component.ts","../../../projects/babylon/src/lib/components/core/babylon-av-c4-img-text/babylon-av-c4-img-text.component.html","../../../projects/babylon/src/lib/utils/tag.utils.ts","../../../projects/babylon/src/lib/utils/mutimedia.utils.ts","../../../projects/babylon/src/lib/components/core/babylon-av-img-social/babylon-av-img-social.directive.ts","../../../projects/babylon/src/lib/components/core/babylon-av-img-social/babylon-av-img-social.component.ts","../../../projects/babylon/src/lib/components/core/babylon-av-img-social/babylon-av-img-social.component.html","../../../projects/babylon/src/lib/components/core/babylon-av-txt-ico/babylon-av-txt-ico.directive.ts","../../../projects/babylon/src/lib/components/core/babylon-av-txt-ico/babylon-av-txt-ico.component.ts","../../../projects/babylon/src/lib/components/core/babylon-av-txt-ico/babylon-av-txt-ico.component.html","../../../projects/babylon/src/lib/components/core/babylon-ba-img-txt/babylon-ba-img-txt.component.ts","../../../projects/babylon/src/lib/components/core/babylon-ba-img-txt/babylon-ba-img-txt.component.html","../../../projects/babylon/src/lib/directives/widget/widget-dynamic.directive.ts","../../../projects/babylon/src/lib/components/core/babylon-ba-sli-img-txt/babylon-ba-sli-img-txt.component.ts","../../../projects/babylon/src/lib/components/core/babylon-ba-sli-img-txt/babylon-ba-sli-img-txt.component.html","../../../projects/babylon/src/lib/directives/babylon-customs/babylon-custom-mouse-pointer.directive.ts","../../../projects/babylon/src/lib/directives/babylon-galleries/babylon-light-gallery.directive.ts","../../../projects/babylon/src/lib/directives/babylon-sliders/babylon-custom-slider.directive.ts","../../../projects/babylon/src/lib/components/core/babylon-banner-gallery/babylon-banner-gallery.component.ts","../../../projects/babylon/src/lib/components/core/babylon-banner-gallery/babylon-banner-gallery.component.html","../../../projects/babylon/src/lib/directives/data-background/data-background.directive.ts","../../../projects/babylon/src/lib/services/screen-sizer/screen-sizer.service.token.ts","../../../projects/babylon/src/lib/services/screen-sizer/screen-sizer.service.ts","../../../projects/babylon/src/lib/Enum/services.enum.ts","../../../projects/babylon/src/lib/Enum/views.enum.ts","../../../projects/babylon/src/lib/utils/clean-props.ts","../../../projects/babylon/src/lib/services/mapper/mapper.service.ts","../../../projects/babylon/src/lib/components/core/babylon-global-modal/babylon-global-modal.component.ts","../../../projects/babylon/src/lib/components/core/babylon-global-modal/babylon-global-modal.component.html","../../../projects/babylon/src/lib/components/core/babylon-modal-popup/babylon-modal-popup.component.ts","../../../projects/babylon/src/lib/components/core/babylon-modal-popup/babylon-modal-popup.component.html","../../../projects/babylon/src/lib/services/modals-service/modals.service.ts","../../../projects/babylon/src/lib/components/core/babylon-banner-info/babylon-banner-info.component.ts","../../../projects/babylon/src/lib/components/core/babylon-banner-info/babylon-banner-info.component.html","../../../projects/babylon/src/lib/components/core/babylon-banner-newsletter/babylon-banner-newsletter.component.ts","../../../projects/babylon/src/lib/components/core/babylon-banner-newsletter/babylon-banner-newsletter.component.html","../../../projects/babylon/src/lib/utils/organization-name.token.ts","../../../projects/babylon/src/lib/components/core/babylon-blog-details/babylon-blog-details.component.ts","../../../projects/babylon/src/lib/components/core/babylon-blog-details/babylon-blog-details.component.html","../../../projects/babylon/src/lib/components/shared/babylon-search/babylon-search.component.ts","../../../projects/babylon/src/lib/components/shared/babylon-search/babylon-search.component.html","../../../projects/babylon/src/lib/directives/babylon-pagination/babylon-pagination.directive.ts","../../../projects/babylon/src/lib/components/core/babylon-blog-list/babylon-blog-list.component.ts","../../../projects/babylon/src/lib/components/core/babylon-blog-list/babylon-blog-list.component.html","../../../projects/babylon/src/lib/services/babylon-widget-search-loader.service.ts","../../../projects/babylon/src/lib/components/core/babylon-booking-widget/babylon-booking-widget.component.ts","../../../projects/babylon/src/lib/components/core/babylon-breadcrumb/babylon-breadcrumb.component.ts","../../../projects/babylon/src/lib/components/core/babylon-breadcrumb/babylon-breadcrumb.component.html","../../../projects/babylon/src/lib/components/core/babylon-breadcrumb-v2/babylon-breadcrumb-v2.component.ts","../../../projects/babylon/src/lib/components/core/babylon-breadcrumb-v2/babylon-breadcrumb-v2.component.html","../../../projects/babylon/src/lib/components/core/babylon-c1-txt/babylon-c1-txt.component.ts","../../../projects/babylon/src/lib/components/core/babylon-c1-txt/babylon-c1-txt.component.html","../../../projects/babylon/src/lib/services/color-panel.service.ts","../../../projects/babylon/src/lib/components/core/babylon-color-picker/babylon-color-picker.component.ts","../../../projects/babylon/src/lib/components/core/babylon-color-picker/babylon-color-picker.component.html","../../../projects/babylon/src/lib/components/core/babylon-comingsoon/babylon-comingsoon.component.ts","../../../projects/babylon/src/lib/components/core/babylon-comingsoon/babylon-comingsoon.component.html","../../../projects/babylon/src/lib/components/core/babylon-contact-address/babylon-contact-address.component.ts","../../../projects/babylon/src/lib/components/core/babylon-contact-address/babylon-contact-address.component.html","../../../projects/babylon/src/lib/components/core/babylon-contact-form/babylon-contact-form.component.ts","../../../projects/babylon/src/lib/components/core/babylon-contact-form/babylon-contact-form.component.html","../../../projects/babylon/src/lib/components/core/babylon-contact-form-v2/babylon-contact-form-v2.component.ts","../../../projects/babylon/src/lib/components/core/babylon-contact-form-v2/babylon-contact-form-v2.component.html","../../../projects/babylon/src/lib/components/core/babylon-contact-how/babylon-contact-how.component.ts","../../../projects/babylon/src/lib/components/core/babylon-contact-how/babylon-contact-how.component.html","../../../projects/babylon/src/lib/components/core/babylon-contact-map/babylon-contact-map.component.ts","../../../projects/babylon/src/lib/components/core/babylon-contact-map/babylon-contact-map.component.html","../../../projects/babylon/src/lib/components/core/babylon-container-text-l2/babylon-container-text-l2.component.ts","../../../projects/babylon/src/lib/components/core/babylon-container-text-l2/babylon-container-text-l2.component.html","../../../projects/babylon/src/lib/components/core/babylon-guests-popup/babylon-guests-popup.component.ts","../../../projects/babylon/src/lib/components/core/babylon-guests-popup/babylon-guests-popup.component.html","../../../projects/babylon/src/lib/services/engine-state.service.ts","../../../projects/babylon/src/lib/components/core/babylon-engine/babylon-engine.component.ts","../../../projects/babylon/src/lib/components/core/babylon-engine/babylon-engine.component.html","../../../projects/babylon/src/lib/components/core/babylon-engine-modal/babylon-engine-modal.component.ts","../../../projects/babylon/src/lib/components/core/babylon-engine-modal/babylon-engine-modal.component.html","../../../projects/babylon/src/lib/components/core/babylon-engine-modal-v2/babylon-engine-modal-v2.component.ts","../../../projects/babylon/src/lib/components/core/babylon-engine-modal-v2/babylon-engine-modal-v2.component.html","../../../projects/babylon/src/lib/components/core/babylon-engine-modal-v3/babylon-engine-modal-v3.component.ts","../../../projects/babylon/src/lib/components/core/babylon-engine-modal-v3/babylon-engine-modal-v3.component.html","../../../projects/babylon/src/lib/components/core/babylon-engine-widget-modal/babylon-engine-widget-modal.component.ts","../../../projects/babylon/src/lib/components/core/babylon-engine-widget-modal/babylon-engine-widget-modal.component.html","../../../projects/babylon/src/lib/components/core/babylon-external-script/babylon-external-script.component.ts","../../../projects/babylon/src/lib/components/core/babylon-external-script/babylon-external-script.component.html","../../../projects/babylon/src/lib/components/core/babylon-faq/babylon-faq.component.ts","../../../projects/babylon/src/lib/components/core/babylon-faq/babylon-faq.component.html","../../../projects/babylon/src/lib/components/core/babylon-faq-join-c2-img-txt/babylon-faq-join-c2-img-txt.component.ts","../../../projects/babylon/src/lib/components/core/babylon-faq-join-c2-img-txt/babylon-faq-join-c2-img-txt.component.html","../../../projects/babylon/src/lib/components/core/babylon-faq-v2/babylon-faq-v2.component.ts","../../../projects/babylon/src/lib/components/core/babylon-faq-v2/babylon-faq-v2.component.html","../../../projects/babylon/src/lib/components/core/babylon-feature-pills/babylon-feature-pills.component.ts","../../../projects/babylon/src/lib/components/core/babylon-feature-pills/babylon-feature-pills.component.html","../../../projects/babylon/src/lib/components/core/babylon-feature-pills-number/babylon-feature-pills-number.component.ts","../../../projects/babylon/src/lib/components/core/babylon-feature-pills-number/babylon-feature-pills-number.component.html","../../../projects/babylon/src/lib/components/core/babylon-features-slider/babylon-features-slider.component.ts","../../../projects/babylon/src/lib/components/core/babylon-features-slider/babylon-features-slider.component.html","../../../projects/babylon/src/lib/components/core/babylon-filter-modal/babylon-filter-modal.component.ts","../../../projects/babylon/src/lib/components/core/babylon-filter-modal/babylon-filter-modal.component.html","../../../projects/babylon/src/lib/components/core/babylon-floating-buttons/babylon-floating-buttons.component.ts","../../../projects/babylon/src/lib/components/core/babylon-floating-buttons/babylon-floating-buttons.component.html","../../../projects/babylon/src/lib/components/core/babylon-fo-addr-cont-img/babylon-fo-addr-cont-img.component.ts","../../../projects/babylon/src/lib/components/core/babylon-fo-addr-cont-img/babylon-fo-addr-cont-img.component.html","../../../projects/babylon/src/lib/components/core/babylon-fo-c3-img-txt/babylon-fo-c3-img-txt.component.ts","../../../projects/babylon/src/lib/components/core/babylon-fo-c3-img-txt/babylon-fo-c3-img-txt.component.html","../../../projects/babylon/src/lib/services/scroll/scroll-spy.service.ts","../../../projects/babylon/src/lib/directives/scrolls/scroll-to.directive.ts","../../../projects/babylon/src/lib/components/core/babylon-fo-c3-txt-svg-cta/babylon-fo-c3-txt-svg-cta.component.ts","../../../projects/babylon/src/lib/components/core/babylon-fo-c3-txt-svg-cta/babylon-fo-c3-txt-svg-cta.component.html","../../../projects/babylon/src/lib/components/core/babylon-fo-lis-c4-txt/babylon-fo-lis-c4-txt.component.ts","../../../projects/babylon/src/lib/components/core/babylon-fo-lis-c4-txt/babylon-fo-lis-c4-txt.component.html","../../../projects/babylon/src/lib/components/core/babylon-fo-sli-img/babylon-fo-sli-img.component.ts","../../../projects/babylon/src/lib/components/core/babylon-fo-sli-img/babylon-fo-sli-img.component.html","../../../projects/babylon/src/lib/pipes/babylon-clean-phone.pipe.ts","../../../projects/babylon/src/lib/components/core/babylon-footer-contact/babylon-footer-contact.component.ts","../../../projects/babylon/src/lib/components/core/babylon-footer-contact/babylon-footer-contact.component.html","../../../projects/babylon/src/lib/components/core/babylon-footer-links/babylon-footer-links.component.ts","../../../projects/babylon/src/lib/components/core/babylon-footer-links/babylon-footer-links.component.html","../../../projects/babylon/src/lib/components/core/babylon-footer-logos/babylon-footer-logos.component.ts","../../../projects/babylon/src/lib/components/core/babylon-footer-logos/babylon-footer-logos.component.html","../../../projects/babylon/src/lib/components/core/babylon-footer-social/babylon-footer-social.component.ts","../../../projects/babylon/src/lib/components/core/babylon-footer-social/babylon-footer-social.component.html","../../../projects/babylon/src/lib/components/core/babylon-footer-social/babylon-footer-social.interface.ts","../../../projects/babylon/src/lib/components/core/babylon-form-c2-text-input/babylon-form-c2-text-input.component.ts","../../../projects/babylon/src/lib/components/core/babylon-form-c2-text-input/babylon-form-c2-text-input.component.html","../../../projects/babylon/src/lib/components/core/babylon-gallery/babylon-gallery.component.ts","../../../projects/babylon/src/lib/components/core/babylon-gallery/babylon-gallery.component.html","../../../projects/babylon/src/lib/components/core/babylon-gallery-v2/babylon-gallery-v2.component.ts","../../../projects/babylon/src/lib/components/core/babylon-gallery-v2/babylon-gallery-v2.component.html","../../../projects/babylon/src/lib/components/core/babylon-gr-c2-img/babylon-gr-c2-img.component.ts","../../../projects/babylon/src/lib/components/core/babylon-gr-c2-img/babylon-gr-c2-img.component.html","../../../projects/babylon/src/lib/components/core/babylon-grid-gallery/babylon-grid-gallery.component.ts","../../../projects/babylon/src/lib/components/core/babylon-grid-gallery/babylon-grid-gallery.component.html","../../../projects/babylon/src/lib/components/core/babylon-mod-c2-img-txt-cta/babylon-mod-c2-img-txt-cta.component.ts","../../../projects/babylon/src/lib/components/core/babylon-mod-c2-img-txt-cta/babylon-mod-c2-img-txt-cta.component.html","../../../projects/babylon/src/lib/components/core/babylon-he-me-svg-text-cta-mot/babylon-he-me-svg-text-cta-mot.component.ts","../../../projects/babylon/src/lib/components/core/babylon-he-me-svg-text-cta-mot/babylon-he-me-svg-text-cta-mot.component.html","../../../projects/babylon/src/lib/components/core/babylon-he-svg-list/babylon-he-svg-list.component.ts","../../../projects/babylon/src/lib/components/core/babylon-he-svg-list/babylon-he-svg-list.component.html","../../../projects/babylon/src/lib/components/core/babylon-head-intro/babylon-head-intro.component.ts","../../../projects/babylon/src/lib/components/core/babylon-head-intro/babylon-head-intro.component.html","../../../projects/babylon/src/lib/Enum/buttons-type.enum.ts","../../../projects/babylon/src/lib/Enum/logo-type.enum.ts","../../../projects/babylon/src/lib/components/core/babylon-modal-menu/babylon-modal-menu.component.ts","../../../projects/babylon/src/lib/components/core/babylon-modal-menu/babylon-modal-menu.component.html","../../../projects/babylon/src/lib/components/core/babylon-header-book-show/babylon-header-book-show.component.ts","../../../projects/babylon/src/lib/components/core/babylon-header-book-show/babylon-header-book-show.component.html","../../../projects/babylon/src/lib/components/core/babylon-header-clear/babylon-header-clear.component.ts","../../../projects/babylon/src/lib/components/core/babylon-header-clear/babylon-header-clear.component.html","../../../projects/babylon/src/lib/components/core/babylon-menu-modal/babylon-menu-modal.component.ts","../../../projects/babylon/src/lib/components/core/babylon-menu-modal/babylon-menu-modal.component.html","../../../projects/babylon/src/lib/components/core/babylon-newsletter/babylon-newsletter.component.ts","../../../projects/babylon/src/lib/components/core/babylon-newsletter/babylon-newsletter.component.html","../../../projects/babylon/src/lib/components/core/babylon-offer-popup/babylon-offer-popup.component.ts","../../../projects/babylon/src/lib/components/core/babylon-offer-popup/babylon-offer-popup.component.html","../../../projects/babylon/src/lib/components/core/babylon-header-clear-v2/babylon-header-clear-v2.component.ts","../../../projects/babylon/src/lib/components/core/babylon-header-clear-v2/babylon-header-clear-v2.component.html","../../../projects/babylon/src/lib/components/core/babylon-header-menu-center/babylon-header-menu-center.component.ts","../../../projects/babylon/src/lib/components/core/babylon-header-menu-center/babylon-header-menu-center.component.html","../../../projects/babylon/src/lib/components/core/babylon-header-menu-logo-center/babylon-header-menu-logo-center.component.ts","../../../projects/babylon/src/lib/components/core/babylon-header-menu-logo-center/babylon-header-menu-logo-center.component.html","../../../projects/babylon/src/lib/components/core/babylon-header-menu-show/babylon-header-menu-show.component.ts","../../../projects/babylon/src/lib/components/core/babylon-header-menu-show/babylon-header-menu-show.component.html","../../../projects/babylon/src/lib/components/core/babylon-header-mobile/babylon-header-mobile.component.ts","../../../projects/babylon/src/lib/components/core/babylon-header-mobile/babylon-header-mobile.component.html","../../../projects/babylon/src/lib/components/core/babylon-hotels-list/babylon-hotels-list.component.ts","../../../projects/babylon/src/lib/components/core/babylon-hotels-list/babylon-hotels-list.component.html","../../../projects/babylon/src/lib/directives/babylon-sliders/babylon-hotels-slider.directive.ts","../../../projects/babylon/src/lib/components/core/babylon-hotels-slider/babylon-hotels-slider.component.ts","../../../projects/babylon/src/lib/components/core/babylon-hotels-slider/babylon-hotels-slider.component.html","../../../projects/babylon/src/lib/directives/utils/sticky-avoid-footer.directive.ts","../../../projects/babylon/src/lib/components/core/babylon-img-banner/babylon-img-banner.component.ts","../../../projects/babylon/src/lib/components/core/babylon-img-banner/babylon-img-banner.component.html","../../../projects/babylon/src/lib/components/core/babylon-info-big/babylon-info-big.component.ts","../../../projects/babylon/src/lib/components/core/babylon-info-big/babylon-info-big.component.html","../../../projects/babylon/src/lib/directives/images/swap-on-reload.directive.ts","../../../projects/babylon/src/lib/components/core/babylon-info-big-v2/babylon-info-big-v2.component.ts","../../../projects/babylon/src/lib/components/core/babylon-info-big-v2/babylon-info-big-v2.component.html","../../../projects/babylon/src/lib/components/core/babylon-info-big-v3/babylon-info-big-v3.component.ts","../../../projects/babylon/src/lib/components/core/babylon-info-big-v3/babylon-info-big-v3.component.html","../../../projects/babylon/src/lib/components/core/babylon-info-circle-imgs/babylon-info-circle-imgs.component.ts","../../../projects/babylon/src/lib/components/core/babylon-info-circle-imgs/babylon-info-circle-imgs.component.html","../../../projects/babylon/src/lib/components/core/babylon-info-grid/babylon-info-grid.component.ts","../../../projects/babylon/src/lib/components/core/babylon-info-grid/babylon-info-grid.component.html","../../../projects/babylon/src/lib/components/core/babylon-info-grid/babylon-info-grid.interface.ts","../../../projects/babylon/src/lib/directives/babylon-background-strip/babylon-background-strip.directive.ts","../../../projects/babylon/src/lib/components/core/babylon-info-img/babylon-info-img.component.ts","../../../projects/babylon/src/lib/components/core/babylon-info-img/babylon-info-img.component.html","../../../projects/babylon/src/lib/components/core/babylon-info-img-slider/babylon-info-img-slider.component.ts","../../../projects/babylon/src/lib/components/core/babylon-info-img-slider/babylon-info-img-slider.component.html","../../../projects/babylon/src/lib/components/core/babylon-info-img-v2/babylon-info-img-v2.component.ts","../../../projects/babylon/src/lib/components/core/babylon-info-img-v2/babylon-info-img-v2.component.html","../../../projects/babylon/src/lib/components/core/babylon-info-intro/babylon-info-intro.component.ts","../../../projects/babylon/src/lib/components/core/babylon-info-intro/babylon-info-intro.component.html","../../../projects/babylon/src/lib/components/core/babylon-info-show-img/babylon-info-show-img.component.ts","../../../projects/babylon/src/lib/components/core/babylon-info-show-img/babylon-info-show-img.component.html","../../../projects/babylon/src/lib/components/core/babylon-info-zig-zag/babylon-info-zig-zag.component.ts","../../../projects/babylon/src/lib/components/core/babylon-info-zig-zag/babylon-info-zig-zag.component.html","../../../projects/babylon/src/lib/components/core/babylon-info-zig-zag-counter/babylon-info-zig-zag-counter.component.ts","../../../projects/babylon/src/lib/components/core/babylon-info-zig-zag-counter/babylon-info-zig-zag-counter.component.html","../../../projects/babylon/src/lib/components/core/babylon-info-zigzag-v2/babylon-info-zigzag-v2.component.ts","../../../projects/babylon/src/lib/components/core/babylon-info-zigzag-v2/babylon-info-zigzag-v2.component.html","../../../projects/babylon/src/lib/directives/sliders/slider-fix-arrows.directive.ts","../../../projects/babylon/src/lib/components/core/babylon-info-zigzag-v4/babylon-info-zigzag-v4.component.ts","../../../projects/babylon/src/lib/components/core/babylon-info-zigzag-v4/babylon-info-zigzag-v4.component.html","../../../projects/babylon/src/lib/components/core/babylon-info-zigzag-v5/babylon-info-zigzag-v5.component.ts","../../../projects/babylon/src/lib/components/core/babylon-info-zigzag-v5/babylon-info-zigzag-v5.component.html","../../../projects/babylon/src/lib/components/core/babylon-info2col-img/babylon-info2col-img.component.ts","../../../projects/babylon/src/lib/components/core/babylon-info2col-img/babylon-info2col-img.component.html","../../../projects/babylon/src/lib/components/core/babylon-info2img/babylon-info2img.component.ts","../../../projects/babylon/src/lib/components/core/babylon-info2img/babylon-info2img.component.html","../../../projects/babylon/src/lib/components/core/babylon-info2img-big/babylon-info2img-big.component.ts","../../../projects/babylon/src/lib/components/core/babylon-info2img-big/babylon-info2img-big.component.html","../../../projects/babylon/src/lib/components/core/babylon-info3img/babylon-info3img.component.ts","../../../projects/babylon/src/lib/components/core/babylon-info3img/babylon-info3img.component.html","../../../projects/babylon/src/lib/components/core/babylon-info4img/babylon-info4img.component.ts","../../../projects/babylon/src/lib/components/core/babylon-info4img/babylon-info4img.component.html","../../../projects/babylon/src/lib/components/core/babylon-items-grid/babylon-items-grid.component.ts","../../../projects/babylon/src/lib/components/core/babylon-items-grid/babylon-items-grid.component.html","../../../projects/babylon/src/lib/components/core/babylon-language-modal/babylon-language-modal.component.ts","../../../projects/babylon/src/lib/components/core/babylon-language-modal/babylon-language-modal.component.html","../../../projects/babylon/src/lib/components/core/babylon-language-modal-v2/babylon-language-modal-v2.component.ts","../../../projects/babylon/src/lib/components/core/babylon-language-modal-v2/babylon-language-modal-v2.component.html","../../../projects/babylon/src/lib/components/core/babylon-language-modal-v3/babylon-language-modal-v3.component.ts","../../../projects/babylon/src/lib/components/core/babylon-language-modal-v3/babylon-language-modal-v3.component.html","../../../projects/babylon/src/lib/components/core/babylon-legal/babylon-legal.component.ts","../../../projects/babylon/src/lib/components/core/babylon-legal/babylon-legal.component.html","../../../projects/babylon/src/lib/components/core/babylon-lis-c2-img-vid/babylon-lis-c2-img-vid.component.ts","../../../projects/babylon/src/lib/components/core/babylon-lis-c2-img-vid/babylon-lis-c2-img-vid.component.html","../../../projects/babylon/src/lib/components/core/babylon-lis-c2-txt/babylon-lis-c2-txt.component.ts","../../../projects/babylon/src/lib/components/core/babylon-lis-c2-txt/babylon-lis-c2-txt.component.html","../../../projects/babylon/src/lib/components/core/babylon-lis-c4-txt-ico/babylon-lis-c4-txt-ico.component.ts","../../../projects/babylon/src/lib/components/core/babylon-lis-c4-txt-ico/babylon-lis-c4-txt-ico.component.html","../../../projects/babylon/src/lib/components/core/babylon-lis-c4-txt-img-pdf/babylon-lis-c4-txt-img-pdf.component.ts","../../../projects/babylon/src/lib/components/core/babylon-lis-c4-txt-img-pdf/babylon-lis-c4-txt-img-pdf.component.html","../../../projects/babylon/src/lib/components/core/babylon-lis-c5-txt-img-svg/babylon-lis-c5-txt-img-svg.component.ts","../../../projects/babylon/src/lib/components/core/babylon-lis-c5-txt-img-svg/babylon-lis-c5-txt-img-svg.component.html","../../../projects/babylon/src/lib/components/core/babylon-lis-link-cleans/babylon-lis-link-cleans.component.ts","../../../projects/babylon/src/lib/components/core/babylon-lis-link-cleans/babylon-lis-link-cleans.component.html","../../../projects/babylon/src/lib/components/core/babylon-lis-svg-txt-cta/babylon-lis-svg-txt-cta.component.ts","../../../projects/babylon/src/lib/components/core/babylon-lis-svg-txt-cta/babylon-lis-svg-txt-cta.component.html","../../../projects/babylon/src/lib/pipes/babylon-currency.pipe.ts","../../../projects/babylon/src/lib/components/core/babylon-list-box-info/babylon-list-box-info.component.ts","../../../projects/babylon/src/lib/components/core/babylon-list-box-info/babylon-list-box-info.component.html","../../../projects/babylon/src/lib/components/core/babylon-list-c3-img-txt/babylon-list-c3-img-txt.component.ts","../../../projects/babylon/src/lib/components/core/babylon-list-c3-img-txt/babylon-list-c3-img-txt.component.html","../../../projects/babylon/src/lib/components/core/babylon-list-c6-txt/babylon-list-c6-txt.component.ts","../../../projects/babylon/src/lib/components/core/babylon-list-c6-txt/babylon-list-c6-txt.component.html","../../../projects/babylon/src/lib/components/core/babylon-list-grid/babylon-list-grid.component.ts","../../../projects/babylon/src/lib/components/core/babylon-list-grid/babylon-list-grid.component.html","../../../projects/babylon/src/lib/components/core/babylon-list-grid/babylon-list-grid.interface.ts","../../../projects/babylon/src/lib/Enum/tags.enums.ts","../../../projects/babylon/src/lib/components/core/babylon-list-img/babylon-list-img.component.ts","../../../projects/babylon/src/lib/components/core/babylon-list-img/babylon-list-img.component.html","../../../projects/babylon/src/lib/components/core/babylon-list-img-info/babylon-list-img-info.component.ts","../../../projects/babylon/src/lib/components/core/babylon-list-img-info/babylon-list-img-info.component.html","../../../projects/babylon/src/lib/components/core/babylon-list-img-v2/babylon-list-img-v2.component.ts","../../../projects/babylon/src/lib/components/core/babylon-list-img-v2/babylon-list-img-v2.component.html","../../../projects/babylon/src/lib/components/core/babylon-loyalty-table/babylon-loyalty-table.component.ts","../../../projects/babylon/src/lib/components/core/babylon-loyalty-table/babylon-loyalty-table.component.html","../../../projects/babylon/src/lib/components/core/babylon-map-txt/babylon-map-txt.component.ts","../../../projects/babylon/src/lib/components/core/babylon-map-txt/babylon-map-txt.component.html","../../../projects/babylon/src/lib/components/core/babylon-modal-multiple-motors/babylon-modal-multiple-motors.component.ts","../../../projects/babylon/src/lib/components/core/babylon-modal-multiple-motors/babylon-modal-multiple-motors.component.html","../../../projects/babylon/src/lib/components/core/babylon-newsletter/babylon-newsletter.interface.ts","../../../projects/babylon/src/lib/components/core/babylon-newsletter-modal-v2/babylon-newsletter-modal-v2.component.ts","../../../projects/babylon/src/lib/components/core/babylon-newsletter-modal-v2/babylon-newsletter-modal-v2.component.html","../../../projects/babylon/src/lib/components/core/babylon-offer-detail/babylon-offer-detail.component.ts","../../../projects/babylon/src/lib/components/core/babylon-offer-detail/babylon-offer-detail.component.html","../../../projects/babylon/src/lib/components/core/babylon-offer-detail-v2/babylon-offer-detail-v2.component.ts","../../../projects/babylon/src/lib/components/core/babylon-offer-detail-v2/babylon-offer-detail-v2.component.html","../../../projects/babylon/src/lib/components/core/babylon-offer-popup-v3/babylon-offer-popup-v3.component.ts","../../../projects/babylon/src/lib/components/core/babylon-offer-popup-v3/babylon-offer-popup-v3.component.html","../../../projects/babylon/src/lib/components/core/babylon-offer-popupV2/babylon-offer-popup-v2.component.ts","../../../projects/babylon/src/lib/components/core/babylon-offer-popupV2/babylon-offer-popup-v2.component.html","../../../projects/babylon/src/lib/directives/babylon-sliders/babylon-swiper-slider.directive.ts","../../../projects/babylon/src/lib/components/core/babylon-offer-slider/babylon-offer-slider.component.ts","../../../projects/babylon/src/lib/components/core/babylon-offer-slider/babylon-offer-slider.component.html","../../../projects/babylon/src/lib/components/core/babylon-offers-list/babylon-offers-list.component.ts","../../../projects/babylon/src/lib/components/core/babylon-offers-list/babylon-offers-list.component.html","../../../projects/babylon/src/lib/directives/babylon-hobble-effect/babylon-hobble-effect.directive.ts","../../../projects/babylon/src/lib/components/core/babylon-offers-slider/babylon-offers-slider.component.ts","../../../projects/babylon/src/lib/components/core/babylon-offers-slider/babylon-offers-slider.component.html","../../../projects/babylon/src/lib/components/core/babylon-preload/babylon-preload.component.ts","../../../projects/babylon/src/lib/components/core/babylon-preload/babylon-preload.component.html","../../../projects/babylon/src/lib/components/core/babylon-press-list/babylon-press-list.component.ts","../../../projects/babylon/src/lib/components/core/babylon-press-list/babylon-press-list.component.html","../../../projects/babylon/src/lib/components/core/babylon-room-details/babylon-room-details.component.ts","../../../projects/babylon/src/lib/components/core/babylon-room-details/babylon-room-details.component.html","../../../projects/babylon/src/lib/components/core/babylon-rooms-cols/babylon-rooms-cols.component.ts","../../../projects/babylon/src/lib/components/core/babylon-rooms-cols/babylon-rooms-cols.component.html","../../../projects/babylon/src/lib/components/core/babylon-rooms-grid/babylon-rooms-grid.component.ts","../../../projects/babylon/src/lib/components/core/babylon-rooms-grid/babylon-rooms-grid.component.html","../../../projects/babylon/src/lib/components/core/babylon-rooms-list/babylon-rooms-list.component.ts","../../../projects/babylon/src/lib/components/core/babylon-rooms-list/babylon-rooms-list.component.html","../../../projects/babylon/src/lib/components/core/babylon-rooms-list-v2/babylon-rooms-list-v2.component.ts","../../../projects/babylon/src/lib/components/core/babylon-rooms-list-v2/babylon-rooms-list-v2.component.html","../../../projects/babylon/src/lib/components/core/babylon-rooms-slider/babylon-rooms-slider.component.ts","../../../projects/babylon/src/lib/components/core/babylon-rooms-slider/babylon-rooms-slider.component.html","../../../projects/babylon/src/lib/components/core/babylon-services-slider/babylon-services-slider.component.ts","../../../projects/babylon/src/lib/components/core/babylon-services-slider/babylon-services-slider.component.html","../../../projects/babylon/src/lib/components/core/babylon-simple-img-info/babylon-simple-img-info.component.ts","../../../projects/babylon/src/lib/components/core/babylon-simple-img-info/babylon-simple-img-info.component.html","../../../projects/babylon/src/lib/components/core/babylon-sli-c1-img-text/babylon-sli-c1-img-text.component.ts","../../../projects/babylon/src/lib/components/core/babylon-sli-c1-img-text/babylon-sli-c1-img-text.component.html","../../../projects/babylon/src/lib/directives/sliders/swiper-init.directive.ts","../../../projects/babylon/src/lib/components/core/babylon-sli-c3-svg-vid-cta/babylon-sli-c3-svg-vid-cta.component.ts","../../../projects/babylon/src/lib/components/core/babylon-sli-c3-svg-vid-cta/babylon-sli-c3-svg-vid-cta.component.html","../../../projects/babylon/src/lib/components/core/babylon-sli-c3-txt-img-cta/babylon-sli-c3-txt-img-cta.component.ts","../../../projects/babylon/src/lib/components/core/babylon-sli-c3-txt-img-cta/babylon-sli-c3-txt-img-cta.component.html","../../../projects/babylon/src/lib/directives/babylon-sliders/babylon-swiper.directive.ts","../../../projects/babylon/src/lib/components/core/babylon-sli-c5-img-txt/babylon-sli-c5-img-txt.component.ts","../../../projects/babylon/src/lib/components/core/babylon-sli-c5-img-txt/babylon-sli-c5-img-txt.component.html","../../../projects/babylon/src/lib/components/core/babylon-slider-box/babylon-slider-box.component.ts","../../../projects/babylon/src/lib/components/core/babylon-slider-box/babylon-slider-box.component.html","../../../projects/babylon/src/lib/components/core/babylon-slider-img-static/babylon-slider-img-static.component.ts","../../../projects/babylon/src/lib/components/core/babylon-slider-img-static/babylon-slider-img-static.component.html","../../../projects/babylon/src/lib/components/core/babylon-slider-img-static-v2/babylon-slider-img-static-v2.component.ts","../../../projects/babylon/src/lib/components/core/babylon-slider-img-static-v2/babylon-slider-img-static-v2.component.html","../../../projects/babylon/src/lib/components/core/babylon-slider-img-video/babylon-slider-img-video.component.ts","../../../projects/babylon/src/lib/components/core/babylon-slider-img-video/babylon-slider-img-video.component.html","../../../projects/babylon/src/lib/components/core/babylon-slider2col/babylon-slider2col.component.ts","../../../projects/babylon/src/lib/components/core/babylon-slider2col/babylon-slider2col.component.html","../../../projects/babylon/src/lib/components/core/babylon-slider2col-v2/babylon-slider2col-v2.component.ts","../../../projects/babylon/src/lib/components/core/babylon-slider2col-v2/babylon-slider2col-v2.component.html","../../../projects/babylon/src/lib/components/core/babylon-slider2items/babylon-slider2items.component.ts","../../../projects/babylon/src/lib/components/core/babylon-slider2items/babylon-slider2items.component.html","../../../projects/babylon/src/lib/components/core/babylon-slider3col/babylon-slider3col.component.ts","../../../projects/babylon/src/lib/components/core/babylon-slider3col/babylon-slider3col.component.html","../../../projects/babylon/src/lib/components/core/babylon-slider3col-clear/babylon-slider3col-clear.component.ts","../../../projects/babylon/src/lib/components/core/babylon-slider3col-clear/babylon-slider3col-clear.component.html","../../../projects/babylon/src/lib/components/core/babylon-slider3col-v2/babylon-slider3col-v2.component.ts","../../../projects/babylon/src/lib/components/core/babylon-slider3col-v2/babylon-slider3col-v2.component.html","../../../projects/babylon/src/lib/components/core/babylon-slider3items/babylon-slider3items.component.ts","../../../projects/babylon/src/lib/components/core/babylon-slider3items/babylon-slider3items.component.html","../../../projects/babylon/src/lib/components/core/babylon-slider4col/babylon-slider4col.component.ts","../../../projects/babylon/src/lib/components/core/babylon-slider4col/babylon-slider4col.component.html","../../../projects/babylon/src/lib/components/core/babylon-social-bar/babylon-social-bar.component.ts","../../../projects/babylon/src/lib/components/core/babylon-social-bar/babylon-social-bar.component.html","../../../projects/babylon/src/lib/components/core/babylon-social-bar-v2/babylon-social-bar-v2.component.ts","../../../projects/babylon/src/lib/components/core/babylon-social-bar-v2/babylon-social-bar-v2.component.html","../../../projects/babylon/src/lib/directives/scrolls/scroll-up.directive.ts","../../../projects/babylon/src/lib/components/core/babylon-static-footer/babylon-static-footer.component.ts","../../../projects/babylon/src/lib/components/core/babylon-static-footer/babylon-static-footer.component.html","../../../projects/babylon/src/lib/components/core/babylon-static-footer-v2/babylon-static-footer-v2.component.ts","../../../projects/babylon/src/lib/components/core/babylon-static-footer-v2/babylon-static-footer-v2.component.html","../../../projects/babylon/src/lib/components/core/babylon-static-footer-v3/babylon-static-footer-v3.component.ts","../../../projects/babylon/src/lib/components/core/babylon-static-footer-v3/babylon-static-footer-v3.component.html","../../../projects/babylon/src/lib/components/core/babylon-static-footer-v4/babylon-static-footer-v4.component.ts","../../../projects/babylon/src/lib/components/core/babylon-static-footer-v4/babylon-static-footer-v4.component.html","../../../projects/babylon/src/lib/components/core/babylon-submenu-hotel/babylon-submenu-hotel.component.ts","../../../projects/babylon/src/lib/components/core/babylon-submenu-hotel/babylon-submenu-hotel.component.html","../../../projects/babylon/src/lib/components/core/babylon-thanks/babylon-thanks.component.ts","../../../projects/babylon/src/lib/components/core/babylon-thanks/babylon-thanks.component.html","../../../projects/babylon/src/lib/directives/scrolls/show-only-top.directive.ts","../../../projects/babylon/src/lib/components/core/babylon-top-simple-banner/babylon-top-simple-banner.component.ts","../../../projects/babylon/src/lib/components/core/babylon-top-simple-banner/babylon-top-simple-banner.component.html","../../../projects/babylon/src/lib/components/core/babylon-top-simple-img/babylon-top-simple-img.component.ts","../../../projects/babylon/src/lib/components/core/babylon-top-simple-img/babylon-top-simple-img.component.html","../../../projects/babylon/src/lib/pipes/babylon-safe-url.pipe.ts","../../../projects/babylon/src/lib/components/core/babylon-top-slider/babylon-top-slider.component.ts","../../../projects/babylon/src/lib/components/core/babylon-top-slider/babylon-top-slider.component.html","../../../projects/babylon/src/lib/components/core/babylon-top-slider-img-video/babylon-top-slider-img-video.component.ts","../../../projects/babylon/src/lib/components/core/babylon-top-slider-img-video/babylon-top-slider-img-video.component.html","../../../projects/babylon/src/lib/components/core/babylon-top-slider-thumbs/babylon-top-slider-thumbs.component.ts","../../../projects/babylon/src/lib/components/core/babylon-top-slider-thumbs/babylon-top-slider-thumbs.component.html","../../../projects/babylon/src/lib/components/core/babylon-top-slider-v2/babylon-top-slider-v2.component.ts","../../../projects/babylon/src/lib/components/core/babylon-top-slider-v2/babylon-top-slider-v2.component.html","../../../projects/babylon/src/lib/components/core/babylon-top-slider-video/babylon-top-slider-video.component.ts","../../../projects/babylon/src/lib/components/core/babylon-top-slider-video/babylon-top-slider-video.component.html","../../../projects/babylon/src/lib/components/core/babylon-top-slider-video-v2/babylon-top-slider-video-v2.component.ts","../../../projects/babylon/src/lib/components/core/babylon-top-slider-video-v2/babylon-top-slider-video-v2.component.html","../../../projects/babylon/src/lib/components/core/babylon-variant-selector/babylon-variant-selector.component.ts","../../../projects/babylon/src/lib/components/core/babylon-variant-selector/babylon-variant-selector.component.html","../../../projects/babylon/src/lib/components/core/babylon-webmap/babylon-webmap.component.ts","../../../projects/babylon/src/lib/components/core/babylon-webmap/babylon-webmap.component.html","../../../projects/babylon/src/lib/components/core/babylon-webmap-v2/babylon-webmap-v2.component.ts","../../../projects/babylon/src/lib/components/core/babylon-webmap-v2/babylon-webmap-v2.component.html","../../../projects/babylon/src/lib/components/core/babylon-zig-zag-img-txt/babylon-zig-zag-img-txt.component.ts","../../../projects/babylon/src/lib/components/core/babylon-zig-zag-img-txt/babylon-zig-zag-img-txt.component.html","../../../projects/babylon/src/lib/components/external/core/c2-img-txt-svg/c2-img-txt-svg.component.ts","../../../projects/babylon/src/lib/components/external/core/c2-img-txt-svg/c2-img-txt-svg.component.html","../../../projects/babylon/src/lib/components/external/core/c2-txt-cta/c2-txt-cta.component.ts","../../../projects/babylon/src/lib/components/external/core/c2-txt-cta/c2-txt-cta.component.html","../../../projects/babylon/src/lib/utils/get-list.ts","../../../projects/babylon/src/lib/components/external/core/c2-txt-cta-des/c2-txt-cta-des.component.ts","../../../projects/babylon/src/lib/components/external/core/c2-txt-cta-des/c2-txt-cta-des.component.html","../../../projects/babylon/src/lib/components/external/core/c2-txt-img-v2/c2-txt-img-v2.component.ts","../../../projects/babylon/src/lib/components/external/core/c2-txt-img-v2/c2-txt-img-v2.component.html","../../../projects/babylon/src/lib/components/external/core/c2-txt-img-v3/c2-txt-img-v3.component.ts","../../../projects/babylon/src/lib/components/external/core/c2-txt-img-v3/c2-txt-img-v3.component.html","../../../projects/babylon/src/lib/components/external/core/c2-txt-rrss/c2-txt-rrss.component.ts","../../../projects/babylon/src/lib/components/external/core/c2-txt-rrss/c2-txt-rrss.component.html","../../../projects/babylon/src/lib/pipes/babylon-order-button.pipe.ts","../../../projects/babylon/src/lib/components/external/core/c2-txt-svg-img-cta/c2-txt-svg-img-cta.component.ts","../../../projects/babylon/src/lib/components/external/core/c2-txt-svg-img-cta/c2-txt-svg-img-cta.component.html","../../../projects/babylon/src/lib/components/external/core/c2-txt-svg-v2/c2-txt-mdh005.component.ts","../../../projects/babylon/src/lib/components/external/core/c2-txt-svg-v2/c2-txt-mdh005.component.html","../../../projects/babylon/src/lib/components/external/core/c3-txt-img-cta/c3-txt-img-cta.component.ts","../../../projects/babylon/src/lib/components/external/core/c3-txt-img-cta/c3-txt-img-cta.component.html","../../../projects/babylon/src/lib/components/external/core/c4-c1-img-txt/c4-c1-img-txt.component.ts","../../../projects/babylon/src/lib/components/external/core/c4-c1-img-txt/c4-c1-img-txt.component.html","../../../projects/babylon/src/lib/components/external/core/c4-c1-img-txt-c/c4-c1-img-txt-c.component.ts","../../../projects/babylon/src/lib/components/external/core/c4-c1-img-txt-c/c4-c1-img-txt-c.component.html","../../../projects/babylon/src/lib/components/external/core/c4-c1-txt/c4-c1-txt.component.ts","../../../projects/babylon/src/lib/components/external/core/c4-c1-txt/c4-c1-txt.component.html","../../../projects/babylon/src/lib/components/external/core/c4-fo-link-svg/c4-fo-link-svg.component.ts","../../../projects/babylon/src/lib/components/external/core/c4-fo-link-svg/c4-fo-link-svg.component.html","../../../projects/babylon/src/lib/components/external/core/c4-for-c2-txt/c4-for-c2-txt.component.ts","../../../projects/babylon/src/lib/components/external/core/c4-for-c2-txt/c4-for-c2-txt.component.html","../../../projects/babylon/src/lib/components/external/core/c4-he-img-txt/c4-he-img-txt.component.ts","../../../projects/babylon/src/lib/components/external/core/c4-he-img-txt/c4-he-img-txt.component.html","../../../projects/babylon/src/lib/components/external/core/c4-lis-c2-img-txt/c4-lis-c2-img-txt.component.ts","../../../projects/babylon/src/lib/components/external/core/c4-lis-c2-img-txt/c4-lis-c2-img-txt.component.html","../../../projects/babylon/src/lib/components/external/core/c4-lis-c2-img-txt-c/list-rooms.component.ts","../../../projects/babylon/src/lib/components/external/core/c4-lis-c2-img-txt-c/list-rooms.component.html","../../../projects/babylon/src/lib/components/external/core/c4-me-txt-svg-cta/c4-me-txt-svg-cta.component.ts","../../../projects/babylon/src/lib/components/external/core/c4-me-txt-svg-cta/c4-me-txt-svg-cta.component.html","../../../projects/babylon/src/lib/components/external/core/c4-sli-c1-img-txt/h04-slider-text.component.ts","../../../projects/babylon/src/lib/components/external/core/c4-sli-c1-img-txt/h04-slider-text.component.html","../../../projects/babylon/src/lib/components/external/core/c4-sli-c2-img-txt-c/c4-sli-c2-img-txt-c.component.ts","../../../projects/babylon/src/lib/components/external/core/c4-sli-c2-img-txt-c/c4-sli-c2-img-txt-c.component.html","../../../projects/babylon/src/lib/components/external/core/c4-sli-c2-txt-img/c4-sli-c2-txt-img.component.ts","../../../projects/babylon/src/lib/components/external/core/c4-sli-c2-txt-img/c4-sli-c2-txt-img.component.html","../../../projects/babylon/src/lib/components/external/core/c4-txt-svg/c4-txt-svg.component.ts","../../../projects/babylon/src/lib/components/external/core/c4-txt-svg/c4-txt-svg.component.html","../../../projects/babylon/src/lib/components/external/core/car-c2-txt-cta/car-c2-txt-cta.component.ts","../../../projects/babylon/src/lib/components/external/core/car-c2-txt-cta/car-c2-txt-cta.component.html","../../../projects/babylon/src/lib/components/external/core/lis-c2-img-txt-cv4/lis-c2-img-txt-cv4.component.ts","../../../projects/babylon/src/lib/components/external/core/lis-c2-img-txt-cv4/lis-c2-img-txt-cv4.component.html","../../../projects/babylon/src/lib/components/external/core/lis-c1-img-txt/lis-c1-img-txt.component.ts","../../../projects/babylon/src/lib/components/external/core/lis-c1-img-txt/lis-c1-img-txt.component.html","../../../projects/babylon/src/lib/utils/filter.utils.ts","../../../projects/babylon/src/lib/components/external/core/lis-c2-img-txt-cta-v4/lis-c2-img-txt-cta-v4.component.ts","../../../projects/babylon/src/lib/components/external/core/lis-c2-img-txt-cta-v4/lis-c2-img-txt-cta-v4.component.html","../../../projects/babylon/src/lib/components/external/core/lis-c2-txt-img/lis-c2-txt-img.component.ts","../../../projects/babylon/src/lib/components/external/core/lis-c2-txt-img/lis-c2-txt-img.component.html","../../../projects/babylon/src/lib/components/external/core/lis-c2-txt-img-svg-c/lis-c2-txt-img-svg-c.component.ts","../../../projects/babylon/src/lib/components/external/core/lis-c2-txt-img-svg-c/lis-c2-txt-img-svg-c.component.html","../../../projects/babylon/src/lib/components/external/core/lis-c3-txt-img-ct/lis-c3-txt-img-ct.component.ts","../../../projects/babylon/src/lib/components/external/core/lis-c3-txt-img-ct/lis-c3-txt-img-ct.component.html","../../../projects/babylon/src/lib/components/external/core/lis-c4-txt-des-cta/lis-c4-txt-des-cta.component.ts","../../../projects/babylon/src/lib/components/external/core/lis-c4-txt-des-cta/lis-c4-txt-des-cta.component.html","../../../projects/babylon/src/lib/components/external/core/sli-c1-img-svg/sli-c1-img-svg.component.ts","../../../projects/babylon/src/lib/components/external/core/sli-c1-img-svg/sli-c1-img-svg.component.html","../../../projects/babylon/src/lib/components/external/core/sli-c2-img/sli-c2-img.component.ts","../../../projects/babylon/src/lib/components/external/core/sli-c2-img/sli-c2-img.component.html","../../../projects/babylon/src/lib/directives/babylon-sliders/babylon-swiper-css-loader.directive.ts","../../../projects/babylon/src/lib/components/external/core/sli-c2-img-txt/sli-c2-img-txt.component.ts","../../../projects/babylon/src/lib/components/external/core/sli-c2-img-txt/sli-c2-img-txt.component.html","../../../projects/babylon/src/lib/components/external/core/sli-c2-img-txt-cta-v3/sli-c2-img-txt-cta-v3.component.ts","../../../projects/babylon/src/lib/components/external/core/sli-c2-img-txt-cta-v3/sli-c2-img-txt-cta-v3.component.html","../../../projects/babylon/src/lib/components/external/core/sli-c2-img-txt-cv5/sli-c2-img-txt-cv5.component.ts","../../../projects/babylon/src/lib/components/external/core/sli-c2-img-txt-cv5/sli-c2-img-txt-cv5.component.html","../../../projects/babylon/src/lib/components/external/core/sli-c2-img-v2/sli-c2-img-v2.component.ts","../../../projects/babylon/src/lib/components/external/core/sli-c2-img-v2/sli-c2-img-v2.component.html","../../../projects/babylon/src/lib/components/external/core/sli-c2-txt-car-img-c/sli-c2-txt-car-img-c.component.ts","../../../projects/babylon/src/lib/components/external/core/sli-c2-txt-car-img-c/sli-c2-txt-car-img-c.component.html","../../../projects/babylon/src/lib/components/external/core/sli-c2-txt-img-svg-c/sli-c2-txt-img-svg-c.component.ts","../../../projects/babylon/src/lib/components/external/core/sli-c2-txt-img-svg-c/sli-c2-txt-img-svg-c.component.html","../../../projects/babylon/src/lib/components/external/core/lis-c2-img-txt-cta-v3/lis-c2-img-txt-cta-v3.component.ts","../../../projects/babylon/src/lib/components/external/core/lis-c2-img-txt-cta-v3/lis-c2-img-txt-cta-v3.component.html","../../../projects/babylon/src/lib/components/external/core/sli-c4-img-txt-cta/sli-c4-img-txt-cta.component.ts","../../../projects/babylon/src/lib/components/external/core/sli-c4-img-txt-cta/sli-c4-img-txt-cta.component.html","../../../projects/babylon/src/lib/utils/contact.utils.ts","../../../projects/babylon/src/lib/components/external/core/portada-home/portada-home.component.ts","../../../projects/babylon/src/lib/components/external/core/portada-home/portada-home.component.html","../../../projects/babylon/src/lib/components/external/core/complex-module-slider-r-v2/complex-module-slider-r-v2.component.ts","../../../projects/babylon/src/lib/components/external/core/complex-module-slider-r-v2/complex-module-slider-r-v2.component.html","../../../projects/babylon/src/lib/components/external/core/car-cu-img-txt-cta/car-cu-img-txt-cta.component.ts","../../../projects/babylon/src/lib/components/external/core/car-cu-img-txt-cta/car-cu-img-txt-cta.component.html","../../../projects/babylon/src/lib/components/external/core/fo-c4-txt-svg/fo-c4-txt-svg.component.ts","../../../projects/babylon/src/lib/components/external/core/fo-c4-txt-svg/fo-c4-txt-svg.component.html","../../../projects/babylon/src/lib/components/external/core/lis-c2-img-txt-cta/lis-c2-img-txt-cta.component.ts","../../../projects/babylon/src/lib/components/external/core/lis-c2-img-txt-cta/lis-c2-img-txt-cta.component.html","../../../projects/babylon/src/lib/utils/utils.video.ts","../../../projects/babylon/src/lib/components/external/core/portada-hotel-v1/portada-hotel-v1.component.ts","../../../projects/babylon/src/lib/components/external/core/portada-hotel-v1/portada-hotel-v1.component.html","../../../projects/babylon/src/lib/components/external/core/collapsable-info-v2/collapsable-info-v2.component.ts","../../../projects/babylon/src/lib/components/external/core/collapsable-info-v2/collapsable-info-v2.component.html","../../../projects/babylon/src/lib/components/external/core/collapsable-info-v3/collapsable-info-v3.component.ts","../../../projects/babylon/src/lib/components/external/core/collapsable-info-v3/collapsable-info-v3.component.html","../../../projects/babylon/src/lib/components/external/core/advantages-box-v2/advantages-box-v2.component.ts","../../../projects/babylon/src/lib/components/external/core/advantages-box-v2/advantages-box-v2.component.html","../../../projects/babylon/src/lib/components/external/core/c1-txt/c1-txt.component.ts","../../../projects/babylon/src/lib/components/external/core/c1-txt/c1-txt.component.html","../../../projects/babylon/src/lib/components/external/core/sli-c2-img-txt-cta-v4/sli-c2-img-txt-cta-v4.component.ts","../../../projects/babylon/src/lib/components/external/core/sli-c2-img-txt-cta-v4/sli-c2-img-txt-cta-v4.component.html","../../../projects/babylon/src/lib/components/external/core/sli-c2-img-txt-r/sli-c2-img-txt-r.component.ts","../../../projects/babylon/src/lib/components/external/core/sli-c2-img-txt-r/sli-c2-img-txt-r.component.html","../../../projects/babylon/src/lib/components/external/core/lis-c2-img-txt-cta-v2/lis-c2-img-txt-cta-v2.component.ts","../../../projects/babylon/src/lib/components/external/core/lis-c2-img-txt-cta-v2/lis-c2-img-txt-cta-v2.component.html","../../../projects/babylon/src/lib/components/external/core/equipment-v2/equipment-v2.component.ts","../../../projects/babylon/src/lib/components/external/core/equipment-v2/equipment-v2.component.html","../../../projects/babylon/src/lib/components/external/core/inner-banner-slider-v2/inner-banner-slider-v2.component.ts","../../../projects/babylon/src/lib/components/external/core/inner-banner-slider-v2/inner-banner-slider-v2.component.html","../../../projects/babylon/src/lib/components/external/core/fo-c2-img-txt/fo-c2-img-txt.component.ts","../../../projects/babylon/src/lib/components/external/core/fo-c2-img-txt/fo-c2-img-txt.component.html","../../../projects/babylon/src/lib/components/external/core/for-c0-txt-img-vc/for-c0-txt-img-vc.component.ts","../../../projects/babylon/src/lib/components/external/core/for-c0-txt-img-vc/for-c0-txt-img-vc.component.html","../../../projects/babylon/src/lib/components/external/core/modulo-menu-home/modulo-menu-home.component.ts","../../../projects/babylon/src/lib/components/external/core/modulo-menu-home/modulo-menu-home.component.html","../../../projects/babylon/src/lib/components/external/core/sli-c2-img-txt-l-v2/sli-c2-img-txt-l-v2.component.ts","../../../projects/babylon/src/lib/components/external/core/sli-c2-img-txt-l-v2/sli-c2-img-txt-l-v2.component.html","../../../projects/babylon/src/lib/components/external/core/lis-c3-fil-img-tx/lis-c3-fil-img-tx.component.ts","../../../projects/babylon/src/lib/components/external/core/lis-c3-fil-img-tx/lis-c3-fil-img-tx.component.html","../../../projects/babylon/src/lib/components/external/core/faqs-module-r/faqs-module-r.component.ts","../../../projects/babylon/src/lib/components/external/core/faqs-module-r/faqs-module-r.component.html","../../../projects/babylon/src/lib/components/external/core/fo-c0-svg-link/fo-c0-svg-link.component.ts","../../../projects/babylon/src/lib/components/external/core/fo-c0-svg-link/fo-c0-svg-link.component.html","../../../projects/babylon/src/lib/components/external/core/he-c3-img-ico/he-c3-img-ico.component.ts","../../../projects/babylon/src/lib/components/external/core/he-c3-img-ico/he-c3-img-ico.component.html","../../../projects/babylon/src/lib/components/external/core/complex-module-slider-l-v2/complex-module-slider-l-v2.component.ts","../../../projects/babylon/src/lib/components/external/core/complex-module-slider-l-v2/complex-module-slider-l-v2.component.html","../../../projects/babylon/src/lib/components/external/core/sli-c2-img-txt-r-v2/sli-c2-img-txt-r-v2.component.ts","../../../projects/babylon/src/lib/components/external/core/sli-c2-img-txt-r-v2/sli-c2-img-txt-r-v2.component.html","../../../projects/babylon/src/lib/components/external/core/sli-c2-img-txt-v2/sli-c2-img-txt-v2.component.ts","../../../projects/babylon/src/lib/components/external/core/sli-c2-img-txt-v2/sli-c2-img-txt-v2.component.html","../../../projects/babylon/src/lib/components/external/core/sli-c5-img-txt-v2/sli-c5-img-txt-v2.component.ts","../../../projects/babylon/src/lib/components/external/core/sli-c5-img-txt-v2/sli-c5-img-txt-v2.component.html","../../../projects/babylon/src/lib/components/external/core/sli-c6-img-txt/sli-c6-img-txt.component.ts","../../../projects/babylon/src/lib/components/external/core/sli-c6-img-txt/sli-c6-img-txt.component.html","../../../projects/babylon/src/lib/components/external/core/modulo-menu-hotel/modulo-menu-hotel.component.ts","../../../projects/babylon/src/lib/components/external/core/modulo-menu-hotel/modulo-menu-hotel.component.html","../../../projects/babylon/src/lib/components/external/core/lis-c3-img-txt/lis-c3-img-txt.component.ts","../../../projects/babylon/src/lib/components/external/core/lis-c3-img-txt/lis-c3-img-txt.component.html","../../../projects/babylon/src/lib/components/external/core/sli-c3-img-txt/sli-c3-img-txt.component.ts","../../../projects/babylon/src/lib/components/external/core/sli-c3-img-txt/sli-c3-img-txt.component.html","../../../projects/babylon/src/lib/components/external/core/offer-detail-v2/offer-detail-v2.component.ts","../../../projects/babylon/src/lib/components/external/core/offer-detail-v2/offer-detail-v2.component.html","../../../projects/babylon/src/lib/components/external/core/for-c0-txt-img-vh/for-c0-txt-img-vh.component.ts","../../../projects/babylon/src/lib/components/external/core/for-c0-txt-img-vh/for-c0-txt-img-vh.component.html","../../../projects/babylon/src/lib/components/external/core/top-c2-img-txt/top-c2-img-txt.component.ts","../../../projects/babylon/src/lib/components/external/core/top-c2-img-txt/top-c2-img-txt.component.html","../../../projects/babylon/src/lib/components/external/core/fo-c3-txt-ico-v2/fo-c3-txt-ico-v2.component.ts","../../../projects/babylon/src/lib/components/external/core/fo-c3-txt-ico-v2/fo-c3-txt-ico-v2.component.html","../../../projects/babylon/src/lib/components/external/core/lis-c3-img-txt-cta/lis-c3-img-txt-cta.component.ts","../../../projects/babylon/src/lib/components/external/core/lis-c3-img-txt-cta/lis-c3-img-txt-cta.component.html","../../../projects/babylon/src/lib/components/external/core/grid-c2-img-txt/grid-c2-img-txt.component.ts","../../../projects/babylon/src/lib/components/external/core/grid-c2-img-txt/grid-c2-img-txt.component.html","../../../projects/babylon/src/lib/components/external/core/map-txt-v2/map-txt-v2.component.ts","../../../projects/babylon/src/lib/components/external/core/map-txt-v2/map-txt-v2.component.html","../../../projects/babylon/src/lib/pipes/babylon-clean-props.pipe.ts","../../../projects/babylon/src/public-api.ts","../../../projects/babylon/src/ctt-babylon.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport const SITE_CONFIG_SERVICE_TOKEN = new InjectionToken<any>(\n    'SiteConfigService'\n);\n","import { InjectionToken } from '@angular/core';\n\nexport const SCROLL_OFFSET_TOKEN = new InjectionToken<number>(\n    'SCROLL_OFFSET_TOKEN',\n    {\n        providedIn: 'root',\n        factory: () => -160,\n    }\n);\n","import { InjectionToken } from '@angular/core';\n\nexport const complex_links = new InjectionToken<boolean>('complex_links', {\n    providedIn: 'root',\n    factory: () => false, // default (p. ej. lista vacía)\n});\n","import { isPlatformBrowser } from '@angular/common';\nimport {\n    Directive,\n    ElementRef,\n    EventEmitter,\n    HostListener,\n    inject,\n    Input,\n    NgZone,\n    OnChanges,\n    Output,\n    Inject,\n    PLATFORM_ID,\n} from '@angular/core';\nimport { Router } from '@angular/router';\nimport { SITE_CONFIG_SERVICE_TOKEN } from '../../services/mapper/mapper.service.token';\nimport { SCROLL_OFFSET_TOKEN } from '../../utils/scroll-config.token';\nimport { complex_links } from '../../utils/complex-links.token';\n\n@Directive({\n    selector: '[linkType]',\n    standalone: true,\n})\nexport class BabylonLinkTypeDirective implements OnChanges {\n    @Input() linkType?: string;\n    @Input() href?: string;\n    @Input() modalClick?: EventEmitter<string>;\n    @Input() clickPopup?: EventEmitter<string>;\n    @Input() disablePointerNone?: boolean = false;\n    @Output() anchorClicked = new EventEmitter<void>();\n    private platformId = inject(PLATFORM_ID);\n    private hasComplexLinks = inject(complex_links);\n    private readonly siteSvc = inject(SITE_CONFIG_SERVICE_TOKEN);\n    private readonly ngZone = inject(NgZone);\n\n    private readonly PHONE_RE = /^T\\s*[:\\-]?\\s*(.+)$/i;\n    private readonly MAILTO_RE = /^mailto:/i;\n    private readonly ADDRESS_RE = /^c\\/\\.?(.*)$/i;\n\n    constructor(\n        private readonly router: Router,\n        private readonly elRef: ElementRef,\n        @Inject(SCROLL_OFFSET_TOKEN) private readonly defaultOffset: number\n    ) {}\n    ngOnChanges(): void {\n        if (!this.linkType || !this.href) {\n            this.handleNoLink();\n            return;\n        }\n        const el = this.elRef.nativeElement;\n        const isAnchor = el.tagName.toLowerCase() === 'a';\n\n        // SOLO aplicamos atributos HTML de enlaces si es una etiqueta <a>\n        if (isAnchor) {\n            if (this.isExternalType(this.linkType)) {\n                const detected = this.detectExternalKind(this.href);\n                this.applyNormalizedHref(detected);\n            } else {\n                el.setAttribute('href', this.href);\n            }\n\n            if (\n                this.linkType === 'external' ||\n                this.linkType === 'external_link'\n            ) {\n                el.setAttribute('rel', 'nofollow');\n            }\n        }\n    }\n\n    @HostListener('click', ['$event'])\n    btnClick(event: Event): void {\n        if (!this.linkType || !this.href) {\n            this.handleNoLink();\n            return;\n        }\n\n        if (!this.linkType) {\n            console.warn('linkType is missing.');\n            return;\n        }\n\n        event.preventDefault();\n\n        switch (this.linkType) {\n            case 'internal':\n                this.handleInternalLink(this.href);\n                break;\n\n            case 'internal_link':\n                this.handleInternalLink(this.href);\n                break;\n\n            case 'self_link':\n                this.handleInternalLink(this.href);\n                break;\n\n            case 'internal_hotel_link':\n                this.handleInternalLink(this.href);\n                break;\n\n            case 'external':\n                this.handleExternalLink(this.href);\n                break;\n\n            case 'external_link':\n                this.handleExternalLink(this.href);\n                break;\n\n            case 'anchor':\n                this.handleAnchorLink(this.href);\n                break;\n\n            case 'anchor_link':\n                this.handleAnchorLink(this.href);\n                break;\n\n            case 'pdf_link':\n                this.handlePdfLink(this.href);\n                break;\n\n            case 'nolink':\n                this.handleNoLink();\n                break;\n\n            case 'component':\n                this.handleComponentLink(this.href);\n                break;\n\n            case 'component_link':\n                this.handleComponentLink(this.href);\n                break;\n\n            default:\n                console.warn(`Unsupported linkType: ${this.linkType}`);\n                break;\n        }\n    }\n\n    private handleInternalLink(url: string): void {\n        const cleanedUrl = url.trim().replace(/\\/+$/, '');\n        const target = '/' + cleanedUrl;\n        this.anchorClicked.emit();\n\n        const current = (this.router.url || '')\n            .split('?')[0]\n            .replace(/\\/+$/, '');\n        const targetClean = target.split('?')[0].replace(/\\/+$/, '');\n\n        if (current === targetClean) return;\n\n        this.router.navigateByUrl(target);\n    }\n\n    private handleExternalLink(url: string): void {\n        if (!isPlatformBrowser(this.platformId)) return;\n\n        const detected = this.detectExternalKind(url);\n        switch (detected.kind) {\n            case 'phone':\n                this.openPhone(detected.value);\n                break;\n            case 'email':\n                this.openEmail(detected.value);\n                break;\n            case 'address':\n                this.openAddress(detected.value);\n                break;\n            default:\n                if (\n                    !detected.value ||\n                    detected.value === '#' ||\n                    detected.value === '/#'\n                ) {\n                    console.warn(\n                        'Se intentó abrir un enlace externo vacío o inválido (placeholder):',\n                        detected.value\n                    );\n                    return;\n                }\n\n                const isAbsoluteUrl = (url: string) => /^(https?:)/i.test(url);\n\n                const finalUrl = isAbsoluteUrl(detected.value)\n                    ? detected.value\n                    : 'https://' + detected.value.replace(/^\\/+/, '');\n\n                try {\n                    window.open(finalUrl, '_blank');\n                } catch (e) {\n                    console.error(\n                        'Error abriendo ventana externa con URL:',\n                        finalUrl,\n                        e\n                    );\n                }\n                break;\n        }\n    }\n\n    private handlePdfLink(url: string): void {\n        if (isPlatformBrowser(this.platformId)) {\n            window.open(url, '_blank');\n        }\n    }\n\n    private handleAnchorLink(sectionId: string): void {\n        if (isPlatformBrowser(this.platformId)) {\n            const lang =\n                this.siteSvc.selectedLanguageInstant?.locate.toLowerCase();\n            if (this.hasComplexLinks && this.router.url !== `/${lang}`) {\n                this.redirectToHomeAnchor(sectionId);\n            } else {\n                const element = document.getElementById(sectionId);\n                if (element) {\n                    const y =\n                        element.getBoundingClientRect().top +\n                        window.scrollY +\n                        this.defaultOffset;\n\n                    window.scrollTo({ top: y, behavior: 'smooth' });\n                    this.anchorClicked.emit();\n                } else {\n                    console.warn(`Section with ID ${sectionId} not found.`);\n                }\n            }\n        }\n    }\n\n    private handleComponentLink(url: string): void {\n        const cleanedComponentName = url.trim().toLowerCase();\n        if (this.modalClick) {\n            this.modalClick.emit(cleanedComponentName);\n        }\n        if (this.clickPopup) {\n            this.clickPopup.emit(cleanedComponentName);\n        }\n    }\n\n    private handleNoLink(): void {\n        const parentLi = this.elRef.nativeElement.closest('li');\n\n        const isInsideMenuItemWithChildren = parentLi?.classList.contains(\n            'menu-item-has-children'\n        );\n\n        if (!isInsideMenuItemWithChildren) {\n            if (!this.disablePointerNone) {\n                this.elRef.nativeElement.removeAttribute('href');\n                this.elRef.nativeElement.removeAttribute('[href]');\n                this.elRef.nativeElement.setAttribute('aria-disabled', 'true');\n                this.elRef.nativeElement.setAttribute('tabindex', '-1');\n                this.elRef.nativeElement.style.cursor = 'default';\n                this.elRef.nativeElement.style.pointerEvents = 'none';\n            }\n        }\n    }\n\n    private openPhone(num: string): void {\n        window.location.href = `tel:${num}`;\n    }\n\n    private openEmail(email: string): void {\n        window.location.href = `mailto:${email}`;\n    }\n\n    private openAddress(address: string): void {\n        const mapsUrl = this.buildMapsUrl(address);\n        window.open(mapsUrl, '_blank');\n    }\n\n    private buildMapsUrl(address: string): string {\n        return `https://www.google.com/maps/search/?api=1&query=${encodeURIComponent(address)}`;\n    }\n\n    private isExternalType(t?: string): boolean {\n        return t === 'external' || t === 'external_link';\n    }\n\n    private detectExternalKind(raw: string): {\n        kind: 'phone' | 'email' | 'address' | 'url';\n        value: string;\n    } {\n        const trimmed = (raw || '').trim();\n\n        if (this.MAILTO_RE.test(trimmed)) {\n            const email = trimmed.replace(/^mailto:/i, '');\n            return { kind: 'email', value: email };\n        }\n\n        if (this.PHONE_RE.test(trimmed)) {\n            const match = this.PHONE_RE.exec(trimmed);\n            const numRaw = (match?.[1] ?? '').trim();\n            const digits = numRaw.replace(/[^\\d+]/g, '');\n            return { kind: 'phone', value: digits };\n        }\n        if (/^tel:/i.test(trimmed)) {\n            const num = trimmed.replace(/^tel:/i, '').replace(/[^\\d+]/g, '');\n            return { kind: 'phone', value: num };\n        }\n\n        const addrMatch = this.ADDRESS_RE.exec(trimmed);\n        if (addrMatch) {\n            const addr = (addrMatch[1] ?? '').trim();\n            return { kind: 'address', value: addr };\n        }\n\n        return { kind: 'url', value: trimmed };\n    }\n\n    private checkExternalLanguages(val: string): string {\n        const lang = this.siteSvc.selectedLanguageInstant?.locate.toLowerCase();\n        let langurl = val + '/' + lang;\n\n        return langurl;\n    }\n\n    private redirectToHomeAnchor(sectionId: string): void {\n        const intervalMs = 50;\n        let intervalId: any;\n        this.router.navigateByUrl('/').then(() => {\n            setTimeout(() => {\n                const attemptScroll = () => {\n                    const element = document.getElementById(sectionId);\n\n                    if (element) {\n                        clearInterval(intervalId);\n                        clearTimeout(timeoutId);\n                        this.scrollToSection(sectionId);\n                    }\n                };\n\n                intervalId = setInterval(attemptScroll, intervalMs);\n\n                const timeoutId = setTimeout(() => {\n                    clearInterval(intervalId);\n                    console.warn(`Section with ID ${sectionId} not found.`);\n                }, 3000);\n\n                attemptScroll();\n            }, 300);\n        });\n    }\n\n    private scrollToSection(sectionId: string): void {\n        const element = document.getElementById(sectionId);\n        if (element) {\n            setTimeout(() => {\n                const yOffset = -160;\n                const y =\n                    element.getBoundingClientRect().top +\n                    window.scrollY +\n                    yOffset;\n\n                window.scrollTo({ top: y, behavior: 'smooth' });\n                this.anchorClicked.emit();\n                document.querySelector('body')?.classList.remove('no_scroll');\n            }, 500);\n        } else {\n            console.warn(`Section with ID ${sectionId} not found.`);\n        }\n    }\n\n    private applyNormalizedHref(detected: {\n        kind: 'phone' | 'email' | 'address' | 'url';\n        value: string;\n    }): void {\n        const el = this.elRef.nativeElement;\n        const isAnchor = el.tagName.toLowerCase() === 'a';\n\n        if (!isAnchor) return;\n\n        switch (detected.kind) {\n            case 'phone':\n                el.setAttribute('href', `tel:${detected.value}`);\n                el.removeAttribute('target');\n                break;\n            case 'email':\n                el.setAttribute('href', `mailto:${detected.value}`);\n                el.removeAttribute('target');\n                break;\n            case 'address':\n                el.setAttribute('href', this.buildMapsUrl(detected.value));\n                el.setAttribute('target', '_blank');\n                break;\n            default:\n                if (el.closest('.cs_nav_list') && this.hasComplexLinks) {\n                    let newvalue = this.checkExternalLanguages(detected.value);\n                    el.setAttribute('href', newvalue);\n                } else {\n                    el.setAttribute('href', detected.value);\n                }\n                el.setAttribute('target', '_blank');\n                break;\n        }\n    }\n}\n","import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    Inject,\n    Input,\n    OnChanges,\n    PLATFORM_ID,\n} from '@angular/core';\n\ntype AllowedWrapper =\n    | 'span'\n    | 'b'\n    | 'i'\n    | 'u'\n    | 'mark'\n    | 'strong'\n    | 'em'\n    | 'small'\n    | 'del'\n    | 'ins'\n    | 'sub'\n    | 'sup'\n    | 'code'\n    | 'abbr'\n    | 'cite'\n    | 'kbd'\n    | 's'\n    | 'q'\n    | null;\n\n@Component({\n    selector: 'lib-babylon-dynamic-heading',\n    standalone: true,\n    imports: [CommonModule],\n    templateUrl: './babylon-dynamic-heading.component.html',\n    styleUrl: './babylon-dynamic-heading.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonDynamicHeadingComponent implements OnChanges {\n    private static readonly allowedTags = [\n        'h1',\n        'h2',\n        'h3',\n        'h4',\n        'h5',\n        'h6',\n        'p',\n    ];\n\n    private static readonly allowedWrappers: AllowedWrapper[] = [\n        'span',\n        'b',\n        'i',\n        'u',\n        'mark',\n        'strong',\n        'em',\n        'small',\n        'del',\n        'ins',\n        'sub',\n        'sup',\n        'code',\n        'abbr',\n        'cite',\n        'kbd',\n        's',\n        'q',\n        null,\n    ];\n\n    private _tag: string = 'h1';\n    private _wrapper: AllowedWrapper = null;\n\n    /** Etiqueta HTML principal (h1-h6, p, span por defecto) */\n    @Input()\n    set tag(value: string) {\n        this._tag = BabylonDynamicHeadingComponent.allowedTags.includes(value)\n            ? value\n            : 'h1';\n    }\n    get tag(): string {\n        return this._tag;\n    }\n\n    /** Wrapper interior (span, strong, em, etc.) */\n    @Input()\n    set wrapper(value: AllowedWrapper) {\n        this._wrapper = BabylonDynamicHeadingComponent.allowedWrappers.includes(\n            value\n        )\n            ? value\n            : null;\n    }\n    get wrapper(): AllowedWrapper {\n        return this._wrapper;\n    }\n\n    /** Clases CSS opcionales */\n    @Input() cssClass = '';\n\n    /** Texto del heading */\n    @Input() content?: string;\n\n    /** Color opcional (inline style) */\n    @Input() color?: string;\n\n    renderedHtml = '';\n\n    private blockRe =\n        /<(table|thead|tbody|tfoot|tr|ul|ol|li|div|section|article|h[1-6]|blockquote)/i;\n    constructor(\n        @Inject(PLATFORM_ID) private platformId: object,\n        private cdr: ChangeDetectorRef\n    ) {}\n\n    ngOnChanges() {\n        if (isPlatformBrowser(this.platformId)) {\n            const decoded = this.decodeEntities(this.content || '');\n            this.renderedHtml = this.cleanHtml(decoded);\n        } else {\n            this.renderedHtml = this.content || '';\n        }\n\n        // Forzamos a Angular a repintar el componente porque usamos OnPush\n        this.cdr.markForCheck();\n    }\n\n    /** Limpia <p> vacíos y <p> envolviendo bloques/tablas; desenvuelve <p> dentro de celdas. */\n    private cleanHtml(html: string): string {\n        const root = document.createElement('div');\n        root.innerHTML = html;\n\n        // 1) <td|th><p>...</p></td|th> -> <td|th>...</td|th>\n        root.querySelectorAll('td > p, th > p').forEach((p) => {\n            const parent = p.parentElement!;\n            while (p.firstChild) parent.insertBefore(p.firstChild, p);\n            parent.removeChild(p);\n        });\n\n        // 2) <p> que solo tiene espacios/nbsp/br -> eliminar\n        root.querySelectorAll('p').forEach((p) => {\n            const onlyBr = Array.from(p.childNodes).every(\n                (n) =>\n                    (n.nodeType === Node.ELEMENT_NODE &&\n                        (n as Element).tagName.toLowerCase() === 'br') ||\n                    (n.nodeType === Node.TEXT_NODE &&\n                        (n.textContent || '').replace(/\\u00a0/g, ' ').trim() ===\n                            '')\n            );\n            if (onlyBr) p.remove();\n        });\n\n        // 3) <p> que envuelve un bloque (table, ul, ol, div, section, article, h1..h6, blockquote) -> desenvolver\n        const isBlock = (el: Element) =>\n            /^(table|thead|tbody|tfoot|tr|th|td|ul|ol|div|section|article|h[1-6]|blockquote)$/i.test(\n                el.tagName\n            );\n\n        root.querySelectorAll('p').forEach((p) => {\n            // Si dentro hay algún bloque, desenvolver\n            if (Array.from(p.children).some(isBlock)) {\n                while (p.firstChild)\n                    p.parentElement!.insertBefore(p.firstChild, p);\n                p.remove();\n            }\n        });\n\n        return root.innerHTML;\n    }\n\n    containsBlockHtml(c: string) {\n        return this.blockRe.test(c);\n    }\n\n    private decodeEntities(s: string) {\n        const ta = document.createElement('textarea');\n        ta.innerHTML = s;\n        return ta.value;\n    }\n}\n","<ng-container [ngSwitch]=\"tag\">\n    <!-- H1 -->\n    <h1 *ngSwitchCase=\"'h1'\" [ngClass]=\"cssClass\" [style.color]=\"color\">\n        <ng-container *ngIf=\"wrapper; else noWrapperH1\">\n            <ng-container [ngSwitch]=\"wrapper\">\n                <span *ngSwitchCase=\"'span'\">{{ content }}</span>\n                <b *ngSwitchCase=\"'b'\">{{ content }}</b>\n                <i *ngSwitchCase=\"'i'\">{{ content }}</i>\n                <u *ngSwitchCase=\"'u'\">{{ content }}</u>\n                <mark *ngSwitchCase=\"'mark'\">{{ content }}</mark>\n                <strong *ngSwitchCase=\"'strong'\">{{ content }}</strong>\n                <em *ngSwitchCase=\"'em'\">{{ content }}</em>\n                <small *ngSwitchCase=\"'small'\">{{ content }}</small>\n                <del *ngSwitchCase=\"'del'\">{{ content }}</del>\n                <ins *ngSwitchCase=\"'ins'\">{{ content }}</ins>\n                <sub *ngSwitchCase=\"'sub'\">{{ content }}</sub>\n                <sup *ngSwitchCase=\"'sup'\">{{ content }}</sup>\n                <code *ngSwitchCase=\"'code'\">{{ content }}</code>\n                <abbr *ngSwitchCase=\"'abbr'\">{{ content }}</abbr>\n                <cite *ngSwitchCase=\"'cite'\">{{ content }}</cite>\n                <kbd *ngSwitchCase=\"'kbd'\">{{ content }}</kbd>\n                <s *ngSwitchCase=\"'s'\">{{ content }}</s>\n                <q *ngSwitchCase=\"'q'\">{{ content }}</q>\n            </ng-container>\n        </ng-container>\n        <ng-template #noWrapperH1>{{ content }}</ng-template>\n    </h1>\n\n    <!-- H2 -->\n    <h2 *ngSwitchCase=\"'h2'\" [ngClass]=\"cssClass\" [style.color]=\"color\">\n        <ng-container *ngIf=\"wrapper; else noWrapperH2\">\n            <ng-container [ngSwitch]=\"wrapper\">\n                <span *ngSwitchCase=\"'span'\">{{ content }}</span>\n                <b *ngSwitchCase=\"'b'\">{{ content }}</b>\n                <i *ngSwitchCase=\"'i'\">{{ content }}</i>\n                <u *ngSwitchCase=\"'u'\">{{ content }}</u>\n                <mark *ngSwitchCase=\"'mark'\">{{ content }}</mark>\n                <strong *ngSwitchCase=\"'strong'\">{{ content }}</strong>\n                <em *ngSwitchCase=\"'em'\">{{ content }}</em>\n                <small *ngSwitchCase=\"'small'\">{{ content }}</small>\n                <del *ngSwitchCase=\"'del'\">{{ content }}</del>\n                <ins *ngSwitchCase=\"'ins'\">{{ content }}</ins>\n                <sub *ngSwitchCase=\"'sub'\">{{ content }}</sub>\n                <sup *ngSwitchCase=\"'sup'\">{{ content }}</sup>\n                <code *ngSwitchCase=\"'code'\">{{ content }}</code>\n                <abbr *ngSwitchCase=\"'abbr'\">{{ content }}</abbr>\n                <cite *ngSwitchCase=\"'cite'\">{{ content }}</cite>\n                <kbd *ngSwitchCase=\"'kbd'\">{{ content }}</kbd>\n                <s *ngSwitchCase=\"'s'\">{{ content }}</s>\n                <q *ngSwitchCase=\"'q'\">{{ content }}</q>\n            </ng-container>\n        </ng-container>\n        <ng-template #noWrapperH2>{{ content }}</ng-template>\n    </h2>\n\n    <!-- H3 (CORREGIDO) -->\n    <ng-container *ngSwitchCase=\"'h3'\">\n        <ng-container *ngIf=\"wrapper; else noWrapperH3\">\n            <h3 [ngClass]=\"cssClass\" [style.color]=\"color\">\n                <ng-container [ngSwitch]=\"wrapper\">\n                    <span *ngSwitchCase=\"'span'\" [innerHTML]=\"content\"></span>\n                    <b *ngSwitchCase=\"'b'\" [innerHTML]=\"content\"></b>\n                    <i *ngSwitchCase=\"'i'\" [innerHTML]=\"content\"></i>\n                    <u *ngSwitchCase=\"'u'\" [innerHTML]=\"content\"></u>\n                    <mark *ngSwitchCase=\"'mark'\" [innerHTML]=\"content\"></mark>\n                    <strong\n                        *ngSwitchCase=\"'strong'\"\n                        [innerHTML]=\"content\"\n                    ></strong>\n                    <em *ngSwitchCase=\"'em'\" [innerHTML]=\"content\"></em>\n                    <small\n                        *ngSwitchCase=\"'small'\"\n                        [innerHTML]=\"content\"\n                    ></small>\n                    <del *ngSwitchCase=\"'del'\" [innerHTML]=\"content\"></del>\n                    <ins *ngSwitchCase=\"'ins'\" [innerHTML]=\"content\"></ins>\n                    <sub *ngSwitchCase=\"'sub'\" [innerHTML]=\"content\"></sub>\n                    <sup *ngSwitchCase=\"'sup'\" [innerHTML]=\"content\"></sup>\n                    <code *ngSwitchCase=\"'code'\" [innerHTML]=\"content\"></code>\n                    <abbr *ngSwitchCase=\"'abbr'\" [innerHTML]=\"content\"></abbr>\n                    <cite *ngSwitchCase=\"'cite'\" [innerHTML]=\"content\"></cite>\n                    <kbd *ngSwitchCase=\"'kbd'\" [innerHTML]=\"content\"></kbd>\n                    <s *ngSwitchCase=\"'s'\" [innerHTML]=\"content\"></s>\n                    <q *ngSwitchCase=\"'q'\" [innerHTML]=\"content\"></q>\n                </ng-container>\n            </h3>\n        </ng-container>\n\n        <ng-template #noWrapperH3>\n            @if (content) {\n                <h3\n                    *ngIf=\"!containsBlockHtml(content)\"\n                    [ngClass]=\"cssClass\"\n                    [style.color]=\"color\"\n                >\n                    <span [innerHTML]=\"content\"></span>\n                </h3>\n\n                <div\n                    *ngIf=\"containsBlockHtml(content)\"\n                    class=\"rich-html\"\n                    [ngClass]=\"cssClass\"\n                    [style.color]=\"color\"\n                    [innerHTML]=\"renderedHtml\"\n                ></div>\n            }\n        </ng-template>\n    </ng-container>\n\n    <!-- H4 -->\n    <h4 *ngSwitchCase=\"'h4'\" [ngClass]=\"cssClass\" [style.color]=\"color\">\n        <ng-container *ngIf=\"wrapper; else noWrapperH4\">\n            <ng-container [ngSwitch]=\"wrapper\">\n                <span *ngSwitchCase=\"'span'\">{{ content }}</span>\n                <b *ngSwitchCase=\"'b'\">{{ content }}</b>\n                <i *ngSwitchCase=\"'i'\">{{ content }}</i>\n                <u *ngSwitchCase=\"'u'\">{{ content }}</u>\n                <mark *ngSwitchCase=\"'mark'\">{{ content }}</mark>\n                <strong *ngSwitchCase=\"'strong'\">{{ content }}</strong>\n                <em *ngSwitchCase=\"'em'\">{{ content }}</em>\n                <small *ngSwitchCase=\"'small'\">{{ content }}</small>\n                <del *ngSwitchCase=\"'del'\">{{ content }}</del>\n                <ins *ngSwitchCase=\"'ins'\">{{ content }}</ins>\n                <sub *ngSwitchCase=\"'sub'\">{{ content }}</sub>\n                <sup *ngSwitchCase=\"'sup'\">{{ content }}</sup>\n                <code *ngSwitchCase=\"'code'\">{{ content }}</code>\n                <abbr *ngSwitchCase=\"'abbr'\">{{ content }}</abbr>\n                <cite *ngSwitchCase=\"'cite'\">{{ content }}</cite>\n                <kbd *ngSwitchCase=\"'kbd'\">{{ content }}</kbd>\n                <s *ngSwitchCase=\"'s'\">{{ content }}</s>\n                <q *ngSwitchCase=\"'q'\">{{ content }}</q>\n            </ng-container>\n        </ng-container>\n        <ng-template #noWrapperH4>{{ content }}</ng-template>\n    </h4>\n\n    <!-- H5 -->\n    <h5 *ngSwitchCase=\"'h5'\" [ngClass]=\"cssClass\" [style.color]=\"color\">\n        <ng-container *ngIf=\"wrapper; else noWrapperH5\">\n            <ng-container [ngSwitch]=\"wrapper\">\n                <span *ngSwitchCase=\"'span'\">{{ content }}</span>\n                <b *ngSwitchCase=\"'b'\">{{ content }}</b>\n                <i *ngSwitchCase=\"'i'\">{{ content }}</i>\n                <u *ngSwitchCase=\"'u'\">{{ content }}</u>\n                <mark *ngSwitchCase=\"'mark'\">{{ content }}</mark>\n                <strong *ngSwitchCase=\"'strong'\">{{ content }}</strong>\n                <em *ngSwitchCase=\"'em'\">{{ content }}</em>\n                <small *ngSwitchCase=\"'small'\">{{ content }}</small>\n                <del *ngSwitchCase=\"'del'\">{{ content }}</del>\n                <ins *ngSwitchCase=\"'ins'\">{{ content }}</ins>\n                <sub *ngSwitchCase=\"'sub'\">{{ content }}</sub>\n                <sup *ngSwitchCase=\"'sup'\">{{ content }}</sup>\n                <code *ngSwitchCase=\"'code'\">{{ content }}</code>\n                <abbr *ngSwitchCase=\"'abbr'\">{{ content }}</abbr>\n                <cite *ngSwitchCase=\"'cite'\">{{ content }}</cite>\n                <kbd *ngSwitchCase=\"'kbd'\">{{ content }}</kbd>\n                <s *ngSwitchCase=\"'s'\">{{ content }}</s>\n                <q *ngSwitchCase=\"'q'\">{{ content }}</q>\n            </ng-container>\n        </ng-container>\n        <ng-template #noWrapperH5>{{ content }}</ng-template>\n    </h5>\n\n    <!-- H6 -->\n    <h6 *ngSwitchCase=\"'h6'\" [ngClass]=\"cssClass\" [style.color]=\"color\">\n        <ng-container *ngIf=\"wrapper; else noWrapperH6\">\n            <ng-container [ngSwitch]=\"wrapper\">\n                <span *ngSwitchCase=\"'span'\">{{ content }}</span>\n                <b *ngSwitchCase=\"'b'\">{{ content }}</b>\n                <i *ngSwitchCase=\"'i'\">{{ content }}</i>\n                <u *ngSwitchCase=\"'u'\">{{ content }}</u>\n                <mark *ngSwitchCase=\"'mark'\">{{ content }}</mark>\n                <strong *ngSwitchCase=\"'strong'\">{{ content }}</strong>\n                <em *ngSwitchCase=\"'em'\">{{ content }}</em>\n                <small *ngSwitchCase=\"'small'\">{{ content }}</small>\n                <del *ngSwitchCase=\"'del'\">{{ content }}</del>\n                <ins *ngSwitchCase=\"'ins'\">{{ content }}</ins>\n                <sub *ngSwitchCase=\"'sub'\">{{ content }}</sub>\n                <sup *ngSwitchCase=\"'sup'\">{{ content }}</sup>\n                <code *ngSwitchCase=\"'code'\">{{ content }}</code>\n                <abbr *ngSwitchCase=\"'abbr'\">{{ content }}</abbr>\n                <cite *ngSwitchCase=\"'cite'\">{{ content }}</cite>\n                <kbd *ngSwitchCase=\"'kbd'\">{{ content }}</kbd>\n                <s *ngSwitchCase=\"'s'\">{{ content }}</s>\n                <q *ngSwitchCase=\"'q'\">{{ content }}</q>\n            </ng-container>\n        </ng-container>\n        <ng-template #noWrapperH6>{{ content }}</ng-template>\n    </h6>\n\n    <!-- P (CORREGIDO) -->\n    <ng-container *ngSwitchCase=\"'p'\">\n        <ng-container *ngIf=\"wrapper; else noWrapperP\">\n            <p [ngClass]=\"cssClass\" [style.color]=\"color\">\n                <ng-container [ngSwitch]=\"wrapper\">\n                    <span *ngSwitchCase=\"'span'\" [innerHTML]=\"content\"></span>\n                    <b *ngSwitchCase=\"'b'\" [innerHTML]=\"content\"></b>\n                    <i *ngSwitchCase=\"'i'\" [innerHTML]=\"content\"></i>\n                    <u *ngSwitchCase=\"'u'\" [innerHTML]=\"content\"></u>\n                    <mark *ngSwitchCase=\"'mark'\" [innerHTML]=\"content\"></mark>\n                    <strong\n                        *ngSwitchCase=\"'strong'\"\n                        [innerHTML]=\"content\"\n                    ></strong>\n                    <em *ngSwitchCase=\"'em'\" [innerHTML]=\"content\"></em>\n                    <small\n                        *ngSwitchCase=\"'small'\"\n                        [innerHTML]=\"content\"\n                    ></small>\n                    <del *ngSwitchCase=\"'del'\" [innerHTML]=\"content\"></del>\n                    <ins *ngSwitchCase=\"'ins'\" [innerHTML]=\"content\"></ins>\n                    <sub *ngSwitchCase=\"'sub'\" [innerHTML]=\"content\"></sub>\n                    <sup *ngSwitchCase=\"'sup'\" [innerHTML]=\"content\"></sup>\n                    <code *ngSwitchCase=\"'code'\" [innerHTML]=\"content\"></code>\n                    <abbr *ngSwitchCase=\"'abbr'\" [innerHTML]=\"content\"></abbr>\n                    <cite *ngSwitchCase=\"'cite'\" [innerHTML]=\"content\"></cite>\n                    <kbd *ngSwitchCase=\"'kbd'\" [innerHTML]=\"content\"></kbd>\n                    <s *ngSwitchCase=\"'s'\" [innerHTML]=\"content\"></s>\n                    <q *ngSwitchCase=\"'q'\" [innerHTML]=\"content\"></q>\n                </ng-container>\n            </p>\n        </ng-container>\n        <ng-template #noWrapperP>\n            @if (content) {\n                <p\n                    *ngIf=\"!containsBlockHtml(content)\"\n                    [ngClass]=\"cssClass\"\n                    [style.color]=\"color\"\n                >\n                    <span [innerHTML]=\"content\"></span>\n                </p>\n\n                <div\n                    *ngIf=\"containsBlockHtml(content)\"\n                    class=\"rich-html\"\n                    [ngClass]=\"cssClass\"\n                    [style.color]=\"color\"\n                    [innerHTML]=\"renderedHtml\"\n                ></div>\n            }\n        </ng-template>\n    </ng-container>\n\n    <!-- DEFAULT -->\n    <span *ngSwitchDefault [ngClass]=\"cssClass\" [innerHTML]=\"content\"></span>\n</ng-container>\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport { BabylonButtonI } from '../../../interfaces/babylon-button.interface';\nimport { BabylonImageI } from '../../../interfaces/babylon-image.interface';\nimport { BabylonDynamicHeadingComponent } from '../../shared/babylon-dynamic-heading/babylon-dynamic-heading.component';\nimport { BabylonTagsI } from '../../../interfaces/babylon-tags.interface';\nimport { BabylonTextsColorsI } from '../../../interfaces/babylon-texts-colors.interface';\n\n@Component({\n    selector: 'lib-babylon-404',\n    standalone: true,\n    imports: [\n        CommonModule,\n        RouterModule,\n        BabylonLinkTypeDirective,\n        BabylonDynamicHeadingComponent,\n    ],\n    templateUrl: './babylon-404.component.html',\n    styleUrl: './babylon-404.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class Babylon404Component {\n    @Input() pretitle?: string;\n    @Input() title?: string;\n    @Input() description?: string;\n    @Input() img?: BabylonImageI;\n    @Input() button?: BabylonButtonI;\n    @Input() tags?: BabylonTagsI;\n    @Input() textColors?: BabylonTextsColorsI;\n}\n","<section class=\"babylon__404 margin-main\">\n    <div class=\"container\">\n        <div class=\"intro_info align--center no-align\">\n            @if (pretitle) {\n                <lib-babylon-dynamic-heading\n                    [tag]=\"tags?.pretitle || 'h2'\"\n                    cssClass=\"title\"\n                    [color]=\"textColors?.pretitle\"\n                    [content]=\"pretitle\"\n                ></lib-babylon-dynamic-heading>\n            }\n            @if (title) {\n                <lib-babylon-dynamic-heading\n                    [tag]=\"tags?.title || 'h1'\"\n                    cssClass=\"title--small mb--10\"\n                    [color]=\"textColors?.title\"\n                    [content]=\"title\"\n                ></lib-babylon-dynamic-heading>\n            }\n            @if (description) {\n                <p class=\"text mb--10\" [innerHTML]=\"description\"></p>\n            }\n            @if (button?.label) {\n                <div class=\"btns__box align--center\">\n                    <a\n                        role=\"button\"\n                        [attr.aria-label]=\"button?.label\"\n                        [href]=\"button?.url\"\n                        [linkType]=\"button?.linkType\"\n                        class=\"btn btn-primary\"\n                    >\n                        <b>{{ button?.label }}</b>\n                        <span class=\"babylon-arrow-right-big\"></span>\n                    </a>\n                </div>\n            }\n        </div>\n    </div>\n</section>\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { BabylonButtonI, BabylonImageI } from '../../../interfaces';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\n\n@Component({\n  selector: 'lib-babylon-action-banner',\n  standalone: true,\n  imports: [CommonModule, BabylonLinkTypeDirective],\n  templateUrl: './babylon-action-banner.component.html',\n  styleUrl: './babylon-action-banner.component.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonActionBannerComponent {\n    @Input() button?: BabylonButtonI;\n    @Input() image?: BabylonImageI;\n    @Input() image2?: BabylonImageI;\n    @Input() table?: string;\n    @Input() sala1?: string;\n    @Input() sala2?: string;\n\n    @Output() modalClick = new EventEmitter<string>();\n}\n","<section class=\"babylon__action-banner\">\n    <div class=\"action-banner-container\">\n        <div class=\"action-banner-content\">\n            @if (button) {\n                <a\n                    role=\"button\"\n                    [attr.aria-label]=\"button.label\"\n                    [href]=\"button.url\"\n                    [linkType]=\"button.linkType\"\n                    [modalClick]=\"modalClick\"\n                    class=\"btn btn_primary\"\n                >\n                    {{ button.label }}\n                    <i class=\"svg-play\"></i>\n                    <!-- @if (button.icon) {\n                        <span class=\"info--icon\">\n                            <i\n                                class=\"icon--svg\"\n                                [ngClass]=\"'icon-' + button.icon\"\n                            ></i>\n                        </span>\n                    } -->\n                </a>\n            }\n        </div>\n        @if (table) {\n            @if (sala1) {\n                <h3 class=\"subtitle\">{{ sala1 }}</h3>\n            }\n            @if (image) {\n                <div class=\"action-banner-image\">\n                    <img\n                        [src]=\"\n                            image?.src ||\n                            'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                        \"\n                        [alt]=\"image?.alt ?? image?.title ?? 'title'\"\n                    />\n                </div>\n            }\n            <div class=\"container\">\n                <table>\n                    <thead>\n                        <tr>\n                            <th></th>\n                            <th>\n                                <div>\n                                    <i></i>\n                                    <span>m²</span>\n                                </div>\n                            </th>\n                            <th>\n                                <div>\n                                    <i></i>\n                                    <span>Terraza (m ²)</span>\n                                </div>\n                            </th>\n                            <th>\n                                <div>\n                                    <i class=\"svg-1\"></i>\n                                    <span>Banquete</span>\n                                </div>\n                            </th>\n                            <th>\n                                <div>\n                                    <i class=\"svg-2\"></i>\n                                    <span>Cocktail</span>\n                                </div>\n                            </th>\n                            <th>\n                                <div>\n                                    <i class=\"svg-3\"></i>\n                                    <span>Teatro</span>\n                                </div>\n                            </th>\n                            <th>\n                                <div>\n                                    <i class=\"svg-4\"></i>\n                                    <span>Aula</span>\n                                </div>\n                            </th>\n                            <th>\n                                <div>\n                                    <i class=\"svg-5\"></i>\n                                    <span>Cabaret</span>\n                                </div>\n                            </th>\n                            <th>\n                                <div>\n                                    <i class=\"svg-6\"></i>\n                                    <span>Formato \"U\"</span>\n                                </div>\n                            </th>\n                            <th>\n                                <div>\n                                    <i class=\"svg-7\"></i>\n                                    <span>Formato \"O\"</span>\n                                </div>\n                            </th>\n                            <th>\n                                <div>\n                                    <i class=\"svg-8\"></i>\n                                    <span>Imperial</span>\n                                </div>\n                            </th>\n                        </tr>\n                    </thead>\n                    <tbody>\n                        <tr>\n                            <td>Mimosa (1)</td>\n                            <td>185</td>\n                            <td>54</td>\n                            <td>64 + P</td>\n                            <td>140</td>\n                            <td>70 + P</td>\n                            <td>30 + P</td>\n                            <td>55</td>\n                            <td>38 + P</td>\n                            <td>38</td>\n                            <td>64</td>\n                        </tr>\n                        <tr>\n                            <td>Tamarindo (2)</td>\n                            <td>67</td>\n                            <td>29</td>\n                            <td>20 + P</td>\n                            <td>65</td>\n                            <td>36 + P</td>\n                            <td>24 + P</td>\n                            <td>15</td>\n                            <td>22 + P</td>\n                            <td>24</td>\n                            <td>24</td>\n                        </tr>\n                        <tr>\n                            <td>Magnolia (3)</td>\n                            <td>121</td>\n                            <td>57</td>\n                            <td>40 + P</td>\n                            <td>100</td>\n                            <td>75 + P</td>\n                            <td>40 + P</td>\n                            <td>35</td>\n                            <td>30 + P</td>\n                            <td>32</td>\n                            <td>48</td>\n                        </tr>\n                        <tr>\n                            <td>Magnolia Plus (2+3)</td>\n                            <td>188</td>\n                            <td>86</td>\n                            <td>60 + P</td>\n                            <td>165</td>\n                            <td>130 + P</td>\n                            <td>90 + P</td>\n                            <td>90</td>\n                            <td>100 + P</td>\n                            <td>70</td>\n                            <td>80</td>\n                        </tr>\n                        <tr>\n                            <td>Secuoya (1+2+3)</td>\n                            <td>374</td>\n                            <td>141</td>\n                            <td>124 + P</td>\n                            <td>305</td>\n                            <td>150</td>\n                            <td></td>\n                            <td></td>\n                            <td></td>\n                            <td></td>\n                            <td></td>\n                        </tr>\n                        <tr>\n                            <td>Hall (4)</td>\n                            <td>55</td>\n                            <td></td>\n                            <td></td>\n                            <td></td>\n                            <td></td>\n                            <td></td>\n                            <td></td>\n                            <td></td>\n                            <td></td>\n                            <td></td>\n                        </tr>\n                    </tbody>\n                </table>\n                <table class=\"mobile-table\">\n                    <thead>\n                        <tr>\n                            <td></td>\n                            <td>Mimosa (1)</td>\n                            <td>Tamarindo (2)</td>\n                            <td>Magnolia (3)</td>\n                            <td>Magnolia Plus (2+3)</td>\n                            <td>Secuoya (1+2+3)</td>\n                            <td>Hall (4)</td>\n                        </tr>\n                    </thead>\n                    <tbody>\n                        <tr>\n                            <th>\n                                <div>\n                                    <span\n                                        style=\"\n                                            padding-top: 21.5px;\n                                            padding-bottom: 21.5px;\n                                        \"\n                                        >m²</span\n                                    >\n                                </div>\n                            </th>\n                            <td>185</td>\n                            <td>67</td>\n                            <td>121</td>\n                            <td>188</td>\n                            <td>374</td>\n                            <td>55</td>\n                        </tr>\n                        <tr>\n                            <th>\n                                <div>\n                                    <span\n                                        style=\"\n                                            padding-top: 21.5px;\n                                            padding-bottom: 21.5px;\n                                        \"\n                                        >Terraza (m ²)</span\n                                    >\n                                </div>\n                            </th>\n                            <td>54</td>\n                            <td>29</td>\n                            <td>57</td>\n                            <td>86</td>\n                            <td>141</td>\n                            <td></td>\n                        </tr>\n                        <tr>\n                            <th>\n                                <div>\n                                    <i class=\"svg-1\"></i>\n                                    <span>Banquete</span>\n                                </div>\n                            </th>\n                            <td>64 + P</td>\n                            <td>20 + P</td>\n                            <td>40 + P</td>\n                            <td>60 + P</td>\n                            <td>124 + P</td>\n                            <td></td>\n                        </tr>\n                        <tr>\n                            <th>\n                                <div>\n                                    <i class=\"svg-2\"></i>\n                                    <span>Cocktail</span>\n                                </div>\n                            </th>\n                            <td>140</td>\n                            <td>65</td>\n                            <td>100</td>\n                            <td>165</td>\n                            <td>305</td>\n                            <td></td>\n                        </tr>\n                        <tr>\n                            <th>\n                                <div>\n                                    <i class=\"svg-3\"></i>\n                                    <span>Teatro</span>\n                                </div>\n                            </th>\n                            <td>70 + P</td>\n                            <td>36 + P</td>\n                            <td>75 + P</td>\n                            <td>130 + P</td>\n                            <td>150</td>\n                            <td></td>\n                        </tr>\n                        <tr>\n                            <th>\n                                <div>\n                                    <i class=\"svg-4\"></i>\n                                    <span>Aula</span>\n                                </div>\n                            </th>\n                            <td>30 + P</td>\n                            <td>24 + P</td>\n                            <td>40 + P</td>\n                            <td>90 + P</td>\n                            <td></td>\n                            <td></td>\n                        </tr>\n                        <tr>\n                            <th>\n                                <div>\n                                    <i class=\"svg-5\"></i>\n                                    <span>Cabaret</span>\n                                </div>\n                            </th>\n                            <td>55</td>\n                            <td>15</td>\n                            <td>35</td>\n                            <td>90</td>\n                            <td></td>\n                            <td></td>\n                        </tr>\n                        <tr>\n                            <th>\n                                <div>\n                                    <i class=\"svg-6\"></i>\n                                    <span>Formato \"U\"</span>\n                                </div>\n                            </th>\n                            <td>38 + P</td>\n                            <td>22 + P</td>\n                            <td>30 + P</td>\n                            <td>100 + P</td>\n                            <td></td>\n                            <td></td>\n                        </tr>\n                        <tr>\n                            <th>\n                                <div>\n                                    <i class=\"svg-7\"></i>\n                                    <span>Formato \"O\"</span>\n                                </div>\n                            </th>\n                            <td>38</td>\n                            <td>24</td>\n                            <td>32</td>\n                            <td>70</td>\n                            <td></td>\n                            <td></td>\n                        </tr>\n                        <tr>\n                            <th>\n                                <div>\n                                    <i class=\"svg-8\"></i>\n                                    <span>Imperial</span>\n                                </div>\n                            </th>\n                            <td>64</td>\n                            <td>24</td>\n                            <td>48</td>\n                            <td>80</td>\n                            <td></td>\n                            <td></td>\n                        </tr>\n                    </tbody>\n                </table>\n            </div>\n            <p class=\"container\">\n                P: Presidencia / Ponente <br />\n                Observaciones: existe acceso independiente desde el exterior.\n            </p>\n            <!-------------------------------------------------------------------------------------------------------------------------->\n            @if (sala2) {\n                <h3 class=\"subtitle\">{{ sala2 }}</h3>\n            }\n            @if (image2) {\n                <div class=\"action-banner-image\">\n                    <img [src]=\"image2.src\" [alt]=\"image2.alt\" />\n                </div>\n            }\n            <div class=\"container\">\n                <table>\n                    <thead>\n                        <tr>\n                            <th></th>\n                            <th>\n                                <div>\n                                    <i></i>\n                                    <span>m²</span>\n                                </div>\n                            </th>\n                            <th>\n                                <div>\n                                    <i></i>\n                                    <span>Terraza (m ²)</span>\n                                </div>\n                            </th>\n                            <th>\n                                <div>\n                                    <i class=\"svg-1\"></i>\n                                    <span>Banquete</span>\n                                </div>\n                            </th>\n                            <th>\n                                <div>\n                                    <i class=\"svg-2\"></i>\n                                    <span>Cocktail</span>\n                                </div>\n                            </th>\n                            <th>\n                                <div>\n                                    <i class=\"svg-3\"></i>\n                                    <span>Teatro</span>\n                                </div>\n                            </th>\n                            <th>\n                                <div>\n                                    <i class=\"svg-4\"></i>\n                                    <span>Aula</span>\n                                </div>\n                            </th>\n                            <th>\n                                <div>\n                                    <i class=\"svg-5\"></i>\n                                    <span>Cabaret</span>\n                                </div>\n                            </th>\n                            <th>\n                                <div>\n                                    <i class=\"svg-6\"></i>\n                                    <span>Formato \"U\"</span>\n                                </div>\n                            </th>\n                            <th>\n                                <div>\n                                    <i class=\"svg-7\"></i>\n                                    <span>Formato \"O\"</span>\n                                </div>\n                            </th>\n                            <th>\n                                <div>\n                                    <i class=\"svg-8\"></i>\n                                    <span>Imperial</span>\n                                </div>\n                            </th>\n                        </tr>\n                    </thead>\n                    <tbody>\n                        <tr>\n                            <td>Roble (1)</td>\n                            <td>96</td>\n                            <td>(*)</td>\n                            <td>40 + P</td>\n                            <td>70</td>\n                            <td>65 + P</td>\n                            <td>30 + P</td>\n                            <td>30</td>\n                            <td>30 + P</td>\n                            <td>36</td>\n                            <td>32</td>\n                        </tr>\n                        <tr>\n                            <td>Haya (2)</td>\n                            <td>73</td>\n                            <td>(*)</td>\n                            <td>24 + P</td>\n                            <td>45</td>\n                            <td>30 + P</td>\n                            <td>20 + P</td>\n                            <td>18</td>\n                            <td>24 + P</td>\n                            <td>32</td>\n                            <td>28</td>\n                        </tr>\n                        <tr>\n                            <td>Encina (1+2)</td>\n                            <td>170</td>\n                            <td></td>\n                            <td>100 + P</td>\n                            <td>120</td>\n                            <td>75 + P</td>\n                            <td>60 + P</td>\n                            <td>60</td>\n                            <td>35 + P</td>\n                            <td>44</td>\n                            <td>72</td>\n                        </tr>\n                        <tr>\n                            <td>Palma (3)</td>\n                            <td>198</td>\n                            <td>(*)</td>\n                            <td>60 + P</td>\n                            <td>130</td>\n                            <td>75 + P</td>\n                            <td>54 + P</td>\n                            <td>60</td>\n                            <td>20 + P</td>\n                            <td>40</td>\n                            <td>44</td>\n                        </tr>\n                        <tr>\n                            <td>Olivo (4)</td>\n                            <td>222</td>\n                            <td>(*)</td>\n                            <td>48 + P</td>\n                            <td>145</td>\n                            <td>80 + P</td>\n                            <td>32 + P</td>\n                            <td>40</td>\n                            <td>40 + P</td>\n                            <td>40</td>\n                            <td>40</td>\n                        </tr>\n                        <tr>\n                            <td>Acebo (5)</td>\n                            <td>95</td>\n                            <td>(*)</td>\n                            <td>32 + P</td>\n                            <td>80</td>\n                            <td>60 + P</td>\n                            <td>32 + P</td>\n                            <td>25</td>\n                            <td>24 + P</td>\n                            <td>36</td>\n                            <td>32</td>\n                        </tr>\n                        <tr>\n                            <td>Cedro (3+4+5)</td>\n                            <td>517</td>\n                            <td></td>\n                            <td></td>\n                            <td></td>\n                            <td></td>\n                            <td></td>\n                            <td></td>\n                            <td></td>\n                            <td></td>\n                            <td></td>\n                        </tr>\n                        <tr>\n                            <td>Bosque (1+2+3+4+5)</td>\n                            <td>687</td>\n                            <td></td>\n                            <td></td>\n                            <td></td>\n                            <td></td>\n                            <td></td>\n                            <td></td>\n                            <td></td>\n                            <td></td>\n                            <td></td>\n                        </tr>\n                    </tbody>\n                </table>\n                <table class=\"mobile-table\">\n                    <thead>\n                        <tr>\n                            <td></td>\n                            <td>Roble (1)</td>\n                            <td>Haya (2)</td>\n                            <td>Encina (1+2)</td>\n                            <td>Palma (3)</td>\n                            <td>Olivo (4)</td>\n                            <td>Acebo (5)</td>\n                            <td>Cedro (3+4+5)</td>\n                            <td>Bosque (1+2+3+4+5)</td>\n                        </tr>\n                    </thead>\n                    <tbody>\n                        <tr>\n                            <th>\n                                <div>\n                                    <span\n                                        style=\"\n                                            padding-top: 21.5px;\n                                            padding-bottom: 21.5px;\n                                        \"\n                                        >m²</span\n                                    >\n                                </div>\n                            </th>\n                            <td>96</td>\n                            <td>73</td>\n                            <td>170</td>\n                            <td>198</td>\n                            <td>222</td>\n                            <td>95</td>\n                            <td>517</td>\n                            <td>687</td>\n                        </tr>\n                        <tr>\n                            <th>\n                                <div>\n                                    <span\n                                        style=\"\n                                            padding-top: 21.5px;\n                                            padding-bottom: 21.5px;\n                                        \"\n                                        >Terraza (m ²)</span\n                                    >\n                                </div>\n                            </th>\n                            <td>(*)</td>\n                            <td>(*)</td>\n                            <td></td>\n                            <td>(*)</td>\n                            <td>(*)</td>\n                            <td>(*)</td>\n                            <td></td>\n                            <td></td>\n                        </tr>\n                        <tr>\n                            <th>\n                                <div>\n                                    <i class=\"svg-1\"></i>\n                                    <span>Banquete</span>\n                                </div>\n                            </th>\n                            <td>40 + P</td>\n                            <td>24 + P</td>\n                            <td>100 + P</td>\n                            <td>60 + P</td>\n                            <td>48 + P</td>\n                            <td>32 + P</td>\n                            <td></td>\n                            <td></td>\n                        </tr>\n                        <tr>\n                            <th>\n                                <div>\n                                    <i class=\"svg-2\"></i>\n                                    <span>Cocktail</span>\n                                </div>\n                            </th>\n                            <td>70</td>\n                            <td>45</td>\n                            <td>120</td>\n                            <td>130</td>\n                            <td>145</td>\n                            <td>80</td>\n                            <td></td>\n                            <td></td>\n                        </tr>\n                        <tr>\n                            <th>\n                                <div>\n                                    <i class=\"svg-3\"></i>\n                                    <span>Teatro</span>\n                                </div>\n                            </th>\n                            <td>65 + P</td>\n                            <td>30 + P</td>\n                            <td>75 + P</td>\n                            <td>75 + P</td>\n                            <td>80 + P</td>\n                            <td>60 + P</td>\n                            <td></td>\n                            <td></td>\n                        </tr>\n                        <tr>\n                            <th>\n                                <div>\n                                    <i class=\"svg-4\"></i>\n                                    <span>Aula</span>\n                                </div>\n                            </th>\n                            <td>30 + P</td>\n                            <td>20 + P</td>\n                            <td>60 + P</td>\n                            <td>54 + P</td>\n                            <td>32 + P</td>\n                            <td>32 + P</td>\n                            <td></td>\n                            <td></td>\n                        </tr>\n                        <tr>\n                            <th>\n                                <div>\n                                    <i class=\"svg-5\"></i>\n                                    <span>Cabaret</span>\n                                </div>\n                            </th>\n                            <td>30</td>\n                            <td>18</td>\n                            <td>60</td>\n                            <td>60</td>\n                            <td>40</td>\n                            <td>25</td>\n                            <td></td>\n                            <td></td>\n                        </tr>\n                        <tr>\n                            <th>\n                                <div>\n                                    <i class=\"svg-6\"></i>\n                                    <span>Formato \"U\"</span>\n                                </div>\n                            </th>\n                            <td>30 + P</td>\n                            <td>24 + P</td>\n                            <td>35 + P</td>\n                            <td>20 + P</td>\n                            <td>40 + P</td>\n                            <td>24 + P</td>\n                            <td></td>\n                            <td></td>\n                        </tr>\n                        <tr>\n                            <th>\n                                <div>\n                                    <i class=\"svg-7\"></i>\n                                    <span>Formato \"O\"</span>\n                                </div>\n                            </th>\n                            <td>36</td>\n                            <td>32</td>\n                            <td>44</td>\n                            <td>40</td>\n                            <td>40</td>\n                            <td>36</td>\n                            <td></td>\n                            <td></td>\n                        </tr>\n                        <tr>\n                            <th>\n                                <div>\n                                    <i class=\"svg-8\"></i>\n                                    <span>Imperial</span>\n                                </div>\n                            </th>\n                            <td>32</td>\n                            <td>28</td>\n                            <td>72</td>\n                            <td>44</td>\n                            <td>40</td>\n                            <td>32</td>\n                            <td></td>\n                            <td></td>\n                        </tr>\n                    </tbody>\n                </table>\n            </div>\n            <p class=\"container\">\n                P: Presidencia / Ponente -- (*): Posibilidad de poder reservar\n                parte de la terraza.<br />\n                Observaciones: las salas Palma y Olivo sólo están disponibles en\n                los meses de verano.\n            </p>\n        }\n    </div>\n</section>\n","import { Observable } from 'rxjs';\nimport { BabylonButtonI, BodyComponent } from '../interfaces';\n\nexport class Utils {\n    // Función para convertir una cadena de snake_case a camelCase\n    static snakeToCamel(snake: string): string {\n        return snake.replace(/(_\\w)/g, (matches) => matches[1].toUpperCase());\n    }\n\n    // Función para convertir las propiedades de un objeto de snake_case a camelCase\n    static convertObjectKeysToCamelCase(obj: any): any {\n        if (Array.isArray(obj)) {\n            return obj.map((item) => this.convertObjectKeysToCamelCase(item));\n        } else if (\n            obj &&\n            typeof obj === 'object' &&\n            obj.constructor === Object\n        ) {\n            return Object.keys(obj).reduce((result, key) => {\n                const camelKey = this.snakeToCamel(key);\n                result[camelKey] = this.convertObjectKeysToCamelCase(obj[key]);\n                return result;\n            }, {} as any);\n        }\n        return obj;\n    }\n\n    static formatLinkType(linkType: string): string | undefined {\n        return linkType === 'external_link' || linkType === 'external'\n            ? 'external'\n            : linkType === 'internal_link' || linkType === 'internal'\n              ? 'internal'\n              : linkType;\n    }\n\n    static findComponent<T>(\n        body: BodyComponent<T>[],\n        name: string\n    ): T | undefined {\n        return body.find((component) => component?.name?.toLowerCase() === name)\n            ?.props;\n    }\n\n    static convertToBase64(file: File): Promise<string> {\n        return new Promise<string>((resolve, reject) => {\n            const reader = new FileReader();\n            reader.readAsDataURL(file);\n            reader.onload = () => resolve(reader.result as string);\n            reader.onerror = (error) => reject(error);\n        });\n    }\n\n    static normalizeText(text: string): string {\n        return text\n            ?.normalize('NFD') // Descompone los caracteres con acentos\n            ?.replace(/[\\u0300-\\u036f]/g, '') // Elimina los acentos\n            ?.toLowerCase();\n    }\n\n    static mapButtons(\n        button: any | any[] | undefined | null,\n        buttonType?: string\n    ): BabylonButtonI[] | undefined {\n        if (!button || (Array.isArray(button) && button.length === 0))\n            return undefined;\n\n\n        // Si es un array, lo usamos tal cual\n        let rawArray: any[] | null = null;\n        if (Array.isArray(button)) {\n            rawArray = button;\n        } else if (typeof button === 'object' && button !== null) {\n            // Si es iterable (NodeList, etc.)\n            if (Symbol.iterator in button) {\n                rawArray = Array.from(button as Iterable<any>);\n            } else {\n                // Si es un objeto plano, convertimos sus valores a array\n                rawArray = Object.values(button);\n            }\n        }\n\n        if (!rawArray) return typeof button === 'object' ? [] : undefined;\n\n        const mapped = rawArray\n            .map((btn) => {\n                const label =\n                    typeof btn?.label === 'string'\n                        ? btn.label.trim()\n                        : String(btn?.label || '');\n                const rawLink = btn?.linkValue ?? btn?.link_value;\n\n                // Validación robusta: necesitamos etiqueta y un link string\n                if (typeof rawLink !== 'string') return undefined;\n\n                const trimmedValue = rawLink.endsWith('/')\n                    ? rawLink.slice(0, -1)\n                    : rawLink;\n                let url: string;\n\n                if (/^\\+?[0-9]+$/.test(trimmedValue)) {\n                    url = trimmedValue.startsWith('tel:')\n                        ? trimmedValue\n                        : `tel:${trimmedValue}`;\n                } else if (/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(trimmedValue)) {\n                    url = trimmedValue.startsWith('mailto:')\n                        ? trimmedValue\n                        : `mailto:${trimmedValue}`;\n                } else {\n                    url = trimmedValue;\n                }\n\n                return {\n                    type: buttonType ?? undefined,\n                    label,\n                    linkType: Utils.formatLinkType(\n                        btn?.linkType ?? btn?.link_type\n                    ),\n                    url,\n                    icon: btn?.icon ? `icon-${btn.icon}` : undefined,\n                    order: btn?.order?.toString(),\n                    vars: btn?.linkVars?.toString(),\n                } as BabylonButtonI;\n            })\n            .filter((btn): btn is BabylonButtonI => !!btn);\n\n        return Utils.sortButtonsByOrder(mapped, { keepOriginal: true });\n    }\n\n    private static processSingleButton(\n        btn: any,\n        buttonType?: string\n    ): BabylonButtonI | undefined {\n        const label = btn?.label?.trim();\n        const rawLink = btn?.linkValue ?? btn?.link_value;\n\n        // Validación básica: si no hay label o link, no es un botón válido\n        if (!label || !rawLink || typeof rawLink !== 'string') {\n            return undefined;\n        }\n\n        // Limpieza de URL\n        const trimmedValue = rawLink.endsWith('/')\n            ? rawLink.slice(0, -1)\n            : rawLink;\n        let url: string = trimmedValue;\n\n        if (/^\\+?[0-9]+$/.test(trimmedValue)) {\n            url = trimmedValue.startsWith('tel:')\n                ? trimmedValue\n                : `tel:${trimmedValue}`;\n        } else if (/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(trimmedValue)) {\n            url = trimmedValue.startsWith('mailto:')\n                ? trimmedValue\n                : `mailto:${trimmedValue}`;\n        }\n\n        return {\n            type: buttonType ?? undefined,\n            label,\n            linkType: Utils.formatLinkType(btn?.linkType ?? btn?.link_type),\n            url,\n            icon: btn.icon ? `icon-${btn.icon}` : undefined,\n            order: btn.order?.toString(),\n            vars: btn.linkVars?.toString(),\n        } as BabylonButtonI;\n    }\n\n    static loadScript$(src: string): Observable<void> {\n        return new Observable<void>((observer) => {\n            const existing = document.querySelector(`script[src=\"${src}\"]`);\n            if (existing) {\n                observer.next();\n                observer.complete();\n                return;\n            }\n\n            const script = document.createElement('script');\n            script.src = src;\n            script.type = 'text/javascript';\n            script.defer = true;\n            script.async = true;\n\n            script.onload = () => {\n                observer.next();\n                observer.complete();\n            };\n\n            script.onerror = (err) => {\n                observer.error(new Error(`Error loading script: ${src}`));\n            };\n\n            document.head.appendChild(script);\n        });\n    }\n\n    static loadStyle$(href: string): Observable<boolean> {\n        return new Observable<boolean>((observer) => {\n            const existing = document.querySelector(`link[href=\"${href}\"]`);\n            if (existing) {\n                observer.next(true);\n                observer.complete();\n                return;\n            }\n\n            const link = document.createElement('link');\n            link.rel = 'preload';\n            link.href = href;\n            link.as = 'style';\n            link.onload = () => {\n                link.onload = null;\n\n                link.rel = 'stylesheet';\n\n                observer.next(true);\n                observer.complete();\n            };\n            link.onerror = () => {\n                observer.error(\n                    new Error(`No se pudo precargar el estilo: ${href}`)\n                );\n            };\n\n            document.head.appendChild(link);\n\n            // opcional: fallback <noscript> (no lo necesita Angular pero lo puedes agregar)\n            const noscript = document.createElement('noscript');\n            noscript.innerHTML = `<link rel=\"stylesheet\" href=\"${href}\">`;\n            document.head.appendChild(noscript);\n        });\n    }\n\n    static safeOpenExternal(url: string): void {\n        if (typeof window === 'undefined' || !url) return;\n\n        const win = window.open(url, '_blank', 'noopener,noreferrer');\n        if (win) return;\n\n        // Fallback si bloquean popups\n        const a = document.createElement('a');\n        a.href = url;\n        a.target = '_blank';\n        a.rel = 'noopener noreferrer';\n        a.style.display = 'none';\n        document.body.appendChild(a);\n        a.click();\n        a.remove();\n    }\n\n    static extractNumberRange(\n        value?: string | null,\n        fallback: number[] = []\n    ): number[] {\n        if (!value) return fallback;\n\n        const match = value.match(/\\d+/);\n        if (!match) return fallback;\n\n        const n = Number(match[0]);\n        if (Number.isNaN(n) || n <= 0) return fallback;\n\n        return Array.from({ length: n }, (_, i) => i + 1);\n    }\n\n    static sortButtonsByOrder<T extends { order?: any }>(\n        buttons?: Array<T | undefined | null> | null,\n        opts?: { keepOriginal?: boolean }\n    ): T[] {\n        const arr = (buttons ?? []).filter((b): b is T => !!b);\n        if (!arr.length) return [];\n\n        const list = opts?.keepOriginal ? [...arr] : arr;\n\n        const toNum = (v: any): number => {\n            const n = Number(v);\n            return Number.isFinite(n) ? n : Number.POSITIVE_INFINITY;\n        };\n\n        return list.sort((a, b) => toNum(a.order) - toNum(b.order));\n    }\n\n    static toSlug(input: string): string {\n        return (input ?? '')\n            .toString()\n            .trim()\n            .toLowerCase()\n            .normalize('NFD')\n            .replace(/[\\u0300-\\u036f]/g, '') // quita tildes\n            .replace(/&/g, 'and') // opcional\n            .replace(/[^a-z0-9\\s-]/g, '') // quita caracteres raros\n            .replace(/\\s+/g, '-') // espacios -> -\n            .replace(/-+/g, '-') // colapsa ---\n            .replace(/^-|-$/g, ''); // quita - al inicio/fin\n    }\n\n    static uniqueSlug(label: string, used: Set<string>): string {\n        const base = this.toSlug(label) || 'item';\n        if (!used.has(base)) {\n            used.add(base);\n            return base;\n        }\n\n        let i = 2;\n        while (used.has(`${base}-${i}`)) i++;\n        const slug = `${base}-${i}`;\n        used.add(slug);\n        return slug;\n    }\n\n    static canonicalHotelTypeSlug(label: string): string {\n        // slug base (sin tildes/raros)\n        let s = Utils.toSlug(label);\n\n        // normaliza plurales comunes ES (hotel(es), apartamento(s))\n        // puedes ampliar aquí si tienes \"apartamentos turísticos\", etc.\n        if (s === 'hoteles') return 'hotel';\n        if (s === 'apartamentos') return 'apartamento';\n\n        // regla genérica suave: si termina en 's' y no es 'dos/tres/...' etc.\n        // (evita cargarte cosas como \"pools\" si existieran, pero aquí aplica bien)\n        if (s.endsWith('s')) s = s.slice(0, -1);\n\n        return s;\n    }\n\n        /**\n     * Comprueba si el tipo es un hotel en varios idiomas\n     */\n    static isHotel(type?: string): boolean {\n        if (!type) return false;\n        const normalized = type.trim().toLowerCase();\n        // Traducciones de \"hotel\" en varios idiomas\n        const hotelTypes = [\n            'hôtel',\n            'hotel',\n            'отель',\n            'hoteu',\n            'hote',\n            'hoteis',\n            'hotels',\n            'hôtels',\n            'hoteles',\n        ];\n        return hotelTypes.includes(normalized);\n    }\n\n\n    static getFormattedUrl(link: any): string {\n        if (!link?.url) return '';\n\n        if (link.vars) {\n            const cleanUrl = link.url.endsWith('/')\n                ? link.url.slice(0, -1)\n                : link.url;\n            return cleanUrl + link.vars;\n        }\n\n        return link.url + (link.vars || '');\n    }\n\n    static isApartment(type?: string): boolean {\n        if (!type) return false;\n        const normalized = type.trim().toLowerCase();\n        // Traducciones de \"apartment\" en varios idiomas\n        const apartmentTypes = [\n            'appartement',\n            'apartamento',\n            'квартира',\n            'apartamentos',\n            'apartments',\n            'apartment',\n            'appartements',\n        ];\n        return apartmentTypes.includes(normalized);\n    }\n\n    static showIfSup(value?: string | null): string {\n        const regex = /\\b(SUP|superior)\\b/i;\n\n        return regex.test(value ?? '') ? 'SUP' : '';\n      }\n}\n","import { BabylonGlobalItem } from '../interfaces/babylon-global-item.interface';\n\n/**\n * Normaliza un array de BabylonGlobalItem para asegurar que:\n * - multimedia.imagenes siempre existe\n * - texts está correctamente estructurado\n *\n * @param items Array de items a normalizar\n * @returns Array normalizado de BabylonGlobalItem\n */\nexport function normalizeGlobalItems(items: BabylonGlobalItem[] | undefined): BabylonGlobalItem[] {\n    if (!items || !Array.isArray(items) || items.length === 0) {\n        return [];\n    }\n\n    // Si ya están bien formateados (tienen multimedia.imagenes), devolver directamente\n    if (items[0]?.multimedia?.imagenes) {\n        return items;\n    }\n\n    // Normalizar items\n    return items.map((item) => {\n        // Normalizar multimedia\n        const normalizedMultimedia = item.multimedia && item.multimedia.imagenes\n            ? item.multimedia\n            : Array.isArray(item.multimedia)\n            ? { imagenes: item.multimedia }\n            : {\n                  ...(item.multimedia || {}),\n                  imagenes: item.images || [],\n              };\n\n        // Normalizar texts: buscar en item.texts, multimedia o construir desde propiedades directas\n        let normalizedTexts = item.texts\n            || (Array.isArray(item.multimedia) && item.multimedia[0]?.texts)\n            || normalizedMultimedia?.imagenes?.[0]?.texts;\n\n        // Si no hay texts, buscar propiedades directas en multimedia (objeto o array)\n        if (!normalizedTexts) {\n            const multimediaSource = Array.isArray(item.multimedia)\n                ? item.multimedia[0]\n                : item.multimedia;\n\n            const imagenesSource = normalizedMultimedia?.imagenes?.[0];\n\n            // Buscar en item.texts, multimedia (objeto), o imagenes[0]\n            if (item?.texts?.title || item?.texts?.pretitle || item?.texts?.subtitle || item?.texts?.description ||\n                multimediaSource?.title || multimediaSource?.pretitle ||\n                imagenesSource?.title || imagenesSource?.pretitle) {\n                normalizedTexts = {\n                    title: item?.texts?.title || multimediaSource?.title || imagenesSource?.title,\n                    pretitle: item?.texts?.pretitle || multimediaSource?.pretitle || imagenesSource?.pretitle,\n                    subtitle: item?.texts?.subtitle || multimediaSource?.subtitle || imagenesSource?.subtitle,\n                    description: item?.texts?.description || multimediaSource?.description || imagenesSource?.description,\n                    name: item?.texts?.name || multimediaSource?.name || imagenesSource?.name,\n                    text: item?.texts?.text || multimediaSource?.text || imagenesSource?.text,\n                    additional1: item?.texts?.additional1 || multimediaSource?.additional1 || imagenesSource?.additional1,\n                    additional2: item?.texts?.additional2 || multimediaSource?.additional2 || imagenesSource?.additional2,\n                    additional3: item?.texts?.additional3 || multimediaSource?.additional3 || imagenesSource?.additional3,\n                    labelFrom: item?.labelFrom || multimediaSource?.labelFrom || imagenesSource?.labelFrom,\n                };\n            }\n        }\n\n        return {\n            ...item,\n            multimedia: normalizedMultimedia,\n            texts: normalizedTexts,\n        };\n    });\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport {\n    AfterViewInit,\n    Directive,\n    ElementRef,\n    inject,\n    Input,\n    OnDestroy,\n    PLATFORM_ID,\n} from '@angular/core';\nimport {\n    catchError,\n    defer,\n    filter,\n    forkJoin,\n    map,\n    Observable,\n    of,\n    switchMap,\n    take,\n    takeWhile,\n    tap,\n    timeout,\n    timer,\n} from 'rxjs';\nimport { Utils } from '../../utils';\n\ndeclare const $: any;\n\n@Directive({\n    selector: '[sliders]',\n    standalone: true,\n})\nexport class BabylonSlidersDirective implements AfterViewInit, OnDestroy {\n    @Input() sliders!:\n        | 'cs_slider_container'\n        | 'cs_gallery_slider_nav'\n        | 'cs_gallery_slider_nav_2'\n        | 'cs_gallery_slider_thumb'\n        | 'cs_gallery_slider_thumb_2'\n        | 'cs_slider_container2'\n        | 'cs_slider_container3'\n        | 'cs_slider_container4'\n        | 'cs_slider_container5';\n\n    private resizeTimeout!: NodeJS.Timeout;\n    private readonly platformId = inject(PLATFORM_ID);\n\n    private resizeFn!: () => void;\n\n    constructor(private el: ElementRef) {}\n\n    ngAfterViewInit(): void {\n        if (!isPlatformBrowser(this.platformId)) return;\n\n        this.ensureJQueryAndSlick$().subscribe(() => {\n            this.executeInitializeSlider();\n        });\n    }\n\n    private waitForJQuery$() {\n        return timer(0, 40).pipe(\n            map(() => (window as any).jQuery || (window as any).$),\n            filter(Boolean),\n            take(1),\n            timeout({ first: 5000 }),\n            // expone $ / jQuery global por si el bundle no lo hizo\n            map((jq) => {\n                const w = window as any;\n                if (!w.$) w.$ = jq;\n                if (!w.jQuery) w.jQuery = jq;\n                return jq;\n            })\n        );\n    }\n    private waitForSlick$() {\n        return timer(0, 40).pipe(\n            map(() => {\n                const w = window as any;\n                const jq = w.jQuery || w.$;\n                return jq && jq.fn && jq.fn.slick;\n            }),\n            filter(Boolean),\n            take(1),\n            timeout({ first: 5000 }),\n            map(() => void 0)\n        );\n    }\n\n    /** Carga jQuery + slick en orden y espera a que estén listos */\n    private ensureJQueryAndSlick$() {\n        return defer(() => {\n            const w = window as any;\n            const hasJQ = !!(w.jQuery || w.$);\n            const hasSlick = !!(w.jQuery?.fn?.slick || w.$?.fn?.slick);\n\n            if (hasJQ && hasSlick) return of(void 0);\n\n            // Carga en cadena y espera definición real\n            return Utils.loadScript$('assets/babylon/js/jquery.min.js').pipe(\n                switchMap(() => this.waitForJQuery$()),\n                switchMap(() =>\n                    Utils.loadScript$('assets/babylon/slick/slick.min.js')\n                ),\n                switchMap(() => this.waitForSlick$()),\n                catchError((e) => {\n                    console.error('Error cargando jQuery/slick', e);\n                    return of(void 0);\n                })\n            );\n        });\n    }\n\n    ngOnDestroy(): void {\n        if (isPlatformBrowser(this.platformId)) {\n            // Limpiar el listener de redimensionamiento cuando el componente se destruye\n            if (this.resizeTimeout) {\n                clearTimeout(this.resizeTimeout);\n            }\n            window.removeEventListener('resize', this.resizeFn);\n        }\n    }\n\n    private loadDependenciesAndInitialize(): void {\n        if (isPlatformBrowser(this.platformId)) {\n            Utils.loadScript$('assets/babylon/js/jquery.min.js')\n                .pipe(\n                    switchMap(() =>\n                        this.waitForSlickAvailability().pipe(\n                            switchMap(() =>\n                                forkJoin([\n                                    Utils.loadScript$(\n                                        'assets/babylon/slick/slick.min.js'\n                                    ),\n                                    Utils.loadStyle$(\n                                        'assets/babylon/slick/slick.css'\n                                    ),\n                                ]).pipe(\n                                    tap(() => {\n                                        this.executeInitializeSlider();\n                                    })\n                                )\n                            )\n                        )\n                    )\n                )\n\n                .subscribe();\n        }\n    }\n\n    private executeInitializeSlider(): void {\n        if (isPlatformBrowser(this.platformId)) {\n            let lastWidth = window.innerWidth;\n\n            setTimeout(() => {\n                try {\n                    const $sliderWrapper = $(this.el.nativeElement).find(\n                        '.cs_slider_wrapper'\n                    );\n\n                    if (!$sliderWrapper.hasClass('slick-initialized')) {\n                        this.initializeSlider();\n                    }\n\n                    if (!this.resizeFn) {\n                        this.resizeFn = () => {\n                            clearTimeout(this.resizeTimeout);\n                            this.resizeTimeout = setTimeout(() => {\n                                const newWidth = window.innerWidth;\n\n                                if (Math.abs(newWidth - lastWidth) > 50) {\n                                    lastWidth = newWidth;\n\n                                    const $slider = $(\n                                        this.el.nativeElement\n                                    ).find('.cs_slider_wrapper');\n                                    if ($slider.hasClass('slick-initialized')) {\n                                        $slider.slick('unslick');\n                                    }\n\n                                    this.initializeSlider();\n                                }\n                            }, 300);\n                        };\n\n                        window.addEventListener('resize', this.resizeFn);\n                    }\n                } catch (error) {\n                    this.executeInitializeSlider();\n                }\n            }, 100);\n        }\n    }\n\n    private waitForSlickAvailability(): Observable<void> {\n        return timer(0, 70).pipe(\n            // Polling cada 70ms\n            takeWhile(\n                () =>\n                    !(\n                        typeof $ !== 'undefined' &&\n                        $.fn &&\n                        typeof $.fn.slick !== 'undefined'\n                    ),\n                true\n            ),\n            switchMap(() => of(undefined))\n        );\n    }\n\n    private initializeSlider(): void {\n        const $slider = $(this.el.nativeElement) as any;\n\n        if (!$slider.length) return;\n\n        const $slickActive = $slider.find('.cs_slider_wrapper');\n        if ($slickActive.hasClass('slick-initialized')) {\n            $slickActive.slick('unslick'); // Destruye el slider actual\n        }\n\n        switch (this.sliders) {\n            case 'cs_slider_container':\n                this.initSlickSlider($slider);\n                break;\n            case 'cs_gallery_slider_nav':\n                this.initSlickSliderNav($slider);\n                break;\n            case 'cs_gallery_slider_nav_2':\n                this.initSlickSliderNav_2($slider);\n                break;\n            case 'cs_gallery_slider_thumb':\n                this.initSlickSliderThumb($slider);\n                this.syncSliders(\n                    '.cs_gallery_slider_thumb',\n                    '.cs_gallery_slider_nav'\n                ); // Sincroniza los sliders por tema de rendarizado en el DOM\n                break;\n            case 'cs_gallery_slider_thumb_2':\n                this.initSlickSliderThumb_2($slider);\n                this.syncSliders(\n                    '.cs_gallery_slider_thumb_2',\n                    '.cs_gallery_slider_nav_2'\n                );\n                break;\n            case 'cs_slider_container2':\n                this.initSlickSlider2($slider);\n                break;\n            case 'cs_slider_container3':\n                this.initSlickSlider3($slider);\n                break;\n            case 'cs_slider_container4':\n                this.initSlickSlider4($slider);\n                break;\n            case 'cs_slider_container5':\n                this.initSlickSlider5($slider);\n                break;\n            default:\n                break;\n        }\n    }\n\n    private initSlickSlider($slider: any): void {\n        const $slickActive = $slider.find('.cs_slider_wrapper');\n\n        if ($slickActive.hasClass('slick-initialized')) {\n            return;\n        }\n\n        const prevArrow = $slider.closest('.cs_slider').find('.cs_left_arrow');\n        const nextArrow = $slider.closest('.cs_slider').find('.cs_right_arrow');\n\n        ($slickActive as any).slick({\n            autoplay: this.getSliderSetting($slider, 'data-autoplay', 1),\n            autoplaySpeed: this.getSliderSetting(\n                $slider,\n                'data-autoplay',\n                3000\n            ),\n            speed: this.getSliderSetting($slider, 'data-speed', 600),\n            infinite: this.getSliderSetting($slider, 'data-loop', 0) === 0,\n            slidesToShow: this.getSlidesPerView($slider),\n            swipeToSlide: true,\n            prevArrow: prevArrow,\n            nextArrow: nextArrow,\n            centerMode: this.getSliderSetting($slider, 'data-center', 10) === 1,\n            variableWidth:\n                this.getSliderSetting($slider, 'data-variable-width', 10) === 1,\n            dots: true,\n            appendDots: $slider.parent().find('.cs_pagination'),\n        });\n    }\n\n    private initSlickSlider2($slider: any): void {\n        const $slickActive = $slider.find('.cs_slider_wrapper');\n\n        if ($slickActive.hasClass('slick-initialized')) {\n            return;\n        }\n\n        const prevArrow = $slider.closest('.cs_slider').find('.cs_left_arrow');\n        const nextArrow = $slider.closest('.cs_slider').find('.cs_right_arrow');\n\n        ($slickActive as any).slick({\n            autoplay: this.getSliderSetting($slider, 'data-autoplay', 1),\n            autoplaySpeed: this.getSliderSetting(\n                $slider,\n                'data-autoplay',\n                3000\n            ),\n            speed: this.getSliderSetting($slider, 'data-speed', 600),\n            infinite: this.getSliderSetting($slider, 'data-loop', 0) === 0,\n            slidesToShow: this.getSlidesPerView($slider),\n            swipeToSlide: true,\n            prevArrow: prevArrow,\n            nextArrow: nextArrow,\n            centerMode: this.getSliderSetting($slider, 'data-center', 10) === 1,\n            variableWidth:\n                this.getSliderSetting($slider, 'data-variable-width', 10) === 1,\n        });\n    }\n\n    private initSlickSlider3($slider: any): void {\n        const $slickActive = $slider.find('.cs_slider_wrapper');\n\n        if ($slickActive.hasClass('slick-initialized')) {\n            return;\n        }\n\n        const prevArrow = $slider\n            .siblings('.cs_slider_arrows')\n            .find('.cs_left_arrow');\n        const nextArrow = $slider\n            .siblings('.cs_slider_arrows')\n            .find('.cs_right_arrow');\n\n        ($slickActive as any).slick({\n            autoplay: this.getSliderSetting($slider, 'data-autoplay', 0),\n            autoplaySpeed: this.getSliderSetting(\n                $slider,\n                'data-autoplay',\n                3000\n            ),\n            speed: this.getSliderSetting($slider, 'data-speed', 600),\n            infinite: this.getSliderSetting($slider, 'data-loop', 0) === 0,\n            slidesToShow: this.getSlidesPerView($slider),\n            swipeToSlide: true,\n            prevArrow: prevArrow,\n            nextArrow: nextArrow,\n            centerMode: this.getSliderSetting($slider, 'data-center', 0) === 1,\n            variableWidth:\n                this.getSliderSetting($slider, 'data-variable-width', 0) === 1,\n            dots: false,\n            appendDots: $slider.parent().find('.cs_pagination_services'),\n        });\n    }\n\n    private initSlickSliderNav($slider: any): void {\n        if ($slider.hasClass('slick-initialized')) {\n            return;\n        }\n\n        setTimeout(() => {\n            $slider.slick({\n                slidesToShow: 3,\n                slidesToScroll: 1,\n                asNavFor: $('.cs_gallery_slider_thumb_mini').length\n                    ? '.cs_gallery_slider_thumb_mini'\n                    : '.cs_gallery_slider_thumb',\n                focusOnSelect: true,\n                arrows: false,\n                vertical: true,\n                centerMode: true,\n                centerPadding: '0px',\n                speed: 1000,\n            });\n        }, 1000);\n    }\n\n    private initSlickSliderNav_2($slider: any): void {\n        if ($slider.hasClass('slick-initialized')) {\n            return;\n        }\n\n        $slider.slick({\n            slidesToShow: 3,\n            slidesToScroll: 1,\n            asNavFor: '.cs_gallery_slider_thumb_2',\n            focusOnSelect: true,\n            arrows: false,\n            centerMode: true,\n            centerPadding: '0px',\n            speed: 1000,\n        });\n    }\n\n    private initSlickSliderThumb($slider: any): void {\n        if ($slider.hasClass('slick-initialized')) {\n            return;\n        }\n\n        const prevArrow = $slider\n            .closest('.cs_gallery_hover_show_nav')\n            .find('.cs_left_arrow_gallery');\n        const nextArrow = $slider\n            .closest('.cs_gallery_hover_show_nav')\n            .find('.cs_right_arrow_gallery');\n\n        $slider.slick({\n            slidesToShow: 1,\n            slidesToScroll: 1,\n            prevArrow: prevArrow,\n            nextArrow: nextArrow,\n            asNavFor: '.cs_gallery_slider_nav.slick-slider',\n            infinite: true,\n            speed: 600,\n            autoplay: false,\n            fade: true,\n        });\n    }\n\n    private initSlickSliderThumb_2($slider: any): void {\n        if ($slider.hasClass('slick-initialized')) {\n            return;\n        }\n\n        const prevArrow = $slider\n            .closest('.cs_gallery_hover_show_nav')\n            .find('.cs_left_arrow_gallery_2 .cs_swiper_button_prev');\n        const nextArrow = $slider\n            .closest('.cs_gallery_hover_show_nav')\n            .find('.cs_right_arrow_gallery_2 .cs_swiper_button_next');\n\n        $slider.slick({\n            slidesToShow: 1,\n            slidesToScroll: 1,\n            prevArrow: prevArrow,\n            nextArrow: nextArrow,\n            asNavFor: '.cs_gallery_slider_nav_2.slick-slider',\n            infinite: false,\n            speed: 600,\n            autoplay: false,\n        });\n    }\n\n    private initSlickSlider4($slider: any): void {\n        const $slickActive = $slider.find('.cs_slider_wrapper');\n\n        if ($slickActive.hasClass('slick-initialized')) {\n            return;\n        }\n\n        const prevArrow = $slider.closest('.cs_slider').find('.cs_left_arrow');\n        const nextArrow = $slider.closest('.cs_slider').find('.cs_right_arrow');\n\n        const slidesToShow = this.getSlidesPerView($slider);\n\n        ($slickActive as any).slick({\n            autoplay: this.getSliderSetting($slider, 'data-autoplay', 1),\n            autoplaySpeed: this.getSliderSetting(\n                $slider,\n                'data-autoplay',\n                3000\n            ),\n            speed: this.getSliderSetting($slider, 'data-speed', 600),\n            infinite: this.getSliderSetting($slider, 'data-loop', 0) === 0,\n            slidesToShow: slidesToShow,\n            swipeToSlide: true,\n            prevArrow: prevArrow,\n            nextArrow: nextArrow,\n            centerMode: this.getSliderSetting($slider, 'data-center', 10) === 1,\n            variableWidth:\n                this.getSliderSetting($slider, 'data-variable-width', 10) === 1,\n            dots: true,\n            appendDots: $slider.parent().find('.cs_pagination'),\n        });\n        this.toggleSliderArrows($slider, slidesToShow);\n    }\n\n    private initSlickSlider5($slider: any): void {\n        const $slickActive = $slider.find('.cs_slider_wrapper');\n\n        if ($slickActive.hasClass('slick-initialized')) {\n            return;\n        }\n\n        const prevArrow = $slider.closest('.cs_slider').find('.cs_left_arrow');\n        const nextArrow = $slider.closest('.cs_slider').find('.cs_right_arrow');\n\n        ($slickActive as any).slick({\n            autoplay: this.getSliderSetting($slider, 'data-autoplay', 1),\n            autoplaySpeed: this.getSliderSetting(\n                $slider,\n                'data-autoplay',\n                3000\n            ),\n            speed: this.getSliderSetting($slider, 'data-speed', 600),\n            infinite: this.getSliderSetting($slider, 'data-loop', 0) === 0,\n            slidesToShow: this.getSlidesPerView($slider),\n            swipeToSlide: true,\n            prevArrow: prevArrow,\n            nextArrow: nextArrow,\n            centerMode: this.getSliderSetting($slider, 'data-center', 10) === 1,\n            variableWidth:\n                this.getSliderSetting($slider, 'data-variable-width', 10) === 1,\n            dots: true,\n            appendDots: $slider.closest('.cs_slider').find('.cs_pagination'),\n        });\n    }\n\n    private getSliderSetting(\n        $slider: any,\n        settingName: string,\n        defaultValue: any\n    ): any {\n        return parseInt($slider.attr(settingName), 10) || defaultValue;\n    }\n\n    private getSlidesPerView($slider: any): number {\n        if (isPlatformBrowser(this.platformId)) {\n            const slidesPerViewType = $slider.attr('data-slides-per-view');\n            const xsSlides = parseInt($slider.attr('data-xs-slides'), 10) || 1;\n            const smSlides = parseInt($slider.attr('data-sm-slides'), 10) || 2;\n            const mdSlides = parseInt($slider.attr('data-md-slides'), 10) || 2;\n            const mlgSlides =\n                parseInt($slider.attr('data-mlg-slides'), 10) || 3;\n            const lgSlides = parseInt($slider.attr('data-lg-slides'), 10) || 3;\n            const xlSlides =\n                parseInt($slider.attr('data-xl-slides'), 10) || lgSlides;\n\n            if (slidesPerViewType === 'responsive') {\n                if (window.innerWidth < 576) {\n                    return xsSlides;\n                } else if (window.innerWidth < 768) {\n                    return smSlides;\n                } else if (window.innerWidth < 1024) {\n                    return mdSlides;\n                } else if (window.innerWidth < 1280) {\n                    return mlgSlides;\n                } else if (window.innerWidth < 1400) {\n                    return lgSlides;\n                } else {\n                    return xlSlides;\n                }\n            } else {\n                return parseInt(slidesPerViewType, 10) || 1;\n            }\n        }\n        return parseInt($slider.attr('data-slides-per-view'), 10) || 3;\n    }\n\n    private toggleSliderArrows($slider: any, slidesToShow: number): void {\n        const $slides = $slider.find('.cs_slide');\n        const totalSlides = $slides.length;\n\n        const $sliderContainer = $slider.closest('.cs_slider');\n        const shouldHide = totalSlides <= slidesToShow;\n\n        $sliderContainer.toggleClass('hide-arrows', shouldHide);\n    }\n\n    private syncSliders(mainSelector: string, navSelector: string): void {\n        const $main = $(mainSelector);\n        const $nav = $(navSelector);\n\n        if ($main.length && $nav.length) {\n            if (!$main.hasClass('slick-initialized')) {\n                $main.slick({\n                    slidesToShow: 1,\n                    slidesToScroll: 1,\n                    arrows: true,\n                    fade: true,\n                    asNavFor: navSelector,\n                });\n            }\n\n            if (!$nav.hasClass('slick-initialized')) {\n                $nav.slick({\n                    slidesToShow: 3,\n                    slidesToScroll: 1,\n                    asNavFor: mainSelector,\n                    focusOnSelect: true,\n                    arrows: false,\n                    vertical: true,\n                    centerMode: false,\n                });\n            }\n        }\n    }\n\n    moveToNextSlide(): void {\n        if (isPlatformBrowser(this.platformId)) {\n            const $slider = $(this.el.nativeElement);\n            if ($slider.length) {\n                $slider.slick('slickNext');\n            }\n        }\n    }\n}\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { BabylonSlidersDirective } from '../../../directives/babylon-sliders/babylon-sliders.directive';\nimport { BabylonAdvInfoI } from './babylon-advantages-info.interface';\nimport { BabylonTagsI } from '../../../interfaces/babylon-tags.interface';\nimport { BabylonTextsColorsI } from '../../../interfaces/babylon-texts-colors.interface';\nimport { BabylonDynamicHeadingComponent } from '../../shared';\nimport { BabylonButtonI, BabylonImageI } from '../../../interfaces';\n\n@Component({\n    selector: 'lib-babylon-advantages',\n    standalone: true,\n    imports: [CommonModule, BabylonSlidersDirective, BabylonDynamicHeadingComponent],\n    templateUrl: './babylon-advantages.component.html',\n    styleUrl: './babylon-advantages.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonAdvantagesComponent {\n    @Input() title?: string;\n    @Input() advantages?: BabylonAdvInfoI[];\n    @Input() tags?: BabylonTagsI;\n    @Input() textColors?: BabylonTextsColorsI;\n    @Input() seeMore?: string;\n    @Input() seeLess?: string;\n    @Input() image?: BabylonImageI;\n\n    showImage = false;\n\n    toggleImage() {\n      this.showImage = !this.showImage;\n    }\n}\n","<section class=\"babylon__advantages-slider margin-main bg--white\">\n    @if (title) {\n        <div class=\"container\">\n            <div class=\"intro_info align--center no-align\">\n                <lib-babylon-dynamic-heading\n                    [tag]=\"tags?.title || 'h3'\"\n                    cssClass=\"pretitle\"\n                    [content]=\"title\"\n                    [color]=\"textColors?.title\"\n                ></lib-babylon-dynamic-heading>\n            </div>\n        </div>\n    }\n    @if (advantages) {\n        <div class=\"cs_slider cs_style_1 cs_hover_show_arrows\">\n            <div class=\"container\">\n                <div\n                    class=\"cs_slider_container\"\n                    sliders=\"cs_slider_container\"\n                    data-autoplay=\"0\"\n                    data-loop=\"1\"\n                    data-speed=\"600\"\n                    data-center=\"0\"\n                    data-variable-width=\"0\"\n                    data-slides-per-view=\"responsive\"\n                    data-xs-slides=\"1\"\n                    data-sm-slides=\"2\"\n                    data-md-slides=\"2\"\n                    data-mlg-slides=\"3\"\n                    data-lg-slides=\"3\"\n                    data-add-slides=\"3\"\n                >\n                    <div class=\"cs_slider_wrapper\">\n                        @for (advantage of advantages; track $index) {\n                            <div class=\"cs_slide\">\n                                <div class=\"advantages-item\">\n                                    <div class=\"advantages-item--icon\">\n                                        <div class=\"info--icon icon--small\">\n                                            <i\n                                                class=\"icon--svg\"\n                                                [ngClass]=\"advantage.icon\"\n                                            ></i>\n                                        </div>\n                                    </div>\n                                    @if (advantage.title) {\n                                        <div class=\"advantages-item--info\">\n                                            <div class=\"intro_info1 no-align\">\n                                                <p class=\"text mb--0\">\n                                                    {{ advantage.title }}\n                                                    @if (advantage.text) {\n                                                        <p\n                                                            class=\"text--small mb--0\"\n                                                        >\n                                                            {{ advantage.text }}\n                                                        </p>\n                                                    }\n                                                </p>\n                                            </div>\n                                        </div>\n                                    }\n                                </div>\n                            </div>\n                        }\n                    </div>\n                </div>\n\n                <div class=\"cs_slider_arrows cs_style_2 cs_mobile_hide\">\n                    <div class=\"cs_left_arrow slick-arrow\">\n                        <span class=\"babylon-arrow-left-big\"></span>\n                    </div>\n                    <div class=\"cs_right_arrow slick-arrow\">\n                        <span class=\"babylon-arrow-right-big\"></span>\n                    </div>\n                </div>\n                <div class=\"cs_pagination cs_style_1 cs_mobile_show\"></div>\n            </div>\n        </div>\n    }\n\n    @if (seeMore && seeLess) {\n        <div class=\"see-more-container\">\n            <button class=\"btn btn_primary\" (click)=\"toggleImage()\">\n                {{ showImage ? seeLess : seeMore }}\n            </button>\n        </div>\n\n        @if (showImage) {\n            <div class=\"see-more-image\">\n                <img\n                    [src]=\"\n                        image?.src ||\n                        'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                    \"\n                    [alt]=\"image?.alt ?? image?.title ?? 'title'\"\n                />\n            </div>\n        }\n    }\n</section>\n","import { isPlatformBrowser } from '@angular/common';\nimport {\n    AfterViewInit,\n    Directive,\n    ElementRef,\n    Inject,\n    OnDestroy,\n    PLATFORM_ID,\n} from '@angular/core';\n\n// sigue igual, sólo para TS\ndeclare const $: any;\n\n@Directive({\n    selector: '.js-active-slider,[appSlickInit]',\n    standalone: true,\n})\nexport class SlickInitDirective implements AfterViewInit, OnDestroy {\n    private resizeHandler?: () => void;\n    private sliderEl?: HTMLElement;\n\n    constructor(\n        private host: ElementRef<HTMLElement>,\n        @Inject(PLATFORM_ID) private platformId: object\n    ) {}\n\n    async ngAfterViewInit(): Promise<void> {\n        if (!isPlatformBrowser(this.platformId)) return;\n\n        // 1) Espera a que jquery + slick estén listos\n        const slickReady = await this.waitForSlick();\n\n        // 2) Si NO están, no sigas (evita $ undefined)\n        if (!slickReady || typeof $ === 'undefined' || !$.fn || !$.fn.slick) {\n            console.warn(\n                '[SlickInitDirective] jQuery/Slick no están disponibles, no inicializo el slider'\n            );\n            return;\n        }\n\n        const parent = this.host.nativeElement;\n        const get = (name: string) => parent.getAttribute(name);\n        const getBool = (name: string) => {\n            const v = get(name);\n            return v === 'true' || v === '1' || v === '' || (v as any) === true;\n        };\n        const getNum = (name: string, def = 0) => {\n            const v = Number(get(name));\n            return Number.isFinite(v) ? v : def;\n        };\n\n        const sliderName = get('data-slider_name') || '';\n        const sliderSpeed = getNum('data-slider_speed', 750);\n        const showBtns = getBool('data-slider_showbtns');\n        const showDots = getBool('data-slider_showdots');\n        const fade = getBool('data-slider_fade');\n        const centerMode = getBool('data-slider_centermode');\n        const autoplay = getBool('data-slider_autoplay');\n        const rawSpeed = get('data-slider_autoplay_speed');\n        const autoplaySpeed = rawSpeed ? Number(rawSpeed) : 5000;\n        const slidesPc = getNum('data-slides_pc', 1);\n        const slidesLaptop = getNum('data-slides_laptop') || slidesPc;\n        const slidesTablet = getNum('data-slides_tablet') || slidesLaptop;\n        const slidesMobile = getNum('data-slides_mobile') || slidesTablet;\n        const slidesMobileSmall =\n            getNum('data-slides_mobile_small') || slidesMobile;\n        const slidesMobileXSmall =\n            getNum('data-slides_mobile_xsmall') || slidesMobileSmall;\n        const infinite = getBool('data-slides_infinite');\n\n        let rowsPc = getNum('data-slidesrows_pc', 1);\n        let rowsLaptop = getNum('data-slidesrows_laptop', 1);\n        let rowsTablet = getNum('data-slidesrows_tablet', 1);\n        let rowsMobile = getNum('data-slidesrows_mobile', 1);\n        let rowsMobileSmall = getNum('data-slidesrows_mobile_small', 1);\n        let rowsMobileXSmall = getNum('data-slidesrows_mobile_xsmall', 1);\n\n        const asNavFor = get('data-slider_asNavFor') || undefined;\n        const vertical = getBool('data-slider_vertical');\n        const adaptiveHeight = getBool('data-slider_adaptive_height');\n        const pause = getBool('data-slider_pause');\n        const draggable = getBool('data-slider_draggable');\n        const rtl = getBool('data-slider_rtl');\n        const variableWidth = getBool('data-slider_variable_width');\n        const btnsMode = get('data-slider_btns') || '';\n\n        if (window.innerWidth < 540 && parent.classList.contains('rows-2')) {\n            rowsPc = 1;\n        }\n\n        const sliderArrows = parent.querySelector(\n            '.js-slider-arrows'\n        ) as HTMLElement | null;\n        const sliderDots = parent.querySelector(\n            '.js-slider-dots'\n        ) as HTMLElement | null;\n        const sliderSelector = parent.querySelector(\n            '.' + sliderName\n        ) as HTMLElement | null;\n        if (!sliderSelector) return;\n        this.sliderEl = sliderSelector;\n\n        if ($(sliderSelector).hasClass('slick-initialized')) return;\n\n        let prevArrow = '';\n        let nextArrow = '';\n        if (btnsMode.includes('icon-small')) {\n            prevArrow +=\n                \"<button type='button' class='slick-prev icon-small'><svg aria-hidden='true' focusable='false' class='line'><use href='/assets/babylon/svg/arrow-line.svg#arrow-line'></use></svg><svg aria-hidden='true' focusable='false'><use href='/assets/babylon/svg/icon-arrow.svg#icon-arrow'></use></svg></button>\";\n            nextArrow +=\n                \"<button type='button' class='slick-next icon-small'><svg aria-hidden='true' focusable='false' class='line'><use href='/assets/babylon/svg/arrow-line.svg#arrow-line'></use></svg><svg aria-hidden='true' focusable='false'><use href='/assets/babylon/svg/icon-arrow.svg#icon-arrow'></use></svg></button>\";\n        }\n        if (btnsMode.includes('icon-large')) {\n            prevArrow +=\n                \"<button type='button' class='slick-prev icon-large'><svg aria-hidden='true' focusable='false'><use href='/assets/babylon/svg/icon-arrow-large.svg#icon-arrow-large'></use></svg></button>\";\n            nextArrow +=\n                \"<button type='button' class='slick-next icon-large'><svg aria-hidden='true' focusable='false'><use href='/assets/babylon/svg/icon-arrow-large.svg#icon-arrow-large'></use></svg></button>\";\n        }\n\n        const updateVerticalHeight = () => {\n            if (!isPlatformBrowser(this.platformId)) return;\n            const $el = $(sliderSelector);\n\n            if (window.innerWidth >= 541) {\n                let maxH = 0;\n                $el.find('.slick-slide:not(.slick-cloned)').each(\n                    (_: number, el: HTMLElement) => {\n                        const h = ($(el) as any).outerHeight();\n                        if (h > maxH) maxH = h;\n                    }\n                );\n                $el.find('.slick-slide').each((_: number, el: HTMLElement) => {\n                    ($(el) as any).css('height', `${maxH}px`);\n                });\n            } else {\n                $(sliderSelector).find('.slick-slide').css('height', '');\n            }\n        };\n\n        if (vertical) {\n            $(sliderSelector).on('setPosition', updateVerticalHeight);\n            $(sliderSelector).on('init', () =>\n                setTimeout(updateVerticalHeight, 0)\n            );\n            this.resizeHandler = () => updateVerticalHeight();\n            window.addEventListener('resize', this.resizeHandler, {\n                passive: true,\n            });\n        }\n\n        $(sliderSelector).slick({\n            dots: showDots,\n            arrows: showBtns,\n            appendArrows: sliderArrows || parent,\n            prevArrow,\n            nextArrow,\n            appendDots: sliderDots || parent,\n            infinite,\n            useTransform: true,\n            fade,\n            centerMode,\n            centerPadding: '0',\n            cssEase: 'cubic-bezier(0.785, 0.135, 0.15, 0.86)',\n            speed: sliderSpeed,\n            slidesToShow: slidesPc,\n            slidesToScroll: 1,\n            rows: rowsPc,\n            autoplay,\n            autoplaySpeed:(autoplaySpeed > 0) ? autoplaySpeed : 5000,\n            swipeToSlide: true,\n            vertical,\n            verticalSwiping: vertical,\n            adaptiveHeight,\n            asNavFor,\n            pauseOnFocus: pause,\n            pauseOnHover: pause,\n            draggable,\n            swipe: draggable,\n            rtl,\n            variableWidth,\n            responsive: [\n                {\n                    breakpoint: 1680,\n                    settings: { slidesToShow: slidesLaptop, rows: rowsLaptop },\n                },\n                {\n                    breakpoint: 1366,\n                    settings: { slidesToShow: slidesTablet, rows: rowsTablet },\n                },\n                {\n                    breakpoint: 1280,\n                    settings: { slidesToShow: slidesMobile, rows: rowsMobile },\n                },\n                {\n                    breakpoint: 1023,\n                    settings: {\n                        slidesToShow: slidesMobileSmall,\n                        rows: rowsMobileSmall,\n                    },\n                },\n                {\n                    breakpoint: 767,\n                    settings: {\n                        slidesToShow: slidesMobileXSmall,\n                        rows: rowsMobileXSmall,\n                        vertical: false,\n                        verticalSwiping: false,\n                    },\n                },\n            ],\n        });\n\n        const slides = sliderSelector.querySelectorAll('.slick-slide');\n\n        const toggleBotonActivo = () => {\n            if (window.innerWidth < 1024) {\n                slides.forEach((slide) => slide.classList.add('botonactivo'));\n            } else {\n                slides.forEach((slide) =>\n                    slide.classList.remove('botonactivo')\n                );\n            }\n        };\n\n        // ejecutamos al iniciar\n        toggleBotonActivo();\n\n        // y al redimensionar\n        const resizeHandlerLocal = () => toggleBotonActivo();\n        window.addEventListener('resize', resizeHandlerLocal, {\n            passive: true,\n        });\n\n        // si ya usas this.resizeHandler, puedes reutilizarlo:\n        this.resizeHandler = resizeHandlerLocal;\n    }\n\n    ngOnDestroy(): void {\n        if (!isPlatformBrowser(this.platformId)) return;\n        if (typeof $ === 'undefined' || !$.fn?.slick) return;\n\n        const jQueryExists = typeof $ !== 'undefined';\n\n        if (\n            this.sliderEl &&\n            jQueryExists &&\n            $(this.sliderEl).hasClass('slick-initialized')\n        ) {\n            try {\n                $(this.sliderEl).slick('unslick');\n            } catch (e) {\n                console.error('Error al destruir slick', e);\n            }\n        }\n        if (this.resizeHandler) {\n            window.removeEventListener('resize', this.resizeHandler);\n        }\n    }\n\n    // Devuelve true si jQuery+Slick llegan a estar disponibles, false si no\n    private waitForSlick(timeoutMs = 8000, stepMs = 100): Promise<boolean> {\n        if (!isPlatformBrowser(this.platformId)) return Promise.resolve(false);\n        const start = performance.now();\n\n        return new Promise<boolean>((resolve) => {\n            const check = () => {\n                if (typeof $ !== 'undefined' && $.fn && $.fn.slick) {\n                    return resolve(true);\n                }\n                if (performance.now() - start > timeoutMs) {\n                    console.warn(\n                        '[SlickInitDirective] Slick no disponible tras timeout. ¿Scripts cargados?'\n                    );\n                    return resolve(false);\n                }\n                setTimeout(check, stepMs);\n            };\n            check();\n        });\n    }\n}\n","import { Component, Input } from '@angular/core';\nimport { SlickInitDirective } from '../../../directives/sliders/slick-init.directive';\nimport { BabylonTextInfoI } from '../../../interfaces';\nimport { BabylonItemI } from '../../../interfaces/babylon-item.interface';\n\n\n@Component({\n    selector: 'lib-babylon-advantages-v2',\n    standalone: true,\n    imports: [SlickInitDirective],\n    templateUrl: './babylon-advantages-v2.component.html',\n    styleUrl: './babylon-advantages-v2.component.scss',\n})\nexport class BabylonAdvantagesV2Component {\n  @Input() texts?: BabylonTextInfoI;\n  @Input() advantages?: BabylonItemI[];\n}\n","<section\n    class=\"advantages js-active-slider\"\n    data-slides_infinite=\"true\"\n    data-slider_name=\"js-advantages-slider\"\n    data-slider_showbtns=\"true\"\n    data-slider_btns=\"icon-small\"\n    data-slider_showdots=\"false\"\n    data-slider_fade=\"false\"\n    data-slider_autoplay=\"true\"\n    data-slider_vertical=\"true\"\n    data-slider_adaptive_height=\"true\"\n    data-slides_pc=\"1\"\n>\n    <div class=\"container\">\n        <div class=\"advantages__inner\">\n          @if(texts?.title) {\n            <span class=\"advantages__title\" [innerHTML]=\"texts?.title\"></span>\n          }\n            <div class=\"relative\">\n              @if(advantages?.length) {\n                <div class=\"js-advantages-slider advantages__slider\">\n                  @for (item of advantages; track $index) {\n                    <div>\n                        <div class=\"advantages__item\">\n                          <h2 [innerHTML]=\"item?.title\"></h2>\n                          <p [innerHTML]=\"item?.text\"></p>\n                      </div>\n                  </div>\n                  }\n                </div>\n                }\n                <div class=\"js-slider-arrows\"></div>\n            </div>\n        </div>\n    </div>\n</section>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport {\n    BabylonButtonI,\n    BabylonMultimediaI,\n    BabylonTextInfoI,\n} from '../../../interfaces';\n\n@Component({\n    selector: 'lib-babylon-av-c4-img-text',\n    standalone: true,\n    imports: [CommonModule, BabylonLinkTypeDirective],\n    templateUrl: './babylon-av-c4-img-text.component.html',\n    styleUrl: './babylon-av-c4-img-text.component.scss',\n})\nexport class BabylonAvC4ImgTextComponent {\n    @Input() texts?: BabylonTextInfoI;\n    @Input() buttons?: BabylonButtonI[];\n    @Input() multimedia?: BabylonMultimediaI;\n}\n","<!-- <section class=\"mdl-0h6\">\n    <div class=\"mdl-container\">\n        <div class=\"m-content\">\n            <div class=\"m-images\">\n                <div class=\"m-image\">\n                    <img src=\"https://picsum.photos/127/128\" alt=\"\" />\n                </div>\n                <div class=\"m-image\">\n                    <img src=\"https://picsum.photos/128/128\" alt=\"\" />\n                </div>\n                <div class=\"m-image\">\n                    <img src=\"https://picsum.photos/129/129\" alt=\"\" />\n                </div>\n                <div class=\"m-image\">\n                    <img src=\"https://picsum.photos/130/130\" alt=\"\" />\n                </div>\n            </div>\n            <div class=\"m-text\">\n                <h2>\n                    Conoce uno de nuestros 7 destinos en España.\n                    <strong>Te van a encantar.</strong>\n                </h2>\n            </div>\n            <button type=\"button\" class=\"m-button-sm\">ver destinos</button>\n        </div>\n    </div>\n</section> -->\n\n<section class=\"mdl-0h6\">\n    <div class=\"mdl-container\">\n        <div class=\"m-content\">\n            @if (multimedia) {\n                <div class=\"m-images\">\n                    @for (img of multimedia.imagenes; track $index) {\n                        <div class=\"m-image\">\n                            <img\n                                [src]=\"\n                                    img.img?.src ||\n                                    'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                \"\n                                [alt]=\"img.img?.alt\"\n                            />\n                        </div>\n                    }\n                </div>\n            }\n\n            <div class=\"m-text\">\n                @if (texts?.title) {\n                    <h2 [innerHTML]=\"texts?.title\"></h2>\n                }\n            </div>\n\n            @if (buttons?.length) {\n                @for (btn of buttons; track $index) {\n                    <button\n                        [attr.aria-label]=\"btn.label\"\n                        [href]=\"btn.url\"\n                        [linkType]=\"btn.linkType\"\n                        type=\"button\"\n                        class=\"m-button-sm\"\n                    >\n                        {{ btn.label }}\n                    </button>\n                }\n            }\n        </div>\n    </div>\n</section>\n","// tag.utils.ts\n\n/**\n * Devuelve todos los items que tengan el tag indicado.\n * Soporta:\n * - item.tag: string\n * - item.tag: string[]\n * - item.tag: { name: string }[]\n */\n/* export function filterByTag<T>(\n    items: T[] | undefined | null,\n    tagName: string\n): T[] {\n    if (!items?.length) return [];\n\n    return items.filter((item: any) => {\n        if (!item || item.tag == null) return false;\n\n        // Normalizamos a array\n        const tags = Array.isArray(item.tag) ? item.tag : [item.tag];\n\n        return tags.some((t: any) => {\n            if (typeof t === 'string') {\n                return t === tagName;\n            }\n            if (t && typeof t === 'object') {\n                return t.name === tagName;\n            }\n            return false;\n        });\n    });\n} */\n\nexport function filterByTag<T>(\n    items: T[] | undefined | null,\n    tagName: string\n): T[] {\n    if (!items?.length) return [];\n\n    const searchTag = tagName.toLowerCase();\n\n    return items.filter((item: any) => {\n        if (!item) return false;\n\n        const rawTags = item.tags || item.tag || [];\n        const tagsArray = Array.isArray(rawTags) ? rawTags : [rawTags];\n\n        return tagsArray.some((t: any) => {\n            if (!t) return false;\n\n            // Caso A: El tag es un string directo\n            if (typeof t === 'string') {\n                return t.toLowerCase() === searchTag;\n            }\n\n            // Caso B: El tag es un objeto \n            if (typeof t === 'object' && t.name) {\n                return t.name.toLowerCase() === searchTag;\n            }\n\n            return false;\n        });\n    });\n}\n\n/**\n * Devuelve el primer item que tenga el tag indicado.\n */\nexport function findFirstByTag<T>(\n    items: T[] | undefined | null,\n    tagName: string\n): T | undefined {\n    return filterByTag(items, tagName)[0];\n}\n","\nimport { BabylonImageI, BabylonMultimediaI } from '../interfaces';\nimport { filterByTag, findFirstByTag } from './tag.utils';\n\n/**\n * Devuelve la primera imagen de multimedia.imagenes que tenga el tag indicado.\n * Compatible con estructura donde tag es array de objetos { name, ... } y la imagen está en img.src.\n * El resultado es el objeto imagen completo (con img.src, tag, etc).\n */\nexport function getFirstImageByTagFromMultimediaRaw(multimedia: any, tagName: string) {\n    if (!multimedia?.imagenes?.length) return undefined;\n    const imagen = multimedia.imagenes.find((img: any) => {\n        if (!img.tag) return false;\n        const tags = Array.isArray(img.tag) ? img.tag : [img.tag];\n        return tags.some((t: any) => {\n            if (typeof t === 'string') return t === tagName;\n            if (t && typeof t === 'object' && t.name) return t.name === tagName;\n            return false;\n        });\n    });\n    // Si no hay ninguna imagen con tag, devolver la primera imagen aunque no tenga tag\n    return imagen ?? multimedia.imagenes[0];\n}\n\n/**\n * Devuelve el array de imágenes ordenado por order ascendente\n */\nexport function getOrderedImages(images: BabylonImageI[] = []): BabylonImageI[] {\n    const sorted = [...images];\n    sorted.sort((a, b) => {\n        const orderA = typeof a.order === 'number' ? a.order : parseInt(a.order as any, 10) || 0;\n        const orderB = typeof b.order === 'number' ? b.order : parseInt(b.order as any, 10) || 0;\n        return orderA - orderB;\n    });\n    return sorted;\n}\n\nexport function getImagesByTagFromMultimedia(\n    multimedia: BabylonMultimediaI | undefined,\n    tagName: string\n): BabylonImageI[] {\n    const result = filterByTag<BabylonImageI>(multimedia?.imagenes, tagName);\n    return result;\n}\n\nexport function getFirstImageByTagFromMultimedia(\n    multimedia: BabylonMultimediaI | undefined,\n    tagName: string\n): BabylonImageI | undefined {\n    const result = findFirstByTag<BabylonImageI>(multimedia?.imagenes, tagName);\n    return result;\n}\n\nexport function getFirstImageByTagFromImages(\n    imagenes: BabylonImageI[] | undefined,\n    tagName: string\n): BabylonImageI | undefined {\n    return findFirstByTag<BabylonImageI>(imagenes, tagName);\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport {\n    AfterViewInit,\n    Directive,\n    ElementRef,\n    OnDestroy,\n    PLATFORM_ID,\n    inject,\n} from '@angular/core';\nimport { tap } from 'rxjs';\nimport Swiper, { Autoplay } from 'swiper';\nimport { Utils } from '../../../utils';\n\n@Directive({\n    selector: '[BabylonAvSocialSwiper]',\n    standalone: true,\n})\nexport class BabylonAvSocialSwiperDirective\n    implements AfterViewInit, OnDestroy\n{\n    private static instances: Swiper[] = [];\n    private static listenersInitialized = false;\n\n    private readonly platformId = inject(PLATFORM_ID);\n    private swiper?: Swiper;\n\n    constructor(private el: ElementRef<HTMLElement>) {\n        Swiper.use([Autoplay]);\n    }\n\n    ngAfterViewInit(): void {\n        if (!isPlatformBrowser(this.platformId)) return;\n\n        Utils.loadStyle$('assets/babylon/css/swiper-bundle.min.css')\n            .pipe(tap(() => this.initSwiper()))\n            .subscribe();\n    }\n\n    ngOnDestroy(): void {\n        if (!isPlatformBrowser(this.platformId)) return;\n\n        if (this.swiper) {\n            const idx = BabylonAvSocialSwiperDirective.instances.indexOf(\n                this.swiper\n            );\n            if (idx > -1) {\n                BabylonAvSocialSwiperDirective.instances.splice(idx, 1);\n            }\n            try {\n                this.swiper.destroy(true, true);\n            } catch {\n                /* sin drama */\n            }\n        }\n    }\n\n    private initSwiper(): void {\n        if (!isPlatformBrowser(this.platformId)) return;\n\n        const container = this.el.nativeElement;\n        const defaultSpeed = 4000;\n\n        this.swiper = new Swiper(container, {\n            slidesPerView: 4,\n            spaceBetween: 20,\n            loop: true,\n            direction: 'vertical',\n            speed: defaultSpeed,\n            autoplay: {\n                delay: 0,\n                disableOnInteraction: false,\n            },\n            grabCursor: false,\n            allowTouchMove: false,\n            centeredSlides: false,\n            slidesPerGroup: 1,\n            breakpoints: {\n                1280: { spaceBetween: 35 },\n                1366: { spaceBetween: 25 },\n            },\n            on: {\n                init(swiper) {\n                    if (swiper?.autoplay) {\n                        swiper?.autoplay?.start();\n                    }\n                    swiper.wrapperEl.style.transitionTimingFunction = 'linear';\n                },\n                slideChangeTransitionStart(swiper) {\n                    swiper.wrapperEl.style.transitionTimingFunction = 'linear';\n                },\n            },\n        });\n\n        BabylonAvSocialSwiperDirective.instances.push(this.swiper);\n\n        this.initGlobalListeners();\n\n        // Lógica inicial: si ancho > 1280 se paran, si no, se arrancan\n        if (window.innerWidth > 1280) {\n            BabylonAvSocialSwiperDirective.stopAll();\n        } else {\n            BabylonAvSocialSwiperDirective.startAll();\n        }\n    }\n\n    /** Listeners globales (solo se montan una vez) */\n    private initGlobalListeners(): void {\n        if (BabylonAvSocialSwiperDirective.listenersInitialized) return;\n        BabylonAvSocialSwiperDirective.listenersInitialized = true;\n\n        // Hover sobre el contenedor de swipers (solo desktop)\n        const swipersContainer = document.querySelector<HTMLElement>(\n            '.mdl-h11 .mdl-container .swipers-container'\n        );\n\n        if (swipersContainer) {\n            swipersContainer.addEventListener('mouseenter', () => {\n                if (window.innerWidth > 1280)\n                    BabylonAvSocialSwiperDirective.startAll();\n            });\n\n            swipersContainer.addEventListener('mouseleave', () => {\n                if (window.innerWidth > 1280)\n                    BabylonAvSocialSwiperDirective.stopAll();\n            });\n        }\n\n        // Hover de iconos RRSS\n        const icons = Array.from(\n            document.querySelectorAll<HTMLElement>('.mdl-h11 .m-rrss .m-icon')\n        );\n\n        icons.forEach((icon) => {\n            const hoverBg = icon.getAttribute('background');\n            const originalBg = icon.style.background || 'white';\n\n            icon.addEventListener('mouseenter', () => {\n                if (hoverBg) {\n                    icon.style.background = hoverBg;\n                }\n            });\n\n            icon.addEventListener('mouseleave', () => {\n                icon.style.background = originalBg;\n            });\n        });\n    }\n\n    // === Métodos estáticos equivalentes a startAllInstagramSliders / stopAll ===\n\n    private static startAll(): void {\n        this.instances.forEach((swiper) => {\n            if (swiper) {\n                swiper.params.speed = 4000;\n                swiper?.update();\n                swiper?.autoplay?.start();\n            }\n        });\n    }\n\n    private static stopAll(): void {\n        this.instances.forEach((swiper) => {\n            if (swiper) {\n                swiper.params.speed = 1000;\n                swiper?.update();\n                swiper?.autoplay?.stop();\n            }\n        });\n    }\n}\n","import { Component, Input, OnChanges } from '@angular/core';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport {\n    BabylonButtonI,\n    BabylonImageI,\n    BabylonMultimediaI,\n    BabylonTextInfoI,\n} from '../../../interfaces';\nimport { getImagesByTagFromMultimedia } from '../../../utils/mutimedia.utils';\nimport { BabylonAvSocialSwiperDirective } from './babylon-av-img-social.directive';\n\n@Component({\n    selector: 'lib-babylon-av-img-social',\n    standalone: true,\n    imports: [BabylonAvSocialSwiperDirective, BabylonLinkTypeDirective],\n    templateUrl: './babylon-av-img-social.component.html',\n    styleUrl: './babylon-av-img-social.component.scss',\n})\nexport class BabylonAvImgSocialComponent implements OnChanges {\n    @Input() texts?: BabylonTextInfoI;\n    @Input() multimedia?: BabylonMultimediaI;\n    @Input() buttons?: BabylonButtonI[];\n    @Input() socialMedia?: BabylonButtonI[];\n\n    // 4 sliders\n    sliders: BabylonImageI[][] = [[], [], [], []];\n\n    ngOnChanges(): void {\n        this.buildSliders();\n    }\n\n    // Por si sigues usando esto en el template\n    getImagesByTag(tagName: string) {\n        return getImagesByTagFromMultimedia(this.multimedia, tagName);\n    }\n\n    private buildSliders(): void {\n        // reset\n        this.sliders = [[], [], [], []];\n\n        if (!this.multimedia) return;\n\n        const usedSrc = new Set<string>();\n        const tagNames = [\n            'AvImgSocialC1',\n            'AvImgSocialC2',\n            'AvImgSocialC3',\n            'AvImgSocialC4',\n        ];\n\n        // 1) Primero rellenamos cada slider con sus imágenes taggeadas\n        tagNames.forEach((tag, index) => {\n            const taggedImages =\n                getImagesByTagFromMultimedia(this.multimedia!, tag) ?? [];\n\n            const uniques = taggedImages.filter((img) => {\n                if (!img?.src) return false;\n                if (usedSrc.has(img.src)) return false;\n                usedSrc.add(img.src);\n                return true;\n            });\n\n            this.sliders[index].push(...uniques);\n        });\n\n        // 2) Sacamos TODAS las imágenes de multimedia\n        const allImages = this.getAllImages();\n\n        // 3) Filtramos las que no se han usado todavía (sin tag o con otros tags)\n        const leftovers = allImages.filter(\n            (img) => img?.img?.src && !usedSrc.has(img.img?.src)\n        );\n\n        // 4) Repartimos las sobrantes en los 4 sliders en round-robin\n        leftovers.forEach((img, i) => {\n            const col = i % 4;\n            this.sliders[col].push(img);\n        });\n    }\n\n    // Obtiene todas las imágenes de multimedia.imagenes\n    private getAllImages(): BabylonImageI[] {\n        if (!this.multimedia?.imagenes?.length) return [];\n\n        return this.multimedia.imagenes\n            .map((item: any) => item)\n            .filter(Boolean) as BabylonImageI[];\n    }\n}\n","<!-- El color de BG es dinámico según la página -->\n<section class=\"mdl-h11\">\n    <div class=\"mdl-container\">\n        <div class=\"swipers-container\">\n            @for (slider of sliders; track $index) {\n                <div class=\"swiper-container\" BabylonAvSocialSwiper>\n                    <div class=\"swiper-wrapper\">\n                        @for (img of slider; track $index) {\n                            <a\n                                class=\"swiper-slide\"\n                                [href]=\"img.links?.[0]?.url\"\n                                [linkType]=\"img.links?.[0]?.linkType\"\n                            >\n                                <img\n                                    [src]=\"\n                                        img.img?.src ||\n                                        'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                    \"\n                                    [alt]=\"img.img?.alt || ''\"\n                                    class=\"m-logo\"\n                                />\n                            </a>\n                        }\n                    </div>\n                </div>\n            }\n        </div>\n\n        <div class=\"m-rrss\">\n            @if (texts?.pretitle) {\n                <h2 class=\"m-title\">{{ texts?.pretitle }}</h2>\n            }\n            @if (socialMedia?.length) {\n                <div class=\"m-icons\">\n                    @for (item of socialMedia; track $index) {\n                        @if (item.name == 'youtube') {\n                            <a\n                                background=\"#FF4338\"\n                                [href]=\"item?.url\"\n                                [linkType]=\"item?.linkType ?? 'external'\"\n                                class=\"m-icon youtube\"\n                            >\n                                <svg\n                                    width=\"22\"\n                                    height=\"22\"\n                                    viewBox=\"0 0 24 24\"\n                                    fill=\"none\"\n                                    xmlns=\"http://www.w3.org/2000/svg\"\n                                >\n                                    <path\n                                        fill-rule=\"evenodd\"\n                                        clip-rule=\"evenodd\"\n                                        d=\"M23.5 6.2c-.3-1.1-1.2-2-2.3-2.3C19.2 3.4 12 3.4 12 3.4s-7.2 0-9.2.5C1.7 4.2.8 5.1.5 6.2.1 8.2.1 12 .1 12s0 3.8.4 5.8c.3 1.1 1.2 2 2.3 2.3 2 .5 9.2.5 9.2.5s7.2 0 9.2-.5c1.1-.3 2-1.2 2.3-2.3.4-2 .4-5.8.4-5.8s0-3.8-.4-5.8ZM10 8.5v7l6-3.5-6-3.5Z\"\n                                        fill=\"black\"\n                                    />\n                                </svg>\n                            </a>\n                        }\n                        @if (item.name == 'facebook') {\n                            <a\n                                background=\"#5B87DA\"\n                                [href]=\"item?.url\"\n                                class=\"m-icon facebook\"\n                            >\n                                <svg\n                                    width=\"22\"\n                                    height=\"22\"\n                                    viewBox=\"0 0 24 24\"\n                                    fill=\"none\"\n                                    xmlns=\"http://www.w3.org/2000/svg\"\n                                >\n                                    <path\n                                        d=\"M13.5 22V12.9h3.1l.5-3.5h-3.6V7.2c0-1 .3-1.7 1.8-1.7h1.9V2.4c-.3 0-1.6-.1-3-.1-3 0-5 1.8-5 5.1v2.9H6.2v3.5h3.1V22h4.2Z\"\n                                        fill=\"black\"\n                                    />\n                                </svg>\n                            </a>\n                        }\n                        @if (item.name == 'instagram') {\n                            <a\n                                background=\"#515050\"\n                                [href]=\"item?.url\"\n                                [linkType]=\"item?.linkType ?? 'external'\"\n                                class=\"m-icon instagram\"\n                            >\n                                <svg\n                                    width=\"22\"\n                                    height=\"22\"\n                                    viewBox=\"0 0 22 22\"\n                                    fill=\"none\"\n                                    xmlns=\"http://www.w3.org/2000/svg\"\n                                >\n                                    <path\n                                        d=\"M21.2299 6.04339C21.2281 4.50196 20.6263 3.05153 19.5362 1.96139C18.4461 0.872174 16.9956 0.271388 15.4542 0.269531H5.77478C4.23336 0.27046 2.78386 0.872174 1.69371 1.96139C0.603571 3.05246 0.00185714 4.50196 0 6.04339V15.7228C0.00185714 17.2642 0.602643 18.7137 1.69371 19.8048C2.78386 20.8949 4.23336 21.4967 5.77478 21.4985H15.4542C16.9956 21.4967 18.4451 20.8959 19.5362 19.8057C20.6263 18.7147 21.2281 17.2652 21.2299 15.7237V6.04339ZM19.6857 15.7228C19.6848 16.8529 19.2437 17.9142 18.4461 18.7137C17.6475 19.5132 16.5852 19.9534 15.4551 19.9543H5.77478C4.64471 19.9534 3.58243 19.5132 2.78478 18.7137C1.98621 17.9161 1.54514 16.8538 1.54421 15.7247V6.04339C1.54607 4.91331 1.98714 3.85196 2.78478 3.05432C3.58243 2.25574 4.64378 1.8156 5.77478 1.81374H15.4542C16.5843 1.81467 17.6466 2.25482 18.4451 3.05432C19.2437 3.85103 19.6848 4.91331 19.6857 6.04339V15.7228Z\"\n                                        fill=\"black\"\n                                    />\n                                    <path\n                                        d=\"M5.6446 8.8254C5.23603 9.81155 5.13017 10.8859 5.33817 11.9333C5.54617 12.9798 6.0541 13.9316 6.80995 14.6893C7.56488 15.4443 8.5176 15.9531 9.56502 16.1611C10.6041 16.3691 11.6915 16.2614 12.6739 15.8547C13.66 15.447 14.4948 14.7608 15.0882 13.8731C15.6815 12.9863 15.9954 11.9528 15.9954 10.884C15.9944 9.44662 15.4336 8.09648 14.4177 7.08062C13.401 6.06476 12.0508 5.50483 10.6152 5.50391C9.54738 5.50391 8.51388 5.81776 7.62617 6.41112C6.73845 7.00355 6.05317 7.83926 5.6446 8.8254ZM7.90381 8.17262C8.44238 7.63405 9.12117 7.27098 9.86774 7.12333C10.6087 6.97383 11.3841 7.0509 12.0833 7.33969C12.7862 7.63126 13.3815 8.12062 13.8049 8.75205C14.2283 9.38533 14.4512 10.1226 14.4512 10.8831C14.4502 11.9073 14.051 12.8703 13.3267 13.5936C12.6033 14.3179 11.6404 14.7172 10.6162 14.7181C9.85474 14.7181 9.11838 14.4953 8.4851 14.0718C7.85274 13.6503 7.36431 13.0541 7.07274 12.3503C6.78117 11.6464 6.70595 10.8803 6.85453 10.1347C7.0031 9.38905 7.36617 8.71026 7.90381 8.17262Z\"\n                                        fill=\"black\"\n                                    />\n                                    <path\n                                        d=\"M15.3435 5.67383C15.4763 5.92176 15.6927 6.11769 15.9517 6.22448C16.2117 6.33219 16.5033 6.34705 16.7726 6.26441C17.041 6.18269 17.275 6.00998 17.4319 5.77505C17.5879 5.54198 17.6585 5.25876 17.6315 4.97833C17.6037 4.69883 17.4792 4.43512 17.2805 4.23733L17.2787 4.23455C17.0484 4.00612 16.7429 3.87891 16.417 3.87891C16.1356 3.87891 15.8607 3.97733 15.6435 4.15655C15.4262 4.33576 15.2757 4.58648 15.2219 4.86133C15.168 5.13526 15.2107 5.42498 15.3435 5.67383Z\"\n                                        fill=\"black\"\n                                    />\n                                </svg>\n                            </a>\n                        }\n                        @if (item.name == 'twitter') {\n                            <a\n                                background=\"#515050\"\n                                [href]=\"item?.url\"\n                                [linkType]=\"item?.linkType ?? 'external'\"\n                                class=\"m-icon twitter\"\n                            >\n                                <svg\n                                    width=\"22\"\n                                    height=\"22\"\n                                    viewBox=\"0 0 24 24\"\n                                    fill=\"none\"\n                                    xmlns=\"http://www.w3.org/2000/svg\"\n                                >\n                                    <path\n                                        d=\"M18.9 2H22l-6.8 7.8L23 22h-6.6l-5.2-6.7L5.3 22H2l7.3-8.4L1 2h6.7l4.7 6 6.5-6ZM17.8 20h1.7L6.1 3.9H4.3L17.8 20Z\"\n                                        fill=\"black\"\n                                    />\n                                </svg>\n                            </a>\n                        }\n                        @if (item.name == 'tiktok') {\n                            <a\n                                background=\"#515050\"\n                                [href]=\"item?.url\"\n                                [linkType]=\"item?.linkType ?? 'external'\"\n                                class=\"m-icon tiktok\"\n                            >\n                                <svg\n                                    width=\"22\"\n                                    height=\"22\"\n                                    viewBox=\"0 0 24 24\"\n                                    fill=\"none\"\n                                    xmlns=\"http://www.w3.org/2000/svg\"\n                                >\n                                    <path\n                                        d=\"M14 2h2.3c.3 2.1 1.5 3.7 3.7 4.4V8.6c-1.7 0-3.1-.5-4.3-1.4v7.1c0 3-2.4 5.7-5.7 5.7S4.3 17.3 4.3 14.3c0-3 2.4-5.7 5.7-5.7.3 0 .6 0 .9.1v2.4c-.3-.1-.6-.2-.9-.2-1.7 0-3.1 1.4-3.1 3.1 0 1.7 1.4 3.1 3.1 3.1 1.8 0 3.1-1.3 3.1-3.6V2Z\"\n                                        fill=\"black\"\n                                    />\n                                </svg>\n                            </a>\n                        }\n                        @if (item.name == 'linkedin') {\n                            <a\n                                background=\"#515050\"\n                                [href]=\"item?.url\"\n                                [linkType]=\"item?.linkType ?? 'external'\"\n                                class=\"m-icon linkedin\"\n                                ><svg\n                                    width=\"22\"\n                                    height=\"22\"\n                                    viewBox=\"0 0 24 24\"\n                                    fill=\"none\"\n                                    xmlns=\"http://www.w3.org/2000/svg\"\n                                >\n                                    <path\n                                        d=\"M19 3a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h14m-.5 15.5v-5.3a3.26 3.26 0 0 0-3.26-3.26c-.85 0-1.84.52-2.32 1.3v-1.11h-2.79v8.37h2.79v-4.93c0-.77.62-1.4 1.39-1.4a1.4 1.4 0 0 1 1.4 1.4v4.93h2.79M6.88 8.56a1.68 1.68 0 0 0 1.68-1.68c0-.93-.75-1.69-1.68-1.69a1.69 1.69 0 0 0-1.69 1.69c0 .93.76 1.68 1.69 1.68m1.39 9.94v-8.37H5.5v8.37h2.77Z\"\n                                        fill=\"black\"\n                                    />\n                                </svg>\n                            </a>\n                        }\n                        @if (item.name == 'blue') {\n                            <a\n                                background=\"#66C3C9\"\n                                [href]=\"item?.url\"\n                                [linkType]=\"item?.linkType ?? 'external'\"\n                                class=\"m-icon blue\"\n                            >\n                                <svg\n                                    width=\"22\"\n                                    height=\"22\"\n                                    viewBox=\"0 0 22 22\"\n                                    fill=\"none\"\n                                    xmlns=\"http://www.w3.org/2000/svg\"\n                                >\n                                    <path\n                                        d=\"M21.2299 6.04339C21.2281 4.50196 20.6263 3.05153 19.5362 1.96139C18.4461 0.872174 16.9956 0.271388 15.4542 0.269531H5.77478C4.23336 0.27046 2.78386 0.872174 1.69371 1.96139C0.603571 3.05246 0.00185714 4.50196 0 6.04339V15.7228C0.00185714 17.2642 0.602643 18.7137 1.69371 19.8048C2.78386 20.8949 4.23336 21.4967 5.77478 21.4985H15.4542C16.9956 21.4967 18.4451 20.8959 19.5362 19.8057C20.6263 18.7147 21.2281 17.2652 21.2299 15.7237V6.04339ZM19.6857 15.7228C19.6848 16.8529 19.2437 17.9142 18.4461 18.7137C17.6475 19.5132 16.5852 19.9534 15.4551 19.9543H5.77478C4.64471 19.9534 3.58243 19.5132 2.78478 18.7137C1.98621 17.9161 1.54514 16.8538 1.54421 15.7247V6.04339C1.54607 4.91331 1.98714 3.85196 2.78478 3.05432C3.58243 2.25574 4.64378 1.8156 5.77478 1.81374H15.4542C16.5843 1.81467 17.6466 2.25482 18.4451 3.05432C19.2437 3.85103 19.6848 4.91331 19.6857 6.04339V15.7228Z\"\n                                        fill=\"black\"\n                                    />\n                                    <path\n                                        d=\"M5.6446 8.8254C5.23603 9.81155 5.13017 10.8859 5.33817 11.9333C5.54617 12.9798 6.0541 13.9316 6.80995 14.6893C7.56488 15.4443 8.5176 15.9531 9.56502 16.1611C10.6041 16.3691 11.6915 16.2614 12.6739 15.8547C13.66 15.447 14.4948 14.7608 15.0882 13.8731C15.6815 12.9863 15.9954 11.9528 15.9954 10.884C15.9944 9.44662 15.4336 8.09648 14.4177 7.08062C13.401 6.06476 12.0508 5.50483 10.6152 5.50391C9.54738 5.50391 8.51388 5.81776 7.62617 6.41112C6.73845 7.00355 6.05317 7.83926 5.6446 8.8254ZM7.90381 8.17262C8.44238 7.63405 9.12117 7.27098 9.86774 7.12333C10.6087 6.97383 11.3841 7.0509 12.0833 7.33969C12.7862 7.63126 13.3815 8.12062 13.8049 8.75205C14.2283 9.38533 14.4512 10.1226 14.4512 10.8831C14.4502 11.9073 14.051 12.8703 13.3267 13.5936C12.6033 14.3179 11.6404 14.7172 10.6162 14.7181C9.85474 14.7181 9.11838 14.4953 8.4851 14.0718C7.85274 13.6503 7.36431 13.0541 7.07274 12.3503C6.78117 11.6464 6.70595 10.8803 6.85453 10.1347C7.0031 9.38905 7.36617 8.71026 7.90381 8.17262Z\"\n                                        fill=\"black\"\n                                    />\n                                    <path\n                                        d=\"M15.3435 5.67383C15.4763 5.92176 15.6927 6.11769 15.9517 6.22448C16.2117 6.33219 16.5033 6.34705 16.7726 6.26441C17.041 6.18269 17.275 6.00998 17.4319 5.77505C17.5879 5.54198 17.6585 5.25876 17.6315 4.97833C17.6037 4.69883 17.4792 4.43512 17.2805 4.23733L17.2787 4.23455C17.0484 4.00612 16.7429 3.87891 16.417 3.87891C16.1356 3.87891 15.8607 3.97733 15.6435 4.15655C15.4262 4.33576 15.2757 4.58648 15.2219 4.86133C15.168 5.13526 15.2107 5.42498 15.3435 5.67383Z\"\n                                        fill=\"black\"\n                                    />\n                                </svg>\n                            </a>\n                        }\n                    }\n                </div>\n            }\n            @if (texts?.title) {\n                <div class=\"m-subtitle\">{{ texts?.title }}</div>\n            }\n        </div>\n    </div>\n</section>\n\n<!-- \n<section class=\"mdl-h11\">\n    <div class=\"mdl-container\">\n        <div class=\"swipers-container\">\n            <div class=\"swiper-container\" BabylonAvSocialSwiper>\n                <div class=\"swiper-wrapper\">\n                    <a href=\"#\" class=\"swiper-slide\">\n                        <img\n                            src=\"https://picsum.photos/270/270\"\n                            alt=\"ventaja1\"\n                            class=\"m-logo\"\n                        />\n                    </a>\n                    <a href=\"#\" class=\"swiper-slide\">\n                        <img\n                            src=\"https://picsum.photos/271/270\"\n                            alt=\"ventaja1\"\n                            class=\"m-logo\"\n                        />\n                    </a>\n                    <a href=\"#\" class=\"swiper-slide\">\n                        <img\n                            src=\"https://picsum.photos/270/271\"\n                            alt=\"ventaja1\"\n                            class=\"m-logo\"\n                        />\n                    </a>\n                    <a href=\"#\" class=\"swiper-slide\">\n                        <img\n                            src=\"https://picsum.photos/271/271\"\n                            alt=\"ventaja1\"\n                            class=\"m-logo\"\n                        />\n                    </a>\n                </div>\n            </div>\n            <div class=\"swiper-container\" BabylonAvSocialSwiper>\n                <div class=\"swiper-wrapper\">\n                    <a href=\"#\" class=\"swiper-slide\">\n                        <img\n                            src=\"https://picsum.photos/272/270\"\n                            alt=\"ventaja1\"\n                            class=\"m-logo\"\n                        />\n                    </a>\n                    <a href=\"#\" class=\"swiper-slide\">\n                        <img\n                            src=\"https://picsum.photos/270/272\"\n                            alt=\"ventaja1\"\n                            class=\"m-logo\"\n                        />\n                    </a>\n                    <a href=\"#\" class=\"swiper-slide\">\n                        <img\n                            src=\"https://picsum.photos/272/271\"\n                            alt=\"ventaja1\"\n                            class=\"m-logo\"\n                        />\n                    </a>\n                    <a href=\"#\" class=\"swiper-slide\">\n                        <img\n                            src=\"https://picsum.photos/271/272\"\n                            alt=\"ventaja1\"\n                            class=\"m-logo\"\n                        />\n                    </a>\n                </div>\n            </div>\n            <div class=\"swiper-container\" BabylonAvSocialSwiper>\n                <div class=\"swiper-wrapper\">\n                    <a href=\"#\" class=\"swiper-slide\">\n                        <img\n                            src=\"https://picsum.photos/273/270\"\n                            alt=\"ventaja1\"\n                            class=\"m-logo\"\n                        />\n                    </a>\n                    <a href=\"#\" class=\"swiper-slide\">\n                        <img\n                            src=\"https://picsum.photos/270/273\"\n                            alt=\"ventaja1\"\n                            class=\"m-logo\"\n                        />\n                    </a>\n                    <a href=\"#\" class=\"swiper-slide\">\n                        <img\n                            src=\"https://picsum.photos/273/271\"\n                            alt=\"ventaja1\"\n                            class=\"m-logo\"\n                        />\n                    </a>\n                    <a href=\"#\" class=\"swiper-slide\">\n                        <img\n                            src=\"https://picsum.photos/271/273\"\n                            alt=\"ventaja1\"\n                            class=\"m-logo\"\n                        />\n                    </a>\n                </div>\n            </div>\n            <div class=\"swiper-container\" BabylonAvSocialSwiper>\n                <div class=\"swiper-wrapper\">\n                    <a href=\"#\" class=\"swiper-slide\">\n                        <img\n                            src=\"https://picsum.photos/274/270\"\n                            alt=\"ventaja1\"\n                            class=\"m-logo\"\n                        />\n                    </a>\n                    <a href=\"#\" class=\"swiper-slide\">\n                        <img\n                            src=\"https://picsum.photos/270/274\"\n                            alt=\"ventaja1\"\n                            class=\"m-logo\"\n                        />\n                    </a>\n                    <a href=\"#\" class=\"swiper-slide\">\n                        <img\n                            src=\"https://picsum.photos/274/271\"\n                            alt=\"ventaja1\"\n                            class=\"m-logo\"\n                        />\n                    </a>\n                    <a href=\"#\" class=\"swiper-slide\">\n                        <img\n                            src=\"https://picsum.photos/271/274\"\n                            alt=\"ventaja1\"\n                            class=\"m-logo\"\n                        />\n                    </a>\n                </div>\n            </div>\n        </div>\n\n        <div class=\"m-rrss\">\n            <h2 class=\"m-title\">conecta con nosotros en</h2>\n            <div class=\"m-icons\">\n                <a background=\"#FF4338\" href=\"\" class=\"m-icon\">\n                    <svg\n                        width=\"22\"\n                        height=\"22\"\n                        viewBox=\"0 0 22 22\"\n                        fill=\"none\"\n                        xmlns=\"http://www.w3.org/2000/svg\"\n                    >\n                        <path\n                            d=\"M21.2299 6.04339C21.2281 4.50196 20.6263 3.05153 19.5362 1.96139C18.4461 0.872174 16.9956 0.271388 15.4542 0.269531H5.77478C4.23336 0.27046 2.78386 0.872174 1.69371 1.96139C0.603571 3.05246 0.00185714 4.50196 0 6.04339V15.7228C0.00185714 17.2642 0.602643 18.7137 1.69371 19.8048C2.78386 20.8949 4.23336 21.4967 5.77478 21.4985H15.4542C16.9956 21.4967 18.4451 20.8959 19.5362 19.8057C20.6263 18.7147 21.2281 17.2652 21.2299 15.7237V6.04339ZM19.6857 15.7228C19.6848 16.8529 19.2437 17.9142 18.4461 18.7137C17.6475 19.5132 16.5852 19.9534 15.4551 19.9543H5.77478C4.64471 19.9534 3.58243 19.5132 2.78478 18.7137C1.98621 17.9161 1.54514 16.8538 1.54421 15.7247V6.04339C1.54607 4.91331 1.98714 3.85196 2.78478 3.05432C3.58243 2.25574 4.64378 1.8156 5.77478 1.81374H15.4542C16.5843 1.81467 17.6466 2.25482 18.4451 3.05432C19.2437 3.85103 19.6848 4.91331 19.6857 6.04339V15.7228Z\"\n                            fill=\"black\"\n                        />\n                        <path\n                            d=\"M5.6446 8.8254C5.23603 9.81155 5.13017 10.8859 5.33817 11.9333C5.54617 12.9798 6.0541 13.9316 6.80995 14.6893C7.56488 15.4443 8.5176 15.9531 9.56502 16.1611C10.6041 16.3691 11.6915 16.2614 12.6739 15.8547C13.66 15.447 14.4948 14.7608 15.0882 13.8731C15.6815 12.9863 15.9954 11.9528 15.9954 10.884C15.9944 9.44662 15.4336 8.09648 14.4177 7.08062C13.401 6.06476 12.0508 5.50483 10.6152 5.50391C9.54738 5.50391 8.51388 5.81776 7.62617 6.41112C6.73845 7.00355 6.05317 7.83926 5.6446 8.8254ZM7.90381 8.17262C8.44238 7.63405 9.12117 7.27098 9.86774 7.12333C10.6087 6.97383 11.3841 7.0509 12.0833 7.33969C12.7862 7.63126 13.3815 8.12062 13.8049 8.75205C14.2283 9.38533 14.4512 10.1226 14.4512 10.8831C14.4502 11.9073 14.051 12.8703 13.3267 13.5936C12.6033 14.3179 11.6404 14.7172 10.6162 14.7181C9.85474 14.7181 9.11838 14.4953 8.4851 14.0718C7.85274 13.6503 7.36431 13.0541 7.07274 12.3503C6.78117 11.6464 6.70595 10.8803 6.85453 10.1347C7.0031 9.38905 7.36617 8.71026 7.90381 8.17262Z\"\n                            fill=\"black\"\n                        />\n                        <path\n                            d=\"M15.3435 5.67383C15.4763 5.92176 15.6927 6.11769 15.9517 6.22448C16.2117 6.33219 16.5033 6.34705 16.7726 6.26441C17.041 6.18269 17.275 6.00998 17.4319 5.77505C17.5879 5.54198 17.6585 5.25876 17.6315 4.97833C17.6037 4.69883 17.4792 4.43512 17.2805 4.23733L17.2787 4.23455C17.0484 4.00612 16.7429 3.87891 16.417 3.87891C16.1356 3.87891 15.8607 3.97733 15.6435 4.15655C15.4262 4.33576 15.2757 4.58648 15.2219 4.86133C15.168 5.13526 15.2107 5.42498 15.3435 5.67383Z\"\n                            fill=\"black\"\n                        />\n                    </svg>\n                </a>\n                <a background=\"#5B87DA\" href=\"\" class=\"m-icon\">\n                    <svg\n                        width=\"22\"\n                        height=\"22\"\n                        viewBox=\"0 0 22 22\"\n                        fill=\"none\"\n                        xmlns=\"http://www.w3.org/2000/svg\"\n                    >\n                        <path\n                            d=\"M21.2299 6.04339C21.2281 4.50196 20.6263 3.05153 19.5362 1.96139C18.4461 0.872174 16.9956 0.271388 15.4542 0.269531H5.77478C4.23336 0.27046 2.78386 0.872174 1.69371 1.96139C0.603571 3.05246 0.00185714 4.50196 0 6.04339V15.7228C0.00185714 17.2642 0.602643 18.7137 1.69371 19.8048C2.78386 20.8949 4.23336 21.4967 5.77478 21.4985H15.4542C16.9956 21.4967 18.4451 20.8959 19.5362 19.8057C20.6263 18.7147 21.2281 17.2652 21.2299 15.7237V6.04339ZM19.6857 15.7228C19.6848 16.8529 19.2437 17.9142 18.4461 18.7137C17.6475 19.5132 16.5852 19.9534 15.4551 19.9543H5.77478C4.64471 19.9534 3.58243 19.5132 2.78478 18.7137C1.98621 17.9161 1.54514 16.8538 1.54421 15.7247V6.04339C1.54607 4.91331 1.98714 3.85196 2.78478 3.05432C3.58243 2.25574 4.64378 1.8156 5.77478 1.81374H15.4542C16.5843 1.81467 17.6466 2.25482 18.4451 3.05432C19.2437 3.85103 19.6848 4.91331 19.6857 6.04339V15.7228Z\"\n                            fill=\"black\"\n                        />\n                        <path\n                            d=\"M5.6446 8.8254C5.23603 9.81155 5.13017 10.8859 5.33817 11.9333C5.54617 12.9798 6.0541 13.9316 6.80995 14.6893C7.56488 15.4443 8.5176 15.9531 9.56502 16.1611C10.6041 16.3691 11.6915 16.2614 12.6739 15.8547C13.66 15.447 14.4948 14.7608 15.0882 13.8731C15.6815 12.9863 15.9954 11.9528 15.9954 10.884C15.9944 9.44662 15.4336 8.09648 14.4177 7.08062C13.401 6.06476 12.0508 5.50483 10.6152 5.50391C9.54738 5.50391 8.51388 5.81776 7.62617 6.41112C6.73845 7.00355 6.05317 7.83926 5.6446 8.8254ZM7.90381 8.17262C8.44238 7.63405 9.12117 7.27098 9.86774 7.12333C10.6087 6.97383 11.3841 7.0509 12.0833 7.33969C12.7862 7.63126 13.3815 8.12062 13.8049 8.75205C14.2283 9.38533 14.4512 10.1226 14.4512 10.8831C14.4502 11.9073 14.051 12.8703 13.3267 13.5936C12.6033 14.3179 11.6404 14.7172 10.6162 14.7181C9.85474 14.7181 9.11838 14.4953 8.4851 14.0718C7.85274 13.6503 7.36431 13.0541 7.07274 12.3503C6.78117 11.6464 6.70595 10.8803 6.85453 10.1347C7.0031 9.38905 7.36617 8.71026 7.90381 8.17262Z\"\n                            fill=\"black\"\n                        />\n                        <path\n                            d=\"M15.3435 5.67383C15.4763 5.92176 15.6927 6.11769 15.9517 6.22448C16.2117 6.33219 16.5033 6.34705 16.7726 6.26441C17.041 6.18269 17.275 6.00998 17.4319 5.77505C17.5879 5.54198 17.6585 5.25876 17.6315 4.97833C17.6037 4.69883 17.4792 4.43512 17.2805 4.23733L17.2787 4.23455C17.0484 4.00612 16.7429 3.87891 16.417 3.87891C16.1356 3.87891 15.8607 3.97733 15.6435 4.15655C15.4262 4.33576 15.2757 4.58648 15.2219 4.86133C15.168 5.13526 15.2107 5.42498 15.3435 5.67383Z\"\n                            fill=\"black\"\n                        />\n                    </svg>\n                </a>\n                <a background=\"#515050\" href=\"\" class=\"m-icon\">\n                    <svg\n                        width=\"22\"\n                        height=\"22\"\n                        viewBox=\"0 0 22 22\"\n                        fill=\"none\"\n                        xmlns=\"http://www.w3.org/2000/svg\"\n                    >\n                        <path\n                            d=\"M21.2299 6.04339C21.2281 4.50196 20.6263 3.05153 19.5362 1.96139C18.4461 0.872174 16.9956 0.271388 15.4542 0.269531H5.77478C4.23336 0.27046 2.78386 0.872174 1.69371 1.96139C0.603571 3.05246 0.00185714 4.50196 0 6.04339V15.7228C0.00185714 17.2642 0.602643 18.7137 1.69371 19.8048C2.78386 20.8949 4.23336 21.4967 5.77478 21.4985H15.4542C16.9956 21.4967 18.4451 20.8959 19.5362 19.8057C20.6263 18.7147 21.2281 17.2652 21.2299 15.7237V6.04339ZM19.6857 15.7228C19.6848 16.8529 19.2437 17.9142 18.4461 18.7137C17.6475 19.5132 16.5852 19.9534 15.4551 19.9543H5.77478C4.64471 19.9534 3.58243 19.5132 2.78478 18.7137C1.98621 17.9161 1.54514 16.8538 1.54421 15.7247V6.04339C1.54607 4.91331 1.98714 3.85196 2.78478 3.05432C3.58243 2.25574 4.64378 1.8156 5.77478 1.81374H15.4542C16.5843 1.81467 17.6466 2.25482 18.4451 3.05432C19.2437 3.85103 19.6848 4.91331 19.6857 6.04339V15.7228Z\"\n                            fill=\"black\"\n                        />\n                        <path\n                            d=\"M5.6446 8.8254C5.23603 9.81155 5.13017 10.8859 5.33817 11.9333C5.54617 12.9798 6.0541 13.9316 6.80995 14.6893C7.56488 15.4443 8.5176 15.9531 9.56502 16.1611C10.6041 16.3691 11.6915 16.2614 12.6739 15.8547C13.66 15.447 14.4948 14.7608 15.0882 13.8731C15.6815 12.9863 15.9954 11.9528 15.9954 10.884C15.9944 9.44662 15.4336 8.09648 14.4177 7.08062C13.401 6.06476 12.0508 5.50483 10.6152 5.50391C9.54738 5.50391 8.51388 5.81776 7.62617 6.41112C6.73845 7.00355 6.05317 7.83926 5.6446 8.8254ZM7.90381 8.17262C8.44238 7.63405 9.12117 7.27098 9.86774 7.12333C10.6087 6.97383 11.3841 7.0509 12.0833 7.33969C12.7862 7.63126 13.3815 8.12062 13.8049 8.75205C14.2283 9.38533 14.4512 10.1226 14.4512 10.8831C14.4502 11.9073 14.051 12.8703 13.3267 13.5936C12.6033 14.3179 11.6404 14.7172 10.6162 14.7181C9.85474 14.7181 9.11838 14.4953 8.4851 14.0718C7.85274 13.6503 7.36431 13.0541 7.07274 12.3503C6.78117 11.6464 6.70595 10.8803 6.85453 10.1347C7.0031 9.38905 7.36617 8.71026 7.90381 8.17262Z\"\n                            fill=\"black\"\n                        />\n                        <path\n                            d=\"M15.3435 5.67383C15.4763 5.92176 15.6927 6.11769 15.9517 6.22448C16.2117 6.33219 16.5033 6.34705 16.7726 6.26441C17.041 6.18269 17.275 6.00998 17.4319 5.77505C17.5879 5.54198 17.6585 5.25876 17.6315 4.97833C17.6037 4.69883 17.4792 4.43512 17.2805 4.23733L17.2787 4.23455C17.0484 4.00612 16.7429 3.87891 16.417 3.87891C16.1356 3.87891 15.8607 3.97733 15.6435 4.15655C15.4262 4.33576 15.2757 4.58648 15.2219 4.86133C15.168 5.13526 15.2107 5.42498 15.3435 5.67383Z\"\n                            fill=\"black\"\n                        />\n                    </svg>\n                </a>\n                <a background=\"#515050\" href=\"\" class=\"m-icon\">\n                    <svg\n                        width=\"22\"\n                        height=\"22\"\n                        viewBox=\"0 0 22 22\"\n                        fill=\"none\"\n                        xmlns=\"http://www.w3.org/2000/svg\"\n                    >\n                        <path\n                            d=\"M21.2299 6.04339C21.2281 4.50196 20.6263 3.05153 19.5362 1.96139C18.4461 0.872174 16.9956 0.271388 15.4542 0.269531H5.77478C4.23336 0.27046 2.78386 0.872174 1.69371 1.96139C0.603571 3.05246 0.00185714 4.50196 0 6.04339V15.7228C0.00185714 17.2642 0.602643 18.7137 1.69371 19.8048C2.78386 20.8949 4.23336 21.4967 5.77478 21.4985H15.4542C16.9956 21.4967 18.4451 20.8959 19.5362 19.8057C20.6263 18.7147 21.2281 17.2652 21.2299 15.7237V6.04339ZM19.6857 15.7228C19.6848 16.8529 19.2437 17.9142 18.4461 18.7137C17.6475 19.5132 16.5852 19.9534 15.4551 19.9543H5.77478C4.64471 19.9534 3.58243 19.5132 2.78478 18.7137C1.98621 17.9161 1.54514 16.8538 1.54421 15.7247V6.04339C1.54607 4.91331 1.98714 3.85196 2.78478 3.05432C3.58243 2.25574 4.64378 1.8156 5.77478 1.81374H15.4542C16.5843 1.81467 17.6466 2.25482 18.4451 3.05432C19.2437 3.85103 19.6848 4.91331 19.6857 6.04339V15.7228Z\"\n                            fill=\"black\"\n                        />\n                        <path\n                            d=\"M5.6446 8.8254C5.23603 9.81155 5.13017 10.8859 5.33817 11.9333C5.54617 12.9798 6.0541 13.9316 6.80995 14.6893C7.56488 15.4443 8.5176 15.9531 9.56502 16.1611C10.6041 16.3691 11.6915 16.2614 12.6739 15.8547C13.66 15.447 14.4948 14.7608 15.0882 13.8731C15.6815 12.9863 15.9954 11.9528 15.9954 10.884C15.9944 9.44662 15.4336 8.09648 14.4177 7.08062C13.401 6.06476 12.0508 5.50483 10.6152 5.50391C9.54738 5.50391 8.51388 5.81776 7.62617 6.41112C6.73845 7.00355 6.05317 7.83926 5.6446 8.8254ZM7.90381 8.17262C8.44238 7.63405 9.12117 7.27098 9.86774 7.12333C10.6087 6.97383 11.3841 7.0509 12.0833 7.33969C12.7862 7.63126 13.3815 8.12062 13.8049 8.75205C14.2283 9.38533 14.4512 10.1226 14.4512 10.8831C14.4502 11.9073 14.051 12.8703 13.3267 13.5936C12.6033 14.3179 11.6404 14.7172 10.6162 14.7181C9.85474 14.7181 9.11838 14.4953 8.4851 14.0718C7.85274 13.6503 7.36431 13.0541 7.07274 12.3503C6.78117 11.6464 6.70595 10.8803 6.85453 10.1347C7.0031 9.38905 7.36617 8.71026 7.90381 8.17262Z\"\n                            fill=\"black\"\n                        />\n                        <path\n                            d=\"M15.3435 5.67383C15.4763 5.92176 15.6927 6.11769 15.9517 6.22448C16.2117 6.33219 16.5033 6.34705 16.7726 6.26441C17.041 6.18269 17.275 6.00998 17.4319 5.77505C17.5879 5.54198 17.6585 5.25876 17.6315 4.97833C17.6037 4.69883 17.4792 4.43512 17.2805 4.23733L17.2787 4.23455C17.0484 4.00612 16.7429 3.87891 16.417 3.87891C16.1356 3.87891 15.8607 3.97733 15.6435 4.15655C15.4262 4.33576 15.2757 4.58648 15.2219 4.86133C15.168 5.13526 15.2107 5.42498 15.3435 5.67383Z\"\n                            fill=\"black\"\n                        />\n                    </svg>\n                </a>\n                <a background=\"#515050\" href=\"\" class=\"m-icon\">\n                    <svg\n                        width=\"22\"\n                        height=\"22\"\n                        viewBox=\"0 0 22 22\"\n                        fill=\"none\"\n                        xmlns=\"http://www.w3.org/2000/svg\"\n                    >\n                        <path\n                            d=\"M21.2299 6.04339C21.2281 4.50196 20.6263 3.05153 19.5362 1.96139C18.4461 0.872174 16.9956 0.271388 15.4542 0.269531H5.77478C4.23336 0.27046 2.78386 0.872174 1.69371 1.96139C0.603571 3.05246 0.00185714 4.50196 0 6.04339V15.7228C0.00185714 17.2642 0.602643 18.7137 1.69371 19.8048C2.78386 20.8949 4.23336 21.4967 5.77478 21.4985H15.4542C16.9956 21.4967 18.4451 20.8959 19.5362 19.8057C20.6263 18.7147 21.2281 17.2652 21.2299 15.7237V6.04339ZM19.6857 15.7228C19.6848 16.8529 19.2437 17.9142 18.4461 18.7137C17.6475 19.5132 16.5852 19.9534 15.4551 19.9543H5.77478C4.64471 19.9534 3.58243 19.5132 2.78478 18.7137C1.98621 17.9161 1.54514 16.8538 1.54421 15.7247V6.04339C1.54607 4.91331 1.98714 3.85196 2.78478 3.05432C3.58243 2.25574 4.64378 1.8156 5.77478 1.81374H15.4542C16.5843 1.81467 17.6466 2.25482 18.4451 3.05432C19.2437 3.85103 19.6848 4.91331 19.6857 6.04339V15.7228Z\"\n                            fill=\"black\"\n                        />\n                        <path\n                            d=\"M5.6446 8.8254C5.23603 9.81155 5.13017 10.8859 5.33817 11.9333C5.54617 12.9798 6.0541 13.9316 6.80995 14.6893C7.56488 15.4443 8.5176 15.9531 9.56502 16.1611C10.6041 16.3691 11.6915 16.2614 12.6739 15.8547C13.66 15.447 14.4948 14.7608 15.0882 13.8731C15.6815 12.9863 15.9954 11.9528 15.9954 10.884C15.9944 9.44662 15.4336 8.09648 14.4177 7.08062C13.401 6.06476 12.0508 5.50483 10.6152 5.50391C9.54738 5.50391 8.51388 5.81776 7.62617 6.41112C6.73845 7.00355 6.05317 7.83926 5.6446 8.8254ZM7.90381 8.17262C8.44238 7.63405 9.12117 7.27098 9.86774 7.12333C10.6087 6.97383 11.3841 7.0509 12.0833 7.33969C12.7862 7.63126 13.3815 8.12062 13.8049 8.75205C14.2283 9.38533 14.4512 10.1226 14.4512 10.8831C14.4502 11.9073 14.051 12.8703 13.3267 13.5936C12.6033 14.3179 11.6404 14.7172 10.6162 14.7181C9.85474 14.7181 9.11838 14.4953 8.4851 14.0718C7.85274 13.6503 7.36431 13.0541 7.07274 12.3503C6.78117 11.6464 6.70595 10.8803 6.85453 10.1347C7.0031 9.38905 7.36617 8.71026 7.90381 8.17262Z\"\n                            fill=\"black\"\n                        />\n                        <path\n                            d=\"M15.3435 5.67383C15.4763 5.92176 15.6927 6.11769 15.9517 6.22448C16.2117 6.33219 16.5033 6.34705 16.7726 6.26441C17.041 6.18269 17.275 6.00998 17.4319 5.77505C17.5879 5.54198 17.6585 5.25876 17.6315 4.97833C17.6037 4.69883 17.4792 4.43512 17.2805 4.23733L17.2787 4.23455C17.0484 4.00612 16.7429 3.87891 16.417 3.87891C16.1356 3.87891 15.8607 3.97733 15.6435 4.15655C15.4262 4.33576 15.2757 4.58648 15.2219 4.86133C15.168 5.13526 15.2107 5.42498 15.3435 5.67383Z\"\n                            fill=\"black\"\n                        />\n                    </svg>\n                </a>\n                <a background=\"#66C3C9\" href=\"\" class=\"m-icon\">\n                    <svg\n                        width=\"22\"\n                        height=\"22\"\n                        viewBox=\"0 0 22 22\"\n                        fill=\"none\"\n                        xmlns=\"http://www.w3.org/2000/svg\"\n                    >\n                        <path\n                            d=\"M21.2299 6.04339C21.2281 4.50196 20.6263 3.05153 19.5362 1.96139C18.4461 0.872174 16.9956 0.271388 15.4542 0.269531H5.77478C4.23336 0.27046 2.78386 0.872174 1.69371 1.96139C0.603571 3.05246 0.00185714 4.50196 0 6.04339V15.7228C0.00185714 17.2642 0.602643 18.7137 1.69371 19.8048C2.78386 20.8949 4.23336 21.4967 5.77478 21.4985H15.4542C16.9956 21.4967 18.4451 20.8959 19.5362 19.8057C20.6263 18.7147 21.2281 17.2652 21.2299 15.7237V6.04339ZM19.6857 15.7228C19.6848 16.8529 19.2437 17.9142 18.4461 18.7137C17.6475 19.5132 16.5852 19.9534 15.4551 19.9543H5.77478C4.64471 19.9534 3.58243 19.5132 2.78478 18.7137C1.98621 17.9161 1.54514 16.8538 1.54421 15.7247V6.04339C1.54607 4.91331 1.98714 3.85196 2.78478 3.05432C3.58243 2.25574 4.64378 1.8156 5.77478 1.81374H15.4542C16.5843 1.81467 17.6466 2.25482 18.4451 3.05432C19.2437 3.85103 19.6848 4.91331 19.6857 6.04339V15.7228Z\"\n                            fill=\"black\"\n                        />\n                        <path\n                            d=\"M5.6446 8.8254C5.23603 9.81155 5.13017 10.8859 5.33817 11.9333C5.54617 12.9798 6.0541 13.9316 6.80995 14.6893C7.56488 15.4443 8.5176 15.9531 9.56502 16.1611C10.6041 16.3691 11.6915 16.2614 12.6739 15.8547C13.66 15.447 14.4948 14.7608 15.0882 13.8731C15.6815 12.9863 15.9954 11.9528 15.9954 10.884C15.9944 9.44662 15.4336 8.09648 14.4177 7.08062C13.401 6.06476 12.0508 5.50483 10.6152 5.50391C9.54738 5.50391 8.51388 5.81776 7.62617 6.41112C6.73845 7.00355 6.05317 7.83926 5.6446 8.8254ZM7.90381 8.17262C8.44238 7.63405 9.12117 7.27098 9.86774 7.12333C10.6087 6.97383 11.3841 7.0509 12.0833 7.33969C12.7862 7.63126 13.3815 8.12062 13.8049 8.75205C14.2283 9.38533 14.4512 10.1226 14.4512 10.8831C14.4502 11.9073 14.051 12.8703 13.3267 13.5936C12.6033 14.3179 11.6404 14.7172 10.6162 14.7181C9.85474 14.7181 9.11838 14.4953 8.4851 14.0718C7.85274 13.6503 7.36431 13.0541 7.07274 12.3503C6.78117 11.6464 6.70595 10.8803 6.85453 10.1347C7.0031 9.38905 7.36617 8.71026 7.90381 8.17262Z\"\n                            fill=\"black\"\n                        />\n                        <path\n                            d=\"M15.3435 5.67383C15.4763 5.92176 15.6927 6.11769 15.9517 6.22448C16.2117 6.33219 16.5033 6.34705 16.7726 6.26441C17.041 6.18269 17.275 6.00998 17.4319 5.77505C17.5879 5.54198 17.6585 5.25876 17.6315 4.97833C17.6037 4.69883 17.4792 4.43512 17.2805 4.23733L17.2787 4.23455C17.0484 4.00612 16.7429 3.87891 16.417 3.87891C16.1356 3.87891 15.8607 3.97733 15.6435 4.15655C15.4262 4.33576 15.2757 4.58648 15.2219 4.86133C15.168 5.13526 15.2107 5.42498 15.3435 5.67383Z\"\n                            fill=\"black\"\n                        />\n                    </svg>\n                </a>\n            </div>\n            <div class=\"m-subtitle\">#alegriahotels</div>\n        </div>\n    </div>\n</section> -->\n","import { isPlatformBrowser } from '@angular/common';\nimport {\n    AfterViewInit,\n    Directive,\n    ElementRef,\n    HostListener,\n    OnDestroy,\n    PLATFORM_ID,\n    inject,\n} from '@angular/core';\nimport { tap } from 'rxjs';\nimport Swiper, { Navigation, SwiperOptions } from 'swiper';\nimport { Utils } from '../../../utils';\n\n@Directive({\n    selector: '[BabylonAvTextIcoSwiperDirective]',\n    standalone: true,\n})\nexport class BabylonAvTextIcoSwiperDirective\n    implements AfterViewInit, OnDestroy\n{\n    private readonly platform = inject(PLATFORM_ID);\n    private swiperInstance?: Swiper;\n\n    constructor(private el: ElementRef<HTMLElement>) {\n        // Si más adelante quieres navegación, ya tienes Navigation registrado\n        Swiper.use([Navigation]);\n    }\n\n    ngAfterViewInit(): void {\n        if (!isPlatformBrowser(this.platform)) return;\n\n        Utils.loadStyle$('assets/babylon/css/swiper-bundle.min.css')\n            .pipe(tap(() => this.initSwiper()))\n            .subscribe();\n    }\n\n    ngOnDestroy(): void {\n        if (!isPlatformBrowser(this.platform)) return;\n\n        if (this.swiperInstance) {\n            try {\n                this.swiperInstance.destroy(true, true);\n            } catch {\n                // sin drama\n            }\n        }\n    }\n\n    private initSwiper(): void {\n        if (!isPlatformBrowser(this.platform)) return;\n\n        const host = this.el.nativeElement;\n\n        // Directiva aplicada en el contenedor del módulo h10:\n        // <div class=\"swiper-container\" babylonSwiperSliderV2>\n        const container = host.classList.contains('swiper-container')\n            ? host\n            : ((host.querySelector('.swiper-container') as HTMLElement) ??\n              host);\n\n        const slideCount = container.querySelectorAll('.swiper-slide').length;\n\n        const options: SwiperOptions = {\n            slidesPerView: 3,\n            initialSlide: 1,\n            loop: false,\n            simulateTouch: true,\n            grabCursor: true,\n            spaceBetween: 40,\n            breakpoints: {\n                0: {\n                    slidesPerView: 1,\n                    spaceBetween: 80,\n                    centeredSlides: true,\n                },\n                550: {\n                    slidesPerView: 1.5,\n                    spaceBetween: 80,\n                    centeredSlides: true,\n                },\n                770: {\n                    slidesPerView: 2.5,\n                    spaceBetween: 80,\n                    centeredSlides: true,\n                },\n                1080: {\n                    slidesPerView: 2,\n                },\n                1370: {\n                    spaceBetween: 3,\n                },\n                1680: {\n                    spaceBetween: 40,\n                },\n            },\n        };\n\n        // Parte equivalente a:\n        // if (window.innerWidth < 1370 || slideCount > 3) { autoplay ... }\n        if (window.innerWidth < 1370 || slideCount > 3) {\n            if (options.autoplay) {\n                options.autoplay = {\n                    delay: 3000,\n                };\n            }\n        }\n\n        // Si ya existía instancia (por si acaso)\n        if (this.swiperInstance) {\n            try {\n                this.swiperInstance.destroy(true, true);\n            } catch {\n                /* nada */\n            }\n        }\n\n        this.swiperInstance = new Swiper(container, options);\n    }\n\n    // Si quieres que el autoplay se reactive/recalcule en resize,\n    // puedes volver a crear la instancia en un futuro.\n    @HostListener('window:resize')\n    onResize() {\n        // Por ahora no hacemos nada; si quieres recalcular autoplay,\n        // podrías destruir y volver a llamar a initSwiper().\n    }\n}\n","import { Component, Input } from '@angular/core';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport {\n    BabylonButtonI,\n    BabylonItemI,\n    BabylonTextInfoI,\n} from '../../../interfaces';\nimport { BabylonAvTextIcoSwiperDirective } from './babylon-av-txt-ico.directive';\n\n@Component({\n    selector: 'lib-babylon-av-txt-ico',\n    standalone: true,\n    imports: [BabylonAvTextIcoSwiperDirective, BabylonLinkTypeDirective],\n    templateUrl: './babylon-av-txt-ico.component.html',\n    styleUrl: './babylon-av-txt-ico.component.scss',\n})\nexport class BabylonAvTxtIcoComponent {\n    @Input() texts?: BabylonTextInfoI;\n    @Input() buttons?: BabylonButtonI[];\n    @Input() items?: BabylonItemI[];\n}\n","<!-- <section class=\"mdl-h10\">\n    <div class=\"mdl-container\">\n        <button class=\"m-button-sm\">Más información</button>\n        <div class=\"m-content-left\">\n            <div class=\"swiper\">\n                <div class=\"swiper-container\" BabylonAvTextIcoSwiperDirective>\n                    <div class=\"swiper-wrapper\">\n                        <div class=\"swiper-slide rotateimg\">\n                            <div class=\"m-content\">\n                                <img\n                                    src=\"/assets/babylon/svg/icons/nut.svg\"\n                                    alt=\"\"\n                                />\n                                <div class=\"m-texto\">\n                                    <strong>Ahorrando energía,</strong> con\n                                    sensores que regulan la luz.\n                                </div>\n                                <img\n                                    src=\"/assets/babylon/svg/icons/vector.svg\"\n                                    alt=\"\"\n                                />\n                            </div>\n                        </div>\n                        <div class=\"swiper-slide jumpimg\">\n                            <div class=\"m-content\">\n                                <img\n                                    src=\"/assets/babylon/svg/icons/drop.svg\"\n                                    alt=\"\"\n                                />\n                                <div class=\"m-texto\">\n                                    <strong>Ahorrando agua,</strong> con\n                                    sensores que regulan la luz.\n                                </div>\n                                <img\n                                    src=\"/assets/babylon/svg/icons/vector.svg\"\n                                    alt=\"\"\n                                />\n                            </div>\n                        </div>\n                        <div class=\"swiper-slide rotateimginvert\">\n                            <div class=\"m-content\">\n                                <img\n                                    src=\"/assets/babylon/svg/icons/loading.svg\"\n                                    alt=\"\"\n                                />\n                                <div class=\"m-texto\">\n                                    <strong>Reciclar y reutilizar,</strong> con\n                                    sensores que regulan la luz.\n                                </div>\n                                <img\n                                    src=\"/assets/babylon/svg/icons/vector.svg\"\n                                    alt=\"\"\n                                />\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </div>\n\n        <div class=\"m-content-right\">\n            <div class=\"m-content\">\n                <div class=\"m-pretitulo\">sostenibilidad</div>\n                <h2 class=\"m-titulo\">Nos hace felices cuidar el planeta.</h2>\n                <div class=\"m-texto\">\n                    Respetamos nuestro planeta: compromiso medioambiental.\n                </div>\n                <button class=\"m-button-sm\">Más información</button>\n            </div>\n        </div>\n    </div>\n</section> -->\n\n<section class=\"mdl-h10\">\n    <div class=\"mdl-container\">\n        @if (buttons?.length) {\n            <a\n                class=\"m-button-sm\"\n                [href]=\"buttons?.[0]?.url\"\n                [linkType]=\"buttons?.[0]?.linkType\"\n                >{{ buttons?.[0]?.label }}</a\n            >\n        }\n        @if (items?.length) {\n            <div class=\"m-content-left\">\n                <!-- Contenedor principal -->\n                <div class=\"swiper\">\n                    <div\n                        class=\"swiper-container\"\n                        BabylonAvTextIcoSwiperDirective\n                    >\n                        <div class=\"swiper-wrapper\">\n                            <!-- Cada slide -->\n                            <!-- Si quieres que la imagen de gire 360 añadir la clase rotateimg -->\n                            <div class=\"swiper-slide rotateimg\">\n                                <div class=\"m-content\">\n                                    <img\n                                        src=\"/assets/babylon/svg/icons/nut.svg\"\n                                        alt=\"\"\n                                    />\n                                    @if (items?.[0]?.description) {\n                                        <div\n                                            class=\"m-texto\"\n                                            [innerHTML]=\"\n                                                items?.[0]?.description\n                                            \"\n                                        ></div>\n                                    }\n                                    <img\n                                        src=\"/assets/babylon/svg/icons/vector.svg\"\n                                        alt=\"\"\n                                    />\n                                </div>\n                            </div>\n                            <!-- Si quieres que la imagen haga un salto añadir la clase jumpimg -->\n                            <div class=\"swiper-slide jumpimg\">\n                                <div class=\"m-content\">\n                                    <img\n                                        src=\"/assets/babylon/svg/icons/drop.svg\"\n                                        alt=\"\"\n                                    />\n                                    @if (items?.[1]?.description) {\n                                        <div\n                                            class=\"m-texto\"\n                                            [innerHTML]=\"\n                                                items?.[1]?.description\n                                            \"\n                                        ></div>\n                                    }\n                                    <img\n                                        src=\"/assets/babylon/svg/icons/vector.svg\"\n                                        alt=\"\"\n                                    />\n                                </div>\n                            </div>\n                            <!-- Si quieres que la imagen de gire 360 invertido añadir la clase rotateimg -->\n                            <div class=\"swiper-slide rotateimginvert\">\n                                <div class=\"m-content\">\n                                    <img\n                                        src=\"/assets/babylon/svg/icons/loading.svg\"\n                                        alt=\"\"\n                                    />\n                                    @if (items?.[2]?.description) {\n                                        <div\n                                            class=\"m-texto\"\n                                            [innerHTML]=\"\n                                                items?.[2]?.description\n                                            \"\n                                        ></div>\n                                    }\n                                    <img\n                                        src=\"/assets/babylon/svg/icons/vector.svg\"\n                                        alt=\"\"\n                                    />\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        }\n\n        @if (texts) {\n            <div class=\"m-content-right\">\n                <div class=\"m-content\">\n                    @if (texts.pretitle) {\n                        <div class=\"m-pretitulo\">{{ texts.pretitle }}</div>\n                    }\n                    @if (texts.title) {\n                        <h2 class=\"m-titulo\">\n                            {{ texts.title }}\n                        </h2>\n                    }\n                    @if (texts.description) {\n                        <div\n                            class=\"m-texto\"\n                            [innerHTML]=\"texts.description\"\n                        ></div>\n                    }\n                    @if (buttons?.length) {\n                        <a\n                            class=\"m-button-sm\"\n                            [href]=\"buttons?.[0]?.url\"\n                            [linkType]=\"buttons?.[0]?.linkType\"\n                            >{{ buttons?.[0]?.label }}</a\n                        >\n                    }\n                </div>\n            </div>\n        }\n    </div>\n</section>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport {\n    BabylonButtonI,\n    BabylonMultimediaI,\n    BabylonTextInfoI,\n} from '../../../interfaces';\n\n@Component({\n    selector: 'lib-babylon-ba-img-txt',\n    standalone: true,\n    imports: [CommonModule, BabylonLinkTypeDirective],\n    templateUrl: './babylon-ba-img-txt.component.html',\n    styleUrl: './babylon-ba-img-txt.component.scss',\n})\nexport class BabylonBaImgTxtComponent {\n    @Input() reverse?: boolean = false;\n    @Input() texts?: BabylonTextInfoI;\n    @Input() multimedia?: BabylonMultimediaI;\n    @Input() buttons?: BabylonButtonI[];\n}\n","<!-- Si se añade la clase reverse funcionará como H09 -->\n<section class=\"mdl-fidelizacion\" [ngClass]=\"{ reverse: reverse }\">\n    <div class=\"mdl-container\">\n        @if (texts) {\n            <div class=\"m-content\">\n                @if (texts.subtitle) {\n                    <div class=\"m-subtitle\">{{ texts.subtitle }}</div>\n                }\n                @if (texts.title) {\n                    <h2 class=\"m-title\">{{ texts.title }}</h2>\n                }\n                @if (texts.description) {\n                    <div class=\"m-text\" [innerHTML]=\"texts.description\"></div>\n                }\n                @if (buttons?.length) {\n                    <div class=\"m-buttons\">\n                        @for (btn of buttons; track $index) {\n                            <a\n                                [href]=\"btn.url\"\n                                [linkType]=\"btn.linkType\"\n                                [ngClass]=\"\n                                    $index % 2 != 0\n                                        ? 'm-underline'\n                                        : 'm-button-sm'\n                                \"\n                                >{{ btn.label }}</a\n                            >\n                        }\n                    </div>\n                }\n            </div>\n        }\n        @if (multimedia?.imagenes) {\n            <div\n                class=\"m-img\"\n                [style]=\"\n                    'background-image: url(' +\n                    multimedia?.imagenes?.[0]?.img?.src +\n                    ')'\n                \"\n            >\n                @if (texts?.svg) {\n                    <img\n                        class=\"m-phrase\"\n                        [src]=\"\n                            '/assets/babylon/svg/icons/' + texts?.svg + '.svg'\n                        \"\n                        alt=\"rewardsclub\"\n                    />\n                }\n            </div>\n        }\n        <div class=\"m-subtitle tablet\">Fidelización</div>\n    </div>\n</section>\n","import { isPlatformBrowser } from '@angular/common';\nimport {\n    AfterViewInit,\n    Directive,\n    ElementRef,\n    Input,\n    NgZone,\n    OnDestroy,\n    PLATFORM_ID,\n    inject,\n} from '@angular/core';\n\n@Directive({\n    selector: '[widgetDynamic]',\n    standalone: true,\n})\nexport class WidgetDynamicDirective implements AfterViewInit, OnDestroy {\n    private readonly platformId = inject(PLATFORM_ID);\n    private readonly zone = inject(NgZone);\n\n    /** Selector del nodo a mover (source) */\n    @Input('widgetDynamic') moveSelector!: string;\n\n    /** Reintentos */\n    @Input() moveMaxTries = 200; // 200 * 100ms = 20s\n    @Input() moveIntervalMs = 100;\n\n    private observer?: MutationObserver;\n    private timer?: number;\n\n    constructor(private host: ElementRef<HTMLElement>) {}\n\n    ngAfterViewInit(): void {\n        if (!isPlatformBrowser(this.platformId)) return;\n        if (!this.moveSelector) return;\n\n        this.zone.runOutsideAngular(() => {\n            const target = this.host.nativeElement;\n\n            const tryMove = () => {\n                const node = document.querySelector(\n                    this.moveSelector\n                ) as HTMLElement | null;\n                if (!node) return false;\n\n                // si ya está dentro, ok\n                if (target.contains(node)) return true;\n\n                // evita movidas raras si el selector apunta al mismo host\n                if (node === target) return true;\n\n                target.appendChild(node);\n                return true;\n            };\n\n            // reintentos\n            let tries = 0;\n            this.timer = window.setInterval(() => {\n                tries++;\n                const ok = tryMove();\n                if (ok || tries >= this.moveMaxTries) {\n                    if (this.timer) window.clearInterval(this.timer);\n                    this.timer = undefined;\n                }\n            }, this.moveIntervalMs);\n\n            // observer para reinyecciones\n            this.observer = new MutationObserver(() => tryMove());\n            this.observer.observe(document.body, {\n                childList: true,\n                subtree: true,\n            });\n        });\n    }\n\n    ngOnDestroy(): void {\n        if (this.timer) window.clearInterval(this.timer);\n        this.observer?.disconnect();\n    }\n}\n","import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n    AfterViewInit,\n    Component,\n    ElementRef,\n    EventEmitter,\n    HostListener,\n    inject,\n    Input,\n    Output,\n    PLATFORM_ID,\n} from '@angular/core';\nimport Swiper, { Autoplay, SwiperOptions } from 'swiper';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport { WidgetDynamicDirective } from '../../../directives/widget/widget-dynamic.directive';\nimport {\n    BabylonButtonI,\n    BabylonItemI,\n    BabylonMultimediaI,\n    BabylonTextInfoI,\n} from '../../../interfaces';\nimport { BabylonAdvantageItemI } from '../../../interfaces/babylon-advantages-item.interface';\n\ntype ContactMeta = {\n    cssClass: 'phone' | 'whatsapp' | 'mail' | 'web' | 'unknown';\n    href?: string;\n    target?: '_blank';\n    rel?: string;\n    iconSrc?: string;\n    onClick?: (ev: MouseEvent) => void;\n};\n@Component({\n    selector: 'lib-babylon-ba-sli-img-txt',\n    standalone: true,\n    imports: [WidgetDynamicDirective, BabylonLinkTypeDirective, CommonModule],\n    templateUrl: './babylon-ba-sli-img-txt.component.html',\n    styleUrl: './babylon-ba-sli-img-txt.component.scss',\n})\nexport class BabylonBaSliImgTxtComponent implements AfterViewInit {\n    @Input() texts?: BabylonTextInfoI;\n    @Input() buttons?: BabylonButtonI[];\n    @Input() links?: BabylonButtonI[];\n    @Input() items?: BabylonItemI[];\n    @Input() multimedia?: BabylonMultimediaI;\n    @Input() advantages?: BabylonAdvantageItemI[];\n\n    @Output() openNewsletter = new EventEmitter();\n\n    private readonly platformId = inject(PLATFORM_ID);\n    private swiperInstances: Swiper[] = [];\n    private sloganActivated = false;\n\n    constructor(private el: ElementRef<HTMLElement>) {\n        // Registramos módulo de autoplay\n        Swiper.use([Autoplay]);\n    }\n\n    ngAfterViewInit(): void {\n        if (!isPlatformBrowser(this.platformId)) return;\n\n        this.initHeroSwipers();\n        this.setupScrollButtons();\n\n        // Estado inicial\n        this.checkSlogan();\n        this.updateScrollButtonsVisibility();\n    }\n\n    // ======================\n    //   SWIPER HERO\n    // ======================\n    private initHeroSwipers(): void {\n        const host = this.el.nativeElement;\n        const containers = host.querySelectorAll<HTMLElement>(\n            '.mdl-herohome .swiper-container'\n        );\n\n        const options: SwiperOptions = {\n            slidesPerView: 'auto',\n            spaceBetween: 90,\n            loop: false,\n            speed: 750,\n            freeMode: false,\n            autoplay: {\n                delay: 5000,\n                disableOnInteraction: false,\n            },\n            breakpoints: {\n                1025: {\n                    loop: true,\n                    speed: 20000,\n                    autoplay: {\n                        delay: 0,\n                        disableOnInteraction: true,\n                    },\n                    freeMode: false,\n                    grabCursor: false,\n                    allowTouchMove: false,\n                    centeredSlides: false,\n                    slidesPerGroup: 1,\n                },\n            },\n            on: {\n                init: (swiper) => {\n                    // Para ≥1025, queremos el autoplay continuo\n                    if (window.innerWidth >= 1025) {\n                        swiper?.autoplay?.start();\n                    }\n                },\n            },\n        };\n\n        containers.forEach((container) => {\n            const swiper = new Swiper(container, options);\n            this.swiperInstances.push(swiper);\n        });\n    }\n\n    // ======================\n    //   BOTONES SCROLL\n    // ======================\n    private setupScrollButtons(): void {\n        const host = this.el.nativeElement;\n        const hero = host.querySelector<HTMLElement>('.mdl-herohome');\n        if (!hero) return;\n\n        const buttons = host.querySelectorAll<HTMLButtonElement>('.m-scroll');\n\n        buttons.forEach((btn) => {\n            btn.addEventListener('click', (event) => {\n                event.preventDefault();\n                const heroHeight = hero.offsetHeight;\n\n                window.scrollTo({\n                    top: heroHeight,\n                    behavior: 'smooth',\n                });\n            });\n        });\n    }\n\n    // ======================\n    //   SLOGAN EN VIEWPORT\n    // ======================\n    private checkSlogan(): void {\n        if (this.sloganActivated) return;\n\n        const host = this.el.nativeElement;\n        const slogan = host.querySelector<HTMLElement>('.m-slogan');\n        if (!slogan) return;\n\n        const rect = slogan.getBoundingClientRect();\n        const inViewport = rect.top < window.innerHeight && rect.bottom > 0;\n\n        if (inViewport) {\n            const svg = slogan.querySelector<SVGElement>('svg');\n            if (svg) {\n                svg.style.display = 'block'; // antes estaba \"display:none\"\n            }\n            this.sloganActivated = true;\n        }\n    }\n\n    // ======================\n    //   VISIBILIDAD .m-scroll.hider\n    // ======================\n    private updateScrollButtonsVisibility(): void {\n        const host = this.el.nativeElement;\n        const buttons = host.querySelectorAll<HTMLElement>('.m-scroll.hider');\n\n        const scrollTop =\n            window.pageYOffset ||\n            document.documentElement.scrollTop ||\n            document.body.scrollTop ||\n            0;\n\n        buttons.forEach((btn) => {\n            const section = btn.closest('section') as HTMLElement | null;\n            if (!section) return;\n\n            const sectionBottom = section.offsetTop + section.offsetHeight;\n\n            if (scrollTop >= sectionBottom) {\n                // equivalente a fadeOut (puedes controlar con CSS transition)\n                btn.style.opacity = '0';\n                btn.style.pointerEvents = 'none';\n            } else {\n                // equivalente a fadeIn\n                btn.style.opacity = '1';\n                btn.style.pointerEvents = 'auto';\n            }\n        });\n    }\n\n    // ======================\n    //   SCROLL GLOBAL\n    // ======================\n    @HostListener('window:scroll')\n    onWindowScroll(): void {\n        if (!isPlatformBrowser(this.platformId)) return;\n\n        this.checkSlogan();\n        this.updateScrollButtonsVisibility();\n    }\n\n    openNewletterModal(): void {\n        this.openNewsletter.emit();\n    }\n\n    getContactMeta(item: {\n        url?: string;\n        linkType?: string;\n        icon?: string;\n        label?: string;\n    }): ContactMeta {\n        const raw = (item?.url ?? '').trim();\n        const lower = raw.toLowerCase();\n\n        if (\n            lower.startsWith('mailto:') ||\n            lower.includes('newsletter') ||\n            item?.icon?.toLowerCase().includes('mail') ||\n            item?.linkType?.toLowerCase().includes('modal')\n        ) {\n            return {\n                cssClass: 'mail',\n                iconSrc: '/assets/babylon/svg/icons/mail.svg',\n                onClick: (ev) => {\n                    ev.preventDefault();\n                    this.openNewletterModal();\n                },\n            };\n        }\n\n        if (lower.startsWith('tel:')) {\n            return {\n                cssClass: 'phone',\n                href: raw,\n                iconSrc: '/assets/babylon/svg/icons/phone.svg',\n            };\n        }\n\n        if (\n            lower.startsWith('what:') ||\n            lower.startsWith('whatsapp:') ||\n            lower.includes('wa.me/') ||\n            lower.includes('api.whatsapp.com') ||\n            this.looksLikePhone(raw)\n        ) {\n            return {\n                cssClass: 'whatsapp',\n                href: this.getWhatsappLink(raw),\n                target: '_blank',\n                rel: 'noopener noreferrer',\n                iconSrc: '/assets/babylon/svg/icons/whatsapp.svg',\n            };\n        }\n\n        // 4) WEB / OTROS\n        if (\n            lower.startsWith('http://') ||\n            lower.startsWith('https://') ||\n            lower.startsWith('/')\n        ) {\n            return {\n                cssClass: 'web',\n                href: raw,\n                target: '_blank',\n                rel: 'noopener noreferrer',\n                iconSrc: item?.icon ? undefined : undefined,\n            };\n        }\n\n        return {\n            cssClass: 'unknown',\n            href: raw || '#',\n            target: '_blank',\n            rel: 'noopener noreferrer',\n        };\n    }\n\n    looksLikePhone(value: string): boolean {\n        return /^\\+?[\\d\\s()-]{8,}$/.test(value.trim());\n    }\n\n    getWhatsappLink(raw?: string): string {\n        const url = (raw ?? '').trim();\n        if (!url) return '#';\n\n        const lower = url.toLowerCase();\n\n        if (lower.includes('wa.me/') || lower.includes('api.whatsapp.com'))\n            return url;\n\n        if (lower.startsWith('what:') || lower.startsWith('whatsapp:')) {\n            const after = url.split(':').slice(1).join(':').trim();\n            return this.toWaMe(after);\n        }\n\n        if (lower.startsWith('tel:')) {\n            const phoneLike = url.slice(4).trim();\n            return this.toWaMe(phoneLike);\n        }\n\n        return this.toWaMe(url);\n    }\n\n    private toWaMe(phoneLike: string): string {\n        const phone = (phoneLike ?? '').replace(/[^\\d]/g, '');\n        return phone ? `https://wa.me/${phone}` : '#';\n    }\n    onContactClick(ev: MouseEvent, item: any) {\n        const meta = this.getContactMeta(item);\n        if (!meta.onClick) return;\n        ev.preventDefault();\n        meta.onClick(ev);\n    }\n}\n","<section class=\"mdl-herohome\">\n    @if (multimedia?.imagenes?.length) {\n        <div\n            class=\"mdl-container\"\n            [ngStyle]=\"{\n                'background-image': multimedia?.imagenes?.[0]?.img?.src\n                    ? 'url(' + multimedia?.imagenes?.[0]?.img?.src + ')'\n                    : 'none',\n            }\"\n        >\n            <div class=\"row1\">\n                <div class=\"m-text-container\">\n                    @if (texts?.title) {\n                        <h2 class=\"m-title\">\n                            {{ texts?.title }}\n                        </h2>\n                    }\n                    @if (buttons?.length) {\n                        <a\n                            [href]=\"buttons?.[0]?.url\"\n                            [linkType]=\"buttons?.[0]?.linkType\"\n                            [attr.aria-label]=\"buttons?.[0]?.label\"\n                            class=\"m-button-big underline\"\n                        >\n                            <span>{{ buttons?.[0]?.label }}</span>\n                        </a>\n                    }\n\n                    <button\n                        type=\"button\"\n                        class=\"m-scroll\"\n                        aria-label=\"Scroll down\"\n                    >\n                        <svg\n                            width=\"44\"\n                            height=\"44\"\n                            viewBox=\"0 0 44 44\"\n                            fill=\"none\"\n                            xmlns=\"http://www.w3.org/2000/svg\"\n                        >\n                            <path\n                                d=\"M22 1C10.402 1 1 10.402 1 22C1 33.598 10.402 43 22 43C33.598 43 43 33.598 43 22C43 10.402 33.598 1 22 1Z\"\n                                fill=\"#FF4338\"\n                            />\n                            <path\n                                d=\"M21.2737 25.867L16.2217 20.789C16.04 20.6064 15.9383 20.3591 15.939 20.1016C15.9397 19.844 16.0426 19.5972 16.2252 19.4155C16.4078 19.2339 16.6551 19.1322 16.9127 19.1328C17.1703 19.1335 17.417 19.2364 17.5987 19.419L21.9477 23.819L26.3227 19.422C26.5044 19.2394 26.7512 19.1365 27.0087 19.1358C27.2663 19.1352 27.5136 19.2369 27.6982 19.4185C27.8788 19.6002 27.9818 19.847 27.9824 20.1046C27.9831 20.3621 27.8814 20.6094 27.6997 20.792L22.6497 25.868C22.4671 26.0504 22.2195 26.1527 21.9615 26.1525C21.7035 26.1523 21.456 26.0496 21.2737 25.867Z\"\n                                fill=\"white\"\n                            />\n                        </svg>\n                    </button>\n                </div>\n\n                <div class=\"m-motor-container\">\n                    <div\n                        class=\"m-motor\"\n                        [widgetDynamic]=\"'.widget-container'\"\n                    ></div>\n                </div>\n\n                <button\n                    type=\"button\"\n                    class=\"m-scroll hider\"\n                    aria-label=\"Scroll down\"\n                >\n                    <svg\n                        width=\"44\"\n                        height=\"44\"\n                        viewBox=\"0 0 44 44\"\n                        fill=\"none\"\n                        xmlns=\"http://www.w3.org/2000/svg\"\n                    >\n                        <path\n                            d=\"M22 1C10.402 1 1 10.402 1 22C1 33.598 10.402 43 22 43C33.598 43 43 33.598 43 22C43 10.402 33.598 1 22 1Z\"\n                            stroke=\"white\"\n                            stroke-width=\"1.2\"\n                        />\n                        <path\n                            d=\"M21.2757 25.867L16.2237 20.789C16.042 20.6064 15.9403 20.3591 15.941 20.1016C15.9416 19.844 16.0446 19.5972 16.2272 19.4155C16.4098 19.2339 16.6571 19.1322 16.9146 19.1328C17.1722 19.1335 17.419 19.2364 17.6007 19.419L21.9497 23.819L26.3247 19.422C26.5063 19.2394 26.7531 19.1365 27.0107 19.1358C27.2683 19.1352 27.5156 19.2369 27.6982 19.4185C27.8808 19.6002 27.9837 19.847 27.9844 20.1046C27.985 20.3621 27.8833 20.6094 27.7017 20.792L22.6517 25.868C22.4691 26.0504 22.2215 26.1527 21.9635 26.1525C21.7054 26.1523 21.458 26.0496 21.2757 25.867Z\"\n                            fill=\"white\"\n                        />\n                    </svg>\n                    @if (texts?.scrolltext) {\n                        <div class=\"m-text\">{{ texts?.scrolltext }}</div>\n                    }\n                </button>\n            </div>\n\n            <div class=\"row2\">\n                <div class=\"m-ventajas\">\n                    <div class=\"m-top\">\n                        @if (texts) {\n                            <div class=\"m-header\">\n                                @if (texts.pretitle) {\n                                    <div class=\"m-pretitle\">\n                                        {{ texts.pretitle }}\n                                    </div>\n                                }\n                                @if (texts.subtitle) {\n                                    <div class=\"m-title\">\n                                        {{ texts.subtitle }}\n                                    </div>\n                                }\n                            </div>\n                        }\n\n                        @if (advantages?.length) {\n                            <div class=\"m-slider\">\n                                <div class=\"swiper-container\">\n                                    <div class=\"swiper-wrapper\">\n                                        @for (\n                                            item of advantages;\n                                            track $index\n                                        ) {\n                                            <div class=\"swiper-slide\">\n                                                <div class=\"m-logo\">\n                                                    <!-- <img\n                                                        src=\"/assets/babylon/svg/icons/hearth-white.svg\"\n                                                        alt=\"ventaja1\"\n                                                    /> -->\n                                                    <i\n                                                        class=\"icon--svg\"\n                                                        [ngClass]=\"item.icon\"\n                                                    ></i>\n                                                </div>\n                                                @if (item.title) {\n                                                    <span>{{\n                                                        item.title\n                                                    }}</span>\n                                                }\n                                            </div>\n                                        }\n                                    </div>\n                                </div>\n                            </div>\n                        }\n                    </div>\n\n                    <div class=\"m-more\">\n                        @if (texts?.additional) {\n                            <div class=\"m-pretitle\">\n                                {{ texts?.additional }}\n                            </div>\n                        }\n                        @if (texts?.additional2) {\n                            <div class=\"m-title\">{{ texts?.additional2 }}</div>\n                        }\n\n                        <svg\n                            class=\"arrow-down\"\n                            width=\"15\"\n                            height=\"25\"\n                            viewBox=\"0 0 15 25\"\n                            fill=\"none\"\n                            xmlns=\"http://www.w3.org/2000/svg\"\n                        >\n                            <path\n                                d=\"M14.6928 16.29C14.3478 15.942 13.7478 15.945 13.4078 16.295L8.76676 21.048V0.921C8.76676 0.678 8.67076 0.441 8.50276 0.271C8.32776 0.096 8.09976 0 7.85876 0C7.61776 0 7.38476 0.099 7.21776 0.271C7.04776 0.444 6.95376 0.675 6.95376 0.921V21.046L2.31076 16.293C2.13776 16.117 1.90876 16.022 1.65976 16.022C1.42176 16.022 1.19576 16.117 1.02376 16.289C0.773762 16.545 0.692762 16.947 0.823762 17.292C0.869762 17.404 0.935762 17.506 1.01876 17.593L7.21876 23.929C7.38676 24.101 7.62076 24.2 7.86076 24.2C8.10676 24.2 8.33476 24.104 8.50176 23.93L14.6988 17.592C14.8668 17.42 14.9628 17.183 14.9628 16.941C14.9588 16.691 14.8628 16.459 14.6928 16.29Z\"\n                                fill=\"white\"\n                            />\n                        </svg>\n\n                        <a href=\"#\" class=\"m-btnmore\">\n                            <img\n                                src=\"/assets/babylon/svg/branding/bealegria.png\"\n                                alt=\"bealegria\"\n                            />\n                        </a>\n                    </div>\n                </div>\n            </div>\n        </div>\n    }\n\n    @if (links?.length) {\n        <div class=\"m-contacts\">\n            @for (item of links; track $index) {\n                @if (item && item.label) {\n                    <a\n                        class=\"m-contact\"\n                        [ngClass]=\"getContactMeta(item).cssClass\"\n                        [attr.href]=\"getContactMeta(item).href ?? null\"\n                        [attr.target]=\"getContactMeta(item).target ?? null\"\n                        [attr.rel]=\"getContactMeta(item).rel ?? null\"\n                        role=\"button\"\n                        (click)=\"onContactClick($event, item)\"\n                    >\n                        <span>{{ item.label }}</span>\n\n                        @if (getContactMeta(item).iconSrc) {\n                            <img\n                                [src]=\"getContactMeta(item).iconSrc!\"\n                                [alt]=\"getContactMeta(item).cssClass\"\n                            />\n                        }\n                    </a>\n                }\n            }\n        </div>\n    }\n\n    <div class=\"m-slogan-container\">\n        <!-- Es excatamente igual al otro m-more -->\n        <div class=\"m-more\">\n            @if (texts?.additional) {\n                <div class=\"m-pretitle\">\n                    {{ texts?.additional }}\n                </div>\n            }\n            @if (texts?.additional2) {\n                <div class=\"m-title\">{{ texts?.additional2 }}</div>\n            }\n\n            <svg\n                class=\"arrow-down\"\n                width=\"15\"\n                height=\"25\"\n                viewBox=\"0 0 15 25\"\n                fill=\"none\"\n                xmlns=\"http://www.w3.org/2000/svg\"\n            >\n                <path\n                    d=\"M14.6928 16.29C14.3478 15.942 13.7478 15.945 13.4078 16.295L8.76676 21.048V0.921C8.76676 0.678 8.67076 0.441 8.50276 0.271C8.32776 0.096 8.09976 0 7.85876 0C7.61776 0 7.38476 0.099 7.21776 0.271C7.04776 0.444 6.95376 0.675 6.95376 0.921V21.046L2.31076 16.293C2.13776 16.117 1.90876 16.022 1.65976 16.022C1.42176 16.022 1.19576 16.117 1.02376 16.289C0.773762 16.545 0.692762 16.947 0.823762 17.292C0.869762 17.404 0.935762 17.506 1.01876 17.593L7.21876 23.929C7.38676 24.101 7.62076 24.2 7.86076 24.2C8.10676 24.2 8.33476 24.104 8.50176 23.93L14.6988 17.592C14.8668 17.42 14.9628 17.183 14.9628 16.941C14.9588 16.691 14.8628 16.459 14.6928 16.29Z\"\n                    fill=\"white\"\n                />\n            </svg>\n\n            <a href=\"#\" class=\"m-btnmore\">\n                <img\n                    src=\"/assets/babylon/svg/branding/bealegria.png\"\n                    alt=\"bealegria\"\n                />\n            </a>\n        </div>\n\n        <div class=\"m-slogan\">\n            <svg\n                width=\"640\"\n                height=\"171\"\n                viewBox=\"0 0 640 171\"\n                style=\"display: none\"\n                fill=\"none\"\n                xmlns=\"http://www.w3.org/2000/svg\"\n            >\n                <path\n                    d=\"M634.971 118.506C633.538 118.506 632.321 118.04 631.318 117.109C630.387 116.107 629.922 114.889 629.922 113.457C629.922 112.096 630.387 110.951 631.318 110.02C632.321 109.017 633.538 108.516 634.971 108.516C636.331 108.516 637.477 109.017 638.408 110.02C639.411 110.951 639.912 112.096 639.912 113.457C639.912 114.889 639.411 116.107 638.408 117.109C637.477 118.04 636.331 118.506 634.971 118.506Z\"\n                    fill=\"#FF4338\"\n                    class=\"svg-elem-1\"\n                ></path>\n                <path\n                    d=\"M572.771 88.002C580.434 79.4798 585.984 70.707 589.422 61.6836C592.501 52.4453 594.041 44.7826 594.041 38.6953C594.041 38.0508 593.934 36.0098 593.719 32.5723C593.504 29.0632 592.43 26.2702 590.496 24.1934C589.852 23.4056 589.171 23.0117 588.455 23.0117C585.519 23.0117 582.404 27.8457 579.109 37.5137C574.812 53.6986 572.664 69.1673 572.664 83.9199L572.771 88.002ZM578.895 126.996C578.322 126.996 577.749 126.817 577.176 126.459C575.672 125.743 573.953 123.272 572.02 119.047C568.439 111.456 566.648 100.355 566.648 85.7461C566.648 82.9531 566.827 77.3672 567.186 68.9883C567.472 60.5378 569.477 49.4733 573.201 35.7949C576.925 23.1191 582.01 16.7812 588.455 16.7812C590.962 16.7812 593.182 17.8913 595.115 20.1113C598.553 23.8353 600.271 29.9941 600.271 38.5879C600.271 45.7493 598.589 54.1641 595.223 63.832C591.57 73.2852 585.913 82.3802 578.25 91.1172C575.171 94.6263 573.488 96.4167 573.201 96.4883C573.416 99.9258 573.953 103.721 574.812 107.875C576.102 101.645 578.322 96.6673 581.473 92.9434C585.698 87.9303 589.708 85.4238 593.504 85.4238C594.148 85.4238 594.721 85.4954 595.223 85.6387C599.161 86.5697 601.919 89.5775 603.494 94.6621C604.067 96.5957 604.354 98.6009 604.354 100.678C604.354 104.115 603.566 107.803 601.99 111.742C607.934 108.734 613.055 102.719 617.352 93.6953C617.996 92.6211 618.891 92.084 620.037 92.084C620.538 92.084 621.04 92.1914 621.541 92.4062C622.615 93.0508 623.152 93.946 623.152 95.0918C623.152 95.5931 623.045 96.0944 622.83 96.5957C619.894 102.54 616.349 107.696 612.195 112.064C608.113 116.361 602.885 118.832 596.512 119.477C593.934 121.768 591.427 122.914 588.992 122.914C587.632 122.914 586.414 122.556 585.34 121.84C583.764 120.694 582.977 119.19 582.977 117.328C582.977 115.609 583.8 114.249 585.447 113.246C586.092 112.888 586.915 112.709 587.918 112.709L589.422 112.816C590.997 113.103 592.465 113.282 593.826 113.354C596.762 109.63 598.23 105.44 598.23 100.785C598.23 99.2096 598.016 97.7057 597.586 96.2734C596.583 93.194 595.258 91.6543 593.611 91.6543C591.535 91.6543 589.1 93.373 586.307 96.8105C584.015 99.4603 582.296 103.077 581.15 107.66C580.649 109.594 580.398 111.635 580.398 113.783C580.398 116.719 580.864 119.799 581.795 123.021C581.867 123.308 581.902 123.63 581.902 123.988C581.902 124.848 581.508 125.635 580.721 126.352C580.148 126.781 579.539 126.996 578.895 126.996Z\"\n                    fill=\"#FF4338\"\n                    class=\"svg-elem-2\"\n                ></path>\n                <path\n                    d=\"M518.309 122.914C516.232 122.914 514.406 122.162 512.83 120.658C510.324 118.08 509.07 113.891 509.07 108.09C509.07 102.146 510.395 94.5189 513.045 85.209C513.331 84.4212 513.833 83.8125 514.549 83.3828C514.979 83.168 515.444 83.0605 515.945 83.0605C516.303 83.0605 516.626 83.0964 516.912 83.168C517.7 83.3828 518.309 83.8483 518.738 84.5645C518.953 84.9941 519.061 85.4596 519.061 85.9609C519.061 86.2474 519.025 86.5697 518.953 86.9277C517.306 92.8001 516.268 97.5983 515.838 101.322C515.48 103.972 515.301 106.228 515.301 108.09C515.301 108.878 515.372 109.988 515.516 111.42C515.659 112.781 515.91 113.926 516.268 114.857C516.697 115.717 517.02 116.182 517.234 116.254C517.378 116.469 517.592 116.612 517.879 116.684H518.201C518.488 116.684 518.81 116.648 519.168 116.576C521.46 116.075 524.324 113.318 527.762 108.305C531.271 103.22 534.314 95.5931 536.893 85.4238C537.107 84.5645 537.537 83.9199 538.182 83.4902C538.755 83.1322 539.327 82.9531 539.9 82.9531C540.115 82.9531 540.33 82.9889 540.545 83.0605C541.333 83.2754 541.977 83.7051 542.479 84.3496C542.837 84.8509 543.016 85.4238 543.016 86.0684C543.016 86.2116 542.98 86.3906 542.908 86.6055C542.192 90.6159 541.834 94.0892 541.834 97.0254C541.834 99.6035 542.264 102.253 543.123 104.975C543.982 107.696 545.558 109.343 547.85 109.916C548.423 110.059 549.031 110.131 549.676 110.131C551.967 110.131 554.725 108.913 557.947 106.479C561.242 104.044 564.214 99.8184 566.863 93.8027C567.15 93.015 567.687 92.4779 568.475 92.1914C568.904 91.9766 569.298 91.8691 569.656 91.8691C570.086 91.8691 570.48 91.9766 570.838 92.1914C571.626 92.5495 572.163 93.0866 572.449 93.8027C572.664 94.1608 572.771 94.5547 572.771 94.9844C572.771 95.3424 572.664 95.7363 572.449 96.166C566.577 108.985 558.986 115.717 549.676 116.361C548.458 116.361 547.241 116.182 546.023 115.824C544.878 115.609 543.338 114.714 541.404 113.139C539.471 111.492 537.895 108.734 536.678 104.867C531.951 114.75 526.652 120.658 520.779 122.592C519.92 122.807 519.096 122.914 518.309 122.914Z\"\n                    fill=\"#FF4338\"\n                    class=\"svg-elem-3\"\n                ></path>\n                <path\n                    d=\"M487.912 125.707H487.59C482.863 125.707 479.139 122.198 476.418 115.18C474.556 109.164 473.625 101.609 473.625 92.5137C473.625 75.8275 475.917 59.4277 480.5 43.3145C482.577 35.8665 485.083 30.7461 488.02 27.9531C490.383 25.9479 492.71 24.9453 495.002 24.9453C496.076 24.9453 497.007 25.1602 497.795 25.5898C501.805 27.7383 503.811 32.8945 503.811 41.0586C503.811 50.6549 501.877 60.5736 498.01 70.8145C494.143 81.0553 488.091 89.0046 479.855 94.6621C479.927 102.468 480.751 108.627 482.326 113.139C483.687 117.292 485.513 119.405 487.805 119.477C490.526 119.477 493.462 117.937 496.613 114.857C499.836 111.778 502.736 108.269 505.314 104.33C507.964 100.391 509.826 96.918 510.9 93.9102C511.402 92.4779 512.333 91.7617 513.693 91.7617C514.051 91.7617 514.41 91.8333 514.768 91.9766C516.2 92.4779 516.916 93.4089 516.916 94.7695C516.916 96.8464 514.875 101.072 510.793 107.445C507.785 112.1 504.276 116.254 500.266 119.906C496.255 123.559 492.137 125.492 487.912 125.707ZM479.855 86.9277C485.943 81.485 490.419 74.431 493.283 65.7656C496.219 57.1003 497.688 48.8646 497.688 41.0586C497.688 37.8359 497.365 35.3652 496.721 33.6465C496.148 31.9277 495.539 31.0684 494.895 31.0684C490.096 31.0684 485.692 43.1712 481.682 67.377C480.751 74.252 480.142 80.7689 479.855 86.9277Z\"\n                    fill=\"#FF4338\"\n                    class=\"svg-elem-4\"\n                ></path>\n                <path\n                    d=\"M449.561 119.266C446.768 119.266 444.189 118.657 441.826 117.439C437.386 115.148 434.808 111.245 434.092 105.73C434.02 104.871 433.984 104.012 433.984 103.152C433.984 97.7812 435.488 92.9115 438.496 88.543C441.576 84.1745 445.049 81.3815 448.916 80.1641C449.704 79.8776 450.456 79.7344 451.172 79.7344C451.602 79.7344 452.174 79.8418 452.891 80.0566C453.607 80.1999 454.287 80.4863 454.932 80.916C456.077 81.7754 456.937 82.8496 457.51 84.1387C458.154 85.3561 458.548 86.502 458.691 87.5762C458.906 88.6504 459.014 89.4023 459.014 89.832V90.1543C459.014 90.8704 458.763 91.515 458.262 92.0879C457.76 92.6608 457.08 92.9831 456.221 93.0547H455.898C455.182 93.0547 454.502 92.804 453.857 92.3027C453.285 91.8014 452.962 91.1211 452.891 90.2617C452.819 89.4023 452.64 88.543 452.354 87.6836C452.067 86.8242 451.745 86.2513 451.387 85.9648H451.279C451.136 85.9648 450.957 86.0007 450.742 86.0723C448.307 86.86 445.872 89.0085 443.438 92.5176C441.217 95.597 440.107 99.1777 440.107 103.26C440.107 103.833 440.143 104.406 440.215 104.979C440.645 108.344 442.113 110.672 444.619 111.961C446.195 112.677 447.878 113.035 449.668 113.035C452.246 113.035 455.003 112.283 457.939 110.779C460.804 109.061 463.382 106.84 465.674 104.119C467.965 101.398 469.792 98.9271 471.152 96.707C472.513 94.4154 473.193 93.1979 473.193 93.0547C473.623 92.2669 474.232 91.7656 475.02 91.5508C475.378 91.4076 475.736 91.3359 476.094 91.3359C476.523 91.3359 476.953 91.4434 477.383 91.6582C478.171 92.0879 478.672 92.6966 478.887 93.4844C479.03 93.7708 479.102 94.0931 479.102 94.4512C479.102 94.8809 478.958 95.3464 478.672 95.8477C478.6 96.2057 477.777 97.638 476.201 100.145C474.697 102.651 472.62 105.444 469.971 108.523C467.321 111.603 464.313 114.145 460.947 116.15C457.08 118.227 453.285 119.266 449.561 119.266Z\"\n                    fill=\"#FF4338\"\n                    class=\"svg-elem-5\"\n                ></path>\n                <path\n                    d=\"M360.295 136.559C359.292 136.559 358.182 136.201 356.965 135.484C354.673 134.267 353.527 131.868 353.527 128.287C353.527 121.842 355.712 115.79 360.08 110.133L358.254 106.91C354.673 101.109 352.883 96.526 352.883 93.1602C352.883 91.2266 353.42 89.3288 354.494 87.4668C356.213 85.1035 358.326 83.9219 360.832 83.9219C362.766 83.9219 364.305 84.2441 365.451 84.8887C366.669 85.5332 367.277 86.4642 367.277 87.6816C367.277 88.1113 367.17 88.541 366.955 88.9707C366.311 90.1165 365.415 90.6895 364.27 90.6895C363.768 90.6895 363.267 90.582 362.766 90.3672C362.264 90.1523 361.727 90.0449 361.154 90.0449C360.51 90.0449 359.973 90.3672 359.543 91.0117C359.185 91.5846 359.006 92.3008 359.006 93.1602C359.006 94.0911 359.364 95.416 360.08 97.1348C361.298 99.9993 362.73 102.685 364.377 105.191C368.889 100.608 374.833 96.168 382.209 91.8711C382.71 91.5846 383.212 91.4414 383.713 91.4414C384.93 91.4414 385.826 91.9785 386.398 93.0527C386.685 93.554 386.828 94.0553 386.828 94.5566C386.828 95.6309 386.327 96.526 385.324 97.2422C377.518 101.754 371.538 106.301 367.385 110.885C369.39 114.537 370.393 118.404 370.393 122.486C370.393 127.857 368.924 131.796 365.988 134.303C364.198 135.807 362.3 136.559 360.295 136.559ZM360.188 130.436C360.975 130.436 361.799 129.934 362.658 128.932C363.804 127.643 364.377 125.602 364.377 122.809C364.377 120.732 363.947 118.655 363.088 116.578C360.868 120.374 359.758 124.169 359.758 127.965C359.758 129.326 359.901 130.149 360.188 130.436Z\"\n                    fill=\"#FF4338\"\n                    class=\"svg-elem-6\"\n                ></path>\n                <path\n                    d=\"M285.098 122.805C283.236 122.733 281.732 122.196 280.586 121.193C278.008 118.902 276.719 115.536 276.719 111.096C276.719 110.451 276.862 108.589 277.148 105.51C277.363 102.43 278.903 98.6348 281.768 94.123C285.778 88.3223 290.612 85.4219 296.27 85.4219C298.275 85.4219 300.352 85.7799 302.5 86.4961V84.6699C302.5 78.7975 303.109 72.3164 304.326 65.2266C304.398 64.9401 304.863 62.7201 305.723 58.5664C306.654 54.4128 307.979 49.3997 309.697 43.5273C311.488 37.6549 313.636 32.0332 316.143 26.6621C318.721 21.291 321.621 17.2448 324.844 14.5234C326.921 13.0911 328.711 12.375 330.215 12.375C330.358 12.375 330.859 12.4108 331.719 12.4824C332.65 12.4824 333.438 12.7689 334.082 13.3418C337.09 15.4902 338.63 19.2858 338.701 24.7285V25.5879C338.701 30.6725 338.128 35.793 336.982 40.9492C332.614 60.8581 323.805 80.3372 310.557 99.3867C312.204 105.044 315.391 109.449 320.117 112.6C321.836 113.674 323.698 114.211 325.703 114.211C329.069 114.211 332.829 112.671 336.982 109.592C339.346 107.801 341.709 105.653 344.072 103.146C346.436 100.568 348.405 98.2767 349.98 96.2715C351.556 94.1947 352.415 93.0846 352.559 92.9414C353.06 92.2969 353.704 91.903 354.492 91.7598H355.029C355.674 91.7598 356.283 91.9388 356.855 92.2969C357.5 92.8698 357.894 93.5501 358.037 94.3379V94.875C358.037 95.5195 357.858 96.0924 357.5 96.5938C357.285 96.8802 356.318 98.0977 354.6 100.246C352.881 102.395 350.768 104.829 348.262 107.551C345.755 110.272 343.213 112.6 340.635 114.533C335.12 118.4 330.394 120.334 326.455 120.334C322.445 120.334 319.222 119.475 316.787 117.756C312.204 114.891 308.695 110.738 306.26 105.295C303.825 108.374 301.354 111.346 298.848 114.211C293.333 119.94 288.929 122.805 285.635 122.805H285.098ZM296.484 91.5449C294.264 91.5449 292.367 92.1536 290.791 93.3711C289.215 94.5885 287.926 95.985 286.924 97.5605C284.632 101.285 283.307 105.044 282.949 108.84C282.878 109.556 282.842 110.236 282.842 110.881C282.842 113.531 283.343 115.357 284.346 116.359C284.489 116.503 284.704 116.574 284.99 116.574C285.563 116.574 286.494 116.288 287.783 115.715C289.144 115.07 291.292 113.173 294.229 110.021C297.594 106.298 300.817 102.359 303.896 98.2051C303.538 96.6296 303.252 95.0182 303.037 93.3711C300.602 92.1536 298.418 91.5449 296.484 91.5449ZM330.537 18.498C330.179 18.498 329.535 18.8203 328.604 19.4648C324.593 23.0456 320.941 29.6341 317.646 39.2305C314.352 48.8268 311.953 57.8861 310.449 66.4082C309.232 72.1374 308.623 77.974 308.623 83.918C308.623 86.2096 308.73 88.5371 308.945 90.9004C319.902 73.9277 327.243 56.8835 330.967 39.7676C332.041 33.9668 332.578 29.4551 332.578 26.2324C332.578 25.2298 332.435 23.7617 332.148 21.8281C331.862 19.8229 331.396 18.7129 330.752 18.498H330.537Z\"\n                    fill=\"#FF4338\"\n                    class=\"svg-elem-7\"\n                ></path>\n                <path\n                    d=\"M251.797 127.318C250.221 127.318 249.147 126.566 248.574 125.062C246.927 119.477 245.924 114.213 245.566 109.271C245.423 106.479 245.352 103.471 245.352 100.248L245.459 92.8359C245.531 91.9766 245.853 91.2604 246.426 90.6875C246.999 90.1146 247.751 89.8281 248.682 89.8281C249.541 89.8997 250.257 90.2578 250.83 90.9023C251.403 91.4753 251.689 92.1914 251.689 93.0508L251.582 100.893V104.438C253.516 96.4167 256.989 90.6159 262.002 87.0352C263.936 85.7461 266.227 85.1016 268.877 85.1016C270.739 85.1016 272.816 85.5312 275.107 86.3906C276.396 86.9635 277.041 87.8945 277.041 89.1836C277.041 89.6133 276.969 90.043 276.826 90.4727C276.253 91.6901 275.322 92.2988 274.033 92.2988C273.675 92.2988 273.281 92.2272 272.852 92.084C271.491 91.5111 270.202 91.2246 268.984 91.2246C267.624 91.2246 266.37 91.5827 265.225 92.2988C259.567 96.166 256.022 106.908 254.59 124.525C254.447 126.244 253.516 127.175 251.797 127.318Z\"\n                    fill=\"#FF4338\"\n                    class=\"svg-elem-8\"\n                ></path>\n                <path\n                    d=\"M201.416 90.4746C200.127 90.4746 198.695 90.8327 197.119 91.5488C194.827 92.9095 192.894 95.0579 191.318 97.9941C189.743 100.859 188.704 103.759 188.203 106.695C187.917 108.056 187.773 109.238 187.773 110.24C187.773 111.601 187.988 112.711 188.418 113.57C188.49 113.714 188.597 113.857 188.74 114C188.812 114.143 188.991 114.251 189.277 114.322H189.6C189.814 114.322 190.101 114.286 190.459 114.215C190.889 114.143 191.497 113.893 192.285 113.463C195.436 111.744 198.516 108.844 201.523 104.762C204.603 100.608 207.038 96.7051 208.828 93.0527H208.613C207.969 93.0527 207.36 92.8379 206.787 92.4082C206.715 92.3366 206.429 92.1576 205.928 91.8711C205.498 91.513 204.889 91.1908 204.102 90.9043C203.314 90.6178 202.419 90.4746 201.416 90.4746ZM189.6 120.553C187.523 120.553 185.983 120.051 184.98 119.049C183.906 117.975 183.226 117.079 182.939 116.363C182.152 114.501 181.758 112.389 181.758 110.025C181.758 107.161 182.617 103.222 184.336 98.209C185.983 93.196 189.313 89.1855 194.326 86.1777C196.618 85.0319 198.73 84.4232 200.664 84.3516H201.416C203.063 84.3516 204.567 84.6022 205.928 85.1035C207.36 85.6048 208.506 86.1419 209.365 86.7148C210.225 87.2878 210.69 87.61 210.762 87.6816C210.977 87.8249 211.156 88.0039 211.299 88.2188C211.872 87.6458 212.624 87.3594 213.555 87.3594H214.092C214.88 87.5742 215.488 87.9681 215.918 88.541C216.276 89.1139 216.455 89.7227 216.455 90.3672V90.6895C216.383 91.1191 216.348 91.5846 216.348 92.0859C216.348 93.375 216.491 95.237 216.777 97.6719C217.064 100.035 217.995 102.184 219.57 104.117C220.859 105.478 222.65 106.158 224.941 106.158H225.264C228.271 106.015 230.993 105.299 233.428 104.01C235.863 102.721 237.975 101.253 239.766 99.6055C241.556 97.8867 242.917 96.3828 243.848 95.0938C244.85 93.8047 245.352 93.1243 245.352 93.0527C245.853 92.265 246.497 91.7637 247.285 91.5488H247.822C248.395 91.5488 249.004 91.7279 249.648 92.0859C250.365 92.5156 250.83 93.1243 251.045 93.9121C251.117 94.127 251.152 94.306 251.152 94.4492C251.152 95.0938 250.973 95.7025 250.615 96.2754C250.472 96.6335 249.362 98.0658 247.285 100.572C245.28 103.079 242.415 105.585 238.691 108.092C234.967 110.598 230.527 112.031 225.371 112.389H225.049C220.967 112.389 217.637 111.028 215.059 108.307C213.268 106.23 212.015 103.867 211.299 101.217C209.15 104.869 206.644 108.342 203.779 111.637C200.986 114.931 198.086 117.402 195.078 119.049C192.93 120.051 191.104 120.553 189.6 120.553Z\"\n                    fill=\"#FF4338\"\n                    class=\"svg-elem-9\"\n                ></path>\n                <path\n                    d=\"M157.16 127.533H155.119C151.896 127.533 148.208 125.779 144.055 122.27C139.543 117.257 136.392 112.1 134.602 106.801C133.671 108.806 132.274 111.098 130.412 113.676C127.762 117.328 124.969 119.154 122.033 119.154C120.744 119.154 119.527 118.725 118.381 117.865C116.304 116.791 115.266 113.497 115.266 107.982C115.266 105.977 115.409 103.542 115.695 100.678C116.411 94.2324 117.02 90.1862 117.521 88.5391C118.023 86.8203 119.061 85.9609 120.637 85.9609L121.281 86.0684C122.928 86.498 123.752 87.5007 123.752 89.0762L123.645 89.7207C122.212 97.097 121.496 103.256 121.496 108.197C121.496 110.561 121.711 112.172 122.141 113.031C123.143 112.745 124.432 111.527 126.008 109.379C127.583 107.159 128.872 104.831 129.875 102.396L132.131 96.5957C132.632 95.1634 133.671 94.4473 135.246 94.4473C136.822 94.5905 137.753 95.4499 138.039 97.0254C138.039 97.1686 138.397 98.4219 139.113 100.785C141.047 107.732 144.126 113.425 148.352 117.865C150.715 120.229 153.293 121.41 156.086 121.41C158.02 121.41 159.882 120.837 161.672 119.691C163.104 118.832 164.107 118.008 164.68 117.221C167.616 113.067 169.084 108.448 169.084 103.363C169.084 102.719 168.977 100.749 168.762 97.4551C168.547 94.0892 167.401 89.291 165.324 83.0605L165.217 82.0938C165.217 81.5924 165.36 81.0553 165.646 80.4824C166.219 79.5514 167.079 79.0859 168.225 79.0859C169.729 79.0859 170.731 79.8379 171.232 81.3418C173.882 89.4342 175.207 96.8464 175.207 103.578C175.207 109.88 173.345 115.681 169.621 120.98C168.475 122.484 166.792 123.881 164.572 125.17C162.424 126.459 159.953 127.247 157.16 127.533Z\"\n                    fill=\"#FF4338\"\n                    class=\"svg-elem-10\"\n                ></path>\n                <path\n                    d=\"M90.127 124.635C89.3392 124.635 88.4798 124.599 87.5488 124.527C81.8197 123.668 77.487 121.269 74.5508 117.33C72.1159 113.893 70.8984 109.811 70.8984 105.084C70.8984 103.508 71.0417 101.861 71.3281 100.143C71.7578 97.7793 72.5814 95.5234 73.7988 93.375C73.9421 92.8021 74.2643 92.3008 74.7656 91.8711C78.1315 87.0729 82.2135 84.2799 87.0117 83.4922H87.8711C91.6667 83.4922 94.388 85.39 96.0352 89.1855C96.3932 90.1165 96.5723 91.0833 96.5723 92.0859C96.5723 93.5182 96.1784 94.9505 95.3906 96.3828C94.1016 98.6029 92.2038 100.214 89.6973 101.217C88.0501 101.79 86.5104 102.076 85.0781 102.076C84.362 102.076 83.3236 101.933 81.9629 101.646C80.6738 101.288 79.2773 100.572 77.7734 99.498C77.6302 100.071 77.5228 100.644 77.4512 101.217C77.2363 102.649 77.1289 104.01 77.1289 105.299C77.1289 108.593 77.9167 111.386 79.4922 113.678C81.4258 116.256 84.4336 117.831 88.5156 118.404C89.0169 118.476 89.554 118.512 90.127 118.512C92.8483 118.512 95.6413 117.688 98.5059 116.041C101.37 114.322 103.949 112.245 106.24 109.811C108.604 107.304 110.322 105.227 111.396 103.58C112.256 102.291 113.079 100.895 113.867 99.3906C114.655 97.8867 115.264 96.6335 115.693 95.6309C116.195 94.5566 116.481 93.9837 116.553 93.9121C116.911 93.1243 117.484 92.5514 118.271 92.1934C118.558 92.0501 118.88 91.9785 119.238 91.9785C119.668 91.9785 120.098 92.0859 120.527 92.3008C121.387 92.6589 121.96 93.196 122.246 93.9121C122.389 94.2702 122.461 94.6283 122.461 94.9863C122.461 95.416 122.354 95.8457 122.139 96.2754C122.139 96.4186 121.852 97.099 121.279 98.3164C120.778 99.4622 120.098 100.859 119.238 102.506C118.379 104.081 117.484 105.585 116.553 107.018C116.41 107.304 115.622 108.342 114.189 110.133C112.829 111.852 110.967 113.857 108.604 116.148C106.24 118.368 103.483 120.338 100.332 122.057C97.181 123.704 93.7793 124.563 90.127 124.635ZM80.7812 94.127C81.569 94.7715 82.5 95.2728 83.5742 95.6309C84.0755 95.8457 84.6484 95.9531 85.293 95.9531C86.0091 95.9531 86.7611 95.8099 87.5488 95.5234C88.623 95.0938 89.4466 94.3776 90.0195 93.375C90.2344 92.9453 90.3418 92.5156 90.3418 92.0859C90.3418 91.8711 90.306 91.6562 90.2344 91.4414C89.9479 90.582 89.5898 90.0449 89.1602 89.8301C88.8737 89.6868 88.5156 89.6152 88.0859 89.6152H87.6562C85.3646 89.9733 83.0729 91.4772 80.7812 94.127Z\"\n                    fill=\"#FF4338\"\n                    class=\"svg-elem-11\"\n                ></path>\n                <path\n                    d=\"M4.4043 155.465C3.54492 155.465 2.82878 155.178 2.25586 154.605C1.68294 154.033 1.36068 153.316 1.28906 152.457C0.93099 136.272 0.716146 122.307 0.644531 110.562C0.214844 60.0026 0 25.4844 0 7.00781C0 6.14844 0.286458 5.43229 0.859375 4.85938C1.43229 4.21484 2.14844 3.89258 3.00781 3.89258C3.86719 3.89258 4.58333 4.17904 5.15625 4.75195C5.80078 5.32487 6.12305 6.07682 6.12305 7.00781C6.12305 18.1081 6.19466 27.8835 6.33789 36.334C9.05925 30.3184 12.6758 24.5176 17.1875 18.9316C27.2135 7.11523 37.4544 0.848958 47.9102 0.132812H48.2324C54.0332 0.132812 58.903 2.35286 62.8418 6.79297C66.7806 11.1615 69.2871 17.7858 70.3613 26.666C70.7194 29.1725 70.8984 31.679 70.8984 34.1855C70.8984 45.1426 67.5684 57.5319 60.9082 71.3535C54.248 85.1751 41.8587 97.9225 23.7402 109.596C19.1569 112.389 15.3255 114.465 12.2461 115.826L68.5352 137.848C69.8958 138.421 70.5762 139.352 70.5762 140.641C70.5762 140.999 70.4688 141.393 70.2539 141.822C69.681 143.111 68.75 143.756 67.4609 143.756C67.0312 143.756 46.8359 135.95 6.875 120.338C6.875 125.852 7.08984 136.523 7.51953 152.35C7.3763 154.283 6.33789 155.322 4.4043 155.465ZM6.76758 111.422C8.8444 110.992 13.4277 108.629 20.5176 104.332C37.4902 93.375 49.4141 80.8066 56.2891 66.627C61.9466 55.0254 64.7754 44.14 64.7754 33.9707C64.7754 31.7507 64.6322 29.5664 64.3457 27.418C62.985 13.5247 57.5781 6.50651 48.125 6.36328C39.5312 7.00781 30.7943 12.4863 21.9141 22.7988C12.819 34.0423 7.66276 46.181 6.44531 59.2148V62.8672C6.51693 77.8346 6.62435 91.8711 6.76758 104.977V111.422Z\"\n                    fill=\"#FF4338\"\n                    class=\"svg-elem-12\"\n                ></path>\n                <path\n                    d=\"M497.797 143.467C497.978 142.264 498.753 141.44 500.122 140.995C521.483 135.09 542.739 133.728 563.892 136.907C567.642 137.471 571.37 138.176 575.077 139.022C597.619 144.508 616.249 153.168 630.964 165.002C631.87 165.717 632.232 166.675 632.051 167.878C631.977 168.373 631.796 168.852 631.51 169.316C630.643 170.271 629.679 170.668 628.617 170.509C628.122 170.434 627.648 170.218 627.195 169.861C622.771 166.085 614.884 161.283 603.534 155.453C591.71 149.408 577.097 145.077 559.693 142.461C542.644 139.899 523.324 141.372 501.733 146.88C501.277 147.028 500.836 147.071 500.412 147.007C499.138 146.816 498.309 146.076 497.924 144.788C497.775 144.332 497.733 143.891 497.797 143.467Z\"\n                    fill=\"#FF4338\"\n                    class=\"svg-elem-13\"\n                ></path>\n            </svg>\n        </div>\n    </div>\n</section>\n","import { Directive, ElementRef, Renderer2, HostListener } from '@angular/core';\n\n@Directive({\n    selector: '[BabylonCustomMousePointer]',\n    standalone: true,\n})\nexport class BabylonCustomMousePointerDirective {\n    constructor(\n        private el: ElementRef,\n        private renderer: Renderer2\n    ) {}\n\n    @HostListener('mousemove', ['$event'])\n    onMouseMove(event: MouseEvent): void {\n        const mousePoint =\n            this.el.nativeElement.querySelector('.cs_mouse_point');\n\n        if (mousePoint) {\n            const mouseX =\n                event.pageX -\n                this.el.nativeElement.getBoundingClientRect().left;\n            const mouseY =\n                event.clientY -\n                this.el.nativeElement.getBoundingClientRect().top;\n\n            if (mousePoint) {\n                this.renderer.setStyle(mousePoint, 'top', `${mouseY}px`);\n                this.renderer.setStyle(mousePoint, 'left', `${mouseX}px`);\n            }\n        }\n    }\n\n    @HostListener('mouseenter')\n    onMouseEnter(): void {\n        const mousePoint =\n            this.el.nativeElement.querySelector('.cs_mouse_point');\n        if (mousePoint) {\n            this.renderer.setStyle(mousePoint, 'visibility', 'visible');\n        }\n    }\n\n    @HostListener('mouseleave')\n    onMouseLeave(): void {\n        const mousePoint =\n            this.el.nativeElement.querySelector('.cs_mouse_point');\n        if (mousePoint) {\n            this.renderer.setStyle(mousePoint, 'visibility', 'hidden');\n        }\n    }\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport {\n    AfterViewInit,\n    Directive,\n    ElementRef,\n    inject,\n    OnDestroy,\n    PLATFORM_ID,\n} from '@angular/core';\nimport { forkJoin, switchMap, tap } from 'rxjs';\nimport { Utils } from '../../utils';\n\n@Directive({\n    selector: '[BabylonLightGallery]',\n    standalone: true,\n})\nexport class BabylonLightGalleryDirective implements AfterViewInit, OnDestroy {\n    private galleryInstance: any;\n    private observer!: MutationObserver;\n    private readonly platformId = inject(PLATFORM_ID);\n\n    constructor(private el: ElementRef) {}\n\n    ngAfterViewInit() {\n        if (isPlatformBrowser(this.platformId)) {\n            const isJQueryLoaded =\n                typeof jQuery !== 'undefined' && typeof $ === 'function';\n            const isLightGalleryLoaded =\n                isJQueryLoaded &&\n                typeof ($ as any).fn.lightGallery === 'function';\n\n            if (isLightGalleryLoaded) {\n                this.executeInitLightGallery();\n            } else {\n                this.loadDependenciesAndInitialize();\n            }\n        }\n    }\n\n    ngOnDestroy() {\n        if (isPlatformBrowser(this.platformId)) {\n            this.destroyGallery();\n            this.observer?.disconnect();\n        }\n    }\n\n    private loadDependenciesAndInitialize(): void {\n        if (isPlatformBrowser(this.platformId)) {\n            Utils.loadScript$('assets/babylon/js/jquery.min.js')\n                .pipe(\n                    switchMap(() =>\n                        forkJoin([\n                            Utils.loadScript$(\n                                'assets/babylon/lightgallery/js/lightgallery.min.js'\n                            ),\n                            Utils.loadStyle$(\n                                'assets/babylon/lightgallery/css/lightgallery.min.css'\n                            ),\n                        ]).pipe(\n                            tap(() => {\n                                this.executeInitLightGallery();\n                            })\n                        )\n                    )\n                )\n                .subscribe();\n        }\n    }\n\n    private executeInitLightGallery(): void {\n        if (isPlatformBrowser(this.platformId)) {\n            setTimeout(() => {\n                try {\n                    this.initLightGallery();\n                    if (!this.observer) {\n                        // Cuando el DOM cambie (Angular repinta al filtrar) refrescamos el plugin\n                        this.observer = new MutationObserver(() =>\n                            this.refresh()\n                        );\n                        this.observer.observe(this.el.nativeElement, {\n                            childList: true,\n                            subtree: true,\n                        });\n                    }\n                } catch (error) {\n                    this.executeInitLightGallery();\n                }\n            }, 70);\n        }\n    }\n\n    private initLightGallery() {\n        if (isPlatformBrowser(this.platformId)) {\n            if (typeof $ === 'undefined') return;\n            this.galleryInstance = ($(this.el.nativeElement) as any)\n                .lightGallery({\n                    selector: '.cs_lightbox_item',\n                    thumbnail: true,\n                    mousewheel: true,\n                    share: false,\n                    fullScreen: false,\n                    autoplay: false,\n                    actualSize: false,\n                    autoplayControls: false,\n                    download: false,\n                })\n                .data('lightGallery');\n        }\n    }\n\n    private refresh() {\n        if (isPlatformBrowser(this.platformId)) {\n            // evita bucles infinitos: solo si hay elementos y el plugin está vivo\n            if (\n                this.galleryInstance &&\n                $(this.el.nativeElement).find('.cs_lightbox_item').length\n            ) {\n                this.destroyGallery();\n                this.initLightGallery();\n            }\n        }\n    }\n\n    private destroyGallery() {\n        if (isPlatformBrowser(this.platformId)) {\n            this.galleryInstance?.destroy(true);\n            this.galleryInstance = null;\n        }\n    }\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport {\n    AfterViewInit,\n    Directive,\n    ElementRef,\n    inject,\n    PLATFORM_ID,\n    Renderer2,\n} from '@angular/core';\n\n@Directive({\n    selector: '[BabylonCustomSlider]',\n    standalone: true,\n})\nexport class BabylonCustomSliderDirective implements AfterViewInit {\n    private readonly platformId = inject(PLATFORM_ID);\n\n    constructor(\n        private el: ElementRef,\n        private renderer: Renderer2\n    ) {}\n\n    ngAfterViewInit(): void {\n        if (isPlatformBrowser(this.platformId)) {\n            this.initSlider();\n        }\n    }\n\n    private initSlider() {\n        const slider = this.el.nativeElement;\n        const arrows = slider.querySelectorAll(\n            '.cs_custom_slide_arrow_right, .cs_custom_slide_arrow_left'\n        );\n        arrows.forEach((arrow: any) => {\n            arrow.addEventListener('click', (event: any) => {\n                const direction = arrow?.classList.contains(\n                    'cs_custom_slide_arrow_left'\n                )\n                    ? 'prev'\n                    : 'next';\n                this.updateSlides(direction);\n            });\n        });\n        this.updateSlides('next');\n    }\n\n    private updateSlides(direction: string) {\n        const activeSlide = this.el.nativeElement.querySelector(\n            '.cs_custom_slide.active'\n        );\n        const slides =\n            this.el.nativeElement.querySelectorAll('.cs_custom_slide');\n        const totalSlides = slides.length;\n        const activeIndex = Array.from(slides).indexOf(activeSlide);\n        let nextIndex;\n\n        if (direction === 'next') {\n            nextIndex = activeIndex === totalSlides - 1 ? 0 : activeIndex + 1;\n        } else {\n            nextIndex = activeIndex === 0 ? totalSlides - 1 : activeIndex - 1;\n        }\n\n        const nextSlide = slides?.[nextIndex];\n        slides?.forEach((slide: any) =>\n            slide?.classList.remove(\n                'prev-1',\n                'next-1',\n                'prev-2',\n                'next-2',\n                'active'\n            )\n        );\n        nextSlide?.classList.add('active');\n\n        const prev1Index = nextIndex === 0 ? totalSlides - 1 : nextIndex - 1;\n        const prev2Index = prev1Index === 0 ? totalSlides - 1 : prev1Index - 1;\n        const next1Index = nextIndex === totalSlides - 1 ? 0 : nextIndex + 1;\n        const next2Index = next1Index === totalSlides - 1 ? 0 : next1Index + 1;\n\n        slides?.[prev1Index]?.classList.add('prev-1');\n        slides?.[prev2Index]?.classList.add('prev-2');\n        slides?.[next1Index]?.classList.add('next-1');\n        slides?.[next2Index]?.classList.add('next-2');\n    }\n}\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { BabylonCustomMousePointerDirective } from '../../../directives/babylon-customs/babylon-custom-mouse-pointer.directive';\nimport { BabylonLightGalleryDirective } from '../../../directives/babylon-galleries/babylon-light-gallery.directive';\nimport { BabylonCustomSliderDirective } from '../../../directives/babylon-sliders/babylon-custom-slider.directive';\nimport { BabylonTagsI } from '../../../interfaces';\nimport { BabylonButtonI } from '../../../interfaces/babylon-button.interface';\nimport { BabylonImageI } from '../../../interfaces/babylon-image.interface';\nimport { BabylonDynamicHeadingComponent } from '../../shared';\n\n@Component({\n    selector: 'lib-babylon-banner-gallery',\n    standalone: true,\n    imports: [\n        CommonModule,\n        BabylonCustomSliderDirective,\n        BabylonCustomMousePointerDirective,\n        BabylonLightGalleryDirective,\n        BabylonDynamicHeadingComponent,\n    ],\n    templateUrl: './babylon-banner-gallery.component.html',\n    styleUrl: './babylon-banner-gallery.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonBannerGalleryComponent {\n    @Input() pretitle?: string;\n    @Input() title?: string;\n    @Input() hover?: string;\n    @Input() button?: BabylonButtonI[];\n    @Input() images?: BabylonImageI[];\n    @Input() tags?: BabylonTagsI;\n\n    btnClick(e: Event): void {\n        e.preventDefault();\n    }\n}\n","<!-- <section class=\"cs_primary_bg\"> -->\n<section class=\"babylon__banner-gallery margin-main bg--dark1\">\n    <div class=\"container\">\n        <div class=\"intro_info align--center intro_info--light1 no-align\">\n            @if (pretitle) {\n                <lib-babylon-dynamic-heading\n                    [tag]=\"tags?.pretitle || 'h3'\"\n                    cssClass=\"pretitle\"\n                    [content]=\"pretitle\"\n                ></lib-babylon-dynamic-heading>\n            }\n            @if (title) {\n                <lib-babylon-dynamic-heading\n                    [tag]=\"tags?.title || 'h2'\"\n                    cssClass=\"title wow fadeInUp\"\n                    [content]=\"title\"\n                    data-wow-duration=\"0.8s\"\n                    data-wow-delay=\"0.2s\"\n                ></lib-babylon-dynamic-heading>\n            }\n        </div>\n    </div>\n    <div class=\"cs_custom_slide_container\" BabylonCustomSlider>\n        <div class=\"container\">\n            <div\n                class=\"cs_custom_slide_wrapper cs_lightgallery\"\n                BabylonLightGallery\n            >\n                @if (images) {\n                    @for (image of images; track $index) {\n                        <div class=\"cs_custom_slide\">\n                            <a\n                                role=\"button\"\n                                [attr.aria-label]=\"\n                                    image?.src ||\n                                    'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                \"\n                                [href]=\"\n                                    image?.src ||\n                                    'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                \"\n                                BabylonCustomMousePointer\n                                class=\"cs_custom_slide_item cs_bg_filed cs_lightbox_item cs_custom_pointer_wrap cs--radius\"\n                                [style.background-image]=\"\n                                    'url(' +\n                                    (image?.src ||\n                                        'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7') +\n                                    ')'\n                                \"\n                            >\n                                @if (image?.title) {\n                                    <span class=\"cs_slide_badge\">\n                                        {{ image?.title }}\n                                    </span>\n                                }\n                                @if (hover) {\n                                    <span class=\"cs_mouse_point cs_style_1\">{{\n                                        hover\n                                    }}</span>\n                                }\n                                <img\n                                    [src]=\"\n                                        image?.src ||\n                                        'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                    \"\n                                    [alt]=\"\n                                        image?.alt ?? image?.title ?? 'title'\n                                    \"\n                                    class=\"d-none\"\n                                    loading=\"lazy\"\n                                />\n                            </a>\n                        </div>\n                    }\n                }\n            </div>\n        </div>\n        <div class=\"cs_custom_slide_arrows\">\n            <span class=\"cs_custom_slide_arrow_left\">\n                <span class=\"babylon-arrow-left-big\"></span>\n            </span>\n            <span class=\"cs_custom_slide_arrow_right\">\n                <span class=\"babylon-arrow-right-big\"></span>\n            </span>\n        </div>\n    </div>\n\n    @if (button) {\n        @if (button[0] && button[0].label) {\n            <div class=\"btns__box align--center\">\n                <a\n                    role=\"button\"\n                    [attr.aria-label]=\"button[0].label\"\n                    [href]=\"button[0].url\"\n                    class=\"btn btn_primary\"\n                >\n                    <b>{{ button[0].label }}</b>\n                    <span class=\"babylon-arrow-right-big\"></span>\n                </a>\n            </div>\n        }\n    }\n</section>\n","import { isPlatformBrowser } from '@angular/common';\nimport {\n    Directive,\n    ElementRef,\n    inject,\n    Input,\n    OnChanges,\n    PLATFORM_ID,\n    Renderer2,\n    SimpleChanges,\n} from '@angular/core';\n\n@Directive({\n    selector: '[dataBackground]',\n    standalone: true,\n})\nexport class BabylonDataBackgroundDirective implements OnChanges {\n    @Input() dataBackground?: string;\n    private readonly platform = inject(PLATFORM_ID);\n\n    constructor(\n        private readonly el: ElementRef,\n        private readonly renderer: Renderer2\n    ) {}\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if (!isPlatformBrowser(this.platform)) {\n            return;\n        }\n\n        const element = this.el.nativeElement;\n\n        const observer = new IntersectionObserver((entries, observer) => {\n            entries.forEach((entry) => {\n                if (entry.isIntersecting) {\n                    this.renderer.setStyle(\n                        element,\n                        'background-image',\n                        this.dataBackground\n                    );\n                    observer.unobserve(element);\n                }\n            });\n        });\n\n        observer.observe(element);\n    }\n}\n","import { InjectionToken } from '@angular/core';\nimport { ScreenSizerParams } from './screen-sizer.interface';\n\nexport const SCREEN_SIZER_PARAMS_TOKEN = new InjectionToken<ScreenSizerParams>(\n    'ScreenSizerParams'\n);\n","import { isPlatformBrowser } from '@angular/common';\nimport { Injectable, PLATFORM_ID, inject, signal } from '@angular/core';\nimport {\n    debounceTime,\n    distinctUntilChanged,\n    fromEvent,\n    map,\n    startWith,\n} from 'rxjs';\nimport { SCREEN_SIZER_PARAMS_TOKEN } from './screen-sizer.service.token';\n\n@Injectable({\n    providedIn: 'root',\n})\nexport class ScreenSizerService {\n    readonly mobile = signal(false);\n    readonly smallTablet = signal(false);\n    readonly mediumTablet = signal(false);\n    readonly fullTablet = signal(false);\n    readonly smallDesktop = signal(false);\n    readonly mediumDesktop = signal(false);\n    readonly fullDesktop = signal(false);\n    readonly fullBigDesktop = signal(false);\n    readonly maxDesktop = signal(false);\n\n    readonly minSmallTablet = signal(false);\n    readonly minMediumTablet = signal(false);\n    readonly minFullTablet = signal(false);\n    readonly minSmallDesktop = signal(false);\n    readonly minMediumDesktop = signal(false);\n    readonly minFullDesktop = signal(false);\n    readonly minFullBigDesktop = signal(false);\n\n    readonly maxSmallTablet = signal(false);\n    readonly maxMediumTablet = signal(false);\n    readonly maxFullTablet = signal(false);\n    readonly maxSmallDesktop = signal(false);\n    readonly maxMediumDesktop = signal(false);\n    readonly maxFullDesktop = signal(false);\n    readonly maxFullBigDesktop = signal(false);\n\n    private platformId = inject(PLATFORM_ID);\n\n    get width(): number {\n        if (isPlatformBrowser(this.platformId)) {\n            if (window.innerWidth > window.outerWidth) {\n                return window.outerWidth;\n            }\n            return window.innerWidth;\n        } else return 0;\n    }\n\n    private readonly screenSizerParams = inject(SCREEN_SIZER_PARAMS_TOKEN)\n        .pixelBreakpoints;\n\n    constructor() {\n        if (isPlatformBrowser(this.platformId)) {\n            fromEvent(window, 'resize')\n                .pipe(\n                    debounceTime(200),\n                    map(() => this.width),\n                    distinctUntilChanged(),\n                    startWith(this.width)\n                )\n                .subscribe((size) => {\n                    if (size) {\n                        this.mobile.set(size < this.screenSizerParams.mobile);\n\n                        this.smallTablet.set(\n                            size >= this.screenSizerParams.mobile &&\n                                size < this.screenSizerParams.smallTablet\n                        );\n\n                        this.mediumTablet.set(\n                            size >= this.screenSizerParams.smallTablet &&\n                                size < this.screenSizerParams.mediumTablet\n                        );\n\n                        this.fullTablet.set(\n                            size >= this.screenSizerParams.mediumTablet &&\n                                size < this.screenSizerParams.fullTablet\n                        );\n\n                        this.smallDesktop.set(\n                            size >= this.screenSizerParams.fullTablet &&\n                                size < this.screenSizerParams.smallDesktop\n                        );\n\n                        this.mediumDesktop.set(\n                            size >= this.screenSizerParams.smallDesktop &&\n                                size < this.screenSizerParams.mediumDesktop\n                        );\n\n                        this.fullDesktop.set(\n                            size >= this.screenSizerParams.mediumDesktop &&\n                                size < this.screenSizerParams.fullDesktop\n                        );\n\n                        this.fullBigDesktop.set(\n                            size >= this.screenSizerParams.fullDesktop &&\n                                size < this.screenSizerParams.fullBigDesktop\n                        );\n\n                        this.maxDesktop.set(\n                            size >= this.screenSizerParams.fullBigDesktop\n                        );\n\n                        this.minSmallTablet.set(\n                            size >= this.screenSizerParams.smallTablet\n                        );\n\n                        this.minMediumTablet.set(\n                            size >= this.screenSizerParams.mediumTablet\n                        );\n\n                        this.minFullTablet.set(\n                            size >= this.screenSizerParams.fullTablet\n                        );\n\n                        this.minSmallDesktop.set(\n                            size >= this.screenSizerParams.smallDesktop\n                        );\n\n                        this.minMediumDesktop.set(\n                            size >= this.screenSizerParams.mediumDesktop\n                        );\n\n                        this.minFullDesktop.set(\n                            size >= this.screenSizerParams.fullDesktop\n                        );\n\n                        this.minFullBigDesktop.set(\n                            size >= this.screenSizerParams.fullBigDesktop\n                        );\n                        this.maxSmallTablet.set(\n                            size < this.screenSizerParams.smallTablet\n                        );\n\n                        this.maxMediumTablet.set(\n                            size < this.screenSizerParams.mediumTablet\n                        );\n\n                        this.maxFullTablet.set(\n                            size < this.screenSizerParams.fullTablet\n                        );\n\n                        this.maxSmallDesktop.set(\n                            size < this.screenSizerParams.smallDesktop\n                        );\n\n                        this.maxMediumDesktop.set(\n                            size < this.screenSizerParams.mediumDesktop\n                        );\n\n                        this.maxFullDesktop.set(\n                            size < this.screenSizerParams.fullDesktop\n                        );\n\n                        this.maxFullBigDesktop.set(\n                            size < this.screenSizerParams.fullBigDesktop\n                        );\n                    }\n                });\n        }\n    }\n\n    getBreakpoint(breakpoint: keyof typeof this.screenSizerParams): number {\n        return this.screenSizerParams[breakpoint];\n    }\n\n    isMobileInstant(): boolean {\n        return this.mobile();\n    }\n\n    isSmallTabletInstant(): boolean {\n        return this.smallTablet();\n    }\n\n    isMediumTabletInstant(): boolean {\n        return this.mediumTablet();\n    }\n\n    isFullTabletInstant(): boolean {\n        return this.fullTablet();\n    }\n\n    isSmallDesktopInstant(): boolean {\n        return this.smallDesktop();\n    }\n\n    isMediumDesktopInstant(): boolean {\n        return this.mediumDesktop();\n    }\n\n    isFullDesktopInstant(): boolean {\n        return this.fullDesktop();\n    }\n\n    isFullBigDesktopInstant(): boolean {\n        return this.fullBigDesktop();\n    }\n\n    isMaxDesktopInstant(): boolean {\n        return this.maxDesktop();\n    }\n\n    minSmallTabletInstant(): boolean {\n        return this.minSmallTablet();\n    }\n\n    minMediumTabletInstant(): boolean {\n        return this.minMediumTablet();\n    }\n\n    minFullTabletInstant(): boolean {\n        return this.minFullTablet();\n    }\n\n    minSmallDesktopInstant(): boolean {\n        return this.minSmallDesktop();\n    }\n\n    minMediumDesktopInstant(): boolean {\n        return this.minMediumDesktop();\n    }\n\n    minFullDesktopInstant(): boolean {\n        return this.minFullDesktop();\n    }\n\n    minFullBigDesktopInstant(): boolean {\n        return this.minFullBigDesktop();\n    }\n}\n","export enum RoomServiceType {\n    Equipment = 'equipment',\n    Service = 'service',\n    characteristics = 'characteristics',\n    List = 'list',\n}\n","export enum ViewsType {\n    View_1 = 'vista1',\n    LEFT = 'left',\n    RIGHT = 'right',\n\n    VIEW1 = 'vista 1',\n    VIEW2 = 'vista 2',\n    VIEW3 = 'vista 3',\n}\n","type CleanOptions = {\n    removeNull?: boolean;\n    removeEmptyString?: boolean;\n    pruneEmpty?: boolean;\n};\n\nexport function cleanDeep<T>(\n    value: T,\n    options: CleanOptions = {}\n): T | undefined {\n    const opts = {\n        removeNull: false,\n        removeEmptyString: false,\n        pruneEmpty: true,\n        ...options,\n    };\n\n    const deep = (v: any): any => {\n        if (v === undefined) return undefined;\n        if (opts.removeNull && v === null) return undefined;\n        if (opts.removeEmptyString && typeof v === 'string' && v.trim() === '')\n            return undefined;\n\n        if (Array.isArray(v)) {\n            const arr = v.map(deep).filter((x) => x !== undefined);\n            return opts.pruneEmpty && arr.length === 0 ? undefined : arr;\n        }\n\n        if (v && typeof v === 'object') {\n            const isPlain =\n                Object.prototype.toString.call(v) === '[object Object]';\n            if (!isPlain) return v;\n\n            const out: any = {};\n            for (const [k, val] of Object.entries(v)) {\n                const c = deep(val);\n                if (c !== undefined) out[k] = c;\n            }\n            return opts.pruneEmpty && Object.keys(out).length === 0\n                ? undefined\n                : out;\n        }\n\n        return v;\n    };\n\n    return deep(value);\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport {\n    computed,\n    inject,\n    Injectable,\n    PLATFORM_ID,\n    Signal,\n    signal,\n} from '@angular/core';\nimport { Validators } from '@angular/forms';\nimport {\n    Babylon404I,\n    BabylonActionBannerI,\n    BabylonAddressItem,\n    BabylonAdvantagesI,\n    BabylonBannerGalleryI,\n    BabylonBannerInfoI,\n    BabylonBannerNewsletterI,\n    BabylonBlogDetailsI,\n    BabylonBlogListI,\n    BabylonBreadcrumbI,\n    BabylonComingSoonI,\n    BabylonContactAddressI,\n    BabylonContactFormI,\n    BabylonContactHowI,\n    BabylonContactMapaI,\n    BabylonContactMapItem,\n    BabylonEngineI,\n    BabylonEngineModalI,\n    BabylonEquipmentItem,\n    BabylonExternalScriptI,\n    BabylonFaqI,\n    BabylonFeaturesSliderI,\n    BabylonFeaturesSliderItem,\n    BabylonFooterContactI,\n    BabylonFooterLinksI,\n    BabylonFooterLogosI,\n    BabylonFooterSocialI,\n    BabylonGalleryFilter,\n    BabylonGalleryI,\n    BabylonGalleryItem,\n    BabylonGrC2ImgI,\n    BabylonHeaderBookShowI,\n    BabylonHeaderClearI,\n    BabylonHeaderMenuCenterI,\n    BabylonHeaderMenuLogoCenterI,\n    BabylonHeaderMenuShowI,\n    BabylonHeadIntroI,\n    BabylonHotelsListI,\n    BabylonHotelsSliderI,\n    BabylonInfo2ColImgI,\n    BabylonInfo2imgBigI,\n    BabylonInfo2imgI,\n    BabylonInfo4imgI,\n    BabylonInfoBigI,\n    BabylonInfoGridI,\n    BabylonInfoGridItemI,\n    BabylonInfoImgI,\n    BabylonInfoImgSliderI,\n    BabylonInfoImgSliderItemI,\n    BabylonInfoIntroI,\n    BabylonInfoZigZagCounterI,\n    BabylonInfoZigzagV2I,\n    BabylonInfoZigzagV2Item,\n    BabylonItemsGridI,\n    BabylonLanguageModalI,\n    BabylonLegalI,\n    BabylonLisC4TxtIcoI,\n    BabylonModalMultipleMotorsI,\n    BabylonNewsletterI,\n    BabylonOfferDetailI,\n    BabylonOfferI,\n    BabylonOfferPopupI,\n    BabylonOfferPopupV2I,\n    BabylonOfferSliderI,\n    BabylonOffersListI,\n    BabylonOffersListItem,\n    BabylonPressListI,\n    BabylonRoomInfoI,\n    BabylonRoomsColsI,\n    BabylonRoomsGridI,\n    BabylonRoomsListEquipment,\n    BabylonRoomsListI,\n    BabylonRoomsListItem,\n    BabylonRoomsSliderI,\n    BabylonServicesSliderI,\n    BabylonSlider2ColItemI,\n    BabylonSlider2itemsI,\n    BabylonSlider3ItemsI,\n    BabylonSlider4colLabels,\n    BabylonSliderItem,\n    BabylonStaticFooterI,\n    BabylonSubmenuI,\n    BabylonThanksI,\n    BabylonTopSliderI,\n    BabylonTopSliderItem,\n    BabylonTopSliderThumbsI,\n    BabylonTopSliderV2I,\n    BabylonTopSliderVideoI,\n    BabylonWebmapI,\n    DropdownOption,\n} from '../../components/core';\nimport { BabylonGlobalModalI } from '../../components/core/babylon-global-modal';\nimport { BabylonItemGridI } from '../../components/core/babylon-list-grid/babylon-list-grid.component';\nimport { BabylonListGridI } from '../../components/core/babylon-list-grid/babylon-list-grid.interface';\nimport { BabylonModalPopupI } from '../../components/core/babylon-modal-popup';\nimport { BabylonStaticFooterV2I } from '../../components/core/babylon-static-footer-v2/babylon-static-footer-v2.interface';\nimport { RoomServiceType } from '../../Enum/services.enum';\nimport { ViewsType } from '../../Enum/views.enum';\nimport {\n    BabylonButtonI,\n    BabylonContactInfoI,\n    BabylonDropdownI,\n    BabylonFloatingButtonsI,\n    BabylonGlobalIconI,\n    BabylonImageI,\n    BabylonInputI,\n    BabylonMenuButtonI,\n    BabylonMenuInfoI,\n    BabylonOfferItemI,\n    BabylonRoomDetailI,\n    BabylonTextInfoI,\n    BodyComponent,\n    COMPONENTS_EXTRA,\n    ConsultTypeI,\n} from '../../interfaces';\nimport { BabylonAdvantageItemI } from '../../interfaces/babylon-advantages-item.interface';\nimport { BabylonDestinationI } from '../../interfaces/babylon-destination.interface';\nimport { BabylonEventItemI } from '../../interfaces/babylon-event-item.interface';\nimport { BabylonGlobalExperience } from '../../interfaces/babylon-global-experience.interface';\nimport { BabylonGlobal } from '../../interfaces/babylon-global.interface';\nimport { BabylonGlobalsFaqGroup } from '../../interfaces/babylon-globals-faqs-group.interface';\nimport { BabylonGloablsGalleryFilter } from '../../interfaces/babylon-globals-gallery-filters';\nimport { BabylonHotelGlobalItem } from '../../interfaces/babylon-hotel.interface';\nimport { BabylonItemI } from '../../interfaces/babylon-item.interface';\nimport { cleanDeep } from '../../utils/clean-props';\nimport { Utils } from '../../utils/utils';\nimport { ScreenSizerService } from '../screen-sizer';\nimport { SITE_CONFIG_SERVICE_TOKEN } from './mapper.service.token';\n\n@Injectable({\n    providedIn: 'root',\n})\nexport class MapperService {\n    private readonly siteSvc = inject(SITE_CONFIG_SERVICE_TOKEN);\n    private readonly screenSizer = inject(ScreenSizerService);\n\n    get isMinFullTabletInstant(): boolean {\n        return this.screenSizer.minFullTabletInstant();\n    }\n\n    headerButtons = signal<Record<string, string> | undefined>(undefined);\n\n    siteId: Signal<number> = computed(\n        () => this.siteSvc.webConfigInstant?.siteID\n    );\n\n    floatingButtons?: BabylonFloatingButtonsI;\n\n    private platformId = inject(PLATFORM_ID);\n\n    getImageResponsive(\n        image: ImageResponse | undefined,\n        isFigure = true\n    ): string | BabylonImageI | undefined {\n        let selectedImage;\n        if (isPlatformBrowser(this.platformId)) {\n            if (this.screenSizer.mobile()) {\n                selectedImage = image?.thumbnails?.[375]?.webp;\n            } else if (this.screenSizer.isSmallTabletInstant()) {\n                selectedImage = image?.thumbnails?.[540]?.webp;\n            } else if (this.screenSizer.isMediumTabletInstant()) {\n                selectedImage = image?.thumbnails?.[768]?.webp;\n            } else if (this.screenSizer.isFullTabletInstant()) {\n                selectedImage = image?.thumbnails?.[1024]?.webp;\n            } else if (this.screenSizer.isSmallDesktopInstant()) {\n                selectedImage = image?.thumbnails?.[1280]?.webp;\n            } else if (this.screenSizer.minMediumDesktop()) {\n                selectedImage = image?.path?.webp;\n            } else {\n                selectedImage = image?.thumbnails?.[1366]?.webp;\n            }\n        }\n        return selectedImage\n            ? isFigure\n                ? `${this.siteSvc.cdnImagesInstant}${selectedImage}`\n                : {\n                      src: `${this.siteSvc.cdnImagesInstant}${selectedImage}`,\n                      alt: image?.alt,\n                      ndTitle: image?.ndTitle,\n                      title: image?.title,\n                  }\n            : undefined;\n    }\n\n    getArrayImageResponsive(\n        images: ImageResponse[] | undefined,\n        isFigure = true\n    ): (string | BabylonImageI)[] | undefined {\n        return images?.map((img) => this.getImageResponsive(img, isFigure)!);\n    }\n\n    private generateAgesOptions(\n        maxLength: number,\n        minLength = 0\n    ): DropdownOption[] {\n        const options: DropdownOption[] = [];\n        for (let i = minLength; i <= maxLength; i++) {\n            options.push({ code: i, name: i < 10 ? `0${i}` : `${i}` });\n        }\n        return options;\n    }\n\n    mapGlobalsBodyExtra(props: any | undefined): any | undefined {\n        const name_Identifier =\n            typeof props == 'string' ? props : props?.nameIdentifier;\n        return {\n            nameIdentifier: this.getTextValue(name_Identifier),\n        };\n    }\n\n    mapBodyExtra(\n        body: any[] | undefined\n    ): BodyComponent<COMPONENTS_EXTRA>[] | undefined {\n        const bodyMapped: BodyComponent<COMPONENTS_EXTRA>[] | undefined =\n            body?.map((component) => {\n                const componentMapped: BodyComponent<COMPONENTS_EXTRA> = {\n                    name: component.name?.toLowerCase(),\n                    order: component.order,\n                    props: {},\n                } as BodyComponent<COMPONENTS_EXTRA>;\n                switch (component.name?.toLowerCase()) {\n                    case 'menu':\n                        componentMapped.props = this.mapSubmenu(\n                            component.props\n                        ) as BabylonSubmenuI;\n                        componentMapped.name = 'menu';\n                        break;\n                    case 'hoteltype':\n                        componentMapped.props = this.mapGlobalsBodyExtra(\n                            component.props\n                        ) as BabylonGlobal;\n                        componentMapped.name = 'hoteltype';\n                        break;\n                    case 'hotelcategory':\n                        componentMapped.props = this.mapGlobalsBodyExtra(\n                            component.props\n                        ) as BabylonGlobal;\n                        componentMapped.name = 'hotelcategory';\n                        break;\n                    case 'ticker':\n                        componentMapped.props = this.mapGlobalsBodyExtra(\n                            component.props\n                        ) as BabylonGlobal;\n                        componentMapped.name = 'ticker';\n                        break;\n                }\n\n                return componentMapped;\n            });\n        return bodyMapped;\n    }\n\n    mapSubmenu(props: any | undefined): BabylonSubmenuI {\n        const selected = props?.items?.find((item: any) => item.selected);\n        const submenu = {\n            hotel: props?.hotel,\n            items: props?.items\n                ?.filter((item: any) => item.active)\n                ?.map(\n                    (link: any) =>\n                        ({\n                            label: link?.name,\n                            url: link?.linkValue,\n                            linkType:\n                                link?.linkType === 3 ? 'component' : 'internal',\n                        }) as BabylonButtonI\n                ),\n            styles: props?.styles,\n            selected: {\n                label: selected?.name,\n                url: selected?.linkValue,\n                styles: props?.styles,\n            } as BabylonButtonI,\n        } as BabylonSubmenuI;\n\n        return submenu;\n    }\n\n    mapComponents<T>(\n        body: any[],\n        addons?: ComponentsAddons\n    ): BodyComponent<T>[] {\n        if (!body || !body.length) {\n            return [] as BodyComponent<T>[];\n        }\n        const searchHotelStyles = () => {\n            return body?.filter((item: any) => item.name === 'styles');\n        };\n        const bodyMapped: BodyComponent<T>[] = body\n            ?.filter(\n                (component) => component !== null && component !== undefined\n            )\n            ?.map((component) => {\n                const componentMapped: BodyComponent<T> = {\n                    name: component.name?.toLowerCase(),\n                    order: component.order,\n                    props: {},\n                    alias: component.alias,\n                    identifier: component.identifier,\n                    textColor: component.textcolor,\n                } as BodyComponent<T>;\n\n                if (component.props) {\n                    //It is necessary, otherwise it gives an error and does not show components\n                    try {\n                        switch (component.name?.toLowerCase()) {\n                            case 'module404':\n                                componentMapped.props = this.map404(\n                                    component.props\n                                ) as T;\n                                break;\n\n                            //---- LAYOUT COMPONENTS ----//\n                            case 'topslider':\n                                componentMapped.props = this.mapTopSlider(\n                                    component.props\n                                ) as T;\n                                break;\n                            case 'topslidervideo':\n                                componentMapped.props = this.mapTopSliderVideo(\n                                    component.props\n                                ) as T;\n                                break;\n\n                            case 'topsliderv2left':\n                            case 'topsliderv2right':\n                                componentMapped.props = this.mapTopSliderV2(\n                                    component.props,\n                                    componentMapped.name === 'topsliderv2right'\n                                ) as T;\n                                break;\n                            case 'infoimg':\n                            case 'infoimgright':\n                            case 'infoimgleft':\n                                componentMapped.props = this.mapInfoImg(\n                                    component.props,\n                                    componentMapped.name === 'infoimgright',\n                                    component.textcolor,\n                                    component.identifier\n                                ) as T;\n                                break;\n                            case 'infoimgsliderright':\n                            case 'infoimgsliderleft':\n                                componentMapped.props = this.mapInfoImgSlider(\n                                    component.props,\n                                    componentMapped.name ===\n                                        'infoimgsliderright',\n                                    component.identifier\n                                ) as T;\n                                break;\n                            case 'infointro':\n                                componentMapped.props = this.mapInfoIntro(\n                                    component.props\n                                ) as T;\n                                break;\n                            case 'info2imgleft':\n                            case 'info2imgright':\n                                componentMapped.props = this.mapInfo2img(\n                                    component.props,\n                                    componentMapped.name === 'info2imgright'\n                                ) as T;\n                                break;\n                            case 'info2colimgright':\n                                componentMapped.props = this.mapInfo2colimg(\n                                    component.props,\n                                    componentMapped.name === 'info2colimgright'\n                                ) as T;\n                                break;\n                            case 'info2colimgleft':\n                                componentMapped.props = this.mapInfo2colimg(\n                                    component.props,\n                                    componentMapped.name === 'info2colimgleft'\n                                ) as T;\n                                break;\n                            case 'info3img':\n                                componentMapped.props = this.mapInfoImg(\n                                    component.props,\n                                    false,\n                                    component.textcolor,\n                                    component.identifier\n                                ) as T;\n                                break;\n                            case 'infozigzagleft':\n                            case 'infozigzagright':\n                                componentMapped.props = this.mapZigzag(\n                                    component.props,\n                                    componentMapped.name === 'infozigzagright',\n                                    component.identifier\n                                ) as T;\n                                break;\n                            case 'infogrid':\n                                componentMapped.props = this.mapInfoGrid(\n                                    component.props\n                                ) as T;\n                                break;\n                            case 'slider2colleft':\n                            case 'slider2colright':\n                                componentMapped.props = this.mapSliderColl2(\n                                    component.props,\n                                    componentMapped.name === 'slider2colright'\n                                ) as T;\n                                break;\n                            case 'slider3col':\n                                componentMapped.props = this.mapSliderColl(\n                                    component.props,\n                                    component.identifier\n                                ) as T;\n                                break;\n                            case 'slider4col':\n                                componentMapped.props = this.mapSliderColl(\n                                    component.props,\n                                    component.identifier\n                                ) as T;\n                                break;\n                            case 'itemsgrid':\n                                componentMapped.props = this.mapItemsGrid(\n                                    component.props\n                                ) as T;\n                                break;\n                            case 'roomsslider':\n                                componentMapped.props = this.mapRoomsSlider(\n                                    component.props\n                                ) as T;\n                                break;\n                            case 'roomsgrid':\n                                componentMapped.props = this.mapRoomsGrid(\n                                    component.props\n                                ) as T;\n                                break;\n                            case 'bannergallery':\n                                componentMapped.props = this.mapBannerGallery(\n                                    component.props\n                                ) as T;\n                                break;\n                            case 'gridgallery':\n                                componentMapped.props = this.mapGridGallery(\n                                    component.props\n                                ) as T;\n                                break;\n                            case 'bannernewsletter':\n                                componentMapped.props =\n                                    this.mapBannerNewsletter(\n                                        component.props,\n                                        component.identifier\n                                    ) as T;\n                                break;\n                            case 'offersslider':\n                                componentMapped.props = this.mapOfferSlider(\n                                    component.props\n                                ) as T;\n                                break;\n                            //---- LAYOUT COMPONENTS END----//\n\n                            case 'thanks':\n                                componentMapped.props = this.mapThanks(\n                                    component.props\n                                ) as T;\n                                break;\n\n                            case 'contactform':\n                            case 'contactformv2':\n                                componentMapped.props = this.mapContactForm(\n                                    component.props,\n                                    addons?.contactOffice,\n                                    addons?.consultType\n                                ) as T;\n                                break;\n\n                            case 'contacthow':\n                                componentMapped.props = this.mapContactHow(\n                                    component.props\n                                ) as T;\n                                break;\n\n                            case 'webmap':\n                                componentMapped.props = this.mapWebmap(\n                                    component.props\n                                ) as T;\n                                break;\n\n                            case 'contactmap':\n                                componentMapped.props = this.mapContactMap(\n                                    component.props\n                                ) as T;\n                                break;\n\n                            case 'legal':\n                                componentMapped.props = this.mapLegal(\n                                    component.props\n                                ) as T;\n                                break;\n\n                            case 'roomscols':\n                                componentMapped.props = this.mapRoomsCols(\n                                    component.props\n                                ) as T;\n                                break;\n\n                            case 'roomdetails':\n                                componentMapped.props = this.mapRoomDetail(\n                                    component.props\n                                ) as T;\n                                break;\n\n                            case 'topsliderthumbs':\n                                componentMapped.props = this.mapTopSliderThumbs(\n                                    component.props\n                                ) as T;\n                                break;\n\n                            case 'featuresslider':\n                                componentMapped.props = this.mapFeaturesSlider(\n                                    component.props\n                                ) as T;\n                                break;\n\n                            case 'bannerinfo':\n                                componentMapped.props = this.mapBannerInfo(\n                                    component.props\n                                ) as T;\n                                break;\n\n                            case 'roomslist':\n                                componentMapped.props = this.mapRoomsList(\n                                    component.props\n                                ) as T;\n                                break;\n\n                            case 'comingsoon':\n                                componentMapped.props = this.mapComingSoon(\n                                    component.props\n                                ) as T;\n                                break;\n\n                            case 'offerdetail':\n                                componentMapped.props = this.mapOfferDetail(\n                                    component.props\n                                ) as T;\n                                break;\n\n                            case 'offerslist':\n                                componentMapped.props = this.mapOffersList(\n                                    component.props,\n                                    component.isHome\n                                ) as T;\n                                break;\n\n                            case 'faq':\n                                componentMapped.props = this.mapFaq(\n                                    component.props\n                                ) as T;\n                                break;\n\n                            case 'staticfooter':\n                                componentMapped.props = this.mapStaticFooter(\n                                    component.props\n                                ) as T;\n                                break;\n\n                            case 'gallery':\n                            case 'galleryv2':\n                            case 'lisc2imgvid':\n                                componentMapped.props = this.mapGallery(\n                                    component.props\n                                ) as T;\n                                break;\n\n                            case 'nav':\n                                componentMapped.props = this.mapMenu(\n                                    component.props,\n                                    addons?.menuSocialMedia\n                                ) as T;\n                                break;\n\n                            case 'languagesmodal':\n                            case 'languagesmodav2':\n                                componentMapped.props = this.mapLanguageModal(\n                                    component.props\n                                ) as T;\n                                break;\n\n                            case 'slider3items':\n                                componentMapped.props = this.mapSlider3Items(\n                                    component.props,\n                                    component.identifier\n                                ) as T;\n                                break;\n\n                            case 'hotelsslider':\n                                componentMapped.props = this.mapHotelsSlider(\n                                    component.props\n                                ) as T;\n                                break;\n\n                            case 'hotelslist':\n                                componentMapped.props = this.mapHotelsList(\n                                    component.props\n                                ) as T;\n                                break;\n\n                            case 'info4img':\n                                componentMapped.props = this.mapInfo4Img(\n                                    component.props\n                                ) as T;\n                                break;\n\n                            case 'servicesslider':\n                                componentMapped.props = this.mapServicesSlider(\n                                    component.props\n                                ) as T;\n                                break;\n                            case 'locationaddress':\n                            case 'contactaddress':\n                                componentMapped.props = this.mapContactAddress(\n                                    component.props\n                                ) as T;\n                                break;\n\n                            case 'advantages':\n                                componentMapped.props = this.mapAdvantages(\n                                    component.props\n                                ) as T;\n                                break;\n\n                            case 'infobig':\n                                componentMapped.props = this.mapInfoBig(\n                                    component.props\n                                ) as T;\n                                break;\n\n                            case 'infozigzagv2left':\n                                componentMapped.props = this.mapInfoZigZagV2(\n                                    component.props,\n                                    component.identifier\n                                ) as T;\n                                break;\n\n                            case 'infozigzagv2right':\n                                componentMapped.props = this.mapInfoZigZagV2(\n                                    component.props,\n                                    component.identifier\n                                ) as T;\n                                break;\n\n                            case 'footercontact':\n                                componentMapped.props = this.mapFooterContact(\n                                    component.props\n                                ) as T;\n                                break;\n\n                            case 'info2imgbig':\n                                componentMapped.props = this.mapInfo2ImgBig(\n                                    component.props\n                                ) as T;\n                                break;\n\n                            case 'footerlinks':\n                                componentMapped.props = this.mapFooterLinks(\n                                    component.props\n                                ) as T;\n                                break;\n\n                            case 'footerlogos':\n                                componentMapped.props = this.mapFooterLogos(\n                                    component.props\n                                ) as T;\n                                break;\n\n                            case 'offerslider':\n                                componentMapped.props = this.mapOfferSlider(\n                                    component.props\n                                ) as T;\n                                break;\n\n                            case 'footersocials':\n                                componentMapped.props = this.mapFooterSocials(\n                                    component.props\n                                ) as T;\n                                break;\n\n                            case 'slider2items':\n                                componentMapped.props = this.mapSlider2items(\n                                    component.props\n                                ) as T;\n                                break;\n\n                            case 'staticfooterv2':\n                                componentMapped.props = this.mapStaticFooterv2(\n                                    component.props\n                                ) as T;\n                                break;\n\n                            case 'listgrid':\n                                componentMapped.props = this.mapListGrid(\n                                    component.props\n                                ) as T;\n                                break;\n\n                            case 'newslettermodal':\n                                componentMapped.props = this.mapNewsletterModal(\n                                    component.props\n                                ) as T;\n                                break;\n\n                            case 'headintro':\n                                componentMapped.props = this.mapHeadIntro(\n                                    component.props,\n                                    component\n                                ) as T;\n                                break;\n\n                            case 'breadcrumbs':\n                                componentMapped.props = this.mapBreadcrumbs(\n                                    component.props\n                                ) as T;\n                                break;\n                            case 'offerbannerv2':\n                                componentMapped.props = this.mapOfferBannerV2(\n                                    component.props\n                                ) as T;\n                                break;\n                            case 'globalmodal':\n                            case 'globalmodal2':\n                                componentMapped.props = this.mapGlobalModal(\n                                    component.props\n                                ) as T;\n                                break;\n                            case 'menu':\n                                if (searchHotelStyles()) {\n                                    component.props['styles'] =\n                                        searchHotelStyles()[0]?.props;\n                                }\n                                componentMapped.props = this.mapSubmenu(\n                                    component.props\n                                ) as T;\n                                break;\n                            case 'spalopia':\n                                componentMapped.props = this.mapExternalScript(\n                                    component.props\n                                ) as T;\n                                break;\n                            case 'bloglist':\n                                componentMapped.props = this.mapBlogList(\n                                    component.props\n                                ) as T;\n                                break;\n                            case 'blogdetail':\n                                componentMapped.props = this.mapBlogDetail(\n                                    component.props\n                                ) as T;\n                                break;\n                            case 'offerbanner':\n                                componentMapped.props = this.mapOfferBanner(\n                                    component.props\n                                ) as T;\n                                break;\n                            case 'modalmultiplemotors':\n                                componentMapped.props =\n                                    this.mapModalMultipleMotors(\n                                        component.props\n                                    ) as T;\n                                break;\n                            case 'modalpopup':\n                                componentMapped.props = this.mapModalPopup(\n                                    component.props\n                                ) as T;\n                                break;\n\n                            case 'presslist':\n                                componentMapped.props = this.mapPressList(\n                                    component.props\n                                ) as T;\n                                break;\n\n                            case 'actionbanner':\n                                componentMapped.props = this.mapActionBanner(\n                                    component.props\n                                ) as T;\n                                break;\n\n                            case 'infozigzagcounter':\n                                componentMapped.props =\n                                    this.mapInfoZigZagCounter(\n                                        component.props\n                                    ) as T;\n                                break;\n                            case 'grc2img':\n                                componentMapped.props = this.mapGrC2Img(\n                                    component.props\n                                ) as T;\n                                break;\n                            case 'lisc4txtico':\n                                componentMapped.props = this.mapLisC4TxtIco(\n                                    component.props\n                                ) as T;\n                                break;\n\n                            default:\n                                componentMapped.props = this.mapGlobals(\n                                    component,\n                                    addons?.contactOffice,\n                                    addons?.consultType\n                                ) as T;\n                                break;\n                        }\n                    } catch (error) {\n                        console.error(error);\n                    }\n                }\n\n                return componentMapped;\n            });\n        return bodyMapped;\n    }\n\n    mapGlobals(\n        component: any,\n        ndProps: any | undefined,\n        ndPropsConsult: any | undefined\n    ): any {\n        if (!component) return undefined;\n        let { props } = component;\n        props = props ?? component;\n\n        const views = (component?.views as ComponentView[] | undefined)?.filter(\n            (v) => !!v\n        );\n\n        let rightSide: boolean;\n        let leftSide: boolean;\n        let currentView: number = 0;\n        let iconsLikeImages = false;\n\n        if (views && views.length > 0) {\n            const activeView = views.find((v) => v.default) ?? views[0];\n\n            rightSide = activeView?.name === ViewsType.RIGHT;\n            leftSide = activeView?.name === ViewsType.LEFT;\n\n            switch (activeView?.name) {\n                case ViewsType.VIEW1:\n                    currentView = 1;\n                    break;\n                case ViewsType.VIEW2:\n                    currentView = 2;\n                    break;\n                case ViewsType.VIEW3:\n                    currentView = 3;\n                    break;\n\n                default:\n                    currentView = 0;\n                    break;\n            }\n        } else {\n            // 🔥 Fallback cuando views es undefined o vacío\n            const name = component?.name?.toLowerCase() ?? '';\n\n            rightSide =\n                name.includes('right') || props?.texts?.right ? true : false;\n            leftSide =\n                name.includes('left') || props?.texts?.left ? true : false;\n        }\n        // Detect backgroundIcon (icono como background-image CSS)\n        iconsLikeImages = props?.iconslikeimages ? true : false;\n\n        let showFilters: boolean = false;\n        if (props?.texts?.filters) showFilters = true;\n\n        const getLinksArray = (linksObj: any) => {\n            if (!linksObj) return [];\n            if (Array.isArray(linksObj)) return linksObj;\n\n            // Si es un objeto, extrae sus valores y filtra los que tengan linkValue (para evitar coger footerLinks por accidente)\n            return Object.values(linksObj).filter(\n                (val: any) =>\n                    val &&\n                    typeof val === 'object' &&\n                    ('linkValue' in val || 'link_value' in val)\n            );\n        };\n\n        let hasBackground: boolean = false;\n\n        hasBackground = !!(props?.texts?.background || props?.texts?.fondo);\n\n        let result: any;\n        try {\n            result = {\n                identifier: component?.identifier,\n                hasBackground: hasBackground,\n                activeView: currentView,\n                showFilters: showFilters,\n                bodyextra: this.mapGlobalsBodyExtra(props),\n                texts: this.mapGlobalTexts(props?.texts) as BabylonTextInfoI,\n                video: props.video ?? props.Video ?? props.texts?.video,\n                iconsLikeImages: props?.iconsLikeImages ?? false,\n                rightSide: rightSide,\n                leftSide: leftSide,\n                items: this.mapGlobalItems(props),\n                lists: this.mapGlobalsFaqs(props?.Faqs),\n                services: this.mapGlobalServices(\n                    props?.servicesService ??\n                        props?.equipment ??\n                        props?.servicesService\n                ),\n                events: this.mapEventsGlobal(props?.events ?? props?.event),\n                offers: this.mapOffersGlobal(props?.offers),\n                offer: this.mapOfferDetail(props),\n                multimedia: this.mapImages(props?.multimedia),\n                address: this.mapAddress(props?.address),\n                addressHotels: this.mapGlobalAddressHotels(props),\n                links: Utils.mapButtons(\n                    getLinksArray(props?.links).length > 0\n                        ? getLinksArray(props?.links)\n                        : props?.links?.Links?.length\n                          ? props?.links?.Links?.[0]\n                          : props?.links?.contact?.[0]\n                ),\n                contactlinks: Utils.mapButtons(props?.links?.contact?.[0]),\n                footerLinks: Utils.mapButtons(props?.links?.footerLinks?.[0]),\n                pages: (\n                    props?.pages?.map(\n                        (link: any) =>\n                            ({\n                                label: link?.name,\n                                url: link?.url,\n                                linkType: 'internal',\n                            }) as BabylonButtonI\n                    ) as BabylonButtonI[]\n                )?.filter(\n                    (link) =>\n                        link.url?.split?.('/')[1] ===\n                        this.siteSvc.selectedLanguageInstant?.locate\n                ),\n                buttons: Utils.mapButtons(\n                    props?.buttons?.filter((btn: any) => !!btn.linkValue)\n                ),\n                advantages: this.mapAdvantagesGlobal(\n                    props?.Ventajas ??\n                        props?.Advantages ??\n                        props?.list ??\n                        props?.lists ??\n                        props?.Lists ??\n                        props?.List\n                ),\n                tags: {\n                    title: props?.texts?.title?.tag,\n                },\n                textColors: {\n                    title: props?.texts?.title?.color?.trim(),\n                },\n                seeMore: props?.texts?.advantagesseemore,\n                seeLess: props?.texts?.advantagesseeless,\n                image: props.advantagesimage\n                    ? this.getImageResponsive(\n                          props?.multimedia?.advantagesimage?.[0],\n                          false\n                      )\n                    : this.getImageResponsive(\n                          props?.multimedia?.imagenes?.[0],\n                          false\n                      ),\n                rooms: this.mapRoomDetails(props?.rooms ?? props?.room),\n                contactInfo: this.mapContactInfo(props?.texts),\n                socialMedia: props?.socialMedia?.map((sm: any) => {\n                    return {\n                        icon: sm?.icon,\n                        name: sm?.name,\n                        url: sm?.url,\n                    };\n                }),\n                hotels: this.mapHotelsGlobal(props?.hotels),\n                destinations: this.mapGlobalDestinations(props?.destinations),\n                experiences: this.mapGlobalExperiences(\n                    props?.experience ?? props?.experiences\n                ),\n                consultTypes: this.mapGlobalConsultTypes(props, ndPropsConsult),\n                filters: this.mapGlobalsFilters(props?.filters),\n            } as BabylonGlobal;\n        } catch (error) {\n            console.error('ERROR FATAL CREANDO RESULT EN mapGlobals:', error);\n        }\n\n        return cleanDeep(result, {\n            removeNull: true,\n            removeEmptyString: true,\n            pruneEmpty: true,\n        });\n    }\n\n    mapGlobalAddressHotels(props: any): BabylonAddressItem[] | undefined {\n        // 1. Intentamos obtener la fuente de datos (contemplamos ambos nombres de propiedad)\n        const rawSource = props?.hotelAddresses ?? props?.addressHotels;\n\n        if (rawSource) {\n            // Aplanamos el array sin importar la profundidad [[{...}]] -> [{...}]\n            const flatAddresses = Array.isArray(rawSource)\n                ? rawSource.flat(Infinity)\n                : [rawSource];\n\n            // Filtramos para asegurar que solo procesamos objetos válidos\n            const validAddresses = flatAddresses.filter(\n                (address: any) =>\n                    address &&\n                    typeof address === 'object' &&\n                    !Array.isArray(address)\n            );\n\n            if (validAddresses.length > 0) {\n                return validAddresses.map(\n                    (address: any) =>\n                        ({\n                            id: address.id,\n                            name: address.name,\n                            address: address.address,\n                            category: address.categoryName,\n                            city: address.city,\n                            province: address.province,\n                            country: address.country,\n                            cp: address.cp,\n                            mapLink: address.mapLink,\n                            url: address.link ?? address.url, // Soporte para ambos nombres de link\n                            phone: address.phone,\n                            email: address.email,\n                            full_address:\n                                address.fullAddress ?? address.full_address,\n                        }) as BabylonAddressItem\n                );\n            }\n        }\n\n        // 2. Caso Fallback: Mapeo dinámico desde los textos (addresslistXX)\n        return this.mapDynamicAddressesFromTexts(props?.texts);\n    }\n\n    /** Helper para limpiar el código principal */\n    private mapDynamicAddressesFromTexts(\n        texts: any\n    ): BabylonAddressItem[] | undefined {\n        if (!texts) return undefined;\n\n        const addressesMap: { [key: string]: Partial<BabylonAddressItem> } = {};\n\n        Object.keys(texts).forEach((key) => {\n            if (key.startsWith('addresslist') && texts[key]) {\n                const match = key.match(/addresslist(\\d+)(.*)/);\n                if (match) {\n                    const index = match[1];\n                    const field = match[2];\n\n                    if (!addressesMap[index]) {\n                        addressesMap[index] = { id: index };\n                    }\n\n                    const value = texts[key];\n                    switch (field) {\n                        case 'Title':\n                            addressesMap[index].name = value;\n                            break;\n                        case 'Address':\n                            addressesMap[index].address = value;\n                            addressesMap[index].full_address = value;\n                            break;\n                        case 'Telf':\n                            addressesMap[index].phone = value;\n                            break;\n                        case 'Email':\n                            addressesMap[index].email = value;\n                            break;\n                    }\n                }\n            }\n        });\n\n        const result = Object.values(addressesMap) as BabylonAddressItem[];\n        return result.length > 0 ? result : undefined;\n    }\n\n    mapGlobalExperiences(\n        experiences: any | undefined\n    ): BabylonGlobalExperience[] {\n        return experiences\n            ?.filter((experience: any) => experience.active)\n            ?.map(\n                (experience: any) =>\n                    ({\n                        active: experience.active,\n                        multimedia: this.mapMultimedia(experience?.multimedia),\n                        multimedia2: this.mapImages(experience?.multimedia),\n                        links: Utils.mapButtons(\n                            experience?.link ?? experience?.links\n                        ),\n                        buttons: Utils.mapButtons(experience?.buttons),\n                        order: experience?.order,\n                        texts: this.mapGlobalTexts(\n                            experience?.texts\n                        ) as BabylonTextInfoI,\n                        id: experience?.id,\n                        nameIdentifier: experience?.nameIdentifier,\n                        url: experience?.url,\n                        type: experience?.type,\n                        hotels: experience?.hotels?.map((hotel: any) => ({\n                            id: hotel?.id,\n                            nameIdentifier: hotel?.nameIdentifier,\n                        })),\n                    }) as BabylonHotelGlobalItem\n            );\n    }\n\n    mapGlobalsFilters(\n        filters: any | undefined\n    ): BabylonGloablsGalleryFilter | undefined {\n        return {\n            filters: filters?.map(\n                (item: any, index: number) =>\n                    ({\n                        id: index,\n                        all: item.all,\n                        room: item.room,\n                        rooms: item.rooms,\n                        text: item.name,\n                    }) as BabylonGalleryFilter\n            ),\n            images: filters\n                ?.reduce(\n                    (\n                        acc: { multimedia: any[]; filterIndex: number }[],\n                        filter: any,\n                        filterIndex: number\n                    ) => {\n                        if (filter.multimedia) {\n                            const multimediaWithFilter = filter.multimedia.map(\n                                (item: any) => ({\n                                    ...item,\n                                    filter: filterIndex,\n                                })\n                            );\n                            return [\n                                ...acc,\n                                {\n                                    multimedia: multimediaWithFilter,\n                                    filterIndex,\n                                },\n                            ];\n                        }\n                        return acc;\n                    },\n                    []\n                )\n                .flatMap(({ multimedia }: any) => multimedia)\n                .map(\n                    (img: any) =>\n                        ({\n                            title: img.title,\n                            img: this.getImageResponsive(img, false),\n                            filter: img?.filter,\n                        }) as BabylonGalleryItem\n                ),\n        } as BabylonGloablsGalleryFilter;\n    }\n\n    mapGlobalConsultTypes(\n        props: any | undefined,\n        ndPropsConsult: any | undefined\n    ): any | undefined {\n        const consultTypes = props?.consultTypes?.[0]?.consultTypeId\n            ? props?.consultTypes\n            : props?.length && props?.[0]?.consultTypes\n              ? props\n              : ndPropsConsult;\n        return {\n            options: consultTypes?.map(\n                (prop: any) =>\n                    ({\n                        consultTypeId:\n                            prop.consult_type_id ?? prop.consultTypeId,\n                        code: prop.id,\n                        name: prop.name,\n                    }) as DropdownOption\n            ),\n            placeholder: props?.texts?.dropdownPlaceholder,\n            error: props?.texts?.errorRequired,\n        };\n    }\n\n    mapGlobalDestinations(\n        destinations: any | undefined\n    ): BabylonDestinationI[] | undefined {\n        if (!destinations) return undefined;\n\n        const normalizeDestination = (\n            d: any,\n            index: number\n        ): BabylonDestinationI => {\n            if (typeof d === 'string') {\n                return {\n                    id: index,\n                    name: d,\n                    links: [],\n                    hotels: [],\n                    texts: {},\n                } as BabylonDestinationI;\n            }\n\n            return {\n                id: d?.id ?? index,\n                name: d?.name ?? d?.title ?? '',\n                buttons: Utils.mapButtons(d?.buttons),\n                links: Utils.mapButtons(d?.links),\n                multimedia: this.mapImages(d?.multimedia),\n                hotels: this.mapHotelsGlobal(d?.hotels),\n                texts: d?.texts\n                    ? this.mapGlobalTexts(d?.texts)\n                    : this.mapGlobalTexts(d),\n            } as BabylonDestinationI;\n        };\n\n        if (Array.isArray(destinations)) {\n            const looksLikeFlatList = destinations.every(\n                (x) =>\n                    typeof x === 'string' ||\n                    (x &&\n                        (x.id !== undefined ||\n                            x.name !== undefined ||\n                            x.title !== undefined))\n            );\n\n            if (looksLikeFlatList) {\n                return destinations.map(normalizeDestination);\n            }\n\n            const toList = (group: any): any[] => {\n                if (Array.isArray(group)) return group;\n                if (Array.isArray(group?.items)) return group.items;\n                if (Array.isArray(group?.destinations))\n                    return group.destinations;\n                return [];\n            };\n\n            return destinations.flatMap((group: any) =>\n                toList(group).map(normalizeDestination)\n            );\n        }\n\n        if (Array.isArray(destinations?.items))\n            return destinations.items.map(normalizeDestination);\n        if (Array.isArray(destinations?.destinations))\n            return destinations.destinations.map(normalizeDestination);\n\n        return [normalizeDestination(destinations, 0)];\n    }\n\n    mapGlobalTexts(texts: any | undefined): BabylonTextInfoI {\n        if (!texts) return {} as BabylonTextInfoI;\n\n        const loyaltyTableTexts = Object.fromEntries(\n            Object.entries(texts)\n                .filter(([key]) =>\n                    /^tablafidelizacin_(titulo|descripcion|subtitulo|texto)\\d+$/.test(\n                        key\n                    )\n                )\n                .map(([key, value]) => [key, this.getTextValue(value)])\n        );\n\n        if (\n            texts?.title === 'Los planes del Cabot Club' ||\n            texts?.advantagestitle === 'Ventajas exclusivas para miembros'\n        ) {\n            console.log('[MapperService] mapGlobalTexts input keys', {\n                keys: Object.keys(texts),\n                texts,\n            });\n            console.log(\n                '[MapperService] mapGlobalTexts loyaltyTableTexts',\n                loyaltyTableTexts\n            );\n        }\n\n        return {\n            pretitle: this.getTextValue(texts?.pretitle ?? texts?.Pretitulo),\n            title: this.getTextValue(texts?.title ?? texts?.Titulo),\n            title1: this.getTextValue(texts?.title1),\n            title2: this.getTextValue(texts?.title2),\n            title3: this.getTextValue(texts?.title3),\n            subtitle: this.getTextValue(texts?.subtitle),\n            name: this.getTextValue(texts?.name),\n            moreInfoText: this.getTextValue(texts?.moreInfoText),\n            offerTag: this.getTextValue(texts?.offerTag),\n            text: this.getTextValue(texts?.text ?? texts?.Texto),\n            description: this.getTextValue(texts?.description),\n            description1: this.getTextValue(texts?.description1),\n            description2: this.getTextValue(texts?.description2),\n            description3: this.getTextValue(texts?.description3),\n            descriptiontitle: this.getTextValue(texts?.descriptiontitle),\n            hideInfoText: this.getTextValue(texts?.hideInfoText),\n            item1: this.getTextValue(texts?.item1),\n            item1Text: this.getTextValue(texts?.item1Text),\n            mandatoryText: this.getTextValue(texts?.mandatoryText),\n            note: this.getTextValue(texts?.note),\n            conditionsTitle: this.getTextValue(texts?.conditionsTitle),\n            additional: this.getTextValue(\n                texts?.additional ?? texts?.Additional\n            ),\n            additional1: this.getTextValue(\n                texts?.additional1 ?? texts?.Additional1\n            ),\n            additional2: this.getTextValue(\n                texts?.additional2 ?? texts?.Additional2\n            ),\n            additional3: this.getTextValue(\n                texts?.additional3 ?? texts?.Additional3\n            ),\n\n            conditions: this.getTextValue(texts?.conditions),\n            url: this.getTextValue(texts?.url),\n\n            advantagestitle: this.getTextValue(texts?.advantagestitle),\n            advantagessubtitle: this.getTextValue(texts?.advantagessubtitle),\n\n            level1: this.getTextValue(texts?.level1 ?? texts?.leve1),\n            level2: this.getTextValue(texts?.level2 ?? texts?.leve2),\n            level3: this.getTextValue(texts?.level3 ?? texts?.leve3),\n            leve1: this.getTextValue(texts?.leve1),\n            leve2: this.getTextValue(texts?.leve2),\n            leve3: this.getTextValue(texts?.leve3),\n\n            whatsapp: this.getTextValue(texts?.whatsapp),\n            scrolltext: this.getTextValue(\n                texts?.scrolltext ?? texts?.scrollDown\n            ),\n\n            address: this.getTextValue(texts?.address),\n            addresstitle: this.getTextValue(\n                texts?.addresstitle ?? texts?.addressTitle\n            ),\n            bannertext: this.getTextValue(texts?.bannertext),\n            contacttitle: this.getTextValue(\n                texts?.contacttitle ?? texts?.contactTitle\n            ),\n            copyrighttext: this.getTextValue(\n                texts?.copyrighttext ?? texts?.copyright\n            ),\n            topButton: this.getTextValue(texts?.topButton),\n            aboutTitle: this.getTextValue(texts?.aboutTitle),\n            grupoTitle: this.getTextValue(texts?.grupoTitle),\n            helpTitle: this.getTextValue(texts?.helpTitle),\n            contactOfficeTitle: this.getTextValue(texts?.contactOfficeTitle),\n\n            textAdjCv: this.getTextValue(texts?.textAdjCv),\n            textAdjCvError: this.getTextValue(texts?.textAdjCvError),\n            SelectItemText: this.getTextValue(texts?.SelectItemText),\n\n            // SVG / especiales\n            svg: this.getTextValue(texts?.svg),\n            selectorTexts: this.getTextValue(texts?.selectorTexts),\n\n            featurepillsnumberSvgicon1: this.getTextValue(\n                texts?.featurepillsnumberSvgicon1\n            ),\n            featurepillsnumberSvgicon2: this.getTextValue(\n                texts?.featurepillsnumberSvgicon2\n            ),\n            featurepillsnumberSvgicon3: this.getTextValue(\n                texts?.featurepillsnumberSvgicon3\n            ),\n\n            featurepillsnumberSvgnumber1: this.getTextValue(\n                texts?.featurepillsnumberSvgnumber1\n            ),\n            featurepillsnumberSvgnumber2: this.getTextValue(\n                texts?.featurepillsnumberSvgnumber2\n            ),\n            featurepillsnumberSvgnumber3: this.getTextValue(\n                texts?.featurepillsnumberSvgnumber3\n            ),\n\n            featurepillsnumberSvgname1: this.getTextValue(\n                texts?.featurepillsnumberSvgname1\n            ),\n            featurepillsnumberSvgname2: this.getTextValue(\n                texts?.featurepillsnumberSvgname2\n            ),\n            featurepillsnumberSvgname3: this.getTextValue(\n                texts?.featurepillsnumberSvgname3\n            ),\n\n            featurepillsnumberSvgsubtitle1: this.getTextValue(\n                texts?.featurepillsnumberSvgsubtitle1\n            ),\n            featurepillsnumberSvgsubtitle2: this.getTextValue(\n                texts?.featurepillsnumberSvgsubtitle2\n            ),\n            featurepillsnumberSvgsubtitle3: this.getTextValue(\n                texts?.featurepillsnumberSvgsubtitle3\n            ),\n            portadahotelv1video: this.getTextValue(texts?.portadahotelv1video),\n\n            topslidervideov2svg: this.getTextValue(texts?.topslidervideov2svg),\n            topslidervideov2video: this.getTextValue(\n                texts?.topslidervideov2video\n            ),\n\n            onlyAdults: this.getTextValue(texts?.onlyAdults),\n            hotelCategory: this.getTextValue(texts?.hotelCategory),\n            hotelType: this.getTextValue(texts?.hotelType),\n            destinations: this.getTextValue(texts?.destinations),\n            cleanFilters: this.getTextValue(texts?.cleanFilters),\n            notFound: this.getTextValue(texts?.notFound),\n            contactEmail: this.getTextValue(texts?.contactEmail),\n            contactOffice: this.getTextValue(texts?.contactOffice),\n            contactTel: this.getTextValue(texts?.contactTel),\n            marca: this.getTextValue(texts?.marca),\n\n            errorRegisterSubscriber: this.getTextValue(\n                texts?.ErrorRegisterSubscriber\n            ),\n            errorsubscriber: this.getTextValue(texts?.Errorsubscriber),\n            inputLabel: this.getTextValue(texts?.inputLabel),\n            inputPlaceholder: this.getTextValue(texts?.inputPlaceholder),\n            newsErrorEmail: this.getTextValue(texts?.newsErrorEmail),\n            successsubscriber: this.getTextValue(texts?.successsubscriber),\n\n            mapUrl: this.getTextValue(texts?.mapUrl ?? texts?.mapurl),\n            rooms: this.getTextValue(texts?.rooms),\n            categories: this.getTextValue(texts?.categories),\n            all: this.getTextValue(texts?.all),\n\n            howGetDescription: this.getTextValue(texts?.howGetDescription),\n            howGetDescription2: this.getTextValue(texts?.howGetDescription2),\n            howGetTitle: this.getTextValue(texts?.howGetTitle),\n            howGetTitle2: this.getTextValue(texts?.howGetTitle2),\n            contactDescription: this.getTextValue(texts?.contactDescription),\n            contactTitle: this.getTextValue(texts?.contactTitle),\n\n            newsletterError: this.getTextValue(texts?.newsletterError),\n            newsletterFail: this.getTextValue(texts?.newsletterFail),\n            newsletterSuccessfull: this.getTextValue(\n                texts?.newsletterSuccessfull\n            ),\n            newsletterTitle: this.getTextValue(texts?.newsletterTitle),\n            events: this.getTextValue(texts?.events),\n\n            addressTitle: this.getTextValue(texts?.addressTitle),\n            addressLines: this.getTextValue(texts?.addressLines),\n\n            receptionTitle: this.getTextValue(texts?.receptionTitle),\n            gpsTitle: this.getTextValue(texts?.gpsTitle),\n            followTitle: this.getTextValue(texts?.followTitle),\n            howToTitle: this.getTextValue(texts?.howToTitle),\n            howToPretitle: this.getTextValue(texts?.howToPretitle),\n            firstTitle: this.getTextValue(texts?.firstTitle),\n            secondTitle: this.getTextValue(texts?.secondTitle),\n            thirdTitle: this.getTextValue(texts?.thirdTitle),\n            firstDescription: this.getTextValue(texts?.firstDescription),\n            secondDescription: this.getTextValue(texts?.secondDescription),\n            thirdDescription: this.getTextValue(texts?.thirdDescription),\n            contactInfo: this.getTextValue(texts?.contactInfo),\n            socialTitle: this.getTextValue(texts?.socialTitle),\n            latitudeTitle: this.getTextValue(texts?.latitudeTitle),\n            longitudeTitle: this.getTextValue(texts?.longitudeTitle),\n            secondaryTitle: this.getTextValue(texts?.secondaryTitle),\n            secondaryPretitle: this.getTextValue(texts?.secondaryPretitle),\n            scheduleInfo: this.getTextValue(texts?.scheduleInfo),\n            oneElement: this.getTextValue(texts?.oneElement),\n            reception: this.getTextValue(texts.reception),\n\n            roomTitle: this.getTextValue(texts?.roomTitle),\n\n            // Compatibilidad explícita para módulos legacy con claves en castellano\n            Pretitulo: this.getTextValue(texts?.Pretitulo),\n            Titulo: this.getTextValue(texts?.Titulo),\n            Texto: this.getTextValue(texts?.Texto),\n            'Titulo-ofertas': this.getTextValue(texts?.['Titulo-ofertas']),\n            'Titulo-detalle-1': this.getTextValue(texts?.['Titulo-detalle-1']),\n            'Titulo-detalle-2': this.getTextValue(texts?.['Titulo-detalle-2']),\n            'Titulo-detalle-3': this.getTextValue(texts?.['Titulo-detalle-3']),\n            'Titulo-detalle-4': this.getTextValue(texts?.['Titulo-detalle-4']),\n            'Título-detalle-1': this.getTextValue(texts?.['Título-detalle-1']),\n            'Título-detalle-2': this.getTextValue(texts?.['Título-detalle-2']),\n            'Título-detalle-3': this.getTextValue(texts?.['Título-detalle-3']),\n            'Título-detalle-4': this.getTextValue(texts?.['Título-detalle-4']),\n            'Subtitulo-detalle-1': this.getTextValue(\n                texts?.['Subtitulo-detalle-1']\n            ),\n            'Subtitulo-detalle-2': this.getTextValue(\n                texts?.['Subtitulo-detalle-2']\n            ),\n            'Subtitulo-detalle-3': this.getTextValue(\n                texts?.['Subtitulo-detalle-3']\n            ),\n            'Subtitulo-detalle-4': this.getTextValue(\n                texts?.['Subtitulo-detalle-4']\n            ),\n            'Subítulo-detalle-1': this.getTextValue(\n                texts?.['Subítulo-detalle-1']\n            ),\n            'Subítulo-detalle-2': this.getTextValue(\n                texts?.['Subítulo-detalle-2']\n            ),\n            'Subítulo-detalle-3': this.getTextValue(\n                texts?.['Subítulo-detalle-3']\n            ),\n            'Subítulo-detalle-4': this.getTextValue(\n                texts?.['Subítulo-detalle-4']\n            ),\n            'Subitulo-detalle-1': this.getTextValue(\n                texts?.['Subitulo-detalle-1']\n            ),\n            'Subitulo-detalle-2': this.getTextValue(\n                texts?.['Subitulo-detalle-2']\n            ),\n            'Subitulo-detalle-3': this.getTextValue(\n                texts?.['Subitulo-detalle-3']\n            ),\n            'Subitulo-detalle-4': this.getTextValue(\n                texts?.['Subitulo-detalle-4']\n            ),\n            'Descripcion-detalle-1': this.getTextValue(\n                texts?.['Descripcion-detalle-1']\n            ),\n            'Descripcion-detalle-2': this.getTextValue(\n                texts?.['Descripcion-detalle-2']\n            ),\n            'Descripcion-detalle-3': this.getTextValue(\n                texts?.['Descripcion-detalle-3']\n            ),\n            'Descripcion-detalle-4': this.getTextValue(\n                texts?.['Descripcion-detalle-4']\n            ),\n            'Descripción-detalle-1': this.getTextValue(\n                texts?.['Descripción-detalle-1']\n            ),\n            'Descripción-detalle-2': this.getTextValue(\n                texts?.['Descripción-detalle-2']\n            ),\n            'Descripción-detalle-3': this.getTextValue(\n                texts?.['Descripción-detalle-3']\n            ),\n            'Descripción-detalle-4': this.getTextValue(\n                texts?.['Descripción-detalle-4']\n            ),\n            icon: this.getTextValue(texts?.icon),\n            compofertas_icon: this.getTextValue(texts?.compofertas_icon),\n            ...loyaltyTableTexts,\n        } as BabylonTextInfoI;\n    }\n\n    private getTextValue(text: any): string | undefined {\n        if (!text) return undefined;\n\n        // string plano\n        if (typeof text === 'string') return text;\n\n        return text?.value ?? text?.text ?? text?.label ?? undefined;\n    }\n\n    mapConsultTypesGlobal(consults: any | undefined): ConsultTypeI[] {\n        return consults?.map(\n            (consult: any) =>\n                ({\n                    id: consult?.id,\n                    name: consult?.name,\n                }) as ConsultTypeI\n        );\n    }\n\n    mapHotelsGlobal(hotels: any | undefined): BabylonHotelGlobalItem[] {\n        return hotels\n            ?.map(\n                (hotel: any) =>\n                    ({\n                        id: hotel?.id,\n                        name: hotel?.name,\n                        order: hotel?.order,\n                        texts: this.mapGlobalTexts(\n                            hotel?.texts\n                        ) as BabylonTextInfoI,\n                        multimedia: this.mapMultimedia(hotel?.multimedia),\n                        images: hotel?.multimedia?.length\n                            ? this.mapMultimedia(hotel?.multimedia)\n                            : undefined,\n                        links: Utils.mapButtons(hotel?.link ?? hotel?.links),\n                        buttons: Utils.mapButtons(hotel?.buttons),\n                        email: hotel?.email,\n                        addess: hotel?.address,\n\n                        allInclusive: hotel?.allInclusive,\n                        beachClub: hotel?.beachClub,\n                        checkInTime: hotel?.checkInTime,\n                        checkOutTime: hotel?.checkOutTime,\n                        city: hotel?.city,\n                        closingFrom: hotel?.closingFrom,\n                        closingTo: hotel?.closingTo,\n                        country: hotel?.country,\n                        cp: hotel?.cp,\n                        destinations: hotel?.destinations,\n                        highlighted: hotel?.highlighted,\n                        lat: hotel?.lat,\n                        lon: hotel?.lon,\n                        laundry: hotel?.laundry,\n                        locality: hotel?.locality,\n                        mapLink: hotel?.mapLink,\n                        offers: hotel?.offers,\n                        phone: hotel?.phone,\n                        province: hotel?.province,\n                        ticker: hotel?.ticker,\n                        siteHotels: hotel?.siteHotels,\n                        servicesAdvantages: hotel?.servicesAdvantages,\n                        servicesCharacteristics: hotel?.servicesCharacteristics,\n                        servicesHotelApp: hotel?.servicesHotelApp,\n                        servicesList: hotel?.servicesList,\n                        servicesLocation: hotel?.servicesLocation,\n                        servicesService: hotel?.servicesService,\n                        styles: hotel?.styles,\n                        onlyAdults: hotel?.onlyAdults,\n                        events: this.mapGlobalHotelEvents(hotel?.events),\n                        hotelcategory:\n                            hotel?.hotelCategory ?? hotel?.hotelcategory,\n                        hoteltype: hotel?.hotelType ?? hotel?.hoteltype,\n                        marca: hotel?.marca,\n                    }) as BabylonHotelGlobalItem\n            )\n            ?.sort((a: any, b: any) => (a.order || 9999) - (b.order || 9999));\n    }\n\n    mapGlobalHotelEvents(events: any | undefined): BabylonEventItemI[] {\n        if (!Array.isArray(events)) return [];\n        return events\n            .filter((event: any) => event && event.nameIdentifier)\n            .map((event: any) => ({ name: event.nameIdentifier }));\n    }\n\n    private mapGlobalItems(props: any): any {\n        // Fuente principal de items\n        const rawItems =\n            props?.items ??\n            props?.Items ??\n            props?.servicesService ??\n            props?.ventajas ??\n            props.Ventajas ??\n            undefined;\n\n        // Intentamos mapear items imagenes\n        if (!rawItems && props?.multimedia) {\n            const mappedImg = this.mapImages(props?.multimedia);\n            if (mappedImg != null) {\n                return mappedImg.imagenes;\n            }\n        }\n\n        // Intentamos mapear items experiencias\n        if (!rawItems && props?.experience) {\n            const mappedItems = this.mapItems(props?.experience);\n            if (mappedItems != null) {\n                return mappedItems;\n            }\n        }\n\n        //Intentamos mapear items “normales”\n        const mappedItems = this.mapItems(rawItems);\n        if (mappedItems != null) {\n            return mappedItems;\n        }\n\n        // Si no hay items, probamos con rooms\n        const mappedRooms = this.mapRoomDetails(props?.rooms);\n        if (mappedRooms != null) {\n            return mappedRooms;\n        }\n\n        // offers\n        const mappedOffers = this.mapOffersGlobal(props?.offers);\n        if (mappedOffers != null) {\n            return mappedOffers;\n        }\n\n        // 5) hoteles\n        return this.mapHotelsGlobal(props?.hotels);\n    }\n\n    mapAddress(address: any | any[] | undefined): BabylonAddressItem[] {\n        if (!address) return [];\n\n        const list = Array.isArray(address) ? address : [address];\n\n        return list.map((a: any) => ({\n            id: a?.id,\n            name: a?.name,\n            address: a?.address,\n            city: a?.city,\n            locality: a?.locality,\n            province: a?.province,\n            country: a?.country,\n            cp: a?.cp,\n            url: a?.link,\n            phone: a?.phone,\n            phone2: a?.phone2,\n            email: a?.email,\n            full_address: a?.fullAddress,\n            lat: a?.lat,\n            lon: a?.lon,\n            link: a?.link,\n        }));\n    }\n\n    mapStaticFooterv3(props: any | undefined): BabylonStaticFooterI {\n        return {} as any;\n    }\n\n    mapGlobalServices(\n        services: BabylonGlobalIconI[] | undefined\n    ): BabylonGlobalIconI[] | undefined {\n        return services?.map(\n            (item: any) =>\n                ({\n                    icon: `icon-` + item?.class,\n                    name: item?.name,\n                    description: item?.description,\n                    type: item?.type,\n                }) as BabylonGlobalIconI\n        );\n    }\n\n    mapContactInfo(texts: any | undefined): BabylonContactInfoI {\n        return {\n            title: texts?.title,\n            note: texts?.note,\n            text: texts?.text,\n            icon: texts?.icon,\n            pretitle: texts?.pretitle,\n            description: texts?.description,\n            conditions: texts?.conditions,\n            conditions2: texts?.conditions2,\n            dropdownPlaceholder: texts?.dropdownPlaceholder,\n            dropdownTitle: texts?.dropdownTitle,\n            hotelDropTitle: texts?.hotelDropTitle,\n            hotelDropPlaceholder: texts?.hotelDropPlaceholder,\n            hotelDropError: texts?.hotelDropError,\n            errorEmail: texts?.errorEmail,\n            errorMessage: texts?.errorMessage,\n            errorName: texts?.errorName,\n            errorPhone: texts?.errorPhone,\n            errorRequired: texts?.errorRequired,\n            inputEmail: texts?.inputEmail,\n            inputEmailPlaceHolder: texts?.inputEmailPlaceHolder,\n            inputMessage: texts?.inputMessage,\n            inputMessagePlaceHolder: texts?.inputMessagePlaceHolder,\n            inputName: texts?.inputName,\n            inputNamePlaceHolder: texts?.inputNamePlaceHolder,\n            inputPhone: texts?.inputPhone,\n            inputPhonePlaceHolder: texts?.inputPhonePlaceHolder,\n            inputlastname: texts?.inputlastname,\n            inputlastnamePlaceHolder: texts?.inputlastnamePlaceHolder,\n            inputSurnames: texts?.inputSurnames,\n            inputSurnamesPlaceHolder: texts?.inputSurnamesPlaceHolder,\n            mandatorytext: texts?.mandatorytext,\n            requiredFieldsLabel: texts?.requiredFieldsLabel,\n            lang_1: texts?.lang1,\n            lang_2: texts?.lang2,\n            lang_3: texts?.lang3,\n            lang_4: texts?.lang4,\n            nativo: texts?.nativo,\n            basico: texts?.basico,\n            fluido: texts?.fluido,\n            intermedio: texts?.intermedio,\n            inputDisponibility: texts?.inputDisponibility,\n            inputLanguages: texts?.inputLanguages,\n            cvInput: texts?.cvInput,\n            SelectItemText: texts?.SelectItemText,\n            addLang: texts?.addLang,\n        } as BabylonContactInfoI;\n    }\n    mapEventsGlobal(events: any | undefined): BabylonItemI[] {\n        return events?.map(\n            (item: any) =>\n                ({\n                    buttons: Utils.mapButtons(item?.buttons),\n                    links: Utils.mapButtons(item?.links),\n                    img: this.getImageResponsive(item?.multimedia?.[0], false),\n                    name: item?.name ?? item?.name_identifier,\n                    price: item?.price,\n                    texts: {\n                        title: item.texts?.title,\n                        subtitle: item.texts?.subtitle,\n                        description: item.texts?.description,\n                        additional1: item.texts?.additional1,\n                        additional2: item.texts?.additional2,\n                        additional3: item.texts?.additional3,\n                        conditions: item.texts?.conditions,\n                        url: item.texts?.reservationUrl,\n                        createAt: item.texts?.createAt,\n                        updatedAt: item.texts?.updatedAt,\n                    } as BabylonTextInfoI,\n                    url: item?.url,\n                }) as BabylonItemI\n        );\n    }\n    mapOffersGlobal(offers: any | undefined): BabylonOfferItemI[] {\n        return offers?.map(\n            (item: any) =>\n                ({\n                    applicationFrom: item?.applicationFrom,\n                    applicationTo: item?.applicationTo,\n                    buttons: Utils.mapButtons(item?.buttons),\n                    currency: item?.currency,\n                    discount: item?.discount,\n                    price: item?.price,\n                    labelFrom: item?.labelFrom,\n                    links: Utils.mapButtons(item?.links),\n                    multimedia: this.mapMultimedia(item?.multimedia),\n                    images: this.getImageResponsive(\n                        item?.multimedia?.[0],\n                        false\n                    ),\n                    name: item?.name,\n                    texts: {\n                        title: item.texts?.title,\n                        subtitle: item.texts?.subtitle,\n                        description: item.texts?.description,\n                        additional1: item.texts?.additional1,\n                        additional2: item.texts?.additional2,\n                        additional3: item.texts?.additional3,\n                        conditions: item.texts?.conditions,\n                        conditionsTitle: item.texts?.conditionsTitle,\n                        url: item.texts?.reservationUrl,\n                    } as BabylonTextInfoI,\n                    url: item?.url,\n                    visibleFrom: item?.visibleFrom,\n                    visibleTo: item?.visibleTo,\n                }) as BabylonOfferI\n        );\n    }\n\n    mapAdvantagesGlobal(advantages: any | undefined): BabylonAdvantageItemI[] {\n        if (!Array.isArray(advantages)) return [];\n        return advantages?.map((item: any) => ({\n            ...item,\n            title: item?.title ?? item?.texts?.title,\n            icon: item?.icon ? `icon-${item.icon}` : item?.icon,\n            text: item?.text ?? item?.texts?.text ?? item?.texts?.description,\n            subtitle:\n                item?.subtitle ??\n                item?.texts?.subtitle ??\n                item?.texts?.additional1,\n            description:\n                item?.description ??\n                item?.texts?.description ??\n                item?.texts?.additional2,\n            additional1: item?.additional1 ?? item?.texts?.additional1,\n            additional2: item?.additional2 ?? item?.texts?.additional2,\n            additional3: item?.additional3 ?? item?.texts?.additional3,\n            texts: item?.texts ? this.mapGlobalTexts(item.texts) : undefined,\n            url: item.linkValue ?? item.url,\n            linkType: item.linkType,\n        }));\n    }\n\n    mapItems(items: any): any | undefined {\n        if (!Array.isArray(items)) return undefined;\n        items = items?.map((item: any) => ({\n            label: item?.title ?? item?.name,\n            description: item?.text ?? item?.description,\n            texts:\n                item?.texts ??\n                ({\n                    label: item?.name,\n                    title: item?.title,\n                    description: item?.description,\n                    subtitle: item?.subtitle,\n                    pretitle: item?.pretitle,\n                } as BabylonTextInfoI),\n            multimedia: this.mapImages(item?.multimedia),\n            buttons: Utils.mapButtons(item?.buttons),\n            img: this.getImageResponsive(item, false),\n            icon: `icon-` + (item.icon ?? item.class),\n            type: item?.type,\n            nameIdentifier: item?.nameIdentifier,\n            url: item?.url,\n        }));\n        return items as BabylonItemI;\n    }\n\n    mapGlobalsFaqs(raw: any): BabylonGlobalsFaqGroup[] | undefined {\n        if (!Array.isArray(raw) || raw.length === 0) return undefined;\n\n        const isGrouped = raw.some(\n            (x) => x && typeof x === 'object' && Array.isArray(x.items)\n        );\n\n        const groups: Array<{ listId: number; items: any[] }> = isGrouped\n            ? raw.map((g: any) => ({\n                  listId: Number(g?.listId ?? 1),\n                  items: Array.isArray(g?.items) ? g.items : [],\n              }))\n            : [{ listId: 1, items: raw }];\n\n        const mappedGroups: BabylonGlobalsFaqGroup[] = groups\n            .map((g) => {\n                const mappedItems = (g.items || [])\n                    .map((item: any) => {\n                        const label =\n                            item?.title ??\n                            item?.question ??\n                            item?.name ??\n                            item?.label ??\n                            '';\n                        const description =\n                            item?.text ??\n                            item?.answer ??\n                            item?.description ??\n                            '';\n\n                        if (!label && !description) return null;\n\n                        return {\n                            label,\n                            description,\n                            texts:\n                                item?.texts ??\n                                ({\n                                    label: item?.name,\n                                    title: item?.title,\n                                    description: item?.description,\n                                    subtitle: item?.subtitle,\n                                    pretitle: item?.pretitle,\n                                } as BabylonTextInfoI),\n                            multimedia: this.mapImages(item?.multimedia),\n                            buttons: Utils.mapButtons(item?.buttons),\n                            img: this.getImageResponsive(item, false),\n                            icon:\n                                item?.icon || item?.class\n                                    ? String(\n                                          item.icon ?? item.class\n                                      ).startsWith('icon-')\n                                        ? String(item.icon ?? item.class)\n                                        : `icon-${item.icon ?? item.class}`\n                                    : undefined,\n\n                            id: item?.id ?? item?.faqId,\n                        } as unknown as BabylonItemI;\n                    })\n                    .filter(Boolean) as BabylonItemI[];\n\n                return {\n                    listId: g.listId || 1,\n                    items: mappedItems,\n                };\n            })\n            .filter((g) => g.items.length > 0);\n\n        return mappedGroups.length ? mappedGroups : undefined;\n    }\n\n    mapMultimedia(imagesArray: any | undefined): any | undefined {\n        if (Array.isArray(imagesArray) && imagesArray.length) {\n            return imagesArray\n                ?.filter((item: ImageResponse) => item?.active === true)\n                ?.map((item: ImageResponse) => ({\n                    subtitle: item?.subtitle,\n                    alt: item?.alt,\n                    img: this.getImageResponsive(item, false),\n                    buttons: Utils.mapButtons(item?.buttons),\n                    links: Utils.mapButtons(item?.links),\n                    title: item?.title,\n                    order: item?.order,\n                    pretitle: item?.pretitle,\n                    description: item?.description,\n                    tag: item?.tags,\n                    texts: {\n                        title: item?.title,\n                        subtitle: item?.subtitle,\n                        description: item?.description,\n                        pretitle: item?.pretitle,\n                        alt: item?.alt,\n                        ndTitle: item?.ndTitle,\n                    },\n                }));\n        }\n        return undefined;\n    }\n\n    mapImages(multimedia: any | undefined): any | undefined {\n        if (multimedia) {\n            return {\n                imagen: this.mapMultimedia(multimedia?.imagen),\n                imagenes: this.mapMultimedia(\n                    multimedia?.imagenes ?? multimedia\n                ),\n                imagenescontext: this.mapMultimedia(\n                    multimedia?.imagenescontext\n                ),\n                imagenespequeas: this.mapMultimedia(\n                    multimedia?.imagenespequeas\n                ),\n                mobileImagenes: this.mapMultimedia(multimedia?.imagenesmobile),\n                staticImagenes: this.mapMultimedia(\n                    multimedia?.staticimagenes ?? multimedia?.staticimage\n                ),\n                mainimagenes: this.mapMultimedia(multimedia?.mainimagenes),\n                backgroundimage: this.mapMultimedia(\n                    multimedia?.backgroundimage\n                ),\n                logo: this.mapMultimedia(multimedia?.logo),\n            };\n        }\n        return undefined;\n    }\n\n    mapRoomDetails(rooms: any | undefined): any {\n        let array: any[] = rooms?.length ? rooms : [rooms];\n\n        return array\n            ?.filter(\n                (room: any, index: number, self: any[]) =>\n                    self?.findIndex((r) => r?.id === room?.id) === index\n            )\n            ?.map(\n                (item: any) =>\n                    ({\n                        buttons: Utils.mapButtons(\n                            item?.buttons\n                            /* item?.buttons?.slice().reverse() TODO: \".slice().reverse()\"  esto se hace en el componente que lo use */\n                        ),\n                        links: Utils.mapButtons(item?.links),\n                        images: [\n                            (() => {\n                                const imgResp = this.getImageResponsive(\n                                    item?.multimedia?.find(\n                                        (img: any) => img?.cover\n                                    ) || item?.multimedia?.[0],\n                                    false\n                                );\n                                const order =\n                                    item?.multimedia?.find(\n                                        (img: any) => img?.cover\n                                    )?.order ?? item?.multimedia?.[0]?.order;\n                                if (imgResp && typeof imgResp === 'object') {\n                                    return { ...imgResp, order };\n                                } else {\n                                    return { img: imgResp, order };\n                                }\n                            })(),\n                        ],\n                        multimedia: {\n                            imagenes: item?.multimedia\n                                ?.filter((img: any) => img.active)\n                                ?.map((img: any) => {\n                                    return {\n                                        img: this.getImageResponsive(\n                                            img,\n                                            false\n                                        ),\n                                        texts: img.texts,\n                                        tag: img.tags,\n                                        buttons: Utils.mapButtons(img.buttons),\n                                        links: Utils.mapButtons(img.links),\n                                        name: img.title,\n                                        order: img.order,\n                                    };\n                                }),\n                        },\n                        videos: {\n                            src: item?.multimedia?.video?.src,\n                            type: item?.multimedia?.video?.src\n                                ? 'video/mp4'\n                                : undefined,\n                        },\n                        texts: {\n                            name: item?.texts?.name,\n                            beds: item?.texts?.beds,\n                            location: item?.texts?.location,\n                            description: item?.texts?.description,\n                            additional1: item?.texts?.additional1,\n                            additional2: item?.texts?.additional2,\n                            additional3: item?.texts?.additional3,\n                            additional4: item?.texts?.additional4,\n                        },\n                        order: item?.order,\n                        equipments: Array.isArray(item?.services)\n                            ? item?.services\n                                  ?.filter((svc: any) => {\n                                      const types =\n                                          typeof svc.type === 'string'\n                                              ? svc.type\n                                                    .split(',')\n                                                    .map((t: string) =>\n                                                        t.trim()\n                                                    )\n                                              : [];\n\n                                      // Acepta tanto 'equipment' como 'characteristics'\n                                      const hasValidType = types.includes(\n                                          RoomServiceType.characteristics\n                                      );\n\n                                      return hasValidType;\n                                  })\n                                  .map((svc: any) => ({\n                                      name: svc?.name,\n                                      icon: svc?.class\n                                          ? `icon-${svc?.class}`\n                                          : undefined,\n                                  }))\n                            : [],\n                    }) as BabylonRoomInfoI\n            );\n    }\n    map404(props: any | undefined): Babylon404I {\n        return {\n            title:\n                typeof props?.texts?.title === 'string'\n                    ? props?.texts?.title\n                    : props?.texts?.title?.contain,\n            description: props?.texts?.description,\n            subtitle:\n                typeof props?.texts?.subtitle === 'string'\n                    ? props?.texts?.subtitle\n                    : props?.texts?.subtitle?.contain,\n\n            button: Utils.mapButtons(props?.buttons)?.[0],\n            tags: {\n                pretitle: props?.texts?.subtitle?.tag,\n                title: props?.texts?.title?.tag,\n            },\n        } as Babylon404I;\n    }\n\n    //---- LAYOUT COMPONENTS ----//\n    mapTopSlider(props: any | undefined): BabylonTopSliderI | undefined {\n        const allImages = props?.multimedia?.imagenes ?? [];\n\n        const imagesWithTag = allImages.filter(\n            (image: any) =>\n                Array.isArray(image?.tags) &&\n                image.tags.some(\n                    (tag: any) =>\n                        (typeof tag === 'string' &&\n                            tag.includes('TopSlider')) ||\n                        (typeof tag === 'object' &&\n                            tag?.name?.includes('TopSlider'))\n                )\n        );\n\n        const images = imagesWithTag.length ? imagesWithTag : allImages;\n        return {\n            buttons: Utils.mapButtons(props?.buttons),\n            links: Utils.mapButtons(props?.links),\n            items: images?.length\n                ? images?.map((item: any) => ({\n                      title: item?.title,\n                      subtitle: item?.pretitle,\n                      img: this.getImageResponsive(item, false),\n                      buttons: Utils.mapButtons(item?.buttons),\n                      links: Utils.mapButtons(item?.links),\n                      tags: {\n                          subtitle: item.pretitle?.tag,\n                          title: item.title?.tag,\n                      },\n                  }))\n                : [\n                      {\n                          title: images?.title,\n                          subtitle: images?.pretitle,\n                          img: this.getImageResponsive(images, false),\n                          buttons: Utils.mapButtons(images?.buttons),\n                          links: Utils.mapButtons(images?.links),\n                      },\n                  ],\n            itemsMobile: props?.multimedia?.imagenesmobile?.map(\n                (item: ImageResponse) =>\n                    ({\n                        title: item?.title,\n                        subtitle: item?.pretitle,\n                        img: this.getImageResponsive(item, false),\n                        buttons: Utils.mapButtons(item?.buttons),\n                        links: Utils.mapButtons(item?.links),\n                    }) as BabylonTopSliderItem\n            ),\n            logo: this.getImageResponsive(props?.multimedia?.logo?.[0], false),\n            logoTitle: this.getImageResponsive(\n                props?.multimedia?.logotitle?.[0],\n                false\n            ),\n            videoData: {\n                // title: props?.video?.title,\n                src: props?.texts?.video,\n                type: 'video/mp4',\n            },\n        } as BabylonTopSliderI;\n    }\n\n    mapTopSliderVideo(\n        props: any | undefined\n    ): BabylonTopSliderVideoI | undefined {\n        return {\n            videoData: {\n                title: props?.video?.title,\n                src: props?.video?.src,\n                type: 'video/mp4',\n            },\n            smallVideoData: props?.video?.mobile\n                ? {\n                      title: props?.video?.title,\n                      src: props?.video?.mobile,\n                      type: 'video/mp4',\n                  }\n                : undefined,\n            labelInfos: {\n                pretitle:\n                    typeof props?.texts?.pretitle === 'string'\n                        ? props?.texts?.pretitle\n                        : props?.texts?.pretitle?.contain,\n                title:\n                    typeof props?.texts?.title === 'string'\n                        ? props?.texts?.title\n                        : props?.texts?.title?.contain,\n            },\n            tags: {\n                pretitle: props?.texts?.pretitle?.tag,\n                title: props?.texts?.title?.tag,\n            },\n            img: this.getImageResponsive(\n                props?.multimedia?.imagemobile?.[0],\n                false\n            ),\n            imgTexts: {\n                pretitle: props?.multimedia?.imagemobile?.[0].pretitle,\n                title: props?.multimedia?.imagemobile?.[0].title,\n            },\n            button: Utils.mapButtons(props?.buttons)?.[0],\n        } as BabylonTopSliderVideoI;\n    }\n\n    mapTopSliderV2(\n        props: any | undefined,\n        rightSide: boolean = false\n    ): BabylonTopSliderV2I | undefined {\n        return props\n            ? ({\n                  rightSide: rightSide,\n                  buttons: Utils.mapButtons(props?.buttons)?.[0],\n                  items: props?.multimedia?.imagenes?.map(\n                      (item: ImageResponse) =>\n                          ({\n                              title: item.title,\n                              subtitle: item.pretitle,\n                              img: this.getImageResponsive(item),\n                          }) as BabylonSlider4colLabels\n                  ),\n                  labels: {\n                      title: props?.texts?.title,\n                      subtitle: props?.texts?.pretitle,\n                      pretitle: props?.texts?.text,\n                      description: props?.texts?.description,\n                      text: props?.texts?.text,\n                  },\n              } as BabylonTopSliderV2I)\n            : undefined;\n    }\n\n    mapInfoImg(\n        props: any | undefined,\n        rightSide: boolean = false,\n        textColor: string | undefined,\n        identifier: string | undefined\n    ): BabylonInfoImgI | undefined {\n        return {\n            identifier: identifier,\n            rightSide: rightSide,\n            title:\n                typeof props?.texts?.title === 'string'\n                    ? props?.texts?.title\n                    : props?.texts?.title?.contain,\n            pretitle:\n                typeof props?.texts?.pretitle === 'string'\n                    ? props?.texts?.pretitle\n                    : props?.texts?.pretitle?.contain,\n            buttons: props?.buttons\n                ? Utils.mapButtons(\n                      props?.buttons?.filter(\n                          (link: any) => link?.linkValue !== null\n                      )\n                  )\n                : undefined,\n            description:\n                typeof props?.texts?.description === 'string'\n                    ? props?.texts?.description\n                    : props?.texts?.description?.contain,\n            text:\n                typeof props?.texts?.subtitle === 'string'\n                    ? props?.texts?.subtitle\n                    : props?.texts?.subtitle?.contain,\n            ndtitle:\n                typeof props?.texts?.ndtitle === 'string'\n                    ? props?.texts?.ndtitle\n                    : props?.texts?.ndtitle?.contain,\n            lessBtn: props?.texts?.seeLess,\n            moreBtn: props?.texts?.seeMore,\n            images: this.getArrayImageResponsive(\n                props?.multimedia?.imagenes,\n                false\n            ),\n            advantages: props?.Ventajas?.filter(\n                (item: any) => item?.title || item?.text\n            )?.map((item: any) => ({\n                title: item.title,\n                text: item.text,\n                icon: item.icon ? `icon-${item.icon}` : undefined,\n            })),\n            logo: this.getImageResponsive(props?.multimedia?.logo?.[0], false),\n            advTitle:\n                typeof props?.texts?.text === 'string'\n                    ? props?.texts?.text\n                    : props?.texts?.text?.contain,\n            topBG: this.getImageResponsive(\n                props?.multimedia?.topbg?.[0],\n                false\n            ),\n            bottomBG: this.getImageResponsive(\n                props?.multimedia?.bottombg?.[0],\n                false\n            ),\n            topColor: props?.texts?.topColor,\n            bottomColor: props?.texts?.BottomColor,\n            textColor: textColor,\n            tags: {\n                pretitle: props?.texts?.pretitle?.tag,\n                title: props?.texts?.title?.tag,\n                text: props?.texts?.subtitle?.tag,\n                description: props?.texts?.description?.tag,\n                ndtitle: props?.texts?.ndtitle?.tag,\n                advTitle: props?.texts?.text?.tag,\n            },\n            textColors: {\n                pretitle: props?.texts?.pretitle?.color?.trim(),\n                title: props?.texts?.title?.color?.trim(),\n                text: props?.texts?.subtitle?.color?.trim(),\n                description: props?.texts?.description?.color?.trim(),\n            },\n        } as BabylonInfoImgI;\n    }\n\n    mapInfoImgSlider(\n        props: any | undefined,\n        rightSide: boolean = false,\n        identifier: string | undefined\n    ): BabylonInfoImgSliderI | undefined {\n        // TODO: add topBG, bottomBG\n        return {\n            identifier: identifier,\n            rightSide: rightSide,\n            topColor: props?.texts?.topColor,\n            bottomColor: props?.texts?.bottomColor,\n            lessBtn: props?.texts?.seeLess,\n            moreBtn: props?.texts?.seeMore,\n            items: props?.multimedia?.imagenes?.map(\n                (item: any) =>\n                    ({\n                        title: item?.title,\n                        pretitle: item?.pretitle,\n                        subtitle: item?.subtitle,\n                        description: item?.description,\n                        ndtitle: item?.nd_title,\n                        image: this.getImageResponsive(item, false),\n                        buttons: Utils.mapButtons(item?.buttons),\n                        links: Utils.mapButtons(item?.links),\n                    }) as BabylonInfoImgSliderItemI\n            ),\n        } as BabylonInfoImgSliderI;\n    }\n\n    mapInfoIntro(props: any | undefined): BabylonInfoIntroI | undefined {\n        return {\n            title:\n                typeof props?.texts?.title === 'string'\n                    ? props?.texts?.title\n                    : props?.texts?.title?.contain,\n            pretitle:\n                typeof props?.texts?.pretitle === 'string'\n                    ? props?.texts?.pretitle\n                    : props?.texts?.pretitle?.contain,\n            description:\n                typeof props?.texts?.description === 'string'\n                    ? props?.texts?.description\n                    : props?.texts?.description?.contain,\n            button: Utils.mapButtons(props?.buttons)?.[0],\n            images: this.getArrayImageResponsive(\n                props?.multimedia?.imagenes,\n                false\n            ),\n            topBG: this.getImageResponsive(\n                props?.multimedia?.topbg?.[0],\n                false\n            ),\n            bottomBG: this.getImageResponsive(\n                props?.multimedia?.bottombg?.[0],\n                false\n            ),\n            topColor: props?.texts?.topColor,\n            bottomColor: props?.texts?.BottomColor,\n            logo: this.getImageResponsive(props?.multimedia?.logo?.[0], false),\n            logo2: this.getImageResponsive(\n                props?.multimedia?.logo2?.[0],\n                false\n            ),\n            tags: {\n                pretitle: props?.texts?.pretitle?.tag,\n                title: props?.texts?.title?.tag,\n                description: props?.texts?.description?.tag,\n            },\n            textColors: {\n                pretitle: props?.texts?.pretitle?.color?.trim(),\n                title: props?.texts?.title?.color?.trim(),\n                description: props?.texts?.description?.color?.trim(),\n            },\n            buttonModal: props?.texts?.popupmodal,\n        } as BabylonInfoIntroI;\n    }\n\n    mapHeader(\n        props: any | undefined,\n        menu: any,\n        header: any | undefined\n    ):\n        | BabylonHeaderBookShowI\n        | BabylonHeaderClearI\n        | BabylonHeaderMenuCenterI\n        | BabylonHeaderMenuLogoCenterI\n        | BabylonHeaderMenuShowI {\n        const link = menu?.links?.logoLink?.flat()?.[0];\n        const headerButtons = props;\n\n        if (headerButtons) {\n            this.floatingButtons = {\n                texts: [\n                    {\n                        icon: `babylon-${headerButtons.texts?.transferIcon}`,\n                        label: headerButtons?.texts?.transfer,\n                    },\n                    {\n                        icon: `babylon-${headerButtons.texts?.checkinIcon}`,\n                        label: headerButtons?.texts?.checkin,\n                    },\n                    {\n                        icon: `babylon-${headerButtons.texts?.whatsapp}`,\n                        label: headerButtons?.texts?.whatsapp,\n                    },\n                ],\n                textsButtons: {\n                    menuText:\n                        headerButtons?.texts?.menutext ??\n                        headerButtons?.texts?.menuText,\n                    booktext:\n                        headerButtons?.texts?.booktext ??\n                        headerButtons?.texts?.bookNow,\n                    agenciaText: headerButtons?.texts?.agencia,\n                    language: headerButtons?.texts?.language,\n                    newsletter: headerButtons?.texts?.newsletter,\n                    shop: headerButtons?.texts?.shop,\n                    whatsapp: headerButtons?.texts?.whatsapp,\n                },\n                links: Utils.mapButtons(headerButtons?.links),\n                userLink: Utils.mapButtons(headerButtons?.links?.userLink?.[0]),\n            } as BabylonFloatingButtonsI;\n        }\n\n        return {\n            headerFixed: false,\n            texts: header?.texts,\n            floatingButtons: this.floatingButtons,\n            lang: this.siteSvc.selectedLanguageInstant?.locate?.toUpperCase(),\n            btnBook: { label: headerButtons?.texts?.bookNow },\n            shop: headerButtons?.texts?.shop\n                ? `icon-${headerButtons?.texts?.shop}`\n                : undefined,\n            news: headerButtons?.texts?.newsletter\n                ? `icon-${headerButtons?.texts?.newsletter}`\n                : undefined,\n            links: Utils.mapButtons(headerButtons?.links),\n            userLink: Utils.mapButtons(headerButtons?.links?.userLink?.[0]),\n            linkLogo: {\n                label: link?.label,\n                url: link?.linkValue,\n                linkType: link?.linkType,\n            },\n            menu: menu?.nav?.map(\n                (menu: any) =>\n                    ({\n                        name: menu?.name,\n                        url: menu?.linkValue,\n                        vars: menu?.linkVars,\n                        linkType: menu?.linkType,\n                        label: menu?.translations?.[0]?.name\n                            ? menu?.translations?.[0]?.name\n                            : menu?.name,\n                        children: menu?.children?.map(\n                            (child: any) =>\n                                ({\n                                    name: child?.name,\n                                    url: child?.linkValue,\n                                    vars: menu?.linkVars,\n                                    linkType: child?.linkType,\n                                    label: child?.translations?.[0]?.name\n                                        ? child?.translations?.[0]?.name\n                                        : child?.name,\n                                }) as BabylonButtonI\n                        ),\n                        order: menu?.order,\n                    }) as BabylonMenuButtonI\n            ),\n            menuInfo: this.mapMenu(menu, undefined),\n        } as\n            | BabylonHeaderBookShowI\n            | BabylonHeaderClearI\n            | BabylonHeaderMenuCenterI\n            | BabylonHeaderMenuLogoCenterI\n            | BabylonHeaderMenuShowI;\n    }\n\n    //TODO: Wait for back info\n    mapMenu(\n        props: any | undefined,\n        socialMedia: any | undefined\n    ): BabylonMenuInfoI {\n        const links = Utils.mapButtons(\n            props?.nav?.map((link: any) => ({\n                ...link,\n                label: link.translations?.[0]?.name,\n            }))\n        );\n\n        const contact = (() => {\n            const raw = Utils.mapButtons(props?.links?.contact?.[0]); // p.ej. [undefined, undefined]\n            const links = Array.isArray(raw) ? raw.filter(Boolean) : undefined;\n\n            const rawTitle =\n                typeof props?.texts?.contactTitle === 'string'\n                    ? props?.texts?.contactTitle\n                    : props?.texts?.contactTitle?.contain;\n\n            const title =\n                typeof rawTitle === 'string' && rawTitle.trim().length\n                    ? rawTitle.trim()\n                    : undefined;\n\n            if (!links?.length && !title) return undefined;\n\n            return {\n                ...(links?.length ? { links } : {}),\n                ...(title ? { title } : {}),\n            };\n        })();\n        return {\n            links: links?.slice(0, 6),\n            bottomLinks: links?.slice(6),\n            address: {\n                address: props?.address?.[0]?.address,\n                city: props?.address?.[0]?.city,\n                country: props?.address?.[0]?.country,\n                cp: props?.address?.[0]?.cp,\n                title:\n                    typeof props?.texts?.addressTitle === 'string'\n                        ? props?.texts?.addressTitle\n                        : props?.texts?.addressTitle?.contain,\n                province: props?.address?.[0]?.province,\n                url: props?.address?.[0]?.link,\n                links: {\n                    url: props?.address?.[0]?.link,\n                    linkType: 'external',\n                },\n            },\n            contact: contact,\n            socialMedia: socialMedia?.map(\n                (item: any) =>\n                    ({\n                        icon: `babylon-${item.name?.toLowerCase()}`,\n                        url: item.url,\n                    }) as BabylonButtonI\n            ),\n            img: this.getImageResponsive(\n                props?.multimedia?.imagen?.[0] ??\n                    props?.multimedia?.imagenes?.[0],\n                false\n            ),\n            imgBackground: this.getImageResponsive(\n                props?.multimedia?.background?.[0],\n                false\n            ),\n            linkLogo: {\n                url: props?.links?.logoLink?.[0]?.linkValue,\n                linkType: props?.links?.logoLink?.[0]?.linkType,\n            },\n            tags: {\n                contactTitle: props?.texts?.contactTitle?.tag,\n                addressTitle: props?.texts?.addressTitle?.tag,\n            },\n            textColors: {\n                contactTitle: props?.texts?.contactTitle?.color?.trim(),\n                addressTitle: props?.texts?.addressTitle?.color?.trim(),\n            },\n            imgs: this.getArrayImageResponsive(\n                props?.multimedia?.imagenes,\n                false\n            ),\n        } as BabylonMenuInfoI;\n    }\n\n    mapInfo2img(\n        props: any | undefined,\n        rightSide: boolean = false\n    ): BabylonInfo2imgI | undefined {\n        return {\n            rightSide: rightSide,\n            tags: {\n                pretitle: props?.texts?.pretitle?.tag,\n                title: props?.texts?.title?.tag,\n            },\n            texts: {\n                pretitle:\n                    typeof props?.texts?.pretitle === 'string'\n                        ? props?.texts?.pretitle\n                        : props?.texts?.pretitle?.contain,\n                title:\n                    typeof props?.texts?.title === 'string'\n                        ? props?.texts?.title\n                        : props?.texts?.title?.contain,\n                text: props?.texts?.text,\n                item1: props?.texts?.item1,\n                item1Text: props?.texts?.item1Text,\n            },\n            button: Utils.mapButtons(props?.buttons),\n            images: this.getArrayImageResponsive(\n                props?.multimedia?.imagenes,\n                false\n            ),\n            imagessmall: this.getArrayImageResponsive(\n                props?.multimedia?.imagessmall,\n                false\n            ),\n            advantages: props?.Ventajas?.map((item: any) => ({\n                title: item.title,\n                text: item.text,\n                icon: `icon-${item.icon}`,\n            })),\n        } as BabylonInfo2imgI;\n    }\n\n    mapInfo2colimg(\n        props: any | undefined,\n        rightSide: boolean = false\n    ): BabylonInfo2ColImgI | undefined {\n        return {\n            rightSide: rightSide,\n            text: props?.texts?.text,\n            pretitle: props?.texts?.pretitle,\n            subtitle: props?.texts?.subtitle,\n            title: props?.texts?.title,\n            smallimage: this.getArrayImageResponsive(\n                props?.multimedia?.smallimage,\n                false\n            ),\n            items: props?.multimedia?.imagenes?.map((item: any) => ({\n                title: item?.title,\n                description: item?.description,\n                img: this.getImageResponsive(item, false),\n                buttons: Utils.mapButtons(item?.buttons),\n            })),\n        } as BabylonInfo2ColImgI;\n    }\n\n    mapZigzag(\n        props: any | undefined,\n        rightSide: boolean = false,\n        identifier: string | undefined\n    ): BabylonInfo2imgI | undefined {\n        let images: (string | BabylonImageI)[] | undefined = [];\n        let texts, tags;\n        if (props?.multimedia?.imagenes) {\n            images = this.getArrayImageResponsive(\n                props?.multimedia?.imagenes,\n                false\n            );\n            texts = {\n                pretitle:\n                    props?.texts?.pretitle?.contain ??\n                    (typeof props?.texts?.pretitle == 'string'\n                        ? props?.texts?.pretitle\n                        : undefined),\n                title:\n                    props?.texts?.title?.contain ??\n                    (typeof props?.texts?.title == 'string'\n                        ? props?.texts?.title\n                        : undefined),\n                contenttitle:\n                    props?.texts?.contenttitle?.contain ??\n                    props?.texts?.contenttitle,\n                contentsubtitle:\n                    props?.texts?.contentsubtitle?.contain ??\n                    props?.texts?.contentsubtitle,\n                contentdescription:\n                    props?.texts?.contentdescription?.contain ??\n                    props?.texts?.contentdescription,\n                logo: this.getImageResponsive(\n                    props?.multimedia?.logo?.[0],\n                    false\n                ),\n                icons: props?.Ventajas?.filter(\n                    (item: any) => item?.title || item?.text\n                )?.map((item: any) => ({\n                    title: item.title,\n                    text: item.text,\n                    icon: item.icon ? `icon-${item.icon}` : '',\n                })),\n                iconTitle:\n                    props?.texts?.icontitle?.contain ?? props?.texts?.icontitle,\n            };\n            tags = {\n                pretitle: props?.texts?.pretitle?.tag,\n                title: props?.texts?.title?.tag,\n                contenttitle: props?.texts?.contenttitle?.tag,\n                contentsubtitle: props?.texts?.contentsubtitle?.tag,\n                contentdescription: props?.texts?.contentdescription?.tag,\n                iconTitle: props?.texts?.icontitle?.tag,\n            };\n        }\n        return {\n            rightSide: rightSide,\n            buttons: Utils.mapButtons(\n                props?.buttons.filter((btn: any) => !!btn?.linkValue)\n            ),\n            texts,\n            images,\n            tags,\n            identifier: identifier,\n        } as BabylonInfo2imgI;\n    }\n\n    mapGridGallery(props: any | undefined): BabylonInfoImgI | undefined {\n        const isInEnum = <T extends Record<string, string>>(\n            enumObj: T,\n            value: any\n        ): value is T[keyof T] => Object.values(enumObj).includes(value);\n        return {\n            pretitle: props?.texts?.pretitle,\n            title: props?.texts?.title,\n            text: props?.texts?.text,\n            hover: props?.texts?.hover,\n            placeholder: props?.texts?.placeholder,\n            button: Utils.mapButtons(props?.buttons),\n            view: isInEnum(ViewsType, props?.multimedia?.view)\n                ? props?.multimedia?.view\n                : undefined,\n            images: this.getArrayImageResponsive(\n                props?.multimedia?.imagenes,\n                false\n            ),\n        } as BabylonInfoImgI;\n    }\n\n    mapInfoGrid(props: any | undefined): BabylonInfoGridI | undefined {\n        return {\n            pretitle:\n                typeof props?.texts?.pretitle === 'string'\n                    ? props?.texts?.pretitle\n                    : props?.texts?.pretitle?.contain,\n            title:\n                typeof props?.texts?.title === 'string'\n                    ? props?.texts?.title\n                    : props?.texts?.title?.contain,\n            tags: {\n                pretitle: props?.texts?.pretitle?.tag,\n                title: props?.texts?.title?.tag,\n            },\n            text: props?.texts?.text,\n            buttons: Utils.mapButtons(\n                props?.buttons.filter((btn: any) => !!btn?.linkValue)\n            ),\n            items: props?.multimedia?.imagenes?.map(\n                (item: any) =>\n                    ({\n                        pretitle: item?.pretitle,\n                        title: item?.title,\n                        text: item?.description,\n                        image: this.getImageResponsive(item, false),\n                        buttons: item.buttons\n                            ? Utils.mapButtons(\n                                  item.buttons.filter(\n                                      (link: any) => link?.linkValue !== null\n                                  )\n                              )\n                            : undefined,\n                        links: item.links\n                            ? Utils.mapButtons(\n                                  item.links.filter(\n                                      (link: any) => link?.linkValue !== null\n                                  )\n                              )?.[0]\n                            : undefined,\n                    }) as BabylonInfoGridItemI\n            ),\n        } as BabylonInfoGridI;\n    }\n\n    mapBannerGallery(\n        props: any | undefined\n    ): BabylonBannerGalleryI | undefined {\n        return {\n            pretitle:\n                typeof props?.texts?.pretitle === 'string'\n                    ? props?.texts?.pretitle\n                    : props?.texts?.pretitle?.contain,\n            title:\n                typeof props?.texts?.title === 'string'\n                    ? props?.texts?.title\n                    : props?.texts?.title?.contain,\n            tags: {\n                pretitle: props?.texts?.pretitle?.tag,\n                title: props?.texts?.title?.tag,\n            },\n            hover: props?.texts?.hover,\n            button: Utils.mapButtons(props?.buttons),\n            images: this.getArrayImageResponsive(\n                props?.multimedia?.imagenes,\n                false\n            ),\n        } as BabylonBannerGalleryI;\n    }\n\n    mapBannerNewsletter(\n        props: any | undefined,\n        identifier: string | undefined\n    ): BabylonBannerNewsletterI | undefined {\n        return {\n            pretitle: props?.texts?.pretitle,\n            title: props?.texts?.title,\n            text: props?.texts?.text,\n            hover: props?.texts?.hover,\n            placeholder: props?.texts?.placeholder,\n            button: Utils.mapButtons(props?.buttons),\n            image: this.getImageResponsive(\n                props?.multimedia?.imagenes?.[0] ??\n                    props?.multimedia?.image?.[0],\n                false\n            ),\n            identifier: identifier,\n            icon: props?.texts?.mailIcon,\n        } as BabylonBannerNewsletterI;\n    }\n\n    mapSliderColl2(\n        props: any | undefined,\n        rightSide: boolean = false\n    ): BabylonTopSliderV2I | undefined {\n        return props\n            ? ({\n                  rightSide: rightSide,\n                  buttons: Utils.mapButtons(props?.buttons)?.[0],\n                  images: props?.multimedia?.imagenes?.map(\n                      (item: ImageResponse) =>\n                          ({\n                              pretitle: item.pretitle,\n                              title: item.title,\n                              subtitle: item.subtitle,\n                              image: this.getImageResponsive(item, false),\n                              links: Utils.mapButtons(item?.links),\n                          }) as BabylonSlider2ColItemI\n                  ),\n                  labels: {\n                      title:\n                          typeof props?.texts?.title === 'string'\n                              ? props?.texts?.title\n                              : props?.texts?.title?.contain,\n                      pretitle:\n                          typeof props?.texts?.pretitle === 'string'\n                              ? props?.texts?.pretitle\n                              : props?.texts?.pretitle?.contain,\n                  },\n                  tags: {\n                      pretitle: props?.texts?.pretitle?.tag,\n                      title: props?.texts?.title?.tag,\n                  },\n              } as BabylonTopSliderV2I)\n            : undefined;\n    }\n\n    mapSliderColl(\n        props: any | undefined,\n        identifier: string | undefined\n    ): BabylonTopSliderV2I | undefined {\n        let images: (string | BabylonImageI)[] | undefined = [];\n        if (props?.multimedia?.imagenes) {\n            images = props?.multimedia?.imagenes?.map((item: ImageResponse) => {\n                const imageResponse = this.getImageResponsive(item, false);\n                return {\n                    identifier: identifier,\n                    pretitle: item?.pretitle,\n                    title: item?.title,\n                    subtitle: item?.subtitle,\n                    description: item?.description,\n                    src:\n                        typeof imageResponse === 'object'\n                            ? imageResponse.src\n                            : imageResponse,\n                    alt:\n                        typeof imageResponse === 'object'\n                            ? imageResponse.alt\n                            : undefined,\n                    buttons: Utils.mapButtons(\n                        item?.buttons?.filter(\n                            (btn: any) => btn?.linkValue !== null || undefined\n                        )\n                    ),\n                    links: Utils.mapButtons(\n                        item?.links?.filter(\n                            (btn: any) => btn.linkValue !== null || undefined\n                        )\n                    ),\n                } as BabylonImageI;\n            });\n        }\n        if (props?.multimedia?.images) {\n            images = props?.multimedia?.images?.map((item: ImageResponse) => {\n                const imageResponse = this.getImageResponsive(item, false);\n                return {\n                    identifier: identifier,\n                    pretitle: item?.pretitle,\n                    title: item?.title,\n                    subtitle: item?.subtitle,\n                    description: item?.description,\n                    src:\n                        typeof imageResponse === 'object'\n                            ? imageResponse.src\n                            : imageResponse,\n                    alt:\n                        typeof imageResponse === 'object'\n                            ? imageResponse.alt\n                            : undefined,\n                    buttons: Utils.mapButtons(\n                        item?.buttons?.filter(\n                            (btn: any) => btn?.linkValue !== null || undefined\n                        )\n                    ),\n                    links: Utils.mapButtons(\n                        item?.buttons?.filter(\n                            (btn: any) => btn?.linkValue !== null || undefined\n                        )\n                    ),\n                } as BabylonImageI;\n            });\n        }\n        return props\n            ? ({\n                  images: images,\n                  labels: {\n                      pretitle:\n                          typeof props?.texts?.pretitle === 'string'\n                              ? props?.texts?.pretitle\n                              : props?.texts?.pretitle?.contain,\n                      title:\n                          typeof props?.texts?.title === 'string'\n                              ? props?.texts?.title\n                              : props?.texts?.title?.contain,\n                  },\n                  topBG: this.getImageResponsive(\n                      props?.multimedia?.topbg?.[0],\n                      false\n                  ),\n                  bottomBG: this.getImageResponsive(\n                      props?.multimedia?.bottombg?.[0],\n                      false\n                  ),\n                  topColor: props?.texts?.topColor,\n                  bottomColor: props?.texts?.BottomColor,\n                  tags: {\n                      pretitle: props?.texts?.pretitle?.tag,\n                      title: props?.texts?.title?.tag,\n                  },\n                  identifier: identifier,\n              } as BabylonTopSliderV2I)\n            : undefined;\n    }\n\n    mapItemsGrid(props: any | undefined): BabylonItemsGridI | undefined {\n        return props\n            ? ({\n                  images: props?.multimedia?.imagenes?.map(\n                      (item: ImageResponse) => {\n                          const imageResponse = this.getImageResponsive(\n                              item,\n                              false\n                          );\n                          return {\n                              pretitle: item?.pretitle,\n                              title: item?.title,\n                              subtitle: item?.subtitle,\n                              description: item?.description,\n                              src:\n                                  typeof imageResponse === 'object'\n                                      ? imageResponse.src\n                                      : imageResponse,\n                              alt:\n                                  typeof imageResponse === 'object'\n                                      ? imageResponse.alt\n                                      : undefined,\n                              buttons: Utils.mapButtons(\n                                  item?.buttons?.filter(\n                                      (btn: any) => btn?.linkValue !== null\n                                  )\n                              ),\n                              links: Utils.mapButtons(\n                                  item?.links?.filter(\n                                      (btn: any) => btn.linkValue !== null\n                                  )\n                              ),\n                          } as BabylonImageI;\n                      }\n                  ),\n                  labels: {\n                      title: props?.texts?.title,\n                      pretitle: props?.texts?.pretitle,\n                  },\n                  buttons: Utils.mapButtons(\n                      props?.buttons?.filter(\n                          (btn: any) => btn?.linkValue !== null\n                      )\n                  ),\n              } as BabylonItemsGridI)\n            : undefined;\n    }\n\n    mapRoom(props: any | undefined): BabylonInfo2imgI | undefined {\n        return {\n            button: Utils.mapButtons(props?.buttons),\n            texts: {\n                pretitle: props?.texts?.pretitle,\n                title: props?.texts?.title,\n            },\n            rooms: props?.rooms?.map(\n                (item: any) =>\n                    ({\n                        button: Utils.mapButtons(item?.buttons),\n                        links: Utils.mapButtons(item?.links),\n                        images: item.multimedia\n                            ?.filter((img: ImageResponse) => img.cover)\n                            ?.map(\n                                (img: ImageResponse) =>\n                                    ({\n                                        pretitle: img.pretitle,\n                                        title: img.title,\n                                        subtitle: img.subtitle,\n                                        src: this.getImageResponsive(img),\n                                    }) as BabylonImageI\n                            ),\n                        texts: {\n                            name: item.texts?.name,\n                            description: item.texts?.description,\n                            additional1: item.texts?.additional1,\n                            additional2: item.texts?.additional2,\n                            additional3: item.texts?.additional3,\n                            additional4: item.texts?.additional4,\n                        },\n                        services: item?.services\n                            ?.filter((item: any) =>\n                                item?.type\n                                    ?.split(',')\n                                    .map((v: string) => v.trim())\n                                    .includes(RoomServiceType.characteristics)\n                            )\n                            ?.map((item: any) => ({\n                                name: item.name,\n                                icon: `icon-${item.class}`,\n                            })),\n                    }) as BabylonRoomInfoI\n            ),\n        } as BabylonInfo2imgI;\n    }\n\n    mapRoomsGrid(props: any | undefined): BabylonRoomsGridI | undefined {\n        let rooms = props?.rooms\n            ?.map(\n                (item: any) =>\n                    ({\n                        buttons: Utils.mapButtons(\n                            item?.buttons?.filter((btn: any) =>\n                                btn?.linkType?.includes('internal')\n                            )\n                        ),\n                        order: item?.order,\n                        links: Utils.mapButtons(item?.links),\n                        images: item.multimedia\n                            ?.filter((img: ImageResponse) =>\n                                img.tags?.some(\n                                    (tag) => tag.name === 'RoomsGrid'\n                                )\n                            )\n                            ?.map(\n                                (img: ImageResponse) =>\n                                    ({\n                                        pretitle: img.pretitle,\n                                        title: img.title,\n                                        subtitle: img.subtitle,\n                                        src: this.getImageResponsive(\n                                            img.tags?.some(\n                                                (tag) =>\n                                                    tag.name === 'RoomsGrid'\n                                            )\n                                                ? img\n                                                : undefined\n                                        ),\n                                        tag: img.tags?.find(\n                                            (tag: any) => tag?.filterable\n                                        )?.name,\n                                    }) as BabylonImageI\n                            )\n                            ?.slice(0, 1),\n                        texts: {\n                            name: item.texts?.name,\n                            description: item.texts?.description,\n                            additional1: item.texts?.additional1,\n                            additional2: item.texts?.additional2,\n                            additional3: item.texts?.additional3,\n                            additional4: item.texts?.additional4,\n                        },\n                        services: item?.services\n                            ?.filter((item: any) =>\n                                item?.type\n                                    ?.split(',')\n                                    .map((v: string) => v.trim())\n                                    .includes(RoomServiceType.characteristics)\n                            )\n                            ?.map((item: any) => ({\n                                name: item.name,\n                                icon: `icon-${item.class}`,\n                            })),\n                    }) as BabylonRoomInfoI\n            )\n            .sort((a: BabylonRoomsListItem, b: BabylonRoomsListItem) => {\n                return (a.order ?? 0) - (b.order ?? 0);\n            });\n        return {\n            button: Utils.mapButtons(props?.buttons)?.[0],\n            labels: {\n                pretitle:\n                    typeof props?.texts?.pretitle === 'string'\n                        ? props?.texts?.pretitle\n                        : props?.texts?.pretitle?.contain,\n                title:\n                    typeof props?.texts?.title === 'string'\n                        ? props?.texts?.title\n                        : props?.texts?.title?.contain,\n            },\n            rooms: props?.buttons ? rooms?.slice(0, 5) : rooms,\n            tags: {\n                pretitle: props?.texts?.pretitle?.tag,\n                title: props?.texts?.title?.tag,\n            },\n        } as BabylonRoomsGridI;\n    }\n\n    mapRoomsSlider(props: any | undefined): BabylonRoomsSliderI | undefined {\n        return {\n            button: Utils.mapButtons(props?.buttons),\n            texts: {\n                pretitleContain: {\n                    tag: props?.texts?.pretitle?.tag,\n                    content: props?.texts?.pretitle?.contain,\n                },\n                titleContain: {\n                    tag: props?.texts?.title?.tag,\n                    content: props?.texts?.title?.contain,\n                },\n            },\n            pretitle:\n                typeof props?.texts?.pretitle === 'string'\n                    ? props?.texts?.pretitle\n                    : props?.texts?.pretitle?.contain,\n            title:\n                typeof props?.texts?.title === 'string'\n                    ? props?.texts?.title\n                    : props?.texts?.title?.contain,\n\n            tags: {\n                pretitle: props?.texts?.pretitle?.tag,\n                title: props?.texts?.title?.tag,\n            },\n            rooms: props?.rooms\n                ?.filter(\n                    (room: any, index: number, self: any[]) =>\n                        self.findIndex((r) => r.id === room.id) === index\n                )\n                ?.map(\n                    (item: any) =>\n                        ({\n                            buttons: Utils.mapButtons(\n                                item?.buttons?.slice().reverse()\n                            ),\n                            links: Utils.mapButtons(item?.links),\n                            images: [\n                                this.getImageResponsive(\n                                    item?.multimedia?.find(\n                                        (img: any) => img?.cover\n                                    ) || item?.multimedia?.[0],\n                                    false\n                                ),\n                            ],\n                            texts: {\n                                name: item.texts?.name,\n                                description: item.texts?.description,\n                                additional1: item.texts?.additional1,\n                                additional2: item.texts?.additional2,\n                                additional3: item.texts?.additional3,\n                                additional4: item.texts?.additional4,\n                            },\n                            order: item?.order,\n                            equipments:\n                                item?.services\n                                    ?.filter((svc: any) => {\n                                        const types =\n                                            typeof svc.type === 'string'\n                                                ? svc.type\n                                                      .split(',')\n                                                      .map((t: string) =>\n                                                          t.trim()\n                                                      )\n                                                : [];\n\n                                        const hasCharacteristic =\n                                            types.includes(\n                                                RoomServiceType.characteristics\n                                            );\n                                        const hasClass =\n                                            !!svc.class &&\n                                            svc.class.toString().trim() !== '';\n\n                                        return hasCharacteristic && hasClass;\n                                    })\n                                    ?.map((svc: any) => ({\n                                        name: svc.name,\n                                        icon: `icon-${svc.class}`,\n                                    })) ?? [],\n                        }) as BabylonRoomInfoI\n                )\n                .sort((a: BabylonRoomsListItem, b: BabylonRoomsListItem) => {\n                    return (a.order ?? 0) - (b.order ?? 0);\n                }),\n        } as BabylonRoomsSliderI;\n    }\n\n    mapOfferSlider(props: any | undefined): BabylonOfferSliderI | undefined {\n        return {\n            pretitle: props?.texts?.pretitle,\n            title: props?.texts?.title,\n            backgroundImage: this.getImageResponsive(\n                props?.multimedia?.backgroundimagenes?.[0] ||\n                    props?.multimedia?.backgroundimage?.[0],\n                false\n            ),\n            offers: props?.offers?.map(\n                (item: any) =>\n                    ({\n                        applicationFrom: item?.applicationFrom,\n                        applicationTo: item?.applicationTo,\n                        button: Utils.mapButtons(item?.buttons),\n                        currency: item?.currency,\n                        discount: item?.discount,\n                        price: item?.price,\n                        links: Utils.mapButtons(item?.links),\n                        images: this.getImageResponsive(\n                            item?.multimedia?.[0],\n                            false\n                        ),\n                        name: item?.name,\n                        texts: {\n                            title: item.texts?.title,\n                            subtitle: item.texts?.subtitle,\n                            description: item.texts?.description,\n                            additional1: item.texts?.additional1,\n                            additional2: item.texts?.additional2,\n                            additional3: item.texts?.additional3,\n                            conditions: item.texts?.conditions,\n                            url: item.texts?.reservationUrl,\n                        } as BabylonTextInfoI,\n                        url: item?.url,\n                        visibleFrom: item?.visibleFrom,\n                        visibleTo: item?.visibleTo,\n                    }) as BabylonOfferI\n            ),\n        } as BabylonOfferSliderI;\n    }\n    //---- LAYOUT COMPONENTS END----//\n\n    mapThanks(props: any | undefined): BabylonThanksI {\n        return {\n            title: props?.texts?.title,\n            description: props?.texts?.description,\n            pretitle: props?.texts?.pretitle,\n            button: Utils.mapButtons(props?.buttons)?.[0],\n        } as BabylonThanksI;\n    }\n\n    mapContactForm(\n        props: any | undefined,\n        ndProps: any | undefined,\n        ndPropsConsult: any | undefined\n    ): BabylonContactFormI | undefined {\n        return {\n            pretitle:\n                typeof props?.texts?.pretitle === 'string'\n                    ? props?.texts?.pretitle\n                    : props?.texts?.pretitle?.contain,\n            title:\n                typeof props?.texts?.title === 'string'\n                    ? props?.texts?.title\n                    : props?.texts?.title?.contain,\n            description:\n                typeof props?.texts?.description === 'string'\n                    ? props?.texts?.description\n                    : props?.texts?.description?.contain,\n            subtitle:\n                typeof props?.texts?.subtitle === 'string'\n                    ? props?.texts?.subtitle\n                    : props?.texts?.subtitle?.contain,\n            tags: {\n                pretitle: props?.texts?.pretitle?.tag,\n                title: props?.texts?.title?.tag,\n                description: props?.texts?.description?.tag,\n                subtitle: props?.texts?.subtitle?.tag,\n            },\n            texts: props?.texts,\n            button: Utils.mapButtons(props?.buttons)?.[0],\n            textarea: {\n                id: 'mensaje',\n                title: props?.texts?.inputMessage,\n                name: Utils.normalizeText(props?.texts?.inputMessage),\n                placeholder: props?.texts?.inputMessagePlaceHolder,\n                value: '',\n                validators: [Validators.required],\n                error: props?.texts?.errorRequired,\n            },\n            conditions: props?.texts?.conditions,\n            conditions2: props?.texts?.conditions2,\n            dropdown: {\n                title: props?.texts?.dropdownTitle,\n                options: ndPropsConsult?.map(\n                    (prop: any) =>\n                        ({\n                            consultTypeId:\n                                prop.consult_type_id ?? prop.consultTypeId,\n                            code: prop.id,\n                            name: prop.name,\n                        }) as DropdownOption\n                ),\n                placeholder: props?.texts?.dropdownPlaceholder,\n                error: props?.texts?.errorRequired,\n            },\n            hotelDrop:\n                props?.hotels?.length > 1\n                    ? {\n                          title: props?.texts?.hotelDropTitle,\n                          options: props?.hotels?.map(\n                              (prop: any) =>\n                                  ({\n                                      code: prop.id,\n                                      name: prop.name,\n                                  }) as DropdownOption\n                          ),\n                          placeholder: props?.texts?.hotelDropPlaceholder,\n                          error: props?.texts?.errorRequired,\n                      }\n                    : undefined,\n            image: this.getImageResponsive(\n                props?.multimedia?.imagenes?.[0],\n                false\n            ) as string,\n            inputs: [\n                {\n                    id: 'nombre',\n                    title: props?.texts?.inputName,\n                    name: Utils.normalizeText(props?.texts?.inputName),\n                    placeholder: props?.texts?.inputNamePlaceHolder,\n                    value: '',\n                    type: 'text',\n                    error: props?.texts?.errorName,\n                    validators: [Validators.required],\n                    valid: true,\n                },\n                {\n                    id: 'surname',\n                    title:\n                        props?.texts?.inputSurnames ??\n                        props?.texts?.inputlastname,\n                    name: Utils.normalizeText(\n                        props?.texts?.inputSurnames ??\n                            props?.texts?.inputlastname\n                    ),\n                    placeholder:\n                        props?.texts?.inputSurnamesPlaceHolder ??\n                        props?.texts?.inputlastnamePlaceHolder,\n                    value: '',\n                    type: 'text',\n                    error: props?.texts?.errorSurname,\n                    validators: [Validators.required],\n                    valid: true,\n                },\n                {\n                    id: 'email',\n                    title: props?.texts?.inputEmail,\n                    name: Utils.normalizeText(props?.texts?.inputEmail),\n                    placeholder: props?.texts?.inputEmailPlaceHolder,\n                    value: '',\n                    type: 'text',\n                    error: props?.texts?.errorEmail,\n                    validators: [Validators.email, Validators.required],\n                    valid: true,\n                },\n                {\n                    id: 'phone',\n                    title: props?.texts?.inputPhone,\n                    name: Utils.normalizeText(props?.texts?.inputPhone),\n                    placeholder: props?.texts?.inputPhonePlaceHolder,\n                    value: '',\n                    type: 'tel',\n                    error: props?.texts?.errorPhone,\n                    validators: [Validators.required],\n                    valid: true,\n                },\n            ] as BabylonInputI[],\n            info: {\n                address: {\n                    icon: 'icon-' + ndProps?.texts?.addressIcon,\n                    title: ndProps?.texts?.addressTitle,\n                    text: ndProps?.links?.address?.[0]?.[0]?.label,\n                },\n                email: {\n                    icon: 'icon-' + ndProps?.texts?.emailIcon,\n                    title: ndProps?.texts?.emailTitle,\n                    links: Utils.mapButtons(ndProps?.links?.email?.[0])?.map(\n                        (btn) =>\n                            ({\n                                ...btn,\n                                url: `mailto:${btn?.url}l`,\n                            }) as BabylonButtonI\n                    ),\n                },\n                phone: {\n                    icon: 'icon-' + ndProps?.texts?.phoneIcon,\n                    title: ndProps?.texts?.phoneTitle,\n                    links: Utils.mapButtons(ndProps?.links?.phone?.[0])?.map(\n                        (btn) =>\n                            ({\n                                ...btn,\n                                url: `phone:${btn?.url}l`,\n                            }) as BabylonButtonI\n                    ),\n                },\n            },\n        } as BabylonContactFormI;\n    }\n\n    mapContactAddress(\n        props: any | undefined\n    ): BabylonContactAddressI | undefined {\n        const addressSource = props?.hotelAddress ?? props?.address?.[0];\n        return {\n            info: {\n                address: {\n                    icon: 'icon-' + props?.texts?.addressIcon,\n                    title:\n                        typeof props?.texts?.addressTitle === 'string'\n                            ? props?.texts?.addressTitle\n                            : props?.texts?.addressTitle?.contain,\n                    text: [\n                        addressSource?.address,\n                        [addressSource?.cp, addressSource?.city]\n                            .filter(Boolean)\n                            .join(' '),\n                        addressSource?.locality,\n                        [addressSource?.province, addressSource?.country]\n                            .filter(Boolean)\n                            .join(', '),\n                    ]\n                        .filter(Boolean)\n                        .map((part, idx, arr) => {\n                            if (idx === 0) return part + '<br>';\n                            if (idx === 1 && arr[2]) return part + ', ';\n                            if (idx === 1) return part + '<br>';\n                            if (idx === 2) return part + '<br>';\n                            return part;\n                        })\n                        .join(''),\n                    links: [\n                        {\n                            url: addressSource?.link,\n                            linkType: 'external',\n                            label: addressSource?.address,\n                        },\n                    ] as ({ smallText?: string } & BabylonButtonI)[],\n                },\n                email: {\n                    icon: 'icon-' + props?.texts?.emailIcon,\n                    title:\n                        typeof props?.texts?.emailTitle === 'string'\n                            ? props?.texts?.emailTitle\n                            : props?.texts?.emailTitle?.contain ||\n                              addressSource?.email,\n                    links: [\n                        {\n                            url: `mailto:${addressSource?.email}`,\n                            linkType: 'external',\n                            label: addressSource?.email,\n                            smallText: addressSource?.email,\n                        },\n                    ] as ({ smallText?: string } & BabylonButtonI)[],\n                },\n                phone: {\n                    icon: 'icon-' + props?.texts?.reservationsIcon,\n                    title:\n                        typeof props?.texts?.reservationsTitle === 'string'\n                            ? props?.texts?.reservationsTitle\n                            : props?.texts?.reservationsTitle?.contain ||\n                              addressSource?.phone,\n                    links: [\n                        {\n                            url: `tel:${addressSource?.phone}`,\n                            linkType: 'external',\n                            label: addressSource?.phone,\n                            smallText: addressSource?.phone,\n                        },\n                    ] as ({ smallText?: string } & BabylonButtonI)[],\n                },\n            },\n        };\n    }\n\n    mapContactMap(props: any | undefined): BabylonContactMapaI | undefined {\n        return {\n            contentUrl: props?.texts?.phoneIcon,\n            mapImage: this.getImageResponsive(\n                props?.multimedia?.imagenes?.[0],\n                false\n            ),\n            button: Utils.mapButtons(props?.buttons)?.[0],\n            mapImageMobile: this.getImageResponsive(\n                props?.multimedia?.imagenesmobile?.[0],\n                false\n            ),\n        } as BabylonContactMapaI;\n    }\n\n    mapContactHow(props: any | undefined): BabylonContactHowI | undefined {\n        return {\n            title: props?.texts?.title,\n            pretitle: props?.texts?.pretitle,\n            items: props?.Ventajas?.map(\n                (item: any) =>\n                    ({\n                        title: item.title,\n                        description: item.text,\n                        icon: `icon-${item.icon}`,\n                    }) as BabylonContactMapItem\n            ),\n        } as BabylonContactHowI;\n    }\n\n    mapWebmap(props: any | undefined): BabylonWebmapI | undefined {\n        return {\n            links: (\n                props?.pages?.map(\n                    (link: any) =>\n                        ({\n                            label: link.name,\n                            url: link.url,\n                            linkType: 'internal',\n                        }) as BabylonButtonI\n                ) as BabylonButtonI[]\n            ).filter(\n                (link) =>\n                    link.url?.split('/')[1] ===\n                    this.siteSvc.selectedLanguageInstant?.locate\n            ),\n            title:\n                typeof props?.texts?.title === 'string'\n                    ? props?.texts?.title\n                    : props?.texts?.title?.contain,\n            pretitle:\n                typeof props?.texts?.pretitle === 'string'\n                    ? props?.texts?.pretitle\n                    : props?.texts?.pretitle?.contain,\n            image: this.getImageResponsive(\n                props?.multimedia?.imagenes?.[0],\n                false\n            ) as string,\n            tags: {\n                pretitle: props?.texts?.pretitle?.tag,\n                title: props?.texts?.title?.tag,\n            },\n        };\n    }\n\n    mapLegal(props: any | undefined): BabylonLegalI {\n        return {\n            pretitle:\n                typeof props?.texts?.pretitle === 'string'\n                    ? props?.texts?.pretitle\n                    : props?.texts?.pretitle?.contain,\n            title:\n                typeof props?.texts?.title === 'string'\n                    ? props?.texts?.title\n                    : props?.texts?.title?.contain,\n            description:\n                typeof props?.texts?.description === 'string'\n                    ? props?.texts?.description\n                    : props?.texts?.description?.contain,\n            img: this.getImageResponsive(\n                props?.multimedia?.imagenes?.[0],\n                false\n            ),\n            tags: {\n                pretitle: props?.texts?.pretitle?.tag,\n                title: props?.texts?.title?.tag,\n                description: props?.texts?.description?.tag,\n            },\n            textColors: {\n                pretitle: props?.texts?.pretitle?.color?.trim(),\n                title: props?.texts?.title?.color?.trim(),\n                description: props?.texts?.description?.color?.trim(),\n            },\n        } as BabylonLegalI;\n    }\n\n    mapBreadcrumbs(props: any | undefined): BabylonBreadcrumbI {\n        return {\n            links: (props?.items as any[])\n                ?.sort((a, b) => a - b)\n                ?.map(\n                    (item) =>\n                        ({\n                            label: item?.label,\n                            linkType: 'internal',\n                            url: item?.url\n                                ? item?.url?.charAt(item?.url?.length - 1) ===\n                                  '/'\n                                    ? item?.url?.slice(0, -1)\n                                    : item?.url\n                                : undefined,\n                        }) as BabylonButtonI\n                ),\n        } as BabylonBreadcrumbI;\n    }\n\n    mapRoomsCols(props: any | undefined): BabylonRoomsColsI {\n        return {\n            filters: props?.filters?.map((filter: any) => ({\n                placeholder: filter.name,\n                options: filter?.values?.map((option: string) => ({\n                    code: option,\n                    name: option,\n                })),\n                title: filter.name,\n                smalltitle: filter.smalltitle,\n                filterId: filter.filterId,\n            })) as BabylonDropdownI[],\n            stFilters: undefined,\n            ndFilters: undefined,\n            pretitle:\n                typeof props?.texts?.pretitle === 'string'\n                    ? props?.texts?.pretitle\n                    : props?.texts?.pretitle?.contain,\n            title:\n                typeof props?.texts?.title === 'string'\n                    ? props?.texts?.title\n                    : props?.texts?.title?.contain,\n            tags: {\n                pretitle: props?.texts?.pretitle?.tag,\n                title: props?.texts?.title?.tag,\n            },\n            items: props?.rooms\n                ?.map(\n                    (item: any) =>\n                        ({\n                            bedroomFilterId: item?.texts?.beds,\n                            characteristicsFilterId: 0,\n                            links: Utils.mapButtons(item.links),\n                            buttons: Utils.mapButtons(item.buttons),\n                            title: item.texts?.name,\n                            pretitle: item.texts?.additional1,\n                            price: item?.price,\n                            priceText: item.texts?.additional2,\n                            order: item?.order,\n                            equipment: item?.services\n                                ?.filter((item: any) =>\n                                    item?.type\n                                        ?.split(',')\n                                        .map((v: string) => v.trim())\n                                        .includes(\n                                            RoomServiceType.characteristics\n                                        )\n                                )\n                                ?.map(\n                                    (item: any) =>\n                                        ({\n                                            icon: `icon-${item.class}`,\n                                            label: item.name,\n                                        }) as BabylonRoomsListEquipment\n                                ),\n                            img: this.getImageResponsive(\n                                item.multimedia?.find((img: ImageResponse) =>\n                                    img.tags?.some(\n                                        (tag) => tag.name === 'RoomsCols'\n                                    )\n                                        ? img\n                                        : undefined\n                                ) ?? item.multimedia?.[0],\n                                false\n                            ),\n                            images: this.getArrayImageResponsive(\n                                item.multimedia,\n                                false\n                            ),\n                        }) as BabylonRoomsListItem\n                )\n                .sort((a: BabylonRoomsListItem, b: BabylonRoomsListItem) => {\n                    return (a.order ?? 0) - (b.order ?? 0);\n                }),\n        } as BabylonRoomsColsI;\n    }\n\n    mapFeaturesSlider(\n        props: any | undefined\n    ): BabylonFeaturesSliderI | undefined {\n        return {\n            title:\n                typeof props?.texts?.title === 'string'\n                    ? props?.texts?.title\n                    : props?.texts?.title?.contain,\n            pretitle:\n                typeof props?.texts?.pretitle === 'string'\n                    ? props?.texts?.pretitle\n                    : props?.texts?.pretitle?.contain,\n            tags: {\n                pretitle: props?.texts?.pretitle?.tag,\n                title: props?.texts?.title?.tag,\n            },\n            items: props?.Ventajas?.map(\n                (item: any) =>\n                    ({\n                        title: item.title,\n                        description: item.text,\n                        icon: `icon-${item.icon}`,\n                    }) as BabylonFeaturesSliderItem\n            ),\n            button: Utils.mapButtons(props?.buttons)?.[0],\n        } as BabylonFeaturesSliderI;\n    }\n\n    mapBannerInfo(props: any | undefined): BabylonBannerInfoI {\n        return {\n            title: props?.multimedia?.imagenes?.[0]?.title,\n            pretitle: props?.multimedia?.imagenes?.[0]?.pretitle,\n            description: props?.multimedia?.imagenes?.[0]?.description,\n            video: props?.texts?.['Video-link'],\n            button: Utils.mapButtons(props?.multimedia?.imagenes?.[0]?.buttons),\n            image: this.getImageResponsive(\n                props?.multimedia?.imagenes?.[0],\n                false\n            ),\n        } as BabylonBannerInfoI;\n    }\n\n    mapRoomDetail(props: any | undefined): BabylonRoomDetailI | undefined {\n        if (!props?.room) {\n            return undefined;\n        }\n        const { texts, multimedia, buttons } = props?.room;\n        let detailButtons = props.buttons?.length ? props.buttons : buttons;\n        if (buttons.length > 1) {\n            detailButtons = [buttons[0]];\n        }\n        return {\n            title: texts?.name,\n            description:\n                texts?.additional4 !== undefined &&\n                texts?.additional4 !== null &&\n                texts?.additional4 !== ''\n                    ? texts?.additional4\n                    : texts?.description,\n            pretitle: texts?.additional1,\n            equipmentTitle: texts?.additional2,\n            button: Utils.mapButtons(detailButtons)?.[0],\n            items: props?.room?.services\n                ?.filter((item: any) =>\n                    item?.type\n                        ?.split(',')\n                        .map((v: string) => v.trim())\n                        .includes(RoomServiceType.Equipment)\n                )\n                .map((item: any) => ({\n                    title: item?.name,\n                    icon: `icon-${item?.class}`,\n                    description: item?.description,\n                })) as BabylonEquipmentItem[],\n            showLess: props?.texts?.showLess,\n            showMore: props?.texts?.showMore,\n            showAll: props?.texts?.showAll ? false : true,\n            tags: {\n                pretitle: props?.texts?.pretitle?.tag,\n                title: props?.texts?.title?.tag,\n            },\n            roomTexts: texts,\n        } as BabylonRoomDetailI;\n    }\n\n    mapTopSliderThumbs(props: any | undefined): BabylonTopSliderThumbsI {\n        return {\n            title: props?.texts?.title,\n            from: props?.texts?.from,\n            price: props?.texts?.price,\n            currency: props?.texts?.currency,\n            button: Utils.mapButtons(props?.buttons)?.[0],\n            image: props?.multimedia?.imagen?.map((item: ImageResponse) => ({\n                src: this.getImageResponsive(item),\n            })),\n        } as BabylonTopSliderThumbsI;\n    }\n\n    mapRoomsList(props: any | undefined): BabylonRoomsListI {\n        return {\n            stFilters: undefined,\n            ndFilters: undefined,\n            title: props?.texts?.title,\n            pretitle: props?.texts?.pretitle,\n            items: props?.rooms\n                ?.map(\n                    (item: any) =>\n                        ({\n                            bedroomFilterId: 0,\n                            characteristicsFilterId: 0,\n                            links: Utils.mapButtons(item?.links),\n                            buttons: Utils.mapButtons(\n                                item?.buttons?.slice().reverse()\n                            ),\n                            title: item?.texts?.name,\n                            pretitle: item?.texts?.additional1,\n                            description: item?.texts?.description,\n                            price: item?.price,\n                            priceText: item?.texts?.additional2,\n                            equipment: item?.services\n                                ?.filter((item: any) =>\n                                    item?.type\n                                        ?.split(',')\n                                        .map((v: string) => v.trim())\n                                        .includes(\n                                            RoomServiceType.characteristics\n                                        )\n                                )\n                                ?.map(\n                                    (item: any) =>\n                                        ({\n                                            icon: `icon-${item.class}`,\n                                            label: item.name,\n                                        }) as BabylonRoomsListEquipment\n                                ),\n                            img: this.getImageResponsive(\n                                item.multimedia?.find(\n                                    (img: any) => img?.cover\n                                ) || item?.multimedia?.[0],\n                                false\n                            ),\n                            images: this.getArrayImageResponsive(\n                                item.multimedia,\n                                false\n                            ),\n                            order: item?.order,\n                        }) as BabylonRoomsListItem\n                )\n                .sort((a: BabylonRoomsListItem, b: BabylonRoomsListItem) => {\n                    return (a.order ?? 0) - (b.order ?? 0);\n                }),\n        } as BabylonRoomsColsI;\n    }\n\n    mapComingSoon(props: any | undefined): BabylonComingSoonI {\n        return {\n            images: props?.multimedia?.imagenes?.map(\n                (img: ImageResponse) =>\n                    ({\n                        src: this.getImageResponsive(img),\n                    }) as BabylonImageI\n            ),\n            logo: props?.multimedia?.logo?.map(\n                (img: ImageResponse) =>\n                    ({\n                        src: this.getImageResponsive(img),\n                    }) as BabylonImageI\n            )[0],\n            texts: props?.texts,\n            socialMedia: props?.socialMedia,\n            link: Utils.mapButtons(props?.links)?.[0],\n            button: Utils.mapButtons(props?.buttons)?.[0],\n        } as BabylonComingSoonI;\n    }\n\n    mapOfferDetail(props: any | undefined): BabylonOfferDetailI {\n        const offer = props?.offer?.[0];\n        return {\n            pretitle: offer?.texts?.subtitle,\n            title: offer?.texts?.title,\n            description: offer?.texts?.description,\n            ndTitle: offer?.texts?.additional1,\n            labelDiscount: offer?.texts?.additional2,\n            labelFrom: offer?.texts?.additional3,\n            currency: offer?.currency,\n            price: offer?.price,\n            discount: offer?.discount,\n            conditions: offer?.texts?.conditions,\n            conditionsTitle: offer?.texts?.conditionsTitle,\n            additional1: offer?.texts?.additional1,\n            additional2: offer?.texts?.additional2,\n            additional3: offer?.texts?.additional3,\n            image: this.getImageResponsive(offer?.multimedia?.[0], false),\n            multimedia: this.mapImages(offer?.multimedia),\n            link: Utils.mapButtons(props?.links)?.[0],\n            button: Utils.mapButtons(offer?.buttons)?.[0],\n            services: this.mapGlobalServices(offer?.services),\n        } as BabylonOfferDetailI;\n    }\n\n    mapOffersList(\n        props: any | undefined,\n        isHome: boolean | undefined\n    ): BabylonOffersListI {\n        return {\n            title:\n                typeof props?.texts?.title === 'string'\n                    ? props?.texts?.title\n                    : props?.texts?.title?.contain,\n            pretitle:\n                typeof props?.texts?.pretitle === 'string'\n                    ? props?.texts?.pretitle\n                    : props?.texts?.pretitle?.contain,\n            items: props?.offers?.map(\n                (item: any) =>\n                    ({\n                        id: item?.id,\n                        pretitle: item?.texts?.subtitle,\n                        title: item?.texts?.title,\n                        price: item?.price,\n                        currency: item?.currency,\n                        discount: item?.discount,\n                        img: {\n                            src: this.getImageResponsive(item?.multimedia?.[0]),\n                            alt: item?.multimedia?.[0]?.alt,\n                        },\n                        reserveButton: Utils.mapButtons(item?.buttons)?.[0],\n                        seeOfferButton: Utils.mapButtons(item?.links)?.[0],\n                        labelFrom: item?.texts?.additional3,\n                        labelDiscount: item?.texts?.additional2,\n                        home: item?.sites?.[0]?.home,\n                        popup: item?.sites?.[0]?.popup,\n                    }) as BabylonOffersListItem\n            ),\n            placeholderImg: this.getImageResponsive(\n                props?.multimedia?.imagenes?.[0],\n                false\n            ),\n            button: Utils.mapButtons(props?.buttons)?.[0],\n            tags: {\n                pretitle: props?.texts?.pretitle?.tag,\n                title: props?.texts?.title?.tag,\n            },\n            textColors: {\n                pretitle: props?.texts?.pretitle?.color?.trim(),\n                title: props?.texts?.title?.color?.trim(),\n            },\n            isHome: isHome,\n        } as BabylonOffersListI;\n    }\n\n    mapFaq(props: any | undefined): BabylonFaqI {\n        return {\n            pretitle:\n                typeof props?.texts?.pretitle === 'string'\n                    ? props?.texts?.pretitle\n                    : props?.texts?.pretitle?.contain,\n            title:\n                typeof props?.texts?.title === 'string'\n                    ? props?.texts?.title\n                    : props?.texts?.title?.contain,\n            tags: {\n                pretitle: props?.texts?.pretitle?.tag,\n                title: props?.texts?.title?.tag,\n            },\n            items: props?.locationHow\n                ? props?.locationHow?.items?.map(\n                      (faq: any) =>\n                          ({\n                              label: faq.title,\n                              description: faq.description,\n                          }) as BabylonItemI\n                  )\n                : props?.items?.map(\n                      (faq: any) =>\n                          ({\n                              label: faq.title,\n                              description: faq.text,\n                          }) as BabylonItemI\n                  ),\n            img: props?.locationMap\n                ? this.getImageResponsive(\n                      props?.locationMap?.multimedia?.imagenes?.[0],\n                      false\n                  )\n                : this.getImageResponsive(\n                      props?.multimedia?.imagenes?.[0],\n                      false\n                  ),\n        } as BabylonFaqI;\n    }\n\n    mapStaticFooter(props: any | undefined): BabylonStaticFooterI {\n        // Funcion temporal hasta que el back devuelva la lista de hoteles\n        const dynamicHotelsAdresses = () => {\n            const addressesMap: { [key: string]: Partial<BabylonAddressItem> } =\n                {};\n            if (!props?.texts) return;\n            Object.keys(props?.texts).forEach((key) => {\n                if (key.startsWith('addresslist') && props?.texts[key]) {\n                    const match = key.match(/addresslist(\\d+)(.*)/);\n                    if (match) {\n                        const index = match[1];\n                        const field = match[2];\n\n                        if (!addressesMap[index]) {\n                            addressesMap[index] = {\n                                id: parseInt(index, 10).toString(),\n                            };\n                        }\n                        const value = props?.texts[key];\n                        switch (field) {\n                            case 'Title':\n                                addressesMap[index].name = value;\n                                break;\n                            case 'Address':\n                                addressesMap[index].address = value;\n                                addressesMap[index].full_address = value;\n                                break;\n                            case 'Telf':\n                                (addressesMap[index] as any).phone = value;\n                                break;\n                            case 'Email':\n                                (addressesMap[index] as any).email = value;\n                                break;\n                        }\n                    }\n                }\n            });\n            return Object.values(addressesMap) as BabylonAddressItem[];\n        };\n        return {\n            title:\n                typeof props?.texts?.title === 'string'\n                    ? props?.texts?.title\n                    : props?.texts?.title?.contain,\n            ndTitle:\n                typeof props?.texts?.addressTitle === 'string'\n                    ? props?.texts?.addressTitle\n                    : props?.texts?.addressTitle?.contain,\n            rdTitle:\n                typeof props?.texts?.linksTitle === 'string'\n                    ? props?.texts?.linksTitle\n                    : props?.texts?.linksTitle?.contain,\n            thTitle:\n                typeof props?.texts?.locationTitle === 'string'\n                    ? props?.texts?.locationTitle\n                    : (props?.texts?.locationTitle?.contain ??\n                      (typeof props?.texts?.newsletterTitle === 'string'\n                          ? props?.texts?.newsletterTitle\n                          : props?.texts?.newsletterTitle?.contain)),\n\n            fifthTitle:\n                typeof props?.texts?.additionalFooterTitle === 'string'\n                    ? props?.texts?.additionalFooterTitle\n                    : props?.texts?.additionalFooterTitle?.contain,\n            ahTitle:\n                typeof props?.texts?.AddressHotelsTitle === 'string'\n                    ? props?.texts?.AddressHotelsTitle\n                    : props?.texts?.AddressHotelsTitle?.contain,\n            tags: {\n                title: props?.texts?.title?.tag,\n                ndtitle: props?.texts?.addressTitle?.tag,\n                rdtitle: props?.texts?.linksTitle?.tag,\n                thtitle:\n                    props?.texts?.locationTitle?.tag ??\n                    props?.texts?.newsletterTitle?.tag,\n                fifthtitle: props?.texts?.additionalFooterTitle?.tag,\n                copyright: props?.texts?.copyright?.tag,\n                ahtitle: props?.texts?.AddressHotelsTitle?.tag,\n            },\n            frameUrl: !!props?.texts?.frameUrl\n                ? props?.texts?.frameUrl\n                : undefined,\n            contactInfo: Utils.mapButtons(props?.links?.contact?.[0]),\n            contactLinks: Utils.mapButtons(props?.links?.contactLinks?.[0]),\n            footerLinks: Utils.mapButtons(props?.links?.footerLinks?.[0]),\n            address: Array.isArray(props?.address)\n                ? props?.address.map(\n                      (address: any) =>\n                          ({\n                              id: address.id,\n                              name: address.name,\n                              address: address.address,\n                              city: address.city,\n                              province: address.province,\n                              country: address.country,\n                              cp: address.cp,\n                              url: address.link,\n                              full_address: address.fullAddress,\n                          }) as BabylonAddressItem\n                  )\n                : [],\n            addressHotels:\n                Array.isArray(props?.addressHotels) &&\n                props?.addressHotels.length > 0\n                    ? props?.addressHotels.map(\n                          (address: any) =>\n                              ({\n                                  id: address.id,\n                                  name: address.name,\n                                  address: address.address,\n                                  city: address.city,\n                                  province: address.province,\n                                  country: address.country,\n                                  cp: address.cp,\n                                  url: address.link,\n                                  phone: address.phone,\n                                  email: address.email,\n                                  full_address: address.fullAddress,\n                              }) as BabylonAddressItem\n                      )\n                    : (() => {\n                          const dynamicAddresses = dynamicHotelsAdresses();\n                          return dynamicAddresses && dynamicAddresses.length > 0\n                              ? dynamicAddresses\n                              : undefined;\n                      })(),\n            socialMedia: props?.socialMedia?.map(\n                (link: any) =>\n                    ({\n                        icon: `babylon-${link.name?.toLowerCase()}`,\n                        url: link.url,\n                    }) as BabylonButtonI\n            ),\n            copyright:\n                typeof props?.texts?.copyright === 'string'\n                    ? props?.texts?.copyright\n                    : props?.texts?.copyright?.contain,\n            nav: props?.nav?.map(\n                (nav: any) =>\n                    ({\n                        label: nav.name,\n                        url: nav.url,\n                    }) as BabylonButtonI\n            ),\n            img: {\n                src: this.getImageResponsive(\n                    props?.multimedia?.background?.[0]\n                ),\n                alt: props?.multimedia?.background?.title,\n            },\n            logo: this.getImageResponsive(props?.multimedia?.logo?.[0], false),\n            // input: props?.texts?.newsletterDescription,\n            input: {\n                name: 'newsletter',\n                placeholder: props?.texts?.inputHolder,\n                valid: true,\n                value: '',\n                error: props?.texts?.newsErrorEmail,\n            },\n            legalAdvise: props?.texts?.subscriber,\n            additionalLinks: Utils.mapButtons(\n                props?.links?.additionalFooterLinks[0]?.filter(\n                    (btn: any) => !!btn?.label\n                )\n            ),\n        } as BabylonStaticFooterI;\n    }\n\n    mapGallery(props: any | undefined): BabylonGalleryI {\n        return {\n            pretitle:\n                typeof props?.texts?.pretitle === 'string'\n                    ? props?.texts?.pretitle\n                    : props?.texts?.pretitle?.contain,\n            title:\n                typeof props?.texts?.title === 'string'\n                    ? props?.texts?.title\n                    : props?.texts?.title?.contain,\n            tags: {\n                pretitle: props?.texts?.pretitle?.tag,\n                title: props?.texts?.title?.tag,\n            },\n            roomsBtn: {\n                label: props?.texts?.filterRooms,\n            },\n            filtersBtn: {\n                label: props?.texts?.filterCategories,\n            },\n            filters: props?.filters?.map(\n                (item: any, index: number) =>\n                    ({\n                        id: index,\n                        all: item.all,\n                        room: item.room,\n                        rooms: item.rooms,\n                        text: item.name,\n                    }) as BabylonGalleryFilter\n            ),\n            images: props?.filters\n                ?.reduce(\n                    (\n                        acc: { multimedia: any[]; filterIndex: number }[],\n                        filter: any,\n                        filterIndex: number\n                    ) => {\n                        if (filter.multimedia) {\n                            const multimediaWithFilter = filter.multimedia.map(\n                                (item: any) => ({\n                                    ...item,\n                                    filter: filterIndex,\n                                })\n                            );\n                            return [\n                                ...acc,\n                                {\n                                    multimedia: multimediaWithFilter,\n                                    filterIndex,\n                                },\n                            ];\n                        }\n                        return acc;\n                    },\n                    []\n                )\n                .flatMap(({ multimedia }: any) => multimedia)\n                .map(\n                    (img: any) =>\n                        ({\n                            title: img.title,\n                            img: this.getImageResponsive(img, false),\n                            filter: img?.filter,\n                        }) as BabylonGalleryItem\n                ),\n        } as BabylonGalleryI;\n    }\n\n    mapLanguageModal(props: any | undefined): BabylonLanguageModalI {\n        return {\n            title: props?.texts?.title,\n            subtitle: props?.texts?.subtitle,\n            items: props?.languages,\n            selected: props?.languages?.find(\n                (lng: any) =>\n                    lng.id === this.siteSvc.selectedLanguageInstant?.id\n            ),\n            image: this.getImageResponsive(props?.multimedia?.imagenes?.[0]),\n        } as BabylonLanguageModalI;\n    }\n\n    mapEngine(props: any | undefined): BabylonEngineI | BabylonEngineModalI {\n        return {\n            onlyAdults: props?.onlyAdults,\n            defaultButton: props?.defaultInternalButton,\n            defaultPromoCode: props?.defaultPromoCode,\n            button: { label: props?.texts?.motorSubmit, url: props?.url },\n            datepickerData: {\n                placeholder: props?.texts?.motorDateTitle,\n            },\n            guestsInput: {\n                placeholder: props?.texts?.motorGuestsInputHolder,\n            },\n            promoInput: {\n                placeholder: props?.texts?.motorPromoHolder,\n            },\n            guests: {\n                btn: { label: props?.texts?.motorApply },\n                adultsDropdown: {\n                    title: props?.texts?.motorAdultsTitle,\n                    options: this.generateAgesOptions(props?.maxAdults, 1),\n                },\n                juniorsDropdown:\n                    props?.maxJunior > 0\n                        ? {\n                              title: props?.texts?.motorJuniorTitle,\n                              smallTitle: props?.texts?.motorJuniorSmallLabel,\n                              options: this.generateAgesOptions(\n                                  props?.maxJunior\n                              ),\n                          }\n                        : undefined,\n                kidsDropdown: {\n                    title: props?.texts?.motorKidsTitle,\n                    smallTitle: props?.texts?.motorKidsSmallLabel,\n                    options: this.generateAgesOptions(props?.maxChildrens),\n                },\n                babiesDropdown:\n                    props?.maxBabies > 0\n                        ? {\n                              title: props?.texts?.motorBabiesTitle,\n                              smallTitle: props?.texts?.motorBabiesSmallTitle,\n                              options: this.generateAgesOptions(\n                                  props?.maxBabies\n                              ),\n                          }\n                        : undefined,\n                agesDropdown: {\n                    options: this.generateAgesOptions(\n                        props?.maxAgeChildren,\n                        props?.maxAgeBabies + 1\n                    ),\n                },\n                agesLabel: props?.texts?.motorAgesTitle,\n                kidsLabel: props?.texts?.motorKidLabel,\n            },\n            title: props?.texts?.motorTitle,\n            subtitle: props?.texts?.motorSubtitle,\n            url: props?.url,\n            hotel: props?.hotels?.[0],\n            codigo: props?.codigo ? props?.codigo : 'demo_c2t_clientes', //to change, dont come from back\n            glValue: props?.glValue,\n            hotelsInput: props?.texts?.motorDropDownName,\n            hotelsPlaceholder: props?.texts?.motorDropDownHolder,\n            hotels: {\n                options: props?.hotels?.map((hotel: any) => ({\n                    name: hotel?.name,\n                    ticker: hotel?.ticker,\n                    url: hotel?.url,\n                    id: hotel?.id,\n                })),\n            },\n        } as BabylonEngineModalI | BabylonEngineI;\n    }\n    mapSlider3Items(\n        props: any | undefined,\n        identifier: string | undefined\n    ): BabylonSlider3ItemsI {\n        return {\n            identifier: identifier,\n            pretitle:\n                typeof props?.texts?.pretitle === 'string'\n                    ? props?.texts?.pretitle\n                    : props?.texts?.pretitle?.contain,\n            title:\n                typeof props?.texts?.title === 'string'\n                    ? props?.texts?.title\n                    : props?.texts?.title?.contain,\n            tags: {\n                title: props?.texts?.title?.tag,\n                pretitle: props?.texts?.pretitle?.tag,\n            },\n            textColors: {\n                title: props?.texts?.title?.color?.trim(),\n                pretitle: props?.texts?.pretitle?.color?.trim(),\n            },\n            items: props?.multimedia?.imagenes?.map(\n                (item: any) =>\n                    ({\n                        pretitle: item.pretitle,\n                        title: item.title,\n                        img: this.getImageResponsive(item, false),\n                        link: Utils.mapButtons(item?.links)?.[0],\n                    }) as BabylonSliderItem\n            ),\n        } as BabylonSlider3ItemsI;\n    }\n\n    mapHotelsSlider(props: any | undefined): BabylonHotelsSliderI {\n        return {\n            title: props?.texts?.title,\n            subtitle: props?.texts?.pretitle,\n            hotels: props?.hotels?.map(\n                (item: any) =>\n                    ({\n                        pretitle: item.texts?.additional1,\n                        title: item.texts?.name,\n                        img: {\n                            src: this.getImageResponsive(item.multimedia?.[0]),\n                            alt: item.multimedia?.[0]?.alt,\n                        },\n                        link: Utils.mapButtons(item.links),\n                        button: Utils.mapButtons(item.buttons),\n                    }) as BabylonSliderItem\n            ),\n        } as BabylonHotelsSliderI;\n    }\n\n    mapHotelsList(props: any | undefined): BabylonHotelsListI {\n        // TODO: Revisar mappeo de imágenes\n        return {\n            title: props?.texts?.title,\n            pretitle: props?.texts?.pretitle,\n            hotels: props?.hotels?.map(\n                (item: any) =>\n                    ({\n                        pretitle: item?.texts?.additional1,\n                        title: item?.texts?.name,\n                        text: item?.texts?.description,\n                        textMore: item?.texts?.additional2,\n                        img: {\n                            src: this.getImageResponsive(item?.multimedia?.[0]),\n                            alt: item?.multimedia?.[0]?.alt,\n                        },\n                        link: Utils.mapButtons(item?.links),\n                        button: Utils.mapButtons(item?.buttons),\n                        price: item?.price,\n                        fTitle: props?.texts?.footerTitle,\n                        fSubtitle: props?.texts?.footerPretitle,\n                        services: item?.servicesList?.map((item: any) => ({\n                            name: item?.name,\n                            icon: `icon-${item?.class}`,\n                        })),\n                        btnLess: item?.texts?.additional3,\n                        btnMore: item?.texts?.additional4,\n                    }) as BabylonSliderItem\n            ),\n        } as BabylonHotelsListI;\n    }\n\n    mapInfo4Img(props: any | undefined): BabylonInfo4imgI {\n        return {\n            pretitle: props?.texts?.pretitle,\n            title: props?.texts?.title,\n            text: props?.texts?.description,\n            button: Utils.mapButtons(props?.buttons)?.[0],\n            image1: this.getImageResponsive(\n                props?.multimedia?.imagenes[0],\n                false\n            ),\n            image2: this.getImageResponsive(\n                props?.multimedia?.imagenes[1],\n                false\n            ),\n            image3: this.getImageResponsive(\n                props?.multimedia?.imagenes[2],\n                false\n            ),\n            image4: this.getImageResponsive(\n                props?.multimedia?.imagenes[3],\n                false\n            ),\n        } as BabylonInfo4imgI;\n    }\n\n    mapServicesSlider(props: any | undefined): BabylonServicesSliderI {\n        const advent = props?.servicesService ?? props?.Ventajas;\n        return {\n            pretitle:\n                typeof props?.texts?.pretitle === 'string'\n                    ? props?.texts?.pretitle\n                    : props?.texts?.pretitle?.contain,\n            title:\n                typeof props?.texts?.title === 'string'\n                    ? props?.texts?.title\n                    : props?.texts?.title?.contain,\n            tags: {\n                pretitle: props?.texts?.pretitle?.tag,\n                title: props?.texts?.title?.tag,\n            },\n            advantages: advent?.map((item: any) => ({\n                title: item.name ?? item.title,\n                text: item.text,\n                icon: `icon-${item.class ?? item.icon}`,\n            })),\n        } as BabylonServicesSliderI;\n    }\n\n    mapAdvantages(props: any | undefined): BabylonAdvantagesI {\n        const ventajas =\n            props?.Ventajas ?? props?.lists ?? props?.Lists ?? props?.List;\n        const adv = ventajas?.map((item: any) => ({\n            title: item.title,\n            icon: `icon-${item.icon}`,\n            text: item.text,\n        }));\n        return {\n            title:\n                typeof props?.texts?.title === 'string'\n                    ? props?.texts?.title\n                    : props?.texts?.title?.contain,\n            advantages: adv,\n            tags: {\n                title: props?.texts?.title?.tag,\n            },\n            textColors: {\n                title: props?.texts?.title?.color?.trim(),\n            },\n            seeMore: props?.texts?.advantagesseemore,\n            seeLess: props?.texts?.advantagesseeless,\n            image: this.getImageResponsive(\n                props?.multimedia?.advantagesimage?.[0],\n                false\n            ),\n        } as BabylonAdvantagesI;\n    }\n\n    mapInfoBig(props: any | undefined): BabylonInfoBigI {\n        return {\n            pretitle: props?.multimedia?.imagenes?.[0]?.pretitle,\n            title: props?.multimedia?.imagenes?.[0]?.title,\n            text: props?.multimedia?.imagenes?.[0]?.description,\n            button: Utils.mapButtons(\n                props?.multimedia?.imagenes?.[0]?.buttons\n            )?.[0],\n            img: this.getImageResponsive(\n                props?.multimedia?.imagenes?.[0],\n                false\n            ),\n            imgSmall: this.getImageResponsive(\n                props?.multimedia?.imagenes?.[1] ??\n                    props?.multimedia?.ndimage?.[0],\n                false\n            ),\n        } as BabylonInfoBigI;\n    }\n\n    mapInfoZigZagV2(\n        props: any | undefined,\n        identifier: string | undefined\n    ): BabylonInfoZigzagV2I {\n        const [image] =\n            props?.multimedia?.image || props?.multimedia?.imagenes || [];\n        const [image2] =\n            props?.multimedia?.image2 || props?.multimedia?.imagessmall || [];\n        return {\n            identifier: identifier,\n            items: [\n                {\n                    buttons: Utils.mapButtons(image?.buttons),\n                    features: undefined,\n                    image: this.getImageResponsive(image, false),\n                    pretitle: image?.pretitle,\n                    title: image?.title,\n                    text: image?.description,\n                },\n                {\n                    buttons: Utils.mapButtons(image2?.buttons),\n                    image: this.getImageResponsive(image2, false),\n                    pretitle: image2?.pretitle,\n                    title: image2?.title,\n                    text: image2?.description,\n                    features: props?.Ventajas?.map((item: any) => ({\n                        title: item.title,\n                        text: item.text,\n                        icon: item.icon ? `icon-${item.icon}` : '',\n                    })),\n                },\n            ] as BabylonInfoZigzagV2Item[],\n        } as BabylonInfoZigzagV2I;\n    }\n\n    mapFooterContact(props: any | undefined): BabylonFooterContactI {\n        return {\n            title: props?.texts?.title,\n            text: props?.texts?.text,\n            extraTxt: props?.texts?.additionalText1,\n            button: Utils.mapButtons(props?.buttons)?.[0],\n            img: {\n                src: this.getImageResponsive(props?.multimedia?.imagenes?.[0]),\n                alt: props?.multimedia?.imagenes?.[0]?.alt,\n            },\n            advantages: props?.Ventajas?.map((item: any) => ({\n                title: item.title,\n                text: item.text,\n                icon: `icon-${item.icon}`,\n            })),\n            links: Utils.mapButtons(props?.links?.contactLinks?.[0]),\n            address: {\n                locality: props?.hotelAddress?.locality,\n                city: props?.hotelAddress?.city,\n                province: props?.hotelAddress?.province,\n                country: props?.hotelAddress?.country,\n                cp: props?.hotelAddress?.cp,\n                address: props?.hotelAddress?.address,\n                lat: props?.hotelAddress?.lat,\n                lon: props?.hotelAddress?.lon,\n                phone: props?.hotelAddress?.phone,\n                email: props?.hotelAddress?.email,\n            },\n        } as BabylonFooterContactI;\n    }\n\n    mapInfo2ImgBig(props: any | undefined): BabylonInfo2imgBigI {\n        return {\n            pretitle:\n                typeof props?.texts?.pretitle === 'string'\n                    ? props?.texts?.pretitle\n                    : props?.texts?.pretitle?.contain,\n            title:\n                typeof props?.texts?.title === 'string'\n                    ? props?.texts?.title\n                    : props?.texts?.title?.contain,\n            tags: {\n                pretitle: props?.texts?.pretitle?.tag,\n                title: props?.texts?.title?.tag,\n            },\n            text: props?.texts?.description,\n            pretitle2: props?.texts?.ndPretitle,\n            title2: props?.texts?.ndTitle,\n            text2: props?.texts?.ndDescription,\n            button: Utils.mapButtons(props?.buttons)?.[0],\n            button2: Utils.mapButtons(props?.buttons)?.[1],\n            img: {\n                src: this.getImageResponsive(\n                    props?.multimedia?.imagenes?.[0] ??\n                        props?.multimedia?.image?.[0]\n                ),\n                alt:\n                    props?.multimedia?.imagenes?.[0]?.alt ??\n                    props?.multimedia?.image?.[0].alt,\n            },\n            imgSmall: {\n                src: this.getImageResponsive(\n                    props?.multimedia?.ndimagenes?.[0] ??\n                        props?.multimedia?.ndimage?.[0]\n                ),\n                alt: props?.multimedia?.ndimagenes?.[0]?.alt,\n            },\n        } as BabylonInfo2imgBigI;\n    }\n\n    mapFooterLogos(props: any | undefined): BabylonFooterLogosI {\n        const description = props?.texts?.description ?? props?.texts?.text;\n\n        return {\n            texts: {\n                ...props?.texts,\n                description: description,\n            },\n            buttons: Utils.mapButtons(props?.buttons),\n            logos: props?.multimedia?.logos?.map((logo: any) => ({\n                img: this.getImageResponsive(logo, false),\n                link: Utils.mapButtons(logo?.links)?.[0],\n            })),\n        } as BabylonFooterLogosI;\n    }\n\n    mapFooterLinks(props: any | undefined): BabylonFooterLinksI {\n        return {\n            copyright: props?.texts?.copyright,\n            year: props?.texts?.year,\n            buttons: Utils.mapButtons(props?.buttons),\n        } as BabylonFooterLinksI;\n    }\n\n    mapFooterSocials(props: any | undefined): BabylonFooterSocialI {\n        const filteredLinks = (props?.socialMedia || []).filter(\n            (link: any) =>\n                link !== null &&\n                link !== undefined &&\n                link.url !== '' &&\n                link.icon !== ''\n        );\n        return {\n            title: props?.texts?.title,\n            text: props?.texts?.text,\n            links: filteredLinks.map((link: any) => ({\n                icon: `babylon-${link.name?.toLowerCase()}`,\n                url: link.url,\n                label: link.name,\n            })),\n        } as BabylonFooterSocialI;\n    }\n\n    mapSlider2items(props: any | undefined): BabylonSlider2itemsI {\n        return {\n            title: props?.texts?.title,\n            pretitle: props?.texts?.pretitle,\n            text: props?.texts?.text,\n            items: props.hotels\n                ? props?.hotels?.map((item: any) => ({\n                      pretitle: item?.city,\n                      title: item?.texts?.name,\n                      img: {\n                          src: this.getImageResponsive(item?.multimedia?.[0]),\n                          alt: item?.multimedia?.[0]?.alt,\n                      },\n                      buttons: Utils.mapButtons(item?.buttons),\n                      services: item?.services?.map((item: any) => ({\n                          name: item.name,\n                          icon: `icon-${item.class}`,\n                      })),\n                  }))\n                : props?.rooms?.map((item: any) => ({\n                      pretitle: item?.texts?.description,\n                      title: item?.texts?.name,\n                      img: {\n                          src: this.getImageResponsive(item?.multimedia?.[0]),\n                          alt: item?.multimedia?.[0]?.alt,\n                      },\n                      // link:\n                      buttons: Utils.mapButtons(item?.buttons),\n                      services: item?.services?.map((item: any) => ({\n                          name: item.name,\n                          icon: `icon-${item.class}`,\n                      })),\n                  })),\n        } as BabylonSlider2itemsI;\n    }\n\n    mapStaticFooterv2(props: any | undefined): BabylonStaticFooterV2I {\n        return {\n            title: props?.texts?.title,\n            ndTitle: props?.texts?.addressTitle,\n            rdTitle: props?.texts?.linksTitle,\n            thTitle: props?.texts?.locationTitle,\n            frameUrl: props?.texts?.frameUrl,\n            imgUrl: props?.multimedia?.footerimg?.[0]?.links?.[0]?.linkValue,\n            contactInfo: Utils.mapButtons(props?.links?.contact?.[0]),\n            contactLinks: Utils.mapButtons(props?.links?.contactLinks?.[0]),\n            footerLinks: Utils.mapButtons(props?.links?.footerLinks?.[0]),\n            address: Array.isArray(props?.address)\n                ? props?.address.map(\n                      (address: any) =>\n                          ({\n                              id: address?.id,\n                              name: address?.name,\n                              address: address?.address,\n                              city: address?.city,\n                              province: address?.province,\n                              country: address?.country,\n                              cp: address?.cp,\n                          }) as BabylonAddressItem\n                  )\n                : [],\n            socialMedia: [\n                {\n                    url: props?.socialMedia?.[0]?.url,\n                    label: props?.texts?.instagramTitle,\n                } as BabylonButtonI,\n            ],\n            copyright: props?.texts?.copyright,\n            nav: props?.nav?.map(\n                (nav: any) =>\n                    ({\n                        label: nav?.name,\n                        url: nav?.url,\n                    }) as BabylonButtonI\n            ),\n            img: this.getImageResponsive(\n                props?.multimedia?.footerimg?.[0],\n                false\n            ),\n        } as BabylonStaticFooterV2I;\n    }\n\n    mapListGrid(props: any | undefined): BabylonListGridI {\n        const { imagenes } = props?.multimedia || [];\n        return {\n            button: Utils.mapButtons(props?.buttons)?.[0],\n            labels: {\n                pretitle: props?.texts?.pretitle,\n                title: props?.texts?.title,\n            },\n            items: imagenes?.map(\n                (item: ImageResponse) =>\n                    ({\n                        button: Utils.mapButtons(item?.buttons),\n                        links: Utils.mapButtons(item?.links),\n                        image: this.getImageResponsive(item),\n                        title: item.title,\n                        subtitle: item.subtitle,\n                        services: [], //TODO: pte back,\n                    }) as BabylonItemGridI\n            ),\n        } as BabylonListGridI;\n    }\n\n    mapNewsletterModal(props: any | undefined): BabylonNewsletterI {\n        return {\n            conditions: props?.texts?.conditions,\n            title: props?.texts?.title,\n            subtitle: props?.texts?.subtitle,\n            button: Utils.mapButtons(props?.buttons)?.[0],\n            input: {\n                name: 'mail',\n                placeholder: props?.texts?.inputHolder,\n                valid: true,\n                value: '',\n                error: props?.texts?.newsErrorEmail,\n            } as BabylonInputI,\n            img: this.getImageResponsive(\n                props?.multimedia?.imagebackground?.[0],\n                false\n            ),\n        } as BabylonNewsletterI;\n    }\n\n    mapGlobalModal(props: any | undefined): BabylonGlobalModalI | undefined {\n        return {\n            title: props?.texts?.title,\n            subtitle: props?.texts?.subtitle,\n            description: props?.texts?.description,\n            buttons: Utils.mapButtons(\n                props?.buttons.filter((btn: any) => !!btn?.linkValue)\n            ),\n            image: this.getImageResponsive(\n                props?.multimedia?.imagenes?.[0],\n                false\n            ),\n            iframe: props?.texts?.iframe,\n            // img: this.getImageResponsive(props?.multimedia?.imagenes?.[0]),\n        } as BabylonGlobalModalI;\n    }\n\n    mapOfferBannerV2(props: any | undefined): BabylonOfferPopupV2I | undefined {\n        let offerData;\n        if (props?.offers?.length > 0) {\n            const offer = props?.offers?.[0];\n            offerData = {\n                texts: {\n                    title: offer?.texts?.title,\n                    subtitle: offer?.texts?.subtitle,\n                    description: offer?.texts?.description,\n                    additional1: offer?.texts?.additional1,\n                    additional2: offer?.texts?.additional2,\n                    additional3: offer?.texts?.additional3,\n                    additional4: offer?.texts?.additional4,\n                },\n                button: Utils.mapButtons(offer?.buttons)?.[0],\n                image: this.getImageResponsive(\n                    offer?.multimedia?.length > 1\n                        ? (offer?.multimedia?.find((img: any) => img.cover) ??\n                              offer?.multimedia?.[0])\n                        : (offer?.multimedia?.[0] ??\n                              props?.multimedia?.defaultimagenes?.[0]),\n                    false\n                ),\n                discount: offer?.discount,\n                price: offer?.price,\n                currency: offer?.currency,\n            } as BabylonOfferPopupV2I;\n        }\n        return offerData ?? offerData;\n    }\n\n    mapHeadIntro(\n        props: any | undefined,\n        component: any | undefined\n    ): BabylonHeadIntroI | undefined {\n        let additionalTexts = {\n            additional2: '',\n            additional3: '',\n            additional4: '',\n        };\n        if (props?.room) {\n            additionalTexts.additional2 = props.room.texts?.additional2 ?? '';\n            additionalTexts.additional3 = props.room.texts?.additional3 ?? '';\n            additionalTexts.additional4 = props.room.texts?.additional4 ?? '';\n        }\n        return {\n            pretitle: additionalTexts.additional2.length\n                ? additionalTexts.additional2\n                : typeof props?.texts?.pretitle === 'string'\n                  ? props?.texts?.pretitle\n                  : props?.texts?.pretitle?.contain,\n            title: additionalTexts.additional3.length\n                ? additionalTexts.additional3\n                : typeof props?.texts?.title === 'string'\n                  ? props?.texts?.title\n                  : props?.texts?.title?.contain,\n            text: additionalTexts.additional4.length\n                ? additionalTexts.additional4\n                : typeof props?.texts?.text === 'string'\n                  ? props?.texts?.text\n                  : props?.texts?.text?.contain,\n            buttons: Utils.mapButtons(\n                props?.buttons?.filter((btn: any) => !!btn?.linkValue)\n            ),\n            tags: {\n                pretitle: props?.texts?.pretitle?.tag,\n                title: props?.texts?.title?.tag,\n                text: props?.texts?.text?.tag,\n            },\n            textColors: {\n                pretitle:\n                    props?.texts?.pretitle?.color?.trim() ??\n                    component?.textcolor,\n                title:\n                    props?.texts?.title?.color?.trim() ?? component?.textcolor,\n                categoriesTitle:\n                    props?.texts?.categories?.color?.trim() ??\n                    component?.textcolor,\n                latestPostsTitle:\n                    props?.texts?.latestEntries?.color?.trim() ??\n                    component?.textcolor,\n            },\n            identifier: component?.identifier,\n        } as BabylonHeadIntroI;\n    }\n\n    mapExternalScript(\n        props: any | undefined\n    ): BabylonExternalScriptI | undefined {\n        return {\n            script: props?.texts?.Container,\n            msg_loading: props?.texts?.loading ?? 'Cargando...',\n        } as BabylonExternalScriptI;\n    }\n\n    mapBlogList(props: any | undefined): BabylonBlogListI | undefined {\n        let posts = props?.blog?.posts?.map((post: any) => ({\n            id: post?.id,\n            title: post?.texts?.title,\n            subtitle: post?.texts?.subtitle,\n            description: post?.texts?.description,\n            additional1: post?.texts?.additional1,\n            img: this.getImageResponsive(post?.multimedia?.[0], false),\n            buttons: Utils.mapButtons(post?.buttons),\n            postUrl: Utils.mapButtons(post?.buttons)?.[0],\n            category:\n                typeof post?.category === 'string'\n                    ? post.category\n                    : (post?.category?.name_identifier ??\n                      post?.category?.nameIdentifier ??\n                      undefined),\n            date: post?.date ? new Date(post.date) : undefined,\n            active: post?.active,\n        }));\n\n        posts = posts.sort((a: any, b: any) => {\n            if (a.date && b.date) return b.date - a.date; // ambos con fecha\n            if (a.date && !b.date) return -1; // a tiene fecha, b no\n            if (!a.date && b.date) return 1; // b tiene fecha, a no\n            return 0; // ninguno tiene fecha\n        });\n\n        // Obtener los 4 posts más recientes\n        posts =\n            posts?.filter((post: { active: boolean }) => post.active) ??\n            posts ??\n            [];\n\n        const normalizeToArray = (value: any): any[] => {\n            if (!value) return [];\n            if (Array.isArray(value)) return value;\n            if (typeof value === 'object') return Object.values(value);\n            return [];\n        };\n\n        const categoriesArray = normalizeToArray(props?.postCategories);\n        const latestPosts = posts?.slice(0, 4);\n\n        return {\n            pretitle:\n                typeof props?.texts?.pretitle === 'string'\n                    ? props?.texts?.pretitle\n                    : props?.texts?.pretitle?.contain,\n            title:\n                typeof props?.texts?.title === 'string'\n                    ? props?.texts?.title\n                    : props?.texts?.title?.contain,\n            tags: {\n                pretitle: props?.texts?.pretitle?.tag,\n                title: props?.texts?.title?.tag,\n                categoriesTitle: props?.texts?.categories?.tag,\n                latestPostsTitle: props?.texts?.latestEntries?.tag,\n            },\n            textColors: {\n                pretitle: props?.texts?.pretitle?.color?.trim(),\n                title: props?.texts?.title?.color?.trim(),\n                categoriesTitle: props?.texts?.categories?.color?.trim(),\n                latestPostsTitle: props?.texts?.latestEntries?.color?.trim(),\n            },\n            searchPlaceHolder: props?.texts?.searchPlaceHolder,\n            notfoundText: props?.texts?.searchNotFound,\n            posts: posts,\n            categoriesTitle:\n                typeof props?.texts?.categories === 'string'\n                    ? props?.texts?.categories\n                    : props?.texts?.categories?.contain,\n            categories: categoriesArray.map((category: any) => ({\n                id: category?.id,\n                title: category?.name,\n                posts: category?.totalPosts ?? category?.total_posts ?? 0,\n            })),\n            latestPostsTitle:\n                typeof props?.texts?.latestEntries === 'string'\n                    ? props?.texts?.latestEntries\n                    : props?.texts?.latestEntries?.contain,\n            latestPosts: latestPosts,\n            anterior: props?.texts?.anterior,\n            siguiente: props?.texts?.siguiente,\n        };\n    }\n\n    mapBlogDetail(props: any | undefined): BabylonBlogDetailsI | undefined {\n        const currentPostId = props?.post?.id;\n        const posts = props?.relatedPosts?.map((post: any) => ({\n            id: post?.id,\n            title: post?.texts?.title,\n            subtitle: post?.texts?.subtitle,\n            description: post?.texts?.description,\n            img: this.getImageResponsive(\n                post?.multimedia?.imagenes?.[0],\n                false\n            ),\n            buttons: Utils.mapButtons(post?.buttons),\n            postUrl: Utils.mapButtons(post?.buttons)?.[0],\n            category:\n                typeof post?.category === 'string'\n                    ? post.category\n                    : (post?.category?.name_identifier ??\n                      post?.category?.nameIdentifier ??\n                      undefined),\n            date: post?.date ? new Date(post.date) : undefined,\n        }));\n\n        const candidates = (posts || []).filter(\n            (p: any) => p?.id !== currentPostId\n        );\n\n        let relatedPostsConst =\n            candidates\n                .filter((p: any) => p?.date)\n                .sort((a: any, b: any) => (b.date as any) - (a.date as any))\n                .slice(0, 4) || [];\n        if (relatedPostsConst.length < 4) {\n            const withoutDate = candidates.filter((p: any) => !p?.date);\n            relatedPostsConst = relatedPostsConst.concat(\n                withoutDate.slice(0, 4 - relatedPostsConst.length)\n            );\n        }\n\n        return {\n            title: props?.post?.texts?.title,\n            subtitle: props?.post?.texts?.subtitle,\n            description: props?.post?.texts?.description,\n            additional1: props?.post?.texts?.additional1,\n            additional2: props?.post?.texts?.additional2,\n            additional3: props?.post?.texts?.additional3,\n            additional4: props?.post?.texts?.additional4,\n            date: props?.post?.date ? new Date(props?.post?.date) : undefined,\n            category: props?.post?.category,\n            tags: {\n                pretitle: props?.texts?.pretitle?.tag,\n                title: props?.texts?.title?.tag,\n                categoriesTitle: props?.texts?.categories?.tag,\n                latestPostsTitle: props?.texts?.latestEntries?.tag,\n            },\n            textColors: {\n                pretitle: props?.texts?.pretitle?.color?.trim(),\n                title: props?.texts?.title?.color?.trim(),\n                categoriesTitle: props?.texts?.categories?.color?.trim(),\n                latestPostsTitle: props?.texts?.latestEntries?.color?.trim(),\n            },\n            searchPlaceHolder: props?.texts?.searchPlaceHolder,\n            categoriesTitle:\n                typeof props?.texts?.categories === 'string'\n                    ? props?.texts?.categories\n                    : props?.texts?.categories?.contain,\n            categories: Array.isArray(props?.postCategories)\n                ? props?.postCategories?.map((category: any) => ({\n                      id: category?.id,\n                      title: category?.name,\n                      posts: category?.totalPosts,\n                  }))\n                : [],\n            relatedPostsTitle:\n                typeof props?.texts?.latestEntries === 'string'\n                    ? props?.texts?.latestEntries\n                    : props?.texts?.latestEntries?.contain,\n            relatedPosts: relatedPostsConst,\n            button: Utils.mapButtons(props?.buttons)?.[0],\n            share: props?.texts?.share,\n            img: this.getImageResponsive(\n                props?.post?.multimedia?.imagenes?.[0],\n                false\n            ),\n            middleImg: props?.texts?.middleImg ?? false,\n        } as BabylonBlogDetailsI;\n    }\n\n    mapModalMultipleMotors(\n        props: any | undefined\n    ): BabylonModalMultipleMotorsI | undefined {\n        return {\n            logo: this.getImageResponsive(\n                props?.multimedia?.imagenes?.[0],\n                false\n            ),\n            pretitle: props?.texts?.pretitle,\n            title: props?.texts?.title,\n            buttons: Utils.mapButtons(\n                props?.links\n                    ? props?.links?.filter(\n                          (btn: any) => btn?.linkValue !== null\n                      )\n                    : props?.buttons?.filter(\n                          (btn: any) => btn?.linkValue !== null\n                      )\n            ),\n        } as BabylonModalMultipleMotorsI;\n    }\n    mapOfferBanner(props: any | undefined): BabylonOfferPopupI | undefined {\n        let offerData;\n        if (props?.offers?.length > 0) {\n            const offer = props?.offers?.[0];\n            offerData = {\n                texts: {\n                    title: offer?.texts?.title,\n                    subtitle: offer?.texts?.subtitle,\n                    description: offer?.texts?.description,\n                    additional1: offer?.texts?.additional1,\n                    additional2: offer?.texts?.additional2,\n                    additional3: offer?.texts?.additional3,\n                    additional4: offer?.texts?.additional4,\n                },\n                button: Utils.mapButtons(offer?.buttons)?.[0],\n                image: this.getImageResponsive(\n                    offer?.multimedia?.length > 1\n                        ? (offer?.multimedia?.find((img: any) => img.cover) ??\n                              offer?.multimedia?.[0])\n                        : (offer?.multimedia?.[0] ??\n                              props?.multimedia?.defaultimagenes?.[0]),\n                    false\n                ),\n                additionalButtons: Utils.mapButtons(\n                    props?.buttons?.filter(\n                        (btn: any) => btn?.linkValue !== null\n                    )\n                ),\n            } as BabylonOfferPopupI;\n        }\n        return offerData ?? offerData;\n    }\n\n    mapModalPopup(props: any | undefined): BabylonModalPopupI | undefined {\n        return {\n            title: props?.texts?.title,\n            subtitle: props?.texts?.subtitle,\n            placeholder: props?.texts?.inputHolder,\n            options: props?.multimedia?.imagenes?.map((option: any) => ({\n                label: option?.title,\n                value: option?.subtitle,\n                title: option?.title,\n                description: option?.description,\n                image: this.getImageResponsive(option, false),\n            })),\n            image: this.getImageResponsive(\n                props?.multimedia?.modalimage?.[0],\n                false\n            ),\n        } as BabylonModalPopupI;\n    }\n\n    mapPressList(props: any | undefined): BabylonPressListI | undefined {\n        return {\n            title: props?.texts?.title,\n            description: props?.texts?.description,\n            items: props?.multimedia?.imagenes?.map((item: any) => ({\n                title: item?.title,\n                subtitle: item?.subtitle,\n                image: this.getImageResponsive(item, false),\n                link: Utils.mapButtons(item?.links)?.[0],\n            })),\n            buttons: Utils.mapButtons(props?.buttons),\n        } as BabylonPressListI;\n    }\n\n    mapActionBanner(props: any | undefined): BabylonActionBannerI | undefined {\n        return {\n            image: this.getImageResponsive(\n                props?.multimedia?.actionbannerimage?.[0],\n                false\n            ),\n            image2: this.getImageResponsive(\n                props?.multimedia?.actionbannerimage2?.[0],\n                false\n            ),\n            button: Utils.mapButtons(props?.buttons)?.[0],\n            table: props?.texts?.table,\n            sala1: props?.texts?.sala1,\n            sala2: props?.texts?.sala2,\n        } as BabylonActionBannerI;\n    }\n    mapInfoZigZagCounter(\n        props: any | undefined\n    ): BabylonInfoZigZagCounterI | undefined {\n        let images: (string | BabylonImageI)[] | undefined = [];\n        let texts, tags;\n        const dateStart = props?.texts?.datestart;\n        const dateFinish = props?.texts?.datefinish;\n        if (props?.multimedia?.imagenes) {\n            images = this.getArrayImageResponsive(\n                props?.multimedia?.imagenes,\n                false\n            );\n            texts = {\n                pretitle:\n                    props?.texts?.pretitle?.contain ??\n                    (typeof props?.texts?.pretitle == 'string'\n                        ? props?.texts?.pretitle\n                        : undefined),\n                title:\n                    props?.texts?.title?.contain ??\n                    (typeof props?.texts?.title == 'string'\n                        ? props?.texts?.title\n                        : undefined),\n                contenttitle:\n                    props?.texts?.contenttitle?.contain ??\n                    props?.texts?.contenttitle,\n                contentsubtitle:\n                    props?.texts?.contentsubtitle?.contain ??\n                    props?.texts?.contentsubtitle,\n                contentdescription:\n                    props?.texts?.contentdescription?.contain ??\n                    props?.texts?.contentdescription,\n                logo: this.getImageResponsive(\n                    props?.multimedia?.logo?.[0],\n                    false\n                ),\n                icons: props?.Ventajas?.filter(\n                    (item: any) => item?.title || item?.text\n                )?.map((item: any) => ({\n                    title: item.title,\n                    text: item.text,\n                    icon: `icon-${item.icon}`,\n                })),\n                iconTitle:\n                    props?.texts?.icontitle?.contain ?? props?.texts?.icontitle,\n                daysText: props?.texts?.daystext,\n                hoursText: props?.texts?.hourstext,\n                minutesText: props?.texts?.minutestext,\n            };\n            tags = {\n                pretitle: props?.texts?.pretitle?.tag,\n                title: props?.texts?.title?.tag,\n                contenttitle: props?.texts?.contenttitle?.tag,\n                contentsubtitle: props?.texts?.contentsubtitle?.tag,\n                contentdescription: props?.texts?.contentdescription?.tag,\n                iconTitle: props?.texts?.icontitle?.tag,\n            };\n        }\n        return {\n            buttons: Utils.mapButtons(\n                props?.buttons.filter((btn: any) => !!btn?.linkValue)\n            ),\n            texts,\n            images,\n            tags,\n            dateStart,\n            dateFinish,\n        } as BabylonInfoZigZagCounterI;\n    }\n    mapGrC2Img(props: any | undefined): BabylonGrC2ImgI | undefined {\n        return {\n            title:\n                props?.texts?.title?.contain ??\n                (typeof props?.texts?.title == 'string'\n                    ? props?.texts?.title\n                    : undefined),\n            tags: {\n                title: props?.texts?.title?.tag,\n            },\n            textColors: {\n                title: props?.texts?.title?.color?.trim(),\n            },\n\n            items: props?.hotels?.map((item: any) => ({\n                subtitle: item?.texts?.additional1,\n                title: item?.texts?.name,\n                img: {\n                    src: this.getImageResponsive(item?.multimedia?.[0]),\n                    alt: item?.multimedia?.[0]?.alt,\n                },\n                link: Utils.mapButtons(item?.links),\n            })),\n        } as BabylonGrC2ImgI;\n    }\n    mapLisC4TxtIco(props: any | undefined): BabylonLisC4TxtIcoI | undefined {\n        return props;\n    }\n}\n\nexport interface ImageResponse {\n    path: ImageResponsePath;\n    thumbnails: {\n        375: ImageResponsePath;\n        540: ImageResponsePath;\n        768: ImageResponsePath;\n        800: ImageResponsePath;\n        1024: ImageResponsePath;\n        1280: ImageResponsePath;\n        1366: ImageResponsePath;\n    };\n    cover: number;\n    tags?: any[];\n    title?: string;\n    pretitle?: string;\n    subtitle?: string;\n    ndTitle?: string;\n    description?: string;\n    links?: any[];\n    buttons?: any[];\n    alt?: string;\n    active?: boolean;\n    order?: number;\n}\n\nexport interface ImageResponsePath {\n    original: string;\n    webp: string;\n}\n\nexport interface ComponentsAddons {\n    contactOffice?: any;\n    menuSocialMedia?: { [k: string]: string }[];\n    consultType?: ConsultTypeI;\n}\n\nexport interface FilterOption {\n    id?: number;\n    name?: string;\n    children?: FilterOption;\n}\n\nexport interface ComponentView {\n    name: ViewsType;\n    default: boolean;\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Inject, Input } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\nimport { BabylonDataBackgroundDirective } from '../../../directives/data-background/data-background.directive';\nimport { BabylonButtonI, BabylonImageI } from '../../../interfaces';\nimport { BabylonTexts } from '../../../interfaces/babylon-texts.interface';\n\n@Component({\n    selector: 'lib-babylon-global-modal',\n    standalone: true,\n    imports: [CommonModule, BabylonDataBackgroundDirective],\n    templateUrl: './babylon-global-modal.component.html',\n    styleUrl: './babylon-global-modal.component.scss',\n})\nexport class BabylonGlobalModalComponent {\n    @Input() texts?: BabylonTexts;\n    @Input() buttons?: BabylonButtonI[];\n    @Input() image?: BabylonImageI;\n    @Input() iframe?: string;\n\n    safeIframe?: SafeResourceUrl;\n\n    constructor(\n        private readonly dialogRef: MatDialogRef<BabylonGlobalModalComponent>,\n        @Inject(MAT_DIALOG_DATA)\n        public data: {\n            texts?: BabylonTexts;\n            buttons?: BabylonButtonI[];\n            links?: BabylonButtonI[];\n            image?: BabylonImageI;\n            iframe?: string;\n        },\n        private sanitizer: DomSanitizer\n    ) {\n        if (this.data.iframe) {\n            this.safeIframe = this.sanitizer.bypassSecurityTrustResourceUrl(\n                this.data.iframe\n            );\n        }\n    }\n\n    close(): void {\n        this.dialogRef.close();\n    }\n}\n","<div class=\"global-modal\">\n    <div class=\"btn-close--modal\" (click)=\"close()\">\n        <button name=\"close\" class=\"btn btn_primary btn--close\">\n            <span class=\"babylon-plus\"></span>\n        </button>\n    </div>\n    <div class=\"row m-0 w-100 h-100\">\n        @if (data.image) {\n            <div class=\"col-12 col-xl-6 p-0 offer-popup__image\">\n                <figure\n                    class=\"background-image\"\n                    [attr.data-src]=\"\n                        data.image?.src ||\n                        'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                    \"\n                    dataBackground=\"url('{{ data.image?.src }}')\"\n                ></figure>\n            </div>\n        }\n        <div\n            class=\"col-12 offer-popup__wrapper\"\n            [class]=\"{ 'col-xl-6': data.image }\"\n        >\n            <div class=\"intro_info align--center\">\n                @if (data.texts?.title) {\n                    <h2 class=\"title--small\">\n                        {{ data.texts?.title }}\n                    </h2>\n                }\n                @if (data.texts?.subtitle) {\n                    <h3 class=\"subtitle--small mb--20\">\n                        {{ data.texts?.subtitle }}\n                    </h3>\n                }\n                @if (data.texts?.description) {\n                    <p class=\"text--small\">\n                        {{ data.texts?.description }}\n                    </p>\n                }\n                @if (data.buttons?.length) {\n                    <div class=\"btns__box justify-between1\">\n                        @for (item of data.buttons; track $index) {\n                            <a\n                                [attr.aria-label]=\"item.label\"\n                                [class]=\"$odd ? 'btn btn-call' : 'btn-link'\"\n                                [href]=\"item.url\"\n                            >\n                                {{ item.label }}\n                            </a>\n                        }\n                    </div>\n                }\n                @if (data.iframe && safeIframe) {\n                    <div class=\"iframe-container mt--20\">\n                        <iframe\n                            width=\"100%\"\n                            height=\"250\"\n                            [src]=\"safeIframe\"\n                            frameborder=\"0\"\n                            allowfullscreen\n                            allow=\"\n                                fullscreen;\n                                xr-spatial-tracking;\n                                display-capture;\n                            \"\n                            webkitallowfullscreen\n                            mozallowfullscreen\n                        ></iframe>\n                    </div>\n                }\n            </div>\n        </div>\n    </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Inject, OnInit } from '@angular/core';\nimport { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { DropdownModule } from 'primeng/dropdown';\nimport { BabylonImageI } from '../../../interfaces';\nimport { BabylonModalPopupI } from './babylon-modal-popup.interface';\n\n@Component({\n    selector: 'lib-babylon-modal-popup',\n    standalone: true,\n    imports: [CommonModule, FormsModule, ReactiveFormsModule, DropdownModule],\n    templateUrl: './babylon-modal-popup.component.html',\n    styleUrl: './babylon-modal-popup.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonModalPopupComponent implements OnInit {\n    constructor(\n        private readonly dialogRef: MatDialogRef<BabylonModalPopupComponent>,\n        @Inject(MAT_DIALOG_DATA) public data: BabylonModalPopupI\n    ) {}\n    dropdownControl = new FormControl(null);\n    selectedValue: string | null = null;\n    selectedValueActive = false;\n\n    ngOnInit() {\n        // Suscribirse al cambio de valor\n        this.dropdownControl.valueChanges.subscribe((value) => {\n            this.selectedValueActive = true;\n            this.selectedValue = value;\n        });\n    }\n    close(): void {\n        this.dialogRef.close();\n    }\n}\n\nexport interface OptionModalPopupI {\n    label: string;\n    value: string;\n    title?: string;\n    description?: string;\n    image?: BabylonImageI;\n}\n","<div class=\"popup-modal\">\n    <div class=\"btn-close--modal\" (click)=\"close()\">\n        <button name=\"close\" class=\"btn btn_primary btn--close\">\n            <span class=\"babylon-plus\"></span>\n        </button>\n    </div>\n    <div\n        class=\"row m-0 w-100 h-100 popup-modal__wrapper\"\n        [ngClass]=\"selectedValueActive ? 'viewInfo' : 'hiddenInfo'\"\n    >\n        <div class=\"col-12 col-xl-6 popup-modal__info\">\n            <div class=\"intro_info align--center popup-modal__head\">\n                @if (data.subtitle) {\n                    <h3 class=\"pretitle mb--20\">{{ data.subtitle }}</h3>\n                }\n                @if (data.title) {\n                    <h2 class=\"title--small\">{{ data.title }}</h2>\n                }\n            </div>\n            <div class=\"popup-modal__dropdown\">\n                <p-dropdown\n                    [options]=\"data.options\"\n                    [formControl]=\"dropdownControl\"\n                    optionLabel=\"label\"\n                    optionValue=\"value\"\n                    [placeholder]=\"data.placeholder\"\n                >\n                </p-dropdown>\n            </div>\n            <div class=\"popup-modal__content\">\n                @for (opt of data.options ?? []; track opt.value) {\n                    @if (selectedValue === opt.value) {\n                        <div class=\"mensaje\">\n                            <div class=\"intro_info align--center\">\n                                @if (opt.title) {\n                                    <h2 class=\"title--small\">\n                                        {{ opt.title }}\n                                    </h2>\n                                }\n                                @if (opt.description) {\n                                    <div [innerHTML]=\"opt.description\"></div>\n                                }\n                            </div>\n                        </div>\n                    }\n                }\n            </div>\n        </div>\n        <div class=\"col-12 col-xl-6 p-0 popup-modal__image\">\n            @if (!selectedValue && data.image) {\n                <figure class=\"background-image\">\n                    <img\n                        [src]=\"\n                            data.image.src ||\n                            'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                        \"\n                        [alt]=\"data.image.alt ?? data.image.title ?? 'title'\"\n                        class=\"\"\n                    />\n                </figure>\n            }\n            @for (opt of data.options ?? []; track opt.value) {\n                @if (selectedValue === opt.value && opt.image) {\n                    <figure class=\"background-image\">\n                        <img\n                            [src]=\"\n                                opt.image.src ||\n                                'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                            \"\n                            [alt]=\"opt.image.alt ?? opt.image.title ?? 'title'\"\n                            class=\"\"\n                        />\n                    </figure>\n                }\n            }\n        </div>\n    </div>\n</div>\n","import { EventEmitter, Injectable } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport {\n    BabylonNewsletterModalV2Component,\n    BabylonOfferPopupV3Component,\n} from '../../components/core';\nimport { BabylonGlobalModalComponent } from '../../components/core/babylon-global-modal';\nimport { BabylonModalPopupComponent } from '../../components/core/babylon-modal-popup/babylon-modal-popup.component';\nimport { BabylonModalPopupI } from '../../components/core/babylon-modal-popup/babylon-modal-popup.interface';\nimport { ScreenSizerService } from '../screen-sizer/screen-sizer.service';\n\n@Injectable({\n    providedIn: 'root',\n})\nexport class BabylonModalService {\n    constructor(\n        private dialog: MatDialog,\n        private screenSizer: ScreenSizerService\n    ) {}\n\n    getBannerOfferV2Control(): boolean {\n        return sessionStorage.getItem('bannerOfferV2Closed') === 'true'\n            ? true\n            : false;\n    }\n\n    updateBannerOfferV2Control(): boolean {\n        const alreadyClosed = sessionStorage.getItem('bannerOfferV2Closed');\n        if (alreadyClosed === 'true') {\n            sessionStorage.setItem('bannerOfferV2Closed', 'false');\n            return false;\n        } else {\n            sessionStorage.setItem('bannerOfferV2Closed', 'true');\n            return true;\n        }\n    }\n\n    openReserveModal(banner: any): void {\n        const dialogRef = this.dialog.open(BabylonGlobalModalComponent, {\n            width: this.screenSizer.minMediumTablet() ? '65%' : '95vw',\n            height: this.screenSizer.minMediumTablet() ? '80%' : '85vh',\n            maxHeight: this.screenSizer.minMediumTablet() ? '714px' : '100vh',\n            maxWidth: this.screenSizer.minMediumTablet() ? '1000px' : '100vw',\n            hasBackdrop: true,\n            panelClass: 'globalModal',\n            data: {\n                texts: {\n                    title: banner.title,\n                    subtitle: banner.subtitle,\n                    description: banner.description,\n                },\n                buttons: banner.buttons,\n                links: banner.links,\n                image: banner.image,\n                iframe: banner.iframe,\n            },\n        });\n\n        const closeEvent = new EventEmitter();\n\n        closeEvent.subscribe(() => {\n            dialogRef.close();\n        });\n    }\n\n    openPopupModal(modalData: BabylonModalPopupI): void {\n        const dialogRef = this.dialog.open(BabylonModalPopupComponent, {\n            width: this.screenSizer.minMediumTablet() ? '65%' : '95vw',\n            height: this.screenSizer.minMediumTablet() ? '600px' : '99%',\n            maxHeight: this.screenSizer.minMediumTablet() ? '95%' : '99%',\n            maxWidth: this.screenSizer.minMediumTablet() ? '1000px' : '100vw',\n            hasBackdrop: true,\n            panelClass: 'newsletter',\n            data: modalData,\n        });\n\n        const closeEvent = new EventEmitter();\n\n        closeEvent.subscribe(() => {\n            dialogRef.close();\n        });\n    }\n\n    openOfferModal(): void {\n        const dialogRef = this.dialog.open(BabylonOfferPopupV3Component, {\n            width: this.screenSizer.minMediumTablet() ? '65%' : '95vw',\n            height: this.screenSizer.minMediumTablet() ? 'auto' : 'auto',\n            maxHeight: this.screenSizer.minMediumTablet() ? '714px' : '100vh',\n            maxWidth: this.screenSizer.minMediumTablet() ? '1000px' : '100vw',\n            hasBackdrop: true,\n            panelClass: 'offer-popup-v3-dialog',\n        });\n    }\n\n    opeNewsletterV2Modal(): void {\n        const dialogRef = this.dialog.open(BabylonNewsletterModalV2Component, {\n            width: this.screenSizer.minMediumTablet() ? '65%' : '95vw',\n            height: this.screenSizer.minMediumTablet() ? 'auto' : 'auto',\n            maxHeight: this.screenSizer.minMediumTablet() ? '714px' : '100vh',\n            maxWidth: this.screenSizer.minMediumTablet() ? '1000px' : '100vw',\n            hasBackdrop: true,\n            panelClass: 'newsletter-v2',\n        });\n    }\n}\n","import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    effect,\n    inject,\n    Input,\n    PLATFORM_ID,\n    Renderer2,\n} from '@angular/core';\nimport { Subject, switchMap, take, takeUntil, tap } from 'rxjs';\nimport { BabylonDataBackgroundDirective } from '../../../directives/data-background/data-background.directive';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport { BabylonButtonI } from '../../../interfaces/babylon-button.interface';\nimport { BabylonImageI } from '../../../interfaces/babylon-image.interface';\nimport { ScreenSizerService } from '../../../services';\nimport { Utils } from '../../../utils';\n\n@Component({\n    selector: 'lib-babylon-banner-info',\n    standalone: true,\n    imports: [\n        CommonModule,\n        BabylonDataBackgroundDirective,\n        BabylonLinkTypeDirective,\n    ],\n    templateUrl: './babylon-banner-info.component.html',\n    styleUrl: './babylon-banner-info.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonBannerInfoComponent implements AfterViewInit {\n    @Input() pretitle?: string;\n    @Input() title?: string;\n    @Input() description?: string;\n    @Input() button?: BabylonButtonI[];\n    @Input() image?: BabylonImageI;\n    @Input() video?: string;\n\n    private hasPlayerInitialized = false;\n    private observer?: IntersectionObserver;\n\n    private readonly screenSizer = inject(ScreenSizerService);\n    private readonly renderer = inject(Renderer2);\n    private readonly platform = inject(PLATFORM_ID);\n\n    private destroy$ = new Subject<void>();\n\n    constructor(private cdr: ChangeDetectorRef) {\n        effect(() => {\n            const bp = this.screenSizer.smallTablet();\n            this.manageVideoOrImage();\n        });\n    }\n\n    ngAfterViewInit() {\n        this.cdr.detectChanges();\n        if (!isPlatformBrowser(this.platform)) {\n            return;\n        }\n\n        if (!this.screenSizer.minMediumTablet()) {\n            return;\n        }\n\n        const target = document.querySelector('.youtube-bg');\n        if (target) {\n            this.observer = new IntersectionObserver(\n                (entries) => {\n                    entries.forEach((e) => {\n                        if (e.isIntersecting && !this.hasPlayerInitialized) {\n                            this.loadVideoPlayer();\n                            this.observer?.disconnect();\n                        }\n                    });\n                },\n                { rootMargin: '200px 0px' }\n            );\n            this.observer.observe(target);\n        }\n    }\n\n    ngOnDestroy(): void {\n        this.observer?.disconnect();\n        this.destroy$.next();\n        this.destroy$.complete();\n    }\n\n    private manageVideoOrImage(): void {\n        if (!isPlatformBrowser(this.platform)) {\n            return;\n        }\n\n        /* CASO MÓVIL: muestra imagen y oculta wrapper ---------------- */\n        if (!this.screenSizer.minMediumTablet()) {\n            const wrapper = document.querySelector('#wrapper_bgndVideo');\n            if (this.image?.src && wrapper) {\n                this.renderer.setStyle(wrapper, 'display', 'none');\n                this.renderer.setStyle(\n                    document.querySelector('.youtube-bg'),\n                    'padding-top',\n                    '110px'\n                );\n            }\n        } else {\n            this.loadVideoPlayer();\n        }\n        /* CASO DESKTOP/TABLET: no hace nada aquí ---------------------- */\n    }\n\n    private loadVideoPlayer(): void {\n        Utils.loadScript$('assets/babylon/js/jquery.min.js')\n            .pipe(\n                switchMap(() => this.waitForJQuery()),\n                switchMap(() =>\n                    Utils.loadScript$(\n                        'assets/babylon/js/jquery.mb.YTPlayer.min.js'\n                    )\n                ),\n                tap(() => {\n                    if (this.hasPlayerInitialized) {\n                        return;\n                    }\n\n                    const w = window as any;\n                    const $ = w.jQuery || w.$;\n\n                    if ($ && $.fn && $.fn.YTPlayer) {\n                        const videoEl = $('#bgndVideo') as any;\n                        if (videoEl.length) {\n                            this.hasPlayerInitialized = true;\n                            videoEl.YTPlayer(this.getVideoDataProperty());\n\n                            const img = document.querySelector(\n                                '.babylon__banner-info .img'\n                            ) as HTMLImageElement | null;\n                            if (img) {\n                                img.style.display = 'none';\n                            }\n                        }\n                    }\n                }),\n                take(1),\n                takeUntil(this.destroy$)\n            )\n            .subscribe();\n    }\n\n    private waitForJQuery(): Promise<void> {\n        return new Promise((resolve) => {\n            const check = () => {\n                const w = window as any;\n                if (w.jQuery && w.$) {\n                    resolve();\n                } else {\n                    setTimeout(check, 30);\n                }\n            };\n            check();\n        });\n    }\n\n    getVideoDataProperty(): any {\n        return {\n            videoURL: this.video,\n            containment: '.youtube-bg',\n            autoPlay: true,\n            mute: true,\n            startAt: 1,\n            opacity: 1,\n            showControls: false,\n            loop: true,\n            stopMovieOnBlur: false,\n        };\n    }\n}\n","<!--  La foto es opcional -->\n<section class=\"babylon__banner-info margin-main\">\n    @if (video) {\n        <div\n            class=\"cs_hero cs_style_4 cs_primary_bg cs_bg_filed text-center position-relative youtube-bg\"\n            id=\"wrapper_bgndVideo\"\n        >\n            <div class=\"video-container\">\n                <div id=\"bgndVideo\" class=\"player\"></div>\n            </div>\n        </div>\n    }\n    @if (image) {\n        <div\n            class=\"margin-main cs_bg_filed bg--white img\"\n            dataBackground=\"url('{{ image?.src }}')\"\n        ></div>\n    }\n    <div\n        class=\"col-xxl-8 offset-xxl-2 col-xl-10 offset-xl-1\"\n        [ngClass]=\"{ 'babylon__banner-info__opaque-box': image?.src }\"\n    >\n        <div class=\"cs_newsletter cs_style_1 text-center\">\n            <div class=\"intro_info align--center intro_info--light no-align\">\n                @if (pretitle) {\n                    <h3 class=\"pretitle\">{{ pretitle }}</h3>\n                }\n                @if (title) {\n                    <h2 class=\"title mb--10\" [innerHTML]=\"title\"></h2>\n                }\n                @if (description) {\n                    <p class=\"text mb--30\">\n                        {{ description }}\n                    </p>\n                }\n                @if (button?.length) {\n                    <div class=\"btns__box align--center\">\n                        @for (item of button; track $index) {\n                            @if (item) {\n                                <a\n                                    role=\"button\"\n                                    [attr.aria-label]=\"item.label\"\n                                    [href]=\"item.url\"\n                                    [linkType]=\"item.linkType\"\n                                    class=\"btn btn_primary btn--light\"\n                                >\n                                    <b>{{ item.label }}</b>\n                                    <span\n                                        class=\"babylon-arrow-right-big\"\n                                    ></span>\n                                </a>\n                            }\n                        }\n                    </div>\n                }\n            </div>\n        </div>\n    </div>\n</section>\n","import { CommonModule } from '@angular/common';\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    EventEmitter,\n    inject,\n    Input,\n    Output,\n} from '@angular/core';\nimport {\n    FormBuilder,\n    FormsModule,\n    ReactiveFormsModule,\n    Validators,\n} from '@angular/forms';\nimport { BabylonDataBackgroundDirective } from '../../../directives/data-background/data-background.directive';\nimport { BabylonButtonI } from '../../../interfaces/babylon-button.interface';\nimport { BabylonImageI } from '../../../interfaces/babylon-image.interface';\n\n@Component({\n    selector: 'lib-babylon-banner-newsletter',\n    standalone: true,\n    imports: [\n        CommonModule,\n        BabylonDataBackgroundDirective,\n        FormsModule,\n        ReactiveFormsModule,\n    ],\n    templateUrl: './babylon-banner-newsletter.component.html',\n    styleUrl: './babylon-banner-newsletter.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonBannerNewsletterComponent {\n    @Input() placeholder?: string;\n    @Input() text?: string;\n    @Input() title?: string;\n    @Input() button?: BabylonButtonI[];\n    @Input() image?: BabylonImageI;\n    @Input() identifier?: string;\n    @Input() icon?: string;\n\n    @Output() submitForm = new EventEmitter<string>();\n\n    fb = inject(FormBuilder);\n\n    form = this.fb.group({\n        email: ['', [Validators.required, Validators.email]],\n    });\n\n    btnClick(): void {\n        if (this.form.valid) {\n            this.submitForm.emit(this.form.value.email!);\n        }\n    }\n}\n","<!--  La foto es opcional -->\n<section class=\"babylon__banner-newsletter margin-main\" [ngClass]=\"identifier\">\n    <div\n        class=\"margin-main cs_bg_filed bg--white\"\n        dataBackground=\"url('{{ image?.src }}')\"\n    >\n        <div class=\"container\">\n            <div class=\"row\">\n                <div class=\"col-xxl-8 offset-xxl-2 col-xl-10 offset-xl-1\">\n                    <div class=\"cs_newsletter cs_style_1 text-center\">\n                        <span\n                            class=\"cs_newsletter_icon cs_center cs_mb_26 wow zoomIn\"\n                            data-wow-duration=\"0.8s\"\n                            data-wow-delay=\"0.2s\"\n                        >\n                            <span [class]=\"icon ? 'icon--svg icon-' + icon : 'babylon-envelope'\"></span>\n                        </span>\n                        <div class=\"intro_info align--center intro_info--light\">\n                            @if (title) {\n                                <h3 class=\"title--small mb--10\">{{ title }}</h3>\n                            }\n                            @if (text) {\n                                <p class=\"text mb--10\" [innerHTML]=\"text\"></p>\n                            }\n                        </div>\n                        <form\n                            action=\"#\"\n                            [formGroup]=\"form\"\n                            class=\"cs_newsletter_form position-relative\"\n                        >\n                            <input\n                                type=\"email\"\n                                class=\"cs_newsletter_input cs--radius\"\n                                formControlName=\"email\"\n                                [placeholder]=\"placeholder\"\n                            />\n\n                            @if (button && button[0]?.label) {\n                                <button\n                                    class=\"cs_btn cs_style_2 cs_medium cs--radius cs_fs_15 btn-link btn-link--light\"\n                                    [ngClass]=\"{\n                                        'pointer-none': form.invalid,\n                                    }\"\n                                    [name]=\"button[0]?.label\"\n                                    (click)=\"btnClick()\"\n                                >\n                                    <b>{{ button[0]?.label }}</b>\n                                    <span\n                                        class=\"babylon-arrow-right-big\"\n                                    ></span>\n                                </button>\n                            }\n                        </form>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n</section>\n","import { InjectionToken } from '@angular/core';\n\nexport const organization_name = new InjectionToken<string>(\n    'organization_name',\n    {\n        providedIn: 'root',\n        factory: () => '', // default (p. ej. lista vacía)\n    }\n);\n","import { CommonModule, DOCUMENT } from '@angular/common';\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    Inject,\n    inject,\n    Input,\n    OnChanges,\n    OnDestroy,\n    SimpleChanges,\n    Pipe,\n    PipeTransform,\n} from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport { BabylonTagsI, BabylonTextsColorsI } from '../../../interfaces';\nimport { BabylonButtonI } from '../../../interfaces/babylon-button.interface';\nimport { BabylonImageI } from '../../../interfaces/babylon-image.interface';\nimport { BabylonDynamicHeadingComponent } from '../../shared';\nimport { BabylonBlogCategoryI, BabylonBlogPostI } from '../babylon-blog-list';\nimport { ActivatedRoute } from '@angular/router';\nimport { organization_name } from '../../../utils/organization-name.token';\n\n// --- PIPE para confiar en enlaces provenientes de contenido HTML ---\n@Pipe({\n    name: 'safeHtml',\n    standalone: true,\n})\nexport class SafeHtmlPipe implements PipeTransform {\n    constructor(private sanitizer: DomSanitizer) {}\n    transform(html: string): SafeHtml {\n        return this.sanitizer.bypassSecurityTrustHtml(html);\n    }\n}\n@Component({\n    selector: 'lib-babylon-blog-details',\n    standalone: true,\n    imports: [\n        CommonModule,\n        BabylonDynamicHeadingComponent,\n        BabylonLinkTypeDirective,\n        SafeHtmlPipe,\n    ],\n    templateUrl: './babylon-blog-details.component.html',\n    styleUrl: './babylon-blog-details.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonBlogDetailsComponent implements OnChanges, OnDestroy {\n    @Input() title?: string;\n    @Input() subtitle?: string;\n    @Input() description?: string;\n    @Input() additional1?: string;\n    @Input() additional2?: string;\n    @Input() additional3?: string;\n    @Input() additional4?: string;\n    @Input() img?: BabylonImageI;\n    @Input() middleImg?: boolean = false;\n    @Input() tags?: BabylonTagsI;\n    @Input() textColors?: BabylonTextsColorsI;\n    @Input() button?: BabylonButtonI;\n    @Input() category?: string;\n    @Input() date?: Date;\n    @Input() categories?: BabylonBlogCategoryI[];\n    @Input() relatedPostsTitle?: string;\n    @Input() categoriesTitle?: string;\n    @Input() relatedPosts?: BabylonBlogPostI[] = [];\n    @Input() searchPlaceHolder?: string;\n    @Input() share?: string;\n\n    private organizationName = inject(organization_name);\n    private scriptId = 'babylon-json-ld';\n    constructor(\n        @Inject(DOCUMENT) private document: Document,\n        private route: ActivatedRoute\n    ) {}\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if (\n            changes['title'] ||\n            changes['description'] ||\n            changes['date'] ||\n            changes['img']\n        ) {\n            this.updateJsonLd();\n        }\n    }\n\n    ngOnDestroy(): void {\n        this.removeJsonLd();\n    }\n    private updateJsonLd(): void {\n        if (!this.title) return;\n        let lang;\n        this.route.url.subscribe((segments) => {\n            if (segments.length > 0) {\n                lang = segments[0].path;\n            } else {\n                lang = 'es';\n            }\n        });\n        let domain = window.location.origin + '/' + lang;\n        const schema = {\n            '@context': 'https://schema.org',\n            '@graph': [\n                {\n                    '@type': 'BlogPosting',\n                    headline: this.title,\n                    description: this.htmlToText(this.additional1) || '',\n                    image: this.img?.src ? [this.img.src] : [],\n                    datePublished: this.date\n                        ? new Date(this.date).toISOString()\n                        : '',\n                    dateModified: this.date\n                        ? new Date(this.date).toISOString()\n                        : '',\n                    '@author': {\n                        '@type': 'Organization',\n                        name: this.organizationName ?? '',\n                        url: domain,\n                    },\n                    mainEntityOfPage: {\n                        '@type': 'WebPage',\n                        '@id': this.currentUrl,\n                    },\n                },\n                {\n                    '@type': 'WebPage',\n                    '@id': this.currentUrl,\n                    url: this.currentUrl,\n                    name: this.title,\n                    inLanguage: lang,\n                },\n            ],\n        };\n\n        this.insertScript(schema);\n    }\n    private insertScript(schema: any): void {\n        this.removeJsonLd();\n\n        const script = this.document.createElement('script');\n        script.type = 'application/ld+json';\n        script.id = this.scriptId;\n        script.text = JSON.stringify(schema);\n\n        this.document.head.appendChild(script);\n    }\n    private removeJsonLd(): void {\n        const script = this.document.getElementById(this.scriptId);\n        if (script) {\n            script.remove();\n        }\n    }\n\n    private htmlToText(content: string | undefined) {\n        if (!content || !content.length) {\n            return;\n        }\n\n        const tempDiv = document.createElement('div');\n        tempDiv.innerHTML = content;\n\n        return tempDiv.textContent || tempDiv.innerText || '';\n    }\n\n    get currentUrl(): string {\n        if (typeof window === 'undefined') return '';\n        return window.location.href;\n    }\n\n    get shareText(): string {\n        return this.title ?? '';\n    }\n\n    get facebookShareUrl(): string {\n        const url = encodeURI(this.currentUrl);\n        return `https://www.facebook.com/sharer/sharer.php?u=${url}`;\n    }\n\n    get twitterShareUrl(): string {\n        const url = encodeURI(this.currentUrl);\n        const text = encodeURIComponent(this.shareText);\n        return `https://twitter.com/intent/tweet?url=${url}&text=${text}`;\n    }\n\n    get linkedinShareUrl(): string {\n        const url = encodeURI(this.currentUrl);\n        return `https://www.linkedin.com/sharing/share-offsite/?url=${url}`;\n    }\n\n    get hasSidebar(): boolean {\n        return !!(this.categoriesTitle || this.relatedPostsTitle);\n    }\n}\n","<article class=\"babylon__blog-detail margin-main\">\n    @if (button) {\n        <div class=\"btns__box box-container col-lg-8 offset-lg-2\">\n            <a\n                [href]=\"button.url\"\n                [linkType]=\"button.linkType\"\n                class=\"btn-link\"\n                [attr.aria-label]=\"button.label\"\n            >\n                <span class=\"babylon-arrow-left-big\"></span>\n                <b>{{ button.label }}</b>\n            </a>\n        </div>\n    }\n    <header class=\"container-fluid cs_plr_100\">\n        <div class=\"intro_info title-container col-lg-8 offset-lg-2\">\n            @if (title) {\n                <h1 class=\"title cs_mb_13\">{{ title }}</h1>\n            }\n            <div class=\"cs_post_meta_4 cs_mb_13 pretitle\">\n                @if (category) {\n                    <span>{{ category }}</span>\n                }\n                @if (date) {\n                    <span>{{ date | date: 'dd/MM/yyyy' }}</span>\n                }\n            </div>\n        </div>\n    </header>\n    <div class=\"container-fluid cs_plr_100\">\n        <div class=\"row cs_gap_y_lg_80\">\n            <div ngClass=\"col-lg-8 offset-lg-2\">\n                <div class=\"cs_blog_details\">\n                    <div class=\"cs_image_layer cs_about_img\">\n                        @if (img && !middleImg) {\n                            <img\n                                [src]=\"img.src\"\n                                [alt]=\"img.alt\"\n                                class=\"cs--radius\"\n                                loading=\"lazy\"\n                            />\n                            @if (img.ndTitle) {\n                                {{ img.ndTitle }}\n                            }\n                        }\n                    </div>\n                    <div class=\"intro_info no-align\">\n                        @if (description) {\n                            <div\n                                class=\"text\"\n                                [innerHTML]=\"description | safeHtml\"\n                            ></div>\n                        }\n                        @if (subtitle) {\n                            <h2 class=\"title--small\">{{ subtitle }}</h2>\n                        }\n                        <!--Additional1 is used on blog list for resume -->\n                        @if (additional2) {\n                            <div\n                                class=\"text\"\n                                [innerHTML]=\"additional2 | safeHtml\"\n                            ></div>\n                        }\n                        @if (img && middleImg) {\n                            <img\n                                [src]=\"img.src\"\n                                [alt]=\"img.alt\"\n                                class=\"cs--radius\"\n                                loading=\"lazy\"\n                            />\n                            @if (img.ndTitle) {\n                                {{ img.ndTitle }}\n                            }\n                        }\n                        @if (additional3) {\n                            <div\n                                class=\"text\"\n                                [innerHTML]=\"additional3 | safeHtml\"\n                            ></div>\n                        }\n                        @if (additional4) {\n                            <div\n                                class=\"text\"\n                                [innerHTML]=\"additional4 | safeHtml\"\n                            ></div>\n                        }\n                    </div>\n                </div>\n                @if (!hasSidebar) {\n                    <footer class=\"cs_post_share d-lg-none\">\n                        <ng-container\n                            [ngTemplateOutlet]=\"shareButtons\"\n                        ></ng-container>\n                    </footer>\n                }\n                @if (button) {\n                    <div class=\"btns__box\">\n                        <a\n                            [href]=\"button.url\"\n                            [linkType]=\"button.linkType\"\n                            class=\"btn-link\"\n                            aria-label=\"volver\"\n                        >\n                            <span class=\"babylon-arrow-left-big\"></span>\n                            <b>{{ button.label }}</b>\n                        </a>\n                    </div>\n                }\n            </div>\n            @if (!hasSidebar) {\n                <aside class=\"col-lg-1 d-none d-lg-block\">\n                    <div class=\"share_sidebar\">\n                        <ng-container\n                            [ngTemplateOutlet]=\"shareButtons\"\n                        ></ng-container>\n                        @if (share) {\n                            <span class=\"share_label\">{{ share }}</span>\n                        }\n                    </div>\n                </aside>\n            }\n            @if (hasSidebar) {\n                <aside class=\"col-lg-4\">\n                    <div class=\"cs_sidebar cs_right_sidebar\">\n                        <div class=\"cs_sidebar_item widget_categories\">\n                            @if (categoriesTitle) {\n                                <lib-babylon-dynamic-heading\n                                    [tag]=\"tags?.categoriesTitle || 'h4'\"\n                                    cssClass=\"title--small mb--20\"\n                                    [color]=\"textColors?.categoriesTitle\"\n                                    [content]=\"categoriesTitle\"\n                                ></lib-babylon-dynamic-heading>\n                            }\n                            @if (categories?.length) {\n                                <ul>\n                                    @for (\n                                        category of categories;\n                                        track $index\n                                    ) {\n                                        <li class=\"cat-item\">\n                                            <a\n                                                aria-label=\"label\"\n                                                ?\n                                                [href]=\"\n                                                    button?.url +\n                                                    '?category=' +\n                                                    category?.title\n                                                \"\n                                                >{{ category?.title }} ({{\n                                                    category?.posts\n                                                }})</a\n                                            >\n                                        </li>\n                                    }\n                                </ul>\n                            }\n                        </div>\n                        <div class=\"cs_sidebar_item\">\n                            @if (relatedPostsTitle) {\n                                <lib-babylon-dynamic-heading\n                                    [tag]=\"tags?.latestPostsTitle || 'h4'\"\n                                    cssClass=\"title--small mb--20\"\n                                    [color]=\"textColors?.latestPostsTitle\"\n                                    [content]=\"relatedPostsTitle\"\n                                ></lib-babylon-dynamic-heading>\n                            }\n                            @if (relatedPosts?.length) {\n                                <ul class=\"cs_recent_posts\">\n                                    @for (post of relatedPosts; track $index) {\n                                        <li>\n                                            <div class=\"cs_recent_post\">\n                                                <h3\n                                                    class=\"title--smaller mb--10\"\n                                                >\n                                                    <a\n                                                        [attr.aria-label]=\"\n                                                            post.postUrl?.label\n                                                        \"\n                                                        [href]=\"\n                                                            post.postUrl?.url\n                                                        \"\n                                                        [linkType]=\"\n                                                            post.postUrl\n                                                                ?.linkType\n                                                        \"\n                                                        >{{ post?.title }}</a\n                                                    >\n                                                </h3>\n                                                @if (post?.date) {\n                                                    <em class=\"text--small\">{{\n                                                        post?.date\n                                                            | date: 'mediumDate'\n                                                    }}</em>\n                                                }\n                                            </div>\n                                        </li>\n                                    }\n                                </ul>\n                            }\n                        </div>\n                    </div>\n                </aside>\n            }\n            <ng-template #shareButtons>\n                <nav class=\"cs_social_share_btns\">\n                    <a\n                        [href]=\"facebookShareUrl\"\n                        target=\"_blank\"\n                        rel=\"noopener\"\n                        aria-label=\"Compartir en Facebook\"\n                        class=\"share-facebook\"\n                    >\n                        <span class=\"babylon-facebook\"></span>\n                    </a>\n                    <a\n                        [href]=\"twitterShareUrl\"\n                        target=\"_blank\"\n                        rel=\"noopener\"\n                        aria-label=\"Compartir en X\"\n                        class=\"share-twitter\"\n                    >\n                        <span class=\"babylon-twitter\"></span>\n                    </a>\n                    <a\n                        [href]=\"linkedinShareUrl\"\n                        target=\"_blank\"\n                        rel=\"noopener\"\n                        aria-label=\"Compartir en LinkedIn\"\n                        class=\"share-linkedin\"\n                    >\n                        <span class=\"babylon-linkedin\"></span>\n                    </a>\n                </nav>\n            </ng-template>\n        </div>\n    </div>\n</article>\n","import { CommonModule } from '@angular/common';\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    EventEmitter,\n    Input,\n    OnInit,\n    Output,\n} from '@angular/core';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { debounceTime, distinctUntilChanged, startWith } from 'rxjs';\nimport { BabylonBlogPostI } from '../../core';\n\n@Component({\n    selector: 'lib-babylon-search',\n    imports: [CommonModule, ReactiveFormsModule],\n    templateUrl: './babylon-search.component.html',\n    styleUrl: './babylon-search.component.scss',\n    standalone: true,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonSearchComponent implements OnInit {\n    @Input() searchPlaceHolder?: string = 'Search...';\n    @Input() elements: BabylonBlogPostI[] | any[] = [];\n    @Input() liveSearch: boolean = true;\n    @Input() fields: (keyof BabylonBlogPostI)[] | any[] = [\n        'title',\n        'subtitle',\n        'description',\n        'category',\n        'date',\n    ];\n\n    @Output() results = new EventEmitter<{\n        items: BabylonBlogPostI[] | any[];\n        flag: number;\n    }>();\n\n    q = new FormControl<string>('', { nonNullable: true });\n\n    onInit = true;\n\n    emitResults(items: BabylonBlogPostI[], flag: number) {\n        this.results.emit({ items, flag });\n    }\n\n    ngOnInit(): void {\n        this.emitResults(this.elements, 0);\n\n        if (this.liveSearch) {\n            this.q.valueChanges\n                .pipe(startWith(''), debounceTime(300), distinctUntilChanged())\n                .subscribe((term) => {\n                    const filtered = this.filter(this.elements, term);\n                    if (this.onInit) {\n                        this.onInit = false;\n                        return;\n                    }\n                    this.emitResults(filtered, 1);\n                });\n        }\n    }\n\n    search(): void {\n        const filtered = this.filter(this.elements, this.q.value);\n        this.emitResults(filtered, 1);\n    }\n\n    private filter(list: BabylonBlogPostI[], term: string): BabylonBlogPostI[] {\n        const t = term?.toLowerCase().trim();\n        if (!t) return this.elements;\n\n        return list.filter((item) => {\n            const values: string[] = [];\n\n            for (const f of this.fields) {\n                const val = (item as any)?.[f];\n                if (val == null) continue;\n\n                if (val instanceof Date) {\n                    values.push(\n                        val.toLocaleDateString(),\n                        val.toDateString(),\n                        val.toISOString()\n                    );\n                } else {\n                    values.push(String(val));\n                }\n            }\n\n            return values.some((v) => v.toLowerCase().includes(t));\n        });\n    }\n}\n\nexport interface BabylonSearchElementI {\n    id?: number;\n    title?: string;\n    subtitle?: string;\n    description?: string;\n    category?: string;\n    date?: Date;\n}\n","<div class=\"cs_sidebar_item widget_search pb--50\">\n    <form class=\"cs_sidebar_search\" (ngSubmit)=\"search()\" novalidate>\n        <input\n            type=\"text\"\n            [placeholder]=\"searchPlaceHolder\"\n            [formControl]=\"q\"\n        />\n        <button class=\"cs_sidebar_search_btn\">\n            <svg\n                width=\"18\"\n                height=\"18\"\n                viewBox=\"0 0 18 18\"\n                fill=\"none\"\n                xmlns=\"http://www.w3.org/2000/svg\"\n            >\n                <g clip-path=\"url(#clip0_658_659)\">\n                    <path\n                        d=\"M17.7808 16.7198L13.3041 12.243C14.524 10.751 15.1239 8.84707 14.9795 6.92518C14.8351 5.00328 13.9575 3.2104 12.5283 1.91739C11.099 0.624387 9.22751 -0.0698265 7.3008 -0.0216526C5.37409 0.0265212 3.5396 0.813397 2.17678 2.17621C0.813961 3.53903 0.0270858 5.37352 -0.0210881 7.30024C-0.0692619 9.22695 0.624952 11.0985 1.91796 12.5277C3.21097 13.9569 5.00384 14.8345 6.92574 14.9789C8.84764 15.1233 10.7515 14.5235 12.2436 13.3035L16.7203 17.7803C16.8618 17.9169 17.0512 17.9925 17.2479 17.9908C17.4445 17.9891 17.6326 17.9102 17.7717 17.7711C17.9107 17.6321 17.9896 17.444 17.9913 17.2473C17.993 17.0507 17.9174 16.8612 17.7808 16.7198ZM7.50057 13.5C6.31388 13.5 5.15384 13.1481 4.16715 12.4888C3.18045 11.8295 2.41142 10.8925 1.95729 9.79611C1.50317 8.69975 1.38435 7.49335 1.61586 6.32946C1.84737 5.16558 2.41881 4.09648 3.25793 3.25736C4.09704 2.41825 5.16614 1.8468 6.33003 1.61529C7.49391 1.38378 8.70031 1.5026 9.79667 1.95673C10.893 2.41085 11.8301 3.17989 12.4894 4.16658C13.1487 5.15328 13.5006 6.31332 13.5006 7.5C13.4988 9.09076 12.8661 10.6158 11.7412 11.7407C10.6164 12.8655 9.09132 13.4982 7.50057 13.5Z\"\n                        fill=\"currentColor\"\n                    />\n                </g>\n                <defs>\n                    <clipPath id=\"clip0_658_659\">\n                        <rect width=\"18\" height=\"18\" fill=\"white\" />\n                    </clipPath>\n                </defs>\n            </svg>\n        </button>\n    </form>\n</div>\n","import { ChangeDetectorRef, Directive, EmbeddedViewRef, EventEmitter, Input, OnInit, Output, TemplateRef, ViewContainerRef } from '@angular/core';\n\ninterface PaginateContext<T> {\n  $implicit: T[];\n  pagedItems: T[];\n  currentPage: number;\n  totalPages: number;\n  next: () => void;\n  prev: () => void;\n  goToPage: (page: number) => void;\n}\n\n@Directive({\n  selector: '[libPaginate]',\n  standalone: true,\n})\nexport class BabylonPaginationDirective<T = unknown> implements OnInit {\n  private _items: T[] = [];\n  private _pageSize: number = 8;\n  private _currentPage: number = 1;\n\n  private viewRef?: EmbeddedViewRef<PaginateContext<T>>;\n  private context: PaginateContext<T> = {\n    $implicit: [],\n    pagedItems: [],\n    currentPage: 1,\n    totalPages: 0,\n    next: () => this.next(),\n    prev: () => this.prev(),\n    goToPage: (p: number) => this.goToPage(p),\n  };\n\n  constructor(\n    private readonly templateRef: TemplateRef<PaginateContext<T>>,\n    private readonly viewContainer: ViewContainerRef,\n    private readonly cdr: ChangeDetectorRef,\n  ) {}\n\n  @Input()\n  set libPaginate(items: T[] | null | undefined) {\n    this._items = Array.isArray(items) ? items : [];\n    this.resetToFirstPage();\n    this.updateView();\n  }\n\n  @Input('libPaginateItems')\n  set libPaginateItems(items: T[] | null | undefined) {\n    this.libPaginate = items as T[];\n  }\n\n  @Input('libPaginatePageSize')\n  set libPaginatePageSize(size: number | null | undefined) {\n    const parsed = Number(size);\n    this._pageSize = Number.isFinite(parsed) && parsed > 0 ? parsed : 8;\n    this.ensureCurrentPageInRange();\n    this.updateView();\n  }\n\n  @Input('libPaginateCurrentPage')\n  set libPaginateCurrentPage(page: number | null | undefined) {\n    const parsed = Number(page);\n    if (Number.isFinite(parsed) && parsed >= 1) {\n      this._currentPage = parsed;\n      this.ensureCurrentPageInRange();\n      this.updateView();\n    }\n  }\n\n  @Output()\n  libPaginatePageChange = new EventEmitter<number>();\n\n  ngOnInit(): void {\n    this.viewRef = this.viewContainer.createEmbeddedView(this.templateRef, this.context);\n    this.updateView();\n  }\n\n  next(): void {\n    this.goToPage(this._currentPage + 1);\n  }\n\n  prev(): void {\n    this.goToPage(this._currentPage - 1);\n  }\n\n  goToPage(page: number): void {\n    const totalPages = this.computeTotalPages();\n    if (totalPages === 0) return;\n    const target = Math.max(1, Math.min(totalPages, Math.trunc(page)));\n    if (target !== this._currentPage) {\n      this._currentPage = target;\n      this.updateView();\n      this.libPaginatePageChange.emit(this._currentPage);\n    }\n  }\n\n\n  private resetToFirstPage(): void {\n    this._currentPage = 1;\n  }\n\n  private ensureCurrentPageInRange(): void {\n    const totalPages = this.computeTotalPages();\n    if (totalPages === 0) {\n      this._currentPage = 1;\n      return;\n    }\n    if (this._currentPage > totalPages) {\n      this._currentPage = totalPages;\n    }\n    if (this._currentPage < 1) {\n      this._currentPage = 1;\n    }\n  }\n\n  private computeTotalPages(): number {\n    const totalItems = this._items.length;\n    return totalItems > 0 ? Math.ceil(totalItems / this._pageSize) : 0;\n  }\n\n  private getPagedItems(): T[] {\n    if (!this._items.length) return [];\n    const startIndex = (this._currentPage - 1) * this._pageSize;\n    const endIndex = startIndex + this._pageSize;\n    return this._items.slice(startIndex, endIndex);\n  }\n\n  private updateView(): void {\n    const paged = this.getPagedItems();\n    const totalPages = this.computeTotalPages();\n\n    this.context.pagedItems = paged;\n    this.context.$implicit = paged;\n    this.context.currentPage = this._currentPage;\n    this.context.totalPages = totalPages;\n\n    if (this.viewRef) {\n      this.viewRef.markForCheck();\n    }\n    this.cdr.markForCheck();\n  }\n}\n\n\n","import { CommonModule } from '@angular/common';\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    Input,\n    OnChanges,\n    OnInit,\n    SimpleChanges,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport { BabylonButtonI } from '../../../interfaces/babylon-button.interface';\nimport { BabylonImageI } from '../../../interfaces/babylon-image.interface';\nimport { BabylonTagsI } from '../../../interfaces/babylon-tags.interface';\nimport { BabylonTextsColorsI } from '../../../interfaces/babylon-texts-colors.interface';\nimport { BabylonDynamicHeadingComponent } from '../../shared/babylon-dynamic-heading/babylon-dynamic-heading.component';\nimport { BabylonSearchComponent } from '../../shared/babylon-search';\nimport { BabylonPaginationDirective } from '../../../directives/babylon-pagination/babylon-pagination.directive';\n\n@Component({\n    selector: 'lib-babylon-blog-list',\n    standalone: true,\n    imports: [\n        CommonModule,\n        BabylonDynamicHeadingComponent,\n        BabylonLinkTypeDirective,\n        BabylonSearchComponent,\n        BabylonPaginationDirective,\n    ],\n    templateUrl: './babylon-blog-list.component.html',\n    styleUrl: './babylon-blog-list.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonBlogListComponent implements OnInit, OnChanges {\n    @Input() pretitle?: string;\n    @Input() title?: string;\n    @Input() posts: BabylonBlogPostI[] = [];\n    @Input() tags?: BabylonTagsI;\n    @Input() textColors?: BabylonTextsColorsI;\n    @Input() categoriesTitle?: string;\n    @Input() categories?: BabylonBlogCategoryI[];\n    @Input() latestPostsTitle?: string;\n    @Input() latestPosts?: BabylonBlogPostI[];\n    @Input() searchPlaceHolder?: string;\n    @Input() notfoundText?: string;\n    @Input() anterior?: string;\n    @Input() siguiente?: string;\n    @Input() pageSize: number = 3;\n\n    public filteredPosts: BabylonBlogPostI[] = [];\n    public currentCategory: string | undefined = undefined;\n    public categoriesToRender: BabylonBlogCategoryI[] = [];\n\n    constructor(private route: ActivatedRoute) {}\n\n    ngOnInit() {\n        this.route.queryParamMap.subscribe((params) => {\n            this.setCategoryFilter(params?.get('category') ?? undefined);\n        });\n        this.updateCategoriesFromPosts();\n    }\n\n    ngOnChanges(changes: SimpleChanges) {\n        if (changes['posts'] || changes['categories']) {\n            this.updateCategoriesFromPosts();\n        }\n    }\n\n    setCategoryFilter(_category?: string) {\n        const category = _category?.toLowerCase();\n        this.currentCategory = category ?? undefined;\n        this.filteredPosts =\n            this.posts?.filter(\n                (post) =>\n                    this.getPostCategoryTitle(post.category)\n                        ?.toLowerCase() === category && post.active\n            ) ??\n            this.posts ??\n            [];\n\n        if (!_category) {\n            this.filteredPosts =\n                this.posts?.filter((post) => post.active) ?? this.posts ?? [];\n        }\n    }\n\n    search($event: any) {\n        if ($event?.flag !== 1) return;\n        this.setCategoryFilter();\n        this.filteredPosts = $event.items;\n    }\n\n    private updateCategoriesFromPosts() {\n        const categoriesMap = new Map<string, BabylonBlogCategoryI>();\n\n        // Si hay categories de input, agregarlos primero (deduplicando)\n        if (this.categories?.length) {\n            this.categories.forEach((category) => {\n                const title = category.title?.toString().trim();\n                if (!title) return;\n\n                const key = title.toLowerCase();\n                categoriesMap.set(key, {\n                    ...category,\n                    title: title,\n                });\n            });\n        } else {\n            // Si no hay categories, calcular desde posts\n            (this.posts || [])\n                .filter((post) => post.active)\n                .forEach((post) => {\n                    const title = this.getPostCategoryTitle(post.category);\n                    if (!title) return;\n\n                    const key = title.trim().toLowerCase();\n                    if (!key) return;\n\n                    const existing = categoriesMap.get(key);\n                    if (existing) {\n                        existing.posts = (existing.posts ?? 0) + 1;\n                    } else {\n                        categoriesMap.set(key, {\n                            title: title.trim(),\n                            posts: 1,\n                        });\n                    }\n                });\n        }\n\n        this.categoriesToRender = Array.from(categoriesMap.values());\n    }\n\n    private getPostCategoryTitle(\n        category?: string | { name_identifier?: string; [key: string]: any }\n    ): string | undefined {\n        if (!category) {\n            return undefined;\n        }\n\n        if (typeof category === 'string') {\n            return category;\n        }\n\n        return (\n            category.name_identifier?.toString()?.trim() ||\n            category['name']?.toString()?.trim() ||\n            undefined\n        );\n    }\n}\n\nexport interface BabylonBlogPostI {\n    id?: number;\n    title?: string;\n    subtitle?: string;\n    description?: string;\n    img?: BabylonImageI;\n    buttons?: BabylonButtonI[];\n    postUrl?: BabylonButtonI;\n    category?: string | { name_identifier?: string; [key: string]: any };\n    date?: Date;\n    additional1?: string;\n    active: boolean;\n}\n\nexport interface BabylonBlogCategoryI {\n    id?: number;\n    title?: string;\n    posts?: number;\n}\n","<section class=\"babylon__blog-list margin-main\">\n    <div class=\"container\">\n        <div class=\"intro_info align--center\">\n            @if (pretitle) {\n                <lib-babylon-dynamic-heading\n                    [tag]=\"tags?.pretitle || 'h3'\"\n                    cssClass=\"pretitle\"\n                    [color]=\"textColors?.pretitle\"\n                    [content]=\"pretitle\"\n                ></lib-babylon-dynamic-heading>\n            }\n            @if (title) {\n                <lib-babylon-dynamic-heading\n                    [tag]=\"tags?.title || 'h1'\"\n                    cssClass=\"title\"\n                    [color]=\"textColors?.title\"\n                    [content]=\"title\"\n                ></lib-babylon-dynamic-heading>\n            }\n        </div>\n    </div>\n    <div class=\"container-fluid cs_plr_100\">\n        <div class=\"row cs_gap_y_lg_80\">\n            @if (filteredPosts) {\n                <div\n                    class=\"col-lg-8\"\n                    *libPaginate=\"\n                        filteredPosts;\n                        pageSize: pageSize;\n                        let paged = pagedItems;\n                        let page = currentPage;\n                        let total = totalPages;\n                        let next = next;\n                        let prev = prev\n                    \"\n                >\n                    @for (post of paged; track $index) {\n                        <article class=\"cs_post cs_style_1 cs_size_5\">\n                            <a\n                                [attr.aria-label]=\"post.postUrl?.label\"\n                                [href]=\"post.postUrl?.url\"\n                                [linkType]=\"post.postUrl?.linkType\"\n                                class=\"cs_post_thumb cs--radius overflow-hidden d-block cs_mb_30 position-relative\"\n                            >\n                                @if (post.img) {\n                                    <img\n                                        [src]=\"post.img.src\"\n                                        [alt]=\"post.img.alt\"\n                                        loading=\"lazy\"\n                                    />\n                                }\n                                <span\n                                    class=\"cs_hover_icon cs_center position-absolute cs_white_color cs_zindex_2 cs--radius\"\n                                >\n                                    <span class=\"babylon-arrow_btn\"></span>\n                                </span>\n                            </a>\n                            <div class=\"cs_post_info intro_info no-align\">\n                                <div class=\"cs_post_meta_4 cs_mb_13 pretitle\">\n                                    @if (post.category) {\n                                        <span>{{ post.category }}</span>\n                                    }\n                                    @if (post.date) {\n                                        <span>{{\n                                            post.date | date: 'dd/MM/yyyy'\n                                        }}</span>\n                                    }\n                                </div>\n                                @if (post.title) {\n                                    <h2 class=\"cs_post_title title1\">\n                                        <a\n                                            [attr.aria-label]=\"\n                                                post.postUrl?.label\n                                            \"\n                                            [href]=\"post.postUrl?.url\"\n                                            [linkType]=\"post.postUrl?.linkType\"\n                                            class=\"title--small\"\n                                            >{{ post.title }}</a\n                                        >\n                                    </h2>\n                                }\n                                @if (post.additional1 || post.description) {\n                                    <p\n                                        class=\"cs_subtitle text\"\n                                        [innerHTML]=\"\n                                            post.additional1\n                                                ? post.additional1\n                                                : post.description\n                                        \"\n                                    ></p>\n                                }\n                                @if (post.buttons?.length) {\n                                    <div class=\"btns__box\">\n                                        @for (\n                                            button of post.buttons;\n                                            track $index;\n                                            let odd = $odd\n                                        ) {\n                                            <a\n                                                [attr.aria-label]=\"button.label\"\n                                                [href]=\"button.url\"\n                                                [linkType]=\"button.linkType\"\n                                                class=\"btn\"\n                                                [ngClass]=\"{\n                                                    btn_primary: !odd,\n                                                    btn_call: odd,\n                                                }\"\n                                            >\n                                                <b>{{ button.label }}</b>\n                                                <span\n                                                    class=\"babylon-arrow-right-big\"\n                                                ></span>\n                                            </a>\n                                        }\n                                    </div>\n                                }\n                            </div>\n                        </article>\n                    }\n                    @if (total > 1 && anterior && siguiente) {\n                        <nav class=\"pagination__controls align--center mt--20\">\n                            <div class=\"btns__box align--center\">\n                                <button\n                                    class=\"btn btn_primary\"\n                                    [disabled]=\"page === 1\"\n                                    (click)=\"prev()\"\n                                    [attr.aria-label]=\"anterior\"\n                                >\n                                    <b>{{ anterior }}</b>\n                                </button>\n                                <span class=\"mx--10\"\n                                    >{{ page }} / {{ total }}</span\n                                >\n                                <button\n                                    class=\"btn btn_secondary\"\n                                    [disabled]=\"page === total\"\n                                    (click)=\"next()\"\n                                    [attr.aria-label]=\"siguiente\"\n                                >\n                                    <b>{{ siguiente }}</b>\n                                </button>\n                            </div>\n                        </nav>\n                    }\n                </div>\n            }\n            @if (!filteredPosts || filteredPosts.length == 0) {\n                <div class=\"col-lg-8\">\n                    <div class=\"cs_no_results\">\n                        <lib-babylon-dynamic-heading\n                            [tag]=\"'h3'\"\n                            cssClass=\"title--small\"\n                            [color]=\"\"\n                            [content]=\"notfoundText || 'No results found'\"\n                        ></lib-babylon-dynamic-heading>\n                    </div>\n                </div>\n            }\n            <aside class=\"col-lg-4\">\n                <nav\n                    class=\"cs_sidebar cs_right_sidebar\"\n                    [attr.aria-label]=\"searchPlaceHolder ?? 'search'\"\n                >\n                    <lib-babylon-search\n                        [searchPlaceHolder]=\"searchPlaceHolder ?? 'search...'\"\n                        [elements]=\"posts\"\n                        [fields]=\"[\n                            'title',\n                            'subtitle',\n                            'description',\n                            'category',\n                            'date',\n                        ]\"\n                        (results)=\"search($event)\"\n                    ></lib-babylon-search>\n                    <div class=\"cs_sidebar_item widget_categories\">\n                        @if (categoriesTitle) {\n                            <lib-babylon-dynamic-heading\n                                [tag]=\"tags?.categoriesTitle || 'h4'\"\n                                cssClass=\"title--small mb--20\"\n                                [color]=\"textColors?.categoriesTitle\"\n                                [content]=\"categoriesTitle\"\n                            ></lib-babylon-dynamic-heading>\n                        }\n                        @if (categoriesToRender?.length) {\n                            <ul>\n                                @for (category of categoriesToRender; track $index) {\n                                    <li class=\"cat-item\">\n                                        <span\n                                            aria-label=\"label\"\n                                            (click)=\"\n                                                setCategoryFilter(\n                                                    category.title\n                                                );\n                                                $event.preventDefault()\n                                            \"\n                                            >{{ category.title }} ({{\n                                                category.posts\n                                            }})</span\n                                        >\n                                        @if (\n                                            currentCategory ===\n                                            category.title?.toLowerCase()\n                                        ) {\n                                            <div class=\"btn-category-container\">\n                                                <button\n                                                    aria-label=\"Eliminar filtro\"\n                                                    class=\"remove-category\"\n                                                    (click)=\"\n                                                        setCategoryFilter();\n                                                        $event.preventDefault()\n                                                    \"\n                                                >\n                                                    <span\n                                                        class=\"babylon-clear\"\n                                                    ></span>\n                                                </button>\n                                            </div>\n                                        }\n                                    </li>\n                                }\n                            </ul>\n                        }\n                    </div>\n                    <div class=\"cs_sidebar_item\">\n                        @if (latestPostsTitle) {\n                            <lib-babylon-dynamic-heading\n                                [tag]=\"tags?.latestPostsTitle || 'h4'\"\n                                cssClass=\"title--small mb--20\"\n                                [color]=\"textColors?.latestPostsTitle\"\n                                [content]=\"latestPostsTitle\"\n                            ></lib-babylon-dynamic-heading>\n                        }\n                        @if (latestPosts?.length) {\n                            <ul class=\"cs_recent_posts\">\n                                @for (post of latestPosts; track $index) {\n                                    <li>\n                                        <div class=\"cs_recent_post\">\n                                            <h3 class=\"title--smaller mb--10\">\n                                                <a\n                                                    [attr.aria-label]=\"\n                                                        post.postUrl?.label\n                                                    \"\n                                                    [href]=\"post.postUrl?.url\"\n                                                    [linkType]=\"\n                                                        post.postUrl?.linkType\n                                                    \"\n                                                    >{{ post.title }}</a\n                                                >\n                                            </h3>\n                                            @if (post.date) {\n                                                <em class=\"text--small\">{{\n                                                    post.date\n                                                        | date: 'mediumDate'\n                                                }}</em>\n                                            }\n                                        </div>\n                                    </li>\n                                }\n                            </ul>\n                        }\n                    </div>\n                </nav>\n            </aside>\n        </div>\n    </div>\n</section>\n","import { isPlatformBrowser } from '@angular/common';\nimport { Inject, Injectable, PLATFORM_ID } from '@angular/core';\n\ndeclare global {\n    interface Window {\n        WidgetSearch: any;\n        initializeWidgetSearch?: () => void;\n    }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class BabylonWidgetSearchLoaderService {\n    private scriptPromise: Promise<void> | null = null;\n\n    constructor(@Inject(PLATFORM_ID) private platformId: object) {}\n\n    load(src = 'https://widget-engine.b-cdn.net/widget.min.js'): Promise<void> {\n        if (!isPlatformBrowser(this.platformId)) return Promise.resolve();\n\n        // Si ya existe global, listo\n        if (window.WidgetSearch || window.initializeWidgetSearch) {\n            return Promise.resolve();\n        }\n\n        // Si ya se está cargando, reusar\n        if (this.scriptPromise) return this.scriptPromise;\n\n        this.scriptPromise = new Promise<void>((resolve, reject) => {\n            // Evita duplicado incluso si alguien añadió el script a mano\n            const existing = document.querySelector<HTMLScriptElement>(\n                `script[src=\"${src}\"]`\n            );\n            if (existing) {\n                // Si ya está cargado, resuelve. Si no, espera a load.\n                if ((existing as any)._babylonLoaded) return resolve();\n                existing.addEventListener('load', () => resolve(), {\n                    once: true,\n                });\n                existing.addEventListener(\n                    'error',\n                    () =>\n                        reject(\n                            new Error('No se pudo cargar el script del widget')\n                        ),\n                    { once: true }\n                );\n                return;\n            }\n\n            const s = document.createElement('script');\n            s.src = src;\n            s.async = true;\n\n            s.addEventListener(\n                'load',\n                () => {\n                    (s as any)._babylonLoaded = true;\n                    resolve();\n                },\n                { once: true }\n            );\n\n            s.addEventListener(\n                'error',\n                () =>\n                    reject(new Error('No se pudo cargar el script del widget')),\n                { once: true }\n            );\n\n            document.head.appendChild(s);\n        });\n\n        return this.scriptPromise;\n    }\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport {\n    afterNextRender,\n    Component,\n    ElementRef,\n    Inject,\n    Input,\n    NgZone,\n    PLATFORM_ID,\n    SimpleChanges,\n    ViewChild,\n} from '@angular/core';\nimport { BabylonWidgetSearchLoaderService } from '../../../services/babylon-widget-search-loader.service';\n\ndeclare global {\n    interface Window {\n        WidgetSearch: any;\n        initializeWidgetSearch?: () => void;\n        getWidgetInstance?: (id: string) => any;\n    }\n}\n\nlet widgetScriptPromise: Promise<void> | null = null;\n\nfunction loadOnce(src: string): Promise<void> {\n    if (widgetScriptPromise) return widgetScriptPromise;\n\n    widgetScriptPromise = new Promise<void>((resolve, reject) => {\n        // Si ya existe, resolvemos\n        if (window.WidgetSearch || window.initializeWidgetSearch) {\n            resolve();\n            return;\n        }\n\n        const s = document.createElement('script');\n        s.src = src;\n        s.async = true;\n        s.onload = () => resolve();\n        s.onerror = () =>\n            reject(new Error('No se pudo cargar el script del widget'));\n        document.head.appendChild(s);\n    });\n\n    return widgetScriptPromise;\n}\n\n@Component({\n    selector: 'lib-babylon-booking-widget',\n    standalone: true,\n    template: `\n        <div\n            #widgetContainer\n            [id]=\"widgetId\"\n            [attr.data-book-id]=\"hotelId\"\n            [attr.data-hotel]=\"ticker\"\n            [attr.data-type]=\"type\"\n            [attr.data-engine]=\"engine\"\n            [attr.data-theme]=\"theme\"\n            [attr.data-currency]=\"currency\"\n            [attr.data-locale]=\"locale\"\n            [attr.data-layout]=\"layout\"\n            [attr.data-layout-column]=\"layoutColumn\"\n            [attr.data-default-adults]=\"defaultAdults\"\n            [attr.data-default-junior]=\"defaultJunior\"\n            [attr.data-default-children]=\"defaultChildren\"\n            [attr.data-show-price]=\"showPrice\"\n            [attr.data-show-hotel-selector]=\"showHotelSelector\"\n            [attr.data-show-promo-code]=\"showPromoCode\"\n            [attr.data-show-child-ages]=\"showChildAges\"\n            [attr.data-max-children]=\"maxChildren\"\n            [attr.data-max-junior]=\"maxJunior\"\n            [attr.data-base-url]=\"baseUrl\"\n            [attr.data-url-chain]=\"urlChain\"\n            [attr.data-url-hotel]=\"urlHotel\"\n            [attr.data-button-text]=\"buttonText\"\n            [attr.data-max-rooms]=\"maxRooms\"\n            [attr.data-show-all-hotels-option]=\"showAllHotelsOption\"\n            [attr.data-target-blank]=\"targetBlank\"\n        ></div>\n    `,\n})\nexport class BabylonBookingWidgetComponent {\n    @ViewChild('widgetContainer', { static: true })\n    widgetContainer!: ElementRef<HTMLElement>;\n\n    @Input() widgetId = 'widget-search';\n    @Input() hotelId = 'alecad';\n    @Input() ticker = 'hotelmaristel.com';\n    @Input() type: 'chain' | 'hotel' | string = 'chain';\n    @Input() engine: 'witbooking' | 'roiback' | string = 'witbooking';\n    @Input() theme: 'light' | 'dark' | string = 'light';\n    @Input() currency = 'EUR';\n    @Input() locale?: string = 'es-ES';\n    @Input() layout: 'inline' | 'column' | string = 'inline';\n    @Input() defaultAdults = 2;\n    @Input() defaultChildren = 0;\n    @Input() defaultJunior = 0;\n    @Input() showPrice = false;\n    @Input() showHotelSelector = true;\n    @Input() showPromoCode = true;\n    @Input() showChildAges = true;\n    @Input() maxChildren?: number;\n    @Input() maxJunior?: number;\n    @Input() baseUrl?: string;\n    @Input() urlChain?: string;\n    @Input() urlHotel = 'hotel';\n    @Input() buttonText?: string;\n    @Input() layoutColumn?: string;\n    @Input() maxRooms?: string;\n    @Input() showAllHotelsOption?: string;\n    @Input() targetBlank?: boolean;\n\n    @Input() flagTime?: boolean = true;\n\n    private mounted = false;\n\n    private pendingTicker: string | null = null;\n    private retryTimeout: any;\n\n    constructor(\n        @Inject(PLATFORM_ID) platformId: object,\n        private zone: NgZone,\n        private loader: BabylonWidgetSearchLoaderService\n    ) {\n        if (!isPlatformBrowser(platformId)) return;\n\n        afterNextRender(() => {\n            setTimeout(\n                () => {\n                    //Wait for inputs\n                    this.zone.runOutsideAngular(async () => {\n                        if (this.mounted) return;\n\n                        // ⬇️ PON AQUÍ la URL real del script de Witbooking\n                        await this.loader.load();\n\n                        this.mount();\n                    });\n                },\n                this.flagTime ? 3000 : 0\n            );\n        });\n    }\n\n    private mount() {\n        if (this.mounted) return;\n        this.mounted = true;\n\n        const el = this.widgetContainer.nativeElement;\n\n        // Opción A (si existe): init global manual :contentReference[oaicite:1]{index=1}\n        if (window.initializeWidgetSearch) {\n            window.initializeWidgetSearch();\n            return;\n        }\n\n        // Opción B: constructor :contentReference[oaicite:2]{index=2}\n        if (window.WidgetSearch) {\n            // Si tu WidgetSearch acepta (el, config), aquí puedes pasar config.\n            new window.WidgetSearch(el, {});\n        }\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if (changes['ticker']) {\n            // Guardamos siempre el ÚLTIMO valor que Angular nos mande\n            this.pendingTicker = changes['ticker'].currentValue || 'all-hotels';\n\n            // Disparamos la actualización\n            this.triggerWidgetUpdate();\n        }\n    }\n\n    private triggerWidgetUpdate(): void {\n        if (this.retryTimeout) {\n            clearTimeout(this.retryTimeout);\n        }\n\n        this.zone.runOutsideAngular(() => {\n            const containerEl = this.widgetContainer\n                ?.nativeElement as HTMLElement;\n            if (!containerEl) return;\n\n            // 1. Esperamos a que el widget haya descargado y dibujado los hoteles en el DOM\n            const hotelOptions = containerEl.querySelectorAll('.hotel-option');\n\n            if (hotelOptions.length > 0) {\n                const targetTicker =\n                    this.pendingTicker && this.pendingTicker.trim() !== ''\n                        ? this.pendingTicker.toLowerCase()\n                        : 'all-hotels';\n\n                let optionToClick: HTMLElement | null = null;\n\n                // 2. Buscamos la opción de hotel real que coincida con el ticker\n                for (let i = 0; i < hotelOptions.length; i++) {\n                    const opt = hotelOptions[i] as HTMLElement;\n                    const optId =\n                        opt.getAttribute('data-hotel-id')?.toLowerCase() || '';\n\n                    // Coincidencia exacta o parcial (por si el widget le añade sufijos al ID)\n                    if (\n                        optId === targetTicker ||\n                        optId.includes(targetTicker)\n                    ) {\n                        optionToClick = opt;\n                        break;\n                    }\n                }\n\n                if (optionToClick) {\n                    optionToClick.click();\n                }\n            } else {\n                // Aún no se han dibujado las opciones, el motor sigue cargando...\n                this.retryTimeout = setTimeout(\n                    () => this.triggerWidgetUpdate(),\n                    300\n                );\n            }\n        });\n    }\n}\n","import { Component, Input } from '@angular/core';\nimport { BabylonButtonI } from '../../../interfaces/babylon-button.interface';\nimport { RouterModule } from '@angular/router';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n    selector: 'lib-babylon-breadcrumb',\n    standalone: true,\n    imports: [CommonModule, RouterModule],\n    templateUrl: './babylon-breadcrumb.component.html',\n    styleUrl: './babylon-breadcrumb.component.scss',\n})\nexport class BabylonBreadcrumbComponent {\n    @Input() links?: BabylonButtonI[];\n\n    linkClick(e: Event) {\n        e.preventDefault();\n    }\n}\n","@if (links?.length) {\n    <section class=\"auroa__breadcrump\">\n        <div class=\"container-fluid\">\n            <ol class=\"breadcrump\">\n                @for (link of links; track $index; let last = $last) {\n                    <li class=\"breadcrump__element\">\n                        <a\n                            [attr.aria-label]=\"link.label\"\n                            class=\"breadcrump__item\"\n                            [ngClass]=\"{ 'breadcrump__element--active': last }\"\n                            [href]=\"link.url\"\n                            [routerLink]=\"link.url\"\n                            (click)=\"linkClick($event)\"\n                            >{{ link.label }}</a\n                        >\n                    </li>\n                }\n            </ol>\n        </div>\n    </section>\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport { BabylonButtonI } from '../../../interfaces';\n\n@Component({\n    selector: 'lib-babylon-breadcrumb-v2',\n    standalone: true,\n    imports: [CommonModule, RouterModule, BabylonLinkTypeDirective],\n    templateUrl: './babylon-breadcrumb-v2.component.html',\n    styleUrl: './babylon-breadcrumb-v2.component.scss',\n})\nexport class BabylonBreadcrumbV2Component {\n    @Input() links?: BabylonButtonI[];\n\n    linkClick(e: Event) {\n        e.preventDefault();\n    }\n}\n","@if (links) {\n    <section class=\"mdl-breadcrumb\">\n        @for (item of links; track $index; let last = $last) {\n            <a\n                [href]=\"item.url\"\n                [linkType]=\"item.linkType\"\n                [attr.arial-label]=\"item.label\"\n                class=\"m-underline\"\n                [ngClass]=\"{ active: last }\"\n                >{{ item.label }}</a\n            >\n            @if (!last) {\n                <div class=\"m-separator\"></div>\n            }\n        }\n    </section>\n}\n","import { Component } from '@angular/core';\n\n@Component({\n    selector: 'lib-babylon-c1-txt',\n    standalone: true,\n    imports: [],\n    templateUrl: './babylon-c1-txt.component.html',\n    styleUrl: './babylon-c1-txt.component.scss',\n})\nexport class BabylonC1TxtComponent {}\n","<section class=\"c1txt\">\n    <div class=\"container\">\n        <div class=\"c1txt__inner\">\n            <h2>Can Bordoy you will find...</h2>\n            <p>\n                Many desktop publishin packages and web page editors now use\n                lorem ipsum as their<br />\n                default model text, and a search for lorem.\n            </p>\n        </div>\n    </div>\n</section>\n<section class=\"c1txt\">\n    <div class=\"container\">\n        <div class=\"c1txt__inner\">\n            <h2>Manifesto</h2>\n            <p>\n                We believe in pulling out the chair, not only for ladies, but\n                for gentleman as well. We believe in living in a house that we\n                can truly call home. We believe in the time-honoured tradition\n                of remembering your parents and family. We believe in the\n                time-honoured tradition of remembering your parents and family.\n                We believe in giving up your seat for someone in need and saying\n                thanks to people in writing. We believe in letting bygones be\n                bygones. We believe in listening attentively and having good\n                table manners. We believe in imperfect beauty and in respecting\n                Mother Nature.\n            </p>\n        </div>\n    </div>\n</section>\n<section class=\"c1txt c1txt__reverse bg__cream\">\n    <div class=\"container\">\n        <div class=\"c1txt__inner\">\n            <h2>The Can Bordoy good manners manifesto</h2>\n            <p>\n                When romantic souls and likeminded people come together they\n                exceed the sum of their parts. To live an extraordinary life you\n                have to be aware of the ordinary. While remembering that in the\n                beginning you are the only person who believes in your ideas.\n                Visionaries are lonely people before they achieve recognition.\n                However, In the end, They are people that we look up to and\n                admire for their ideas. They are people that we look up to and\n                admire for their ideas. We are for them. We are for those\n                romantics who still believe.\n            </p>\n        </div>\n    </div>\n</section>\n","import { isPlatformBrowser } from '@angular/common';\nimport { HttpClient } from '@angular/common/http';\nimport { inject, Injectable, PLATFORM_ID } from '@angular/core';\nimport { of } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\n\n@Injectable({ providedIn: 'root' })\nexport class ColorPickerService {\n    constructor(private http: HttpClient) {}\n\n    private originalVariables: { name: string; value: string }[] = [];\n    public googleFonts: string[] = [];\n    public projectFonts: string[] = [];\n\n    private platformId = inject(PLATFORM_ID);\n\n    getStoredTab(tabs: string[]): string {\n        const stored = localStorage.getItem('panel-estilos-tab');\n        return stored && tabs.includes(stored) ? stored : tabs[0];\n    }\n\n    fetchGoogleFonts(apiKey: string): void {\n        this.http\n            .get<any>(\n                `https://www.googleapis.com/webfonts/v1/webfonts?key=${apiKey}`\n            )\n            .pipe(\n                map((res) => res.items.map((font: any) => font.family)),\n                catchError((err) => {\n                    console.error(\n                        'Error cargando fuentes de Google Fonts:',\n                        err\n                    );\n                    return of([]);\n                })\n            )\n            .subscribe((fonts) => {\n                this.googleFonts = fonts;\n            });\n    }\n\n    getAllCSSVariables(): { name: string; value: string }[] {\n        const variables: { name: string; value: string }[] = [];\n        if (isPlatformBrowser(this.platformId)) {\n            const seen = new Set<string>();\n            const localFonts = new Set<string>();\n            let customFontList: string[] = [];\n\n            for (const sheet of Array.from(document.styleSheets)) {\n                try {\n                    const cssRules = (sheet as CSSStyleSheet).cssRules;\n                    for (const rule of Array.from(cssRules)) {\n                        if (\n                            rule instanceof CSSStyleRule &&\n                            rule.selectorText === ':root'\n                        ) {\n                            const style = rule.style;\n                            for (const name of Array.from(style)) {\n                                if (\n                                    name.startsWith('--') &&\n                                    !name.startsWith('--bs-') &&\n                                    !name.startsWith('--mdc-') &&\n                                    !name.startsWith('--mat-') &&\n                                    !name.startsWith('--swiper-') &&\n                                    !name.startsWith('--alg-') &&\n                                    !seen.has(name)\n                                ) {\n                                    const value = style\n                                        .getPropertyValue(name)\n                                        .trim();\n\n                                    // Ignorar list-tipografias como variable visible\n                                    if (name === '--list-tipografias') {\n                                        customFontList = value\n                                            .replace(/[\"']/g, '') // quita comillas\n                                            .split(',')\n                                            .map((f) => f.trim())\n                                            .filter((f) => !!f);\n                                        continue; // no añadir al panel\n                                    }\n\n                                    variables.push({ name, value });\n                                    seen.add(name);\n\n                                    // Extraer fuentes si no hay list-tipografias\n                                    if (\n                                        name.startsWith('--font-') &&\n                                        !name.includes('font-size')\n                                    ) {\n                                        const match =\n                                            value.match(/^['\"]?([^'\",]+)['\"]?/);\n                                        if (match) localFonts.add(match[1]);\n                                    }\n                                }\n                            }\n                        }\n                    }\n                } catch (error) {\n                    console.warn('Hoja de estilo inaccesible', error);\n                }\n            }\n\n            // Priorizar list-tipografias si existe\n            if (customFontList.length > 0) {\n                this.projectFonts = customFontList;\n            } else {\n                this.projectFonts = Array.from(localFonts);\n            }\n\n            this.originalVariables = JSON.parse(JSON.stringify(variables));\n        }\n        return variables;\n    }\n\n    getCombinedFonts(): string[] {\n        const set = new Set([...this.googleFonts, ...this.projectFonts]);\n        return Array.from(set).sort();\n    }\n\n    groupByCategory(\n        variables: { name: string; value: string }[]\n    ): Map<string, { name: string; value: string }[]> {\n        const groups = new Map<string, { name: string; value: string }[]>();\n\n        const groupConditions: {\n            group: string;\n            match: (name: string) => boolean;\n        }[] = [\n            /* Colores */\n            {\n                group: 'Fondos',\n                match: (name) =>\n                    name.includes('--cl_background_') &&\n                    !name.includes('--cl_background_dropdown'),\n            },\n            {\n                group: 'Varios',\n                match: (name) =>\n                    name.includes('--cl_error') ||\n                    name.includes('--cl_desde') ||\n                    name.includes('--cl_badget') ||\n                    name.includes('--cl_price'),\n            },\n            { group: 'Alertas', match: (name) => name.includes('--cl_alert') },\n            {\n                group: 'Breadcrumb',\n                match: (name) => name.includes('--cl_breadcrumb'),\n            },\n            { group: 'Iconos', match: (name) => name.includes('--cl_icon') },\n            { group: 'Bordes', match: (name) => name.includes('--cl_border') },\n            { group: 'Sombra', match: (name) => name.includes('--cl_shadow') },\n            {\n                group: 'Colores principales',\n                match: (name) =>\n                    name.includes('--cl_corp') ||\n                    name.includes('--cl_accent') ||\n                    name.includes('--cl_preload'),\n            },\n            {\n                group: 'Formularios',\n                match: (name) =>\n                    name.includes('--cl_newslet') ||\n                    name.includes('--cl_dropdown') ||\n                    name.includes('--cl_checkbox') ||\n                    name.includes('--cl_background_dropdown'),\n            },\n            { group: 'Ofertas', match: (name) => name.includes('--cl_offer') },\n\n            /* Botones */\n            { group: 'Color', match: (name) => name.includes('--cl_btn') },\n            { group: 'Peso', match: (name) => name.includes('--w_btn') },\n            { group: 'Radio', match: (name) => name.includes('--btn_radius') },\n            {\n                group: 'Tamaño',\n                match: (name) =>\n                    name.includes('--size_btn') ||\n                    name.includes('--size_link') ||\n                    name.includes('--upper_link') ||\n                    name.includes('--ls_link') ||\n                    name.includes('--ls_btn') ||\n                    name.includes('--upper_btn'),\n            },\n\n            /* Textos */\n            {\n                group: 'Textos',\n                match: (name) =>\n                    name.includes('text') &&\n                    !name.includes('--font') &&\n                    !name.includes('header') &&\n                    !name.includes('footer') &&\n                    !name.includes('engine') &&\n                    !name.includes('menu') &&\n                    !name.includes('submenu'),\n            },\n            {\n                group: 'Títulos',\n                match: (name) =>\n                    name.includes('title') &&\n                    !name.includes('--font') &&\n                    !name.includes('pretitle') &&\n                    !name.includes('subtitle'),\n            },\n            {\n                group: 'Subtítulos',\n                match: (name) =>\n                    name.includes('subtitle') && !name.includes('--font'),\n            },\n            {\n                group: 'Pretítulos',\n                match: (name) =>\n                    name.includes('pretitle') && !name.includes('--font'),\n            },\n            {\n                group: 'Tipografías',\n                match: (name) =>\n                    name.includes('--font-') && !name.includes('--font-size'),\n            },\n\n            /* Comunes */\n            {\n                group: 'Motor',\n                match: (name) =>\n                    name.includes('engine') ||\n                    name.includes('--font-size-engine'),\n            },\n            {\n                group: 'Footer',\n                match: (name) =>\n                    name.includes('footer') && !name.includes('--font'),\n            },\n            { group: 'Header', match: (name) => name.includes('header') },\n            {\n                group: 'Modalmenu',\n                match: (name) =>\n                    name.includes('menu') && !name.includes('submenu'),\n            },\n            { group: 'Submenu', match: (name) => name.includes('submenu') },\n        ];\n\n        variables.forEach((variable) => {\n            const name = variable.name;\n            const condition = groupConditions.find((c) => c.match(name));\n            const group = condition ? condition.group : 'Otros';\n\n            if (!groups.has(group)) groups.set(group, []);\n            groups.get(group)!.push(variable);\n        });\n\n        return groups;\n    }\n\n    getTabForGroup(group: string): string {\n        if (\n            [\n                'Colores principales',\n                'Fondos',\n                'Iconos',\n                'Bordes',\n                'Sombra',\n                'Formularios',\n                'Alertas',\n                'Breadcrumb',\n                'Varios',\n                'Ofertas',\n            ].includes(group)\n        )\n            return 'Colores';\n\n        if (\n            [\n                'Tipografías',\n                'Textos',\n                'Títulos',\n                'Subtítulos',\n                'Pretítulos',\n            ].includes(group)\n        )\n            return 'Textos';\n        if (\n            ['Submenu', 'Modalmenu', 'Header', 'Footer', 'Motor'].includes(\n                group\n            )\n        )\n            return 'Comunes';\n        if (['Color', 'Peso', 'Radio', 'Tamaño'].includes(group))\n            return 'Botones';\n\n        return 'Otros';\n    }\n\n    isColor(value: string): boolean {\n        if (!value) return false;\n\n        const trimmed = value.trim().replace(/[\"']/g, '');\n\n        // Permitir colores hex, rgba, hsla y nombres válidos básicos\n        const isHex = /^#([0-9A-Fa-f]{3,8})$/.test(trimmed);\n        const isRGB = /^rgba?\\([^)]+\\)$/.test(trimmed);\n        const isHSL = /^hsla?\\([^)]+\\)$/.test(trimmed);\n\n        return isHex || isRGB || isHSL;\n    }\n\n    resetColors(\n        groupedVariables: Map<string, { name: string; value: string }[]>\n    ): void {\n        if (isPlatformBrowser(this.platformId)) {\n            this.originalVariables.forEach((originalVar) => {\n                document.documentElement.style.setProperty(\n                    originalVar.name,\n                    originalVar.value\n                );\n                for (const [, vars] of groupedVariables) {\n                    const variable = vars.find(\n                        (v) => v.name === originalVar.name\n                    );\n                    if (variable) variable.value = originalVar.value;\n                }\n            });\n        }\n    }\n\n    changeColor(\n        variableName: string,\n        newValue: string,\n        groupedVariables: Map<string, { name: string; value: string }[]>\n    ): void {\n        if (isPlatformBrowser(this.platformId)) {\n            document.documentElement.style.setProperty(variableName, newValue);\n            for (const [, vars] of groupedVariables) {\n                const variable = vars.find((v) => v.name === variableName);\n                if (variable) variable.value = newValue;\n            }\n        }\n    }\n\n    copyToClipboard(\n        value: string,\n        variableName: string,\n        copiedStatus: Map<string, boolean>\n    ): void {\n        navigator.clipboard.writeText(value).then(() => {\n            copiedStatus.set(variableName, true);\n            setTimeout(() => copiedStatus.set(variableName, false), 1000);\n        });\n    }\n\n    exportCustomVariables(\n        groupedVariables: Map<string, { name: string; value: string }[]>\n    ): void {\n        if (isPlatformBrowser(this.platformId)) {\n            const sections: string[] = [];\n            const googleFontSet = new Set<string>();\n\n            const sortedGroups = Array.from(groupedVariables.entries()).sort(\n                ([a], [b]) => b.localeCompare(a)\n            );\n\n            for (const [group, variables] of sortedGroups) {\n                const lines: string[] = [];\n\n                const sortedVars = variables\n                    .slice()\n                    .sort((a, b) => b.name.localeCompare(a.name))\n                    .filter((v) => v.name !== '--list-tipografias'); // ❌ ignorar en exportación\n\n                for (const variable of sortedVars) {\n                    const name = variable.name;\n                    const value = variable.value.trim();\n\n                    if (name.startsWith('--font-')) {\n                        const match = value.match(/^['\"]?([^'\",]+)['\"]?/);\n                        if (match && this.googleFonts.includes(match[1])) {\n                            googleFontSet.add(match[1]);\n                        }\n                    }\n\n                    lines.push(`  ${name}: ${value};`);\n                }\n\n                if (lines.length > 0) {\n                    sections.push(\n                        `  /* ${group.toUpperCase()} */\\n${lines.join('\\n')}`\n                    );\n                }\n            }\n\n            const googleLinks = Array.from(googleFontSet).map(\n                (font) =>\n                    `<link href=\"https://fonts.googleapis.com/css2?family=${font.replace(/ /g, '+')}&display=swap\" rel=\"stylesheet\">`\n            );\n\n            const fullCSS = `${googleLinks.map((link) => `// ${link}`).join('\\n')}\\n\\n:root {\\n${sections.join('\\n\\n')}\\n}`;\n\n            const blob = new Blob([fullCSS], { type: 'text/css' });\n            const url = URL.createObjectURL(blob);\n            const link = document.createElement('a');\n            link.href = url;\n            link.download = 'customStyles.scss';\n            document.body.appendChild(link);\n            link.click();\n            document.body.removeChild(link);\n            URL.revokeObjectURL(url);\n        }\n    }\n}\n","import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n    Component,\n    ElementRef,\n    Inject,\n    OnInit,\n    PLATFORM_ID,\n    Renderer2,\n    ViewChild,\n    ViewEncapsulation,\n} from '@angular/core';\nimport {\n    FormBuilder,\n    FormGroup,\n    FormsModule,\n    ReactiveFormsModule,\n} from '@angular/forms';\nimport { ColorPickerService } from '../../../services/color-panel.service';\n\n@Component({\n    selector: 'lib-babylon-color-picker',\n    standalone: true,\n    imports: [CommonModule, FormsModule, ReactiveFormsModule],\n    templateUrl: './babylon-color-picker.component.html',\n    styleUrls: ['./babylon-color-picker.component.scss'],\n    encapsulation: ViewEncapsulation.ShadowDom,\n})\nexport class BabylonColorPickerComponent implements OnInit {\n    userPanelInternal = '';\n    passPanelInternal = '';\n    @ViewChild('panel', { static: false }) panelRef!: ElementRef;\n\n    googleFontsApiKey = 'AIzaSyAVbzzOmAJfsAsi951e636ym-ABWy2BOMA';\n    mostrarPanel = false;\n    loginHecho = false;\n    minimizado = false;\n\n    loginForm: FormGroup;\n\n    tabs = ['Colores', 'Textos', 'Botones', 'Comunes', 'Otros'];\n    activeTab = 'Colores';\n\n    groupedVariables = new Map<string, { name: string; value: string }[]>();\n    copiedStatus = new Map<string, boolean>();\n    expandedGroups = new Set<string>();\n    fontValues: { [key: string]: string } = {};\n\n    isDragging = false;\n    dragStartX = 0;\n    dragStartY = 0;\n\n    constructor(\n        public colorService: ColorPickerService,\n        private renderer: Renderer2,\n        @Inject(PLATFORM_ID) private readonly platformId: Object,\n        private fb: FormBuilder\n    ) {\n        this.loginForm = this.fb.group({\n            email: [''],\n            password: [''],\n        });\n    }\n\n    ngOnInit(): void {\n        if (isPlatformBrowser(this.platformId)) {\n            const params = new URLSearchParams(window.location.search);\n            this.mostrarPanel = params.has('activar_panel');\n\n            const storedTab = this.colorService.getStoredTab(this.tabs);\n            this.activeTab = storedTab;\n\n            this.renderer.listen('window', 'mousemove', (e) =>\n                this.onDragMove(e)\n            );\n            this.renderer.listen('window', 'mouseup', () => this.onDragEnd());\n        }\n    }\n\n    async login(): Promise<void> {\n        if (isPlatformBrowser(this.platformId)) {\n            const { email, password } = this.loginForm.value;\n            if (\n                email === this.userPanelInternal &&\n                password === this.passPanelInternal\n            ) {\n                this.loginHecho = true;\n                sessionStorage.setItem('panel-login-ok', 'true');\n                const variables = this.colorService.getAllCSSVariables();\n                this.groupedVariables =\n                    this.colorService.groupByCategory(variables);\n                await this.colorService.fetchGoogleFonts(\n                    this.googleFontsApiKey\n                );\n                this.setInitialFontValues();\n            } else {\n                alert('Usuario o contraseña incorrectos');\n            }\n        }\n    }\n\n    setInitialFontValues(): void {\n        const gruposFuente = [\n            'Títulos',\n            'Pretítulos',\n            'Subtítulos',\n            'Textos',\n            'Fuentes',\n            'Tipografías',\n        ];\n\n        if (isPlatformBrowser(this.platformId)) {\n            for (const [group, variables] of this.groupedVariables) {\n                if (gruposFuente.includes(group)) {\n                    for (const variable of variables) {\n                        const currentValue = getComputedStyle(\n                            document.documentElement\n                        )\n                            .getPropertyValue(variable.name)\n                            .trim();\n                        const fontName = this.getFontNameOnly(currentValue);\n                        this.fontValues[variable.name] = fontName;\n                    }\n                }\n            }\n        }\n    }\n\n    onDragStart(event: MouseEvent): void {\n        const target = event.target as HTMLElement;\n        const isInteractive = [\n            'INPUT',\n            'BUTTON',\n            'LABEL',\n            'SPAN',\n            'SELECT',\n        ].includes(target.tagName);\n        if (isInteractive || !this.panelRef) return;\n\n        this.isDragging = true;\n        this.dragStartX =\n            event.clientX - this.panelRef.nativeElement.offsetLeft;\n        this.dragStartY = event.clientY - this.panelRef.nativeElement.offsetTop;\n        event.preventDefault();\n    }\n\n    onDragMove(event: MouseEvent): void {\n        if (!this.isDragging || !this.panelRef) return;\n\n        const x = event.clientX - this.dragStartX;\n        const y = event.clientY - this.dragStartY;\n\n        const panel = this.panelRef.nativeElement;\n        panel.style.left = `${x}px`;\n        panel.style.top = `${y}px`;\n    }\n\n    onDragEnd(): void {\n        this.isDragging = false;\n    }\n\n    toggleGroup(group: string): void {\n        if (this.expandedGroups.has(group)) {\n            this.expandedGroups.delete(group);\n        } else {\n            this.expandedGroups.add(group);\n        }\n    }\n\n    isGroupExpanded(group: string): boolean {\n        return this.expandedGroups.has(group);\n    }\n\n    isColor(value: string): boolean {\n        return this.colorService.isColor(value);\n    }\n\n    changeColor(event: Event, variableName: string): void {\n        const input = event.target as HTMLInputElement | HTMLSelectElement;\n        const value = input?.value;\n        if (!value) return;\n\n        const isFontVariable =\n            variableName.startsWith('--font-') &&\n            !variableName.includes('--font-size');\n\n        if (isFontVariable) {\n            this.fontValues[variableName] = value;\n            const newFontValue = `'${value}', Helvetica, sans-serif`;\n            this.colorService.changeColor(\n                variableName,\n                newFontValue,\n                this.groupedVariables\n            );\n        } else {\n            this.colorService.changeColor(\n                variableName,\n                value,\n                this.groupedVariables\n            );\n        }\n    }\n\n    resetColors(): void {\n        this.colorService.resetColors(this.groupedVariables);\n    }\n\n    copyToClipboard(value: string, name: string): void {\n        this.colorService.copyToClipboard(value, name, this.copiedStatus);\n    }\n\n    wasCopied(variableName: string): boolean {\n        return this.copiedStatus.get(variableName) === true;\n    }\n\n    getTabForGroup(group: string): string {\n        return this.colorService.getTabForGroup(group);\n    }\n\n    setActiveTab(tab: string): void {\n        if (isPlatformBrowser(this.platformId)) {\n            this.activeTab = tab;\n            localStorage.setItem('panel-estilos-tab', tab);\n        }\n    }\n\n    toggleMinimizado() {\n        this.minimizado = !this.minimizado;\n    }\n\n    exportCSS(): void {\n        this.colorService.exportCustomVariables(this.groupedVariables);\n    }\n\n    getFontNameOnly(fullValue: string): string {\n        const match = fullValue.match(/^['\"]?([^'\",]+)['\"]?/);\n        return match ? match[1] : fullValue;\n    }\n\n    async updateFontVariable(\n        event: Event,\n        variableName: string\n    ): Promise<void> {\n        if (isPlatformBrowser(this.platformId)) {\n            const target = event.target as HTMLSelectElement | null;\n            const fontName = target?.value;\n            if (!fontName) return;\n\n            const value = `'${fontName}', Helvetica, sans-serif`;\n            this.colorService.changeColor(\n                variableName,\n                value,\n                this.groupedVariables\n            );\n            this.fontValues[variableName] = fontName;\n\n            const isGoogleFont =\n                this.colorService.googleFonts.includes(fontName);\n            if (!isGoogleFont) return; // ⛔ No insertar si no es Google Font\n\n            const formattedFont = fontName.replace(/ /g, '+');\n            const id = `font-${formattedFont}`;\n            if (document.getElementById(id)) return;\n\n            const link = document.createElement('link');\n            link.id = id;\n            link.rel = 'stylesheet';\n            link.href = `https://fonts.googleapis.com/css2?family=${formattedFont}&display=swap`;\n            link.onerror = () => link.remove();\n            document.head.appendChild(link);\n        }\n    }\n\n    getComputedColor(variableName: string): string {\n        if (isPlatformBrowser(this.platformId)) {\n            const raw = getComputedStyle(document.documentElement)\n                .getPropertyValue(variableName)\n                .trim();\n            const clean = raw.replace(/[\"']/g, '');\n\n            if (/^#([0-9a-fA-F]{3})$/.test(clean)) {\n                return (\n                    '#' +\n                    clean\n                        .slice(1)\n                        .split('')\n                        .map((c) => c + c)\n                        .join('')\n                );\n            }\n\n            return this.colorService.isColor(clean) ? clean : '#000000';\n        }\n        return '#000000';\n    }\n\n    getHexForColorInput(variableName: string): string {\n        if (isPlatformBrowser(this.platformId)) {\n            const color = getComputedStyle(document.documentElement)\n                .getPropertyValue(variableName)\n                .trim();\n\n            const el = document.createElement('div');\n            el.style.color = color;\n            document.body.appendChild(el);\n            const resolved = getComputedStyle(el).color;\n            document.body.removeChild(el);\n\n            const match = resolved.match(/\\d+/g);\n            if (!match || match.length < 3) return '#000000';\n\n            const [r, g, b] = match;\n            return (\n                '#' +\n                parseInt(r).toString(16).padStart(2, '0') +\n                parseInt(g).toString(16).padStart(2, '0') +\n                parseInt(b).toString(16).padStart(2, '0')\n            );\n        }\n        return '';\n    }\n\n    setCredentials(user: string, pass: string): void {\n        if (isPlatformBrowser(this.platformId)) {\n            this.userPanelInternal = user;\n            this.passPanelInternal = pass;\n\n            const params = new URLSearchParams(window.location.search);\n            this.mostrarPanel = params.has('activar_panel');\n\n            if (this.mostrarPanel) {\n                const storedSession = sessionStorage.getItem('panel-login-ok');\n                if (storedSession === 'true') {\n                    this.loginHecho = true;\n                    const variables = this.colorService.getAllCSSVariables();\n                    this.groupedVariables =\n                        this.colorService.groupByCategory(variables);\n                    this.colorService.fetchGoogleFonts(this.googleFontsApiKey);\n                    this.setInitialFontValues();\n                }\n            }\n        }\n    }\n}\n","<!-- Mostrar TODO solo si mostrarPanel es true -->\n@if (mostrarPanel) {\n\n  <!-- LOGIN PANEL -->\n  @if (!loginHecho) {\n    <form [formGroup]=\"loginForm\" (ngSubmit)=\"login()\">\n      <div class=\"login-panel\">\n        <h2>Panel de estilos</h2>\n        <input\n          type=\"text\"\n          placeholder=\"Usuario\"\n          formControlName=\"email\"\n          (keydown.enter)=\"login()\"\n        />\n        <input\n          type=\"password\"\n          placeholder=\"Contraseña\"\n          formControlName=\"password\"\n          (keydown.enter)=\"login()\"\n        />\n        <button type=\"submit\">Entrar</button>\n      </div>\n    </form>\n  } @else {\n    <!-- ESTILO PANEL -->\n    <div\n      #panel\n      class=\"color-picker-panel\"\n      [class.minimizado]=\"minimizado\"\n      (mousedown)=\"onDragStart($event)\"\n    >\n      <div class=\"drag-header\">\n        <h1>Panel de estilos</h1>\n        <button\n          class=\"minimize-btn\"\n          (click)=\"toggleMinimizado()\"\n          title=\"Minimizar/Restaurar panel\"\n        >\n          {{ minimizado ? '＋' : '－' }}\n        </button>\n      </div>\n\n      @if (!minimizado) {\n        <div class=\"tabs\">\n          @for (tab of tabs; track tab) {\n            <button\n              [class.active]=\"activeTab === tab\"\n              (click)=\"setActiveTab(tab)\"\n            >\n              {{ tab }}\n            </button>\n          }\n        </div>\n\n        <div class=\"reset-export-container\">\n          <button class=\"reset-button\" (click)=\"resetColors()\">Resetear estilos</button>\n          <button class=\"export-button\" (click)=\"exportCSS()\">Exportar CSS</button>\n        </div>\n\n        <div class=\"groups-wrapper\">\n          @for (group of groupedVariables | keyvalue; track group.key) {\n            @if (getTabForGroup(group.key) === activeTab) {\n              <div class=\"group-box\">\n                <div class=\"group-header\" (click)=\"toggleGroup(group.key)\">\n                  <h2>{{ group.key }}</h2>\n                  <span class=\"arrow\" [class.expanded]=\"isGroupExpanded(group.key)\">⌵</span>\n                </div>\n\n                @if (isGroupExpanded(group.key)) {\n                  <div class=\"group-content\">\n                    @for (variable of group.value; track variable.name) {\n                      <div class=\"color-picker-item\">\n                        <label>{{ variable.name.replace('--', '') }}</label>\n\n                        @if (isColor(variable.value)) {\n                          <input\n                            type=\"color\"\n                            [value]=\"getHexForColorInput(variable.name)\"\n                            (input)=\"changeColor($event, variable.name)\"\n                          />\n                        } @else {\n                          @if (['Títulos', 'Pretítulos', 'Subtítulos', 'Textos', 'Fuentes', 'Tipografías'].includes(group.key)) {\n                            <select\n                              [value]=\"fontValues[variable.name]\"\n                              (change)=\"updateFontVariable($event, variable.name)\"\n                            >\n                              <optgroup label=\"Fuentes del proyecto\">\n                                @for (font of colorService.projectFonts; track font) {\n                                  @if (!['font-title', 'font-pretitle', 'font-text', 'font-claim'].includes(font)) {\n                                    <option [value]=\"font\">{{ font }}</option>\n                                  }\n                                }\n                              </optgroup>\n\n                              <optgroup label=\"Google Fonts\">\n                                @for (font of colorService.googleFonts; track font) {\n                                  <option [value]=\"font\">{{ font }}</option>\n                                }\n                              </optgroup>\n                            </select>\n                          } @else {\n                            <input\n                              type=\"text\"\n                              [value]=\"variable.value\"\n                              (input)=\"changeColor($event, variable.name)\"\n                            />\n                          }\n                        }\n\n                        <div class=\"tooltip-container\">\n                          <button class=\"copy-btn\" (click)=\"copyToClipboard(variable.value, variable.name)\">\n                            📋\n                          </button>\n                          <span class=\"tooltip-text\">Copiar</span>\n                        </div>\n\n                        @if (wasCopied(variable.name)) {\n                          <span class=\"copied-msg\">Copiado ✔️</span>\n                        }\n                      </div>\n                    }\n                  </div>\n                }\n              </div>\n            }\n          }\n        </div>\n      }\n    </div>\n  }\n}\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BabylonDataBackgroundDirective } from '../../../directives/data-background/data-background.directive';\nimport { BabylonComingSoonI } from './babylon-comingsoon.interface';\n\n@Component({\n    selector: 'lib-babylon-comingsoon',\n    standalone: true,\n    imports: [CommonModule, BabylonDataBackgroundDirective],\n    templateUrl: './babylon-comingsoon.component.html',\n    styleUrl: './babylon-comingsoon.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonComingsoonComponent {\n    @Input() props?: BabylonComingSoonI;\n}\n\nexport interface BabylonTextsComingSoonI {\n    title?: string;\n    subtitle?: string;\n    copyright?: string;\n}\n\nexport interface BabylonSMComingSoonI {\n    name?: string;\n    url?: string;\n}\n","<section class=\"babylon__comingsoon margin-main-botom\">\n    <div class=\"cs_parallax_slider loading overflow-hidden position-relative\">\n        <div class=\"swiper-wrapper\">\n            @if (props?.images?.length) {\n                @for (image of props?.images; track $index) {\n                    <div class=\"swiper-slide\">\n                        <div\n                            class=\"cs_hero cs_style_1 cs_center text-center position-relative\"\n                        >\n                            <figure\n                                class=\"cs_swiper_parallax_bg cs_hero_bg cs_bg_filed h-100 w-100 position-absolute top-0 start-0 mb-0\"\n                                dataBackground=\"url('{{ image?.src }}')\"\n                            ></figure>\n                        </div>\n                    </div>\n                }\n            }\n        </div>\n    </div>\n    <div class=\"container1 babylon__comingsoon--text\">\n        <div\n            class=\"cs_hero_text intro_info no-align align--center intro_info--light\"\n        >\n            @if (props?.logo) {\n                <img\n                    [src]=\"props?.logo?.src\"\n                    alt=\"Logo\"\n                    class=\"logo mb--40\"\n                    loading=\"lazy\"\n                />\n            }\n\n            @if (props?.texts?.title) {\n                <h1 class=\"title mb--10\">{{ props?.texts?.title }}</h1>\n            }\n            @if (props?.texts?.subtitle) {\n                <h2 class=\"subtitle\">{{ props?.texts?.subtitle }}</h2>\n            }\n            @if (props?.link) {\n                <a\n                    [attr.aria-label]=\"props?.link?.label\"\n                    [href]=\"props?.link?.url\"\n                    class=\"btn-link btn-link--light\"\n                >\n                    <b>{{ props?.link?.label }}</b>\n                </a>\n            }\n            @if (props?.button?.label) {\n                <div class=\"btns__box align--center\">\n                    <a\n                        [attr.aria-label]=\"props?.button?.label\"\n                        [href]=\"props?.button?.url\"\n                        class=\"btn btn_call btn--light\"\n                    >\n                        <b>{{ props?.button?.label }}</b>\n                        <span class=\"babylon-arrow-right-big\"></span>\n                    </a>\n                </div>\n            }\n        </div>\n    </div>\n    <div class=\"foot\">\n        <div class=\"container-fluid\">\n            <div class=\"foot-inner\">\n                @if (props?.texts?.copyright) {\n                    <div class=\"copyright\">\n                        <p>{{ props?.texts?.copyright }}</p>\n                    </div>\n                }\n                @if (props?.socialMedia?.length) {\n                    <ul class=\"cs_social_btns cs_style_1\">\n                        @if (props?.socialMedia) {\n                            @for (sm of props?.socialMedia; track $index) {\n                                <li>\n                                    <a\n                                        [attr.aria-label]=\"sm.name\"\n                                        [href]=\"sm.url\"\n                                        class=\"cs_center\"\n                                        ><i\n                                            [ngClass]=\"\n                                                'babylon-' +\n                                                sm.name?.toLowerCase()\n                                            \"\n                                            [class]=\"'babylon-' + sm.name\"\n                                        ></i\n                                    ></a>\n                                </li>\n                            }\n                        }\n                    </ul>\n                }\n            </div>\n        </div>\n    </div>\n</section>\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { BabylonButtonI } from '../../../interfaces/babylon-button.interface';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport { BabylonDynamicHeadingComponent } from '../../shared';\nimport { BabylonTagsI } from '../../../interfaces';\n\n@Component({\n    selector: 'lib-babylon-contact-address',\n    standalone: true,\n    imports: [CommonModule, BabylonLinkTypeDirective, BabylonDynamicHeadingComponent],\n    templateUrl: './babylon-contact-address.component.html',\n    styleUrl: './babylon-contact-address.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonContactAddressComponent {\n    @Input() info?: BabylonContactFormInfo;\n        @Input() tags?: BabylonTagsI;\n}\n\nexport interface BabylonContactFormInfo {\n    address?: BabylonContactFormInfoItem;\n    email?: BabylonContactFormInfoItem;\n    phone?: BabylonContactFormInfoItem;\n}\n\nexport interface BabylonContactFormInfoItem {\n    icon?: string;\n    title?: string;\n    text?: string;\n    links?: ({ smallText?: string } & BabylonButtonI)[];\n}\n","<section class=\"babylon__contact-address margin-main\">\n    <div class=\"container\">\n        @if (info) {\n            <div class=\"cs_contact_info_boxes\">\n                @if (info.address) {\n                    <div class=\"cs_contact_info_box\">\n                        <div class=\"cs_iconbox cs_style_4\">\n                            @if (info.address.icon; as icon) {\n                                <div\n                                    class=\"cs_iconbox_icon cs_center rounded-circle\"\n                                >\n                                    <div class=\"info--icon icon--medium\">\n                                        <i\n                                            class=\"icon--svg\"\n                                            [ngClass]=\"icon\"\n                                        ></i>\n                                    </div>\n                                </div>\n                            }\n                            <div class=\"cs_iconbox_right\">\n                                <div class=\"intro_info1 no-align\">\n                                    @if (info.address.title; as title) {\n                                        <lib-babylon-dynamic-heading\n                                            [tag]=\"tags?.title || 'h2'\"\n                                            cssClass=\"title--smaller mb--10\"\n                                            [content]=\"title\"\n                                        ></lib-babylon-dynamic-heading>\n                                    }\n                                    @if (info.address.text; as text) {\n                                        @if (info.address.links?.[0]; as link) {\n                                            <a\n                                                [attr.aria-label]=\"link.label\"\n                                                [href]=\"link.url\"\n                                                [linkType]=\"link.linkType\"\n                                            >\n                                                <p\n                                                    class=\"text mb--0\"\n                                                    [innerHTML]=\"text\"\n                                                ></p>\n                                            </a>\n                                        } @else {\n                                            <p\n                                                class=\"text mb--0\"\n                                                [innerHTML]=\"text\"\n                                            ></p>\n                                        }\n                                    }\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                }\n                @if (info.email; as email) {\n                    <div class=\"cs_contact_info_box\">\n                        <div class=\"cs_iconbox cs_style_4\">\n                            @if (email.icon; as icon) {\n                                <div\n                                    class=\"cs_iconbox_icon cs_center rounded-circle\"\n                                >\n                                    <div class=\"info--icon icon--medium\">\n                                        <i\n                                            class=\"icon--svg\"\n                                            [ngClass]=\"icon\"\n                                        ></i>\n                                    </div>\n                                </div>\n                            }\n                            <div class=\"cs_iconbox_right\">\n                                <div class=\"intro_info1 no-align\">\n                                    @if (email.title; as title) {\n                                            <lib-babylon-dynamic-heading\n                                                  [tag]=\"tags?.title || 'h2'\"\n                                                  cssClass=\"title--smaller mb--0\"\n                                                  [content]=\"title\"\n                                              ></lib-babylon-dynamic-heading>\n                                    }\n                                    @if (email.links; as links) {\n                                        <p class=\"text mb--0\">\n                                            @for (\n                                                link of links;\n                                                track $index;\n                                                let last = $last\n                                            ) {\n                                                <a\n                                                    [attr.aria-label]=\"\n                                                        link.label\n                                                    \"\n                                                    [href]=\"link.url\"\n                                                    [linkType]=\"link.linkType\"\n                                                    >{{ link.label }}</a\n                                                >\n                                                @if (!last) {\n                                                    -\n                                                }\n                                            }\n                                        </p>\n                                    }\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                }\n                @if (info.phone; as phone) {\n                    <div class=\"cs_contact_info_box\">\n                        <div class=\"cs_iconbox cs_style_4\">\n                            @if (phone.icon; as icon) {\n                                <div\n                                    class=\"cs_iconbox_icon cs_center rounded-circle\"\n                                >\n                                    <div class=\"info--icon icon--medium\">\n                                        <i\n                                            class=\"icon--svg\"\n                                            [ngClass]=\"icon\"\n                                        ></i>\n                                    </div>\n                                </div>\n                            }\n                            <div class=\"cs_iconbox_right\">\n                                <div class=\"intro_info1 no-align\">\n                                  @if (phone.title; as title) {\n                                    <lib-babylon-dynamic-heading\n                                      [tag]=\"tags?.title || 'h2'\"\n                                      cssClass=\"title--smaller mb--0\"\n                                      [content]=\"title\">\n                                    </lib-babylon-dynamic-heading>\n                                  }\n                                    @if (phone.links; as links) {\n                                        @for (link of links; track $index) {\n                                            <p class=\"text mb--0\">\n                                                <a\n                                                    [attr.aria-label]=\"\n                                                        link.label\n                                                    \"\n                                                    [href]=\"link.url\"\n                                                    [linkType]=\"link.linkType\"\n                                                    >{{ link.label }}</a\n                                                >\n                                            </p>\n                                        }\n                                    }\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                }\n            </div>\n        }\n    </div>\n</section>\n","import { CommonModule } from '@angular/common';\nimport {\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    EventEmitter,\n    Input,\n    OnInit,\n    Output,\n    signal,\n} from '@angular/core';\nimport {\n    AbstractControl,\n    FormBuilder,\n    FormGroup,\n    FormsModule,\n    ReactiveFormsModule,\n    ValidationErrors,\n    ValidatorFn,\n    Validators,\n} from '@angular/forms';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { ActivatedRoute } from '@angular/router';\nimport { DropdownModule } from 'primeng/dropdown';\nimport {\n    BabylonTagsI,\n    BabylonTextInfoI,\n    BabylonTextsColorsI,\n} from '../../../interfaces';\nimport { BabylonButtonI } from '../../../interfaces/babylon-button.interface';\nimport { BabylonDropdownI } from '../../../interfaces/babylon-dropdown.interface';\nimport { BabylonImageI } from '../../../interfaces/babylon-image.interface';\nimport { BabylonInputI } from '../../../interfaces/babylon-input.interface';\nimport { BabylonDynamicHeadingComponent } from '../../shared';\n\n@Component({\n    selector: 'lib-babylon-contact-form',\n    standalone: true,\n    imports: [\n        CommonModule,\n        FormsModule,\n        ReactiveFormsModule,\n        MatCheckboxModule,\n        DropdownModule,\n        BabylonDynamicHeadingComponent,\n    ],\n    templateUrl: './babylon-contact-form.component.html',\n    styleUrl: './babylon-contact-form.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonContactFormComponent implements OnInit {\n    @Input() title?: string;\n    @Input() pretitle?: string;\n    @Input() subtitle?: string;\n    @Input() description?: string;\n    @Input() inputs?: BabylonInputI[];\n    @Input() textarea?: BabylonInputI;\n    @Input() conditions?: string;\n    @Input() conditions2?: string;\n    @Input() button?: BabylonButtonI;\n    @Input() image?: BabylonImageI;\n    @Input() dropdown?: BabylonDropdownI;\n    @Input() hotelDrop?: BabylonDropdownI;\n    @Input() tags?: BabylonTagsI;\n    @Input() textColors?: BabylonTextsColorsI;\n    @Input() texts?: BabylonTextInfoI;\n    @Input() idCv?: number;\n\n    @Output() submit = new EventEmitter<any>();\n\n    cvFile: File | null = null;\n    selectedCvName: string | null = null;\n    showCv = false;\n\n    readonly allowedCvExtensions = ['pdf', 'doc', 'docx', 'odt', 'rtf'];\n    readonly maxCvSizeMb = 5;\n    readonly maxCvSizeBytes = this.maxCvSizeMb * 1024 * 1024; // 5 MB\n\n    form!: FormGroup;\n\n    formReady = signal<boolean>(false);\n\n    constructor(\n        private readonly fb: FormBuilder,\n        private readonly route: ActivatedRoute,\n        private readonly cdr: ChangeDetectorRef\n    ) {}\n\n    ngOnInit(): void {\n        this.initializeForm();\n        this.checkUrlParams();\n    }\n\n    checkUrlParams(): void {\n        this.route.fragment.subscribe((fragment) => {\n            if (fragment && this.dropdown?.options?.length) {\n                const selectedOption = this.dropdown.options.find(\n                    (opt: any) =>\n                        opt.consultTypeId == fragment || opt.id == fragment\n                );\n\n                if (selectedOption) {\n                    this.form.controls['dropdown'].setValue(selectedOption);\n                    this.onDropdownChange(selectedOption);\n\n                    this.dropdown = {\n                        ...this.dropdown,\n                        options: [selectedOption],\n                    };\n\n                    this.cdr.markForCheck();\n                }\n            }\n        });\n    }\n\n    initializeForm(): void {\n        const controls: { [key: string]: any } = {};\n\n        this.inputs?.forEach((input) => {\n            if (input.id) {\n                const existingValidators = [...(input.validators || [])];\n\n                const validators =\n                    input.id === 'phone'\n                        ? [...existingValidators, this.phoneValidator()]\n                        : existingValidators;\n                controls[input.id] = ['', validators];\n            }\n        });\n\n        if (this.textarea && this.textarea.id) {\n            controls[this.textarea.id] = ['', this.textarea?.validators || []];\n        }\n\n        if (this.conditions) {\n            controls['checkbox'] = [false, Validators.requiredTrue];\n        }\n        if (this.conditions2) {\n            controls['checkbox2'] = [false];\n        }\n        if (\n            this.dropdown &&\n            (this.dropdown.title || this.dropdown.placeholder)\n        ) {\n            controls['dropdown'] = ['', Validators.required];\n        }\n        if (\n            this.hotelDrop &&\n            (this.hotelDrop.title || this.hotelDrop.placeholder)\n        ) {\n            controls['hotelDrop'] = ['', Validators.required];\n        }\n\n        controls['cv'] = [null];\n\n        this.form = this.fb.group(controls);\n        this.formReady.set(true);\n    }\n\n    validateInput(input: BabylonInputI): void {\n        if (input && input.id) {\n            const control = this.form.get(input.id);\n            if (control) {\n                input.valid = control.errors === null;\n            }\n        }\n    }\n\n    inputChange(event: Event, input: BabylonInputI): void {\n        const inputElement = event.target as HTMLInputElement;\n\n        if (input.type === 'tel') {\n            inputElement.value = inputElement.value.replace(/[^0-9+]/g, '');\n        }\n    }\n\n    resetForm(): void {\n        this.form?.reset();\n\n        Object.values(this.form.controls).forEach((control) => {\n            control.markAsPristine();\n            control.markAsUntouched();\n            control.updateValueAndValidity();\n        });\n\n        if (this.textarea) {\n            this.textarea.value = '';\n        }\n        this.inputs?.forEach((input) => {\n            input.value = '';\n        });\n\n        this.cvFile = null;\n        this.selectedCvName = null;\n    }\n\n    submitForm(e: Event): void {\n        e.preventDefault();\n        this.form.updateValueAndValidity();\n        if (this.form.invalid) {\n            this.markAllControlsAsTouched();\n            this.inputs?.forEach((input) => this.validateInput(input));\n            if (this.textarea) this.validateInput(this.textarea);\n            return;\n        }\n        const formValue = {\n            ...this.form.value,\n            cv: this.cvFile,\n        };\n\n        this.submit.emit(formValue);\n        this.resetForm();\n    }\n\n    markAllControlsAsTouched(): void {\n        Object.values(this.form.controls).forEach((control) => {\n            control.markAsTouched();\n        });\n\n        this.inputs?.forEach((input) => this.validateInput(input));\n        if (this.textarea) this.validateInput(this.textarea);\n    }\n\n    phoneValidator(): ValidatorFn {\n        return (control: AbstractControl): ValidationErrors | null => {\n            if (!control.value) {\n                return null;\n            }\n\n            const phoneRegex = /^(?:[+ ]?)[\\d -]{7,15}$/;\n            const valid = phoneRegex.test(control.value);\n            return valid ? null : { invalidPhone: true };\n        };\n    }\n\n    onCvSelected(event: Event): void {\n        const input = event.target as HTMLInputElement;\n        if (!input.files || input.files.length === 0) {\n            return;\n        }\n\n        const file = input.files[0];\n        let cvError = this.texts?.textAdjCvError || '';\n\n        const fileName = file.name || '';\n        const extension = fileName.split('.').pop()?.toLowerCase();\n\n        if (!extension || !this.allowedCvExtensions.includes(extension)) {\n            this.cvFile = null;\n            this.selectedCvName = null;\n            this.form.get('cv')?.setValue(null);\n            this.form.get('cv')?.setErrors({ invalidType: true });\n            this.form.get('cv')?.markAsTouched();\n            input.value = '';\n            return;\n        }\n\n        if (file.size > this.maxCvSizeBytes) {\n            this.cvFile = null;\n            this.selectedCvName = null;\n            cvError = cvError + ` Max: ${this.maxCvSizeMb} MB.`;\n            this.form.get('cv')?.setValue(null);\n            this.form.get('cv')?.setErrors({ maxSizeExceeded: true });\n            this.form.get('cv')?.markAsTouched();\n            input.value = '';\n            return;\n        }\n\n        this.cvFile = file;\n        this.selectedCvName = file.name;\n        this.form.get('cv')?.setValue(file);\n        this.form.get('cv')?.setErrors(null);\n        this.form.get('cv')?.markAsDirty();\n    }\n\n    resetNativeFileInput(input: HTMLInputElement): void {\n        input.value = '';\n    }\n\n    removeCv(input: HTMLInputElement): void {\n        this.cvFile = null;\n        this.selectedCvName = null;\n        input.value = '';\n        this.form.get('cv')?.reset(null);\n        this.form.get('cv')?.markAsPristine();\n        this.form.get('cv')?.markAsUntouched();\n    }\n\n    onDropdownChange(value: any): void {\n        const optionId = value?.consultTypeId ?? value;\n\n        this.showCv = optionId === this.idCv;\n\n        if (!this.showCv) {\n            this.clearCvControl();\n        }\n    }\n\n    private clearCvControl(): void {\n        this.cvFile = null;\n        this.selectedCvName = null;\n\n        const cvCtrl = this.form.get('cv');\n        if (cvCtrl) {\n            cvCtrl.setValue(null);\n            cvCtrl.setErrors(null);\n            cvCtrl.markAsPristine();\n            cvCtrl.markAsUntouched();\n        }\n    }\n}\n","<section class=\"babylon__contact-form margin-main\">\n    <div class=\"container\">\n        <div class=\"row cs_gap_y_50\">\n            <div class=\"col-lg-6\">\n                <div class=\"cs_pr_100\">\n                    <div class=\"intro_info mb--40\">\n                        @if (pretitle) {\n                            <lib-babylon-dynamic-heading\n                                [tag]=\"tags?.pretitle || 'h2'\"\n                                cssClass=\"subtitle\"\n                                [color]=\"textColors?.pretitle\"\n                                [content]=\"pretitle\"\n                            ></lib-babylon-dynamic-heading>\n                        }\n                        @if (title) {\n                            <lib-babylon-dynamic-heading\n                                [tag]=\"tags?.title || 'h1'\"\n                                cssClass=\"title wow fadeInUp\"\n                                [color]=\"textColors?.title\"\n                                [content]=\"title\"\n                                data-wow-duration=\"0.8s\"\n                                data-wow-delay=\"0.2s\"\n                            ></lib-babylon-dynamic-heading>\n                        }\n                        @if (subtitle) {\n                            <lib-babylon-dynamic-heading\n                                [tag]=\"tags?.subtitle || 'h1'\"\n                                cssClass=\"text mb--0\"\n                                [color]=\"textColors?.subtitle\"\n                                [content]=\"subtitle\"\n                            ></lib-babylon-dynamic-heading>\n                        }\n                        @if (description) {\n                            <lib-babylon-dynamic-heading\n                                [tag]=\"tags?.description || 'h1'\"\n                                cssClass=\"text mb--0\"\n                                [color]=\"textColors?.description\"\n                                [content]=\"description\"\n                            ></lib-babylon-dynamic-heading>\n                        }\n                    </div>\n                    @if (formReady()) {\n                        <form\n                            [formGroup]=\"form\"\n                            id=\"contactform\"\n                            class=\"cs_form cs_style_2\"\n                        >\n                            @if (\n                                dropdown &&\n                                (dropdown.title || dropdown.placeholder)\n                            ) {\n                                <div>\n                                    @if (dropdown.title) {\n                                        <label class=\"text mb--10\"\n                                            >{{ dropdown.title }}*</label\n                                        >\n                                    }\n                                    <p-dropdown\n                                        class=\"cs_form_field_2 cs--radius form-control\"\n                                        [options]=\"dropdown.options\"\n                                        formControlName=\"dropdown\"\n                                        [placeholder]=\"dropdown.placeholder\"\n                                        optionLabel=\"name\"\n                                        (onChange)=\"\n                                            onDropdownChange($event.value)\n                                        \"\n                                    >\n                                    </p-dropdown>\n                                    @if (\n                                        form.controls['dropdown'].invalid &&\n                                        form.controls['dropdown'].touched\n                                    ) {\n                                        <div class=\"form-warning\">\n                                            <small>{{ dropdown.error }}</small>\n                                        </div>\n                                    }\n                                </div>\n                            }\n                            @if (\n                                hotelDrop &&\n                                (hotelDrop.title || hotelDrop.placeholder)\n                            ) {\n                                <div>\n                                    @if (hotelDrop.title) {\n                                        <label class=\"text mb--10\"\n                                            >{{ hotelDrop.title }}*</label\n                                        >\n                                    }\n                                    <p-dropdown\n                                        class=\"cs_form_field_2 cs--radius form-control\"\n                                        [options]=\"hotelDrop.options\"\n                                        formControlName=\"hotelDrop\"\n                                        [placeholder]=\"hotelDrop.placeholder\"\n                                        optionLabel=\"name\"\n                                    >\n                                    </p-dropdown>\n                                    @if (\n                                        form.controls['hotelDrop'].invalid &&\n                                        form.controls['hotelDrop'].touched\n                                    ) {\n                                        <div class=\"form-warning\">\n                                            <small>{{ hotelDrop.error }}</small>\n                                        </div>\n                                    }\n                                </div>\n                            }\n                            @if (inputs?.length) {\n                                @for (input of inputs; track $index) {\n                                    <div>\n                                        @if (input.title) {\n                                            <label class=\"text mb--10\"\n                                                >{{ input.title }}*</label\n                                            >\n                                        }\n                                        <input\n                                            class=\"cs_form_field_2 cs--radius\"\n                                            [type]=\"input.type\"\n                                            [id]=\"input.name\"\n                                            [name]=\"input.name\"\n                                            [placeholder]=\"input.placeholder\"\n                                            [formControlName]=\"input.id!\"\n                                            [value]=\"input.value\"\n                                            (blur)=\"validateInput(input)\"\n                                            (input)=\"inputChange($event, input)\"\n                                        />\n                                        @if (\n                                            form.controls[input.id!].invalid &&\n                                            form.controls[input.id!].touched\n                                        ) {\n                                            <div class=\"form-warning\">\n                                                <small>{{\n                                                    input?.error\n                                                }}</small>\n                                            </div>\n                                        }\n                                    </div>\n                                }\n                            }\n                            @if (\n                                textarea &&\n                                (textarea.title || textarea.placeholder)\n                            ) {\n                                <div>\n                                    @if (textarea.title) {\n                                        <label class=\"text mb--10\"\n                                            >{{ textarea.title }}*</label\n                                        >\n                                    }\n                                    <textarea\n                                        cols=\"30\"\n                                        rows=\"6\"\n                                        class=\"cs_form_field_2 cs--radius\"\n                                        [id]=\"textarea.name\"\n                                        [formControlName]=\"textarea.id!\"\n                                        [placeholder]=\"textarea.placeholder\"\n                                    ></textarea>\n                                    @if (\n                                        form.controls[textarea.id!].invalid &&\n                                        form.controls[textarea.id!].touched\n                                    ) {\n                                        <div class=\"form-warning\">\n                                            <small>{{ textarea.error }}</small>\n                                        </div>\n                                    }\n                                </div>\n                            }\n\n                            @if (\n                                idCv &&\n                                showCv &&\n                                texts?.textAdjCv &&\n                                texts?.SelectItemText\n                            ) {\n                                <div class=\"cs_cv_wrapper\">\n                                    <label class=\"text mb--10\">{{\n                                        texts?.textAdjCv\n                                    }}</label>\n\n                                    <div\n                                        class=\"cs_cv_field cs_form_field_2 cs--radius\"\n                                    >\n                                        <input\n                                            #cvInput\n                                            type=\"file\"\n                                            class=\"cs_cv_input-real\"\n                                            accept=\".pdf,.doc,.docx,.odt,.rtf\"\n                                            (change)=\"onCvSelected($event)\"\n                                            (click)=\"\n                                                resetNativeFileInput(cvInput)\n                                            \"\n                                        />\n\n                                        @if (texts?.SelectItemText) {\n                                            <button\n                                                type=\"button\"\n                                                class=\"cs_cv_button\"\n                                                (click)=\"cvInput.click()\"\n                                            >\n                                                {{ texts?.SelectItemText }}\n                                            </button>\n                                        }\n\n                                        <span\n                                            class=\"cs_cv_filename\"\n                                            *ngIf=\"selectedCvName\"\n                                        >\n                                            {{ selectedCvName }}\n                                        </span>\n                                        <button\n                                            *ngIf=\"selectedCvName\"\n                                            type=\"button\"\n                                            class=\"cs_cv_remove\"\n                                            (click)=\"removeCv(cvInput)\"\n                                            aria-label=\"Eliminar CV\"\n                                        >\n                                            ×\n                                        </button>\n                                    </div>\n\n                                    @if (\n                                        texts?.textAdjCvError &&\n                                        form.controls['cv']?.invalid &&\n                                        form.controls['cv']?.touched\n                                    ) {\n                                        <div class=\"form-warning\">\n                                            <small>{{\n                                                texts?.textAdjCvError\n                                            }}</small>\n                                        </div>\n                                    }\n                                </div>\n                            }\n\n                            <div class=\"cs_form_checkboxes\">\n                                @if (conditions) {\n                                    <div class=\"item-check\">\n                                        <mat-checkbox\n                                            class=\"formcontrol\"\n                                            formControlName=\"checkbox\"\n                                            [ngClass]=\"{\n                                                'error-checkbox':\n                                                    form.controls['checkbox']\n                                                        .invalid &&\n                                                    form.controls['checkbox']\n                                                        .touched,\n                                            }\"\n                                        ></mat-checkbox>\n                                        <span\n                                            class=\"conditions\"\n                                            [innerHTML]=\"conditions\"\n                                        >\n                                        </span>\n                                    </div>\n                                }\n                                @if (conditions2) {\n                                    <div class=\"item-check\">\n                                        <mat-checkbox\n                                            class=\"formcontrol\"\n                                            formControlName=\"checkbox2\"\n                                            [ngClass]=\"{\n                                                'error-checkbox':\n                                                    form.controls['checkbox2']\n                                                        .invalid &&\n                                                    form.controls['checkbox2']\n                                                        .touched,\n                                            }\"\n                                        ></mat-checkbox>\n                                        <span\n                                            class=\"conditions\"\n                                            [innerHTML]=\"conditions2\"\n                                        >\n                                        </span>\n                                    </div>\n                                }\n                            </div>\n                            @if (button) {\n                                <div class=\"btns__box align--center\">\n                                    <button\n                                        class=\"btn btn_primary\"\n                                        type=\"submit\"\n                                        [name]=\"button.label\"\n                                        (click)=\"submitForm($event)\"\n                                    >\n                                        <b>{{ button.label }}</b>\n                                        <span\n                                            class=\"babylon-arrow-right-big\"\n                                        ></span>\n                                    </button>\n                                </div>\n                            }\n                        </form>\n                    }\n                </div>\n            </div>\n            @if (image) {\n                <div class=\"col-lg-6\">\n                    <div class=\"cs_image_layer cs_style_3 position-relative\">\n                        <img\n                            [src]=\"\n                                image?.src ||\n                                'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                            \"\n                            [alt]=\"image?.alt ?? image?.title ?? 'title'\"\n                            class=\"cs--radius\"\n                            loading=\"lazy\"\n                        />\n                    </div>\n                </div>\n            }\n        </div>\n    </div>\n</section>\n","import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n    AfterViewInit,\n    Component,\n    ElementRef,\n    EventEmitter,\n    HostListener,\n    Inject,\n    Input,\n    OnInit,\n    Output,\n    PLATFORM_ID,\n    Renderer2,\n    signal,\n    ViewChild,\n} from '@angular/core';\nimport {\n    AbstractControl,\n    FormBuilder,\n    FormGroup,\n    FormsModule,\n    ReactiveFormsModule,\n    ValidationErrors,\n    ValidatorFn,\n    Validators,\n} from '@angular/forms';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport {\n    BabylonButtonI,\n    BabylonContactInfoI,\n    BabylonDropdownI,\n    BabylonImageI,\n    BabylonInputI,\n} from '../../../interfaces';\n\n@Component({\n    selector: 'lib-babylon-contact-form-v2',\n    standalone: true,\n    imports: [\n        FormsModule,\n        CommonModule,\n        MatCheckboxModule,\n        ReactiveFormsModule,\n        BabylonLinkTypeDirective,\n    ],\n    templateUrl: './babylon-contact-form-v2.component.html',\n    styleUrl: './babylon-contact-form-v2.component.scss',\n})\nexport class BabylonContactFormV2Component implements OnInit, AfterViewInit {\n    @Input() title?: string;\n    @Input() pretitle?: string;\n    @Input() subtitle?: string;\n    @Input() description?: string;\n    @Input() contactInfo?: BabylonContactInfoI;\n    @Input() image?: BabylonImageI;\n    @Input() rightSide?: boolean = false;\n    @Input() leftSide?: boolean = false;\n    @Input() dropdown?: BabylonDropdownI;\n    @Input() inputs?: BabylonInputI[];\n    @Input() button?: BabylonButtonI;\n    @Input() textarea?: BabylonInputI;\n    @Input() conditions?: string;\n    @Input() conditions2?: string;\n\n    @Output() submit = new EventEmitter<any>();\n\n    form!: FormGroup;\n\n    formReady = signal<boolean>(false);\n\n    @ViewChild('bgSection') bgSection!: ElementRef<HTMLElement>;\n    @ViewChild('headingEl') headingEl!: ElementRef<HTMLElement>;\n\n    constructor(\n        private fb: FormBuilder,\n        private renderer: Renderer2,\n        @Inject(PLATFORM_ID) private platformId: Object\n    ) {}\n\n    ngOnInit(): void {\n        this.initializeForm();\n    }\n\n    ngAfterViewInit(): void {\n        if (isPlatformBrowser(this.platformId)) {\n            // Un pequeño setTimeout asegura que Angular haya renderizado y calculado los altos reales\n            setTimeout(() => this.updateBGHeight(), 50);\n        }\n    }\n\n    @HostListener('window:resize')\n    onResize(): void {\n        if (isPlatformBrowser(this.platformId)) {\n            this.updateBGHeight();\n        }\n    }\n\n    updateBGHeight(): void {\n        if (!this.bgSection?.nativeElement || !this.headingEl?.nativeElement) {\n            console.warn(\n                'Faltan los elementos para calcular la altura del fondo'\n            );\n            return;\n        }\n\n        const heading = this.headingEl.nativeElement;\n        const bgSpan = this.bgSection.nativeElement;\n\n        const baseFontSize =\n            parseFloat(getComputedStyle(document.documentElement).fontSize) ||\n            16;\n        const totalPx = (heading.offsetTop || 0) + (heading.offsetHeight || 0);\n        const totalRem = totalPx / baseFontSize;\n\n        // 👇 EL CAMBIO CLAVE: Usar setProperty nativo en lugar de Renderer2\n        bgSpan.style.setProperty('--bg-height', `${totalRem}rem`);\n    }\n\n    initializeForm(): void {\n        const controls: { [key: string]: any } = {};\n\n        this.inputs?.forEach((input) => {\n            if (input.id) {\n                const existingValidators = [...(input.validators || [])];\n\n                const validators =\n                    input.id === 'phone'\n                        ? [...existingValidators, this.phoneValidator()]\n                        : existingValidators;\n                controls[input.id] = ['', validators];\n            }\n        });\n\n        if (this.textarea && this.textarea.id) {\n            controls[this.textarea.id] = ['', this.textarea?.validators || []];\n        }\n\n        if (this.conditions) {\n            controls['checkbox'] = [false, Validators.requiredTrue];\n        }\n        if (this.conditions2) {\n            controls['checkbox2'] = [false];\n        }\n        if (this.dropdown) {\n            controls['dropdown'] = ['', Validators.required];\n        }\n\n        this.form = this.fb.group(controls);\n        this.formReady.set(true);\n\n        if (this.dropdown?.options?.length) {\n            this.form.get('dropdown')?.setValue(this.dropdown.options[0].code);\n        }\n    }\n\n    validateInput(input: BabylonInputI): void {\n        if (input && input.id) {\n            const control = this.form.get(input.id);\n            if (control) {\n                input.valid = control.errors === null;\n            }\n        }\n    }\n\n    inputChange(event: Event, input: BabylonInputI): void {\n        const inputElement = event.target as HTMLInputElement;\n\n        if (input.type === 'tel' || input.id === 'phone') {\n            const sanitizedValue = inputElement.value.replace(/[^0-9+]/g, '');\n\n            if (inputElement.value !== sanitizedValue) {\n                inputElement.value = sanitizedValue;\n                this.form.get(input.id!)?.setValue(sanitizedValue);\n            }\n        }\n    }\n\n    resetForm(): void {\n        this.form?.reset();\n\n        Object.values(this.form.controls).forEach((control) => {\n            control.markAsPristine();\n            control.markAsUntouched();\n            control.updateValueAndValidity();\n        });\n\n        if (this.textarea) {\n            this.textarea.value = '';\n        }\n        this.inputs?.forEach((input) => {\n            input.value = '';\n        });\n    }\n\n    submitForm(e: Event): void {\n        e.preventDefault();\n        this.form.updateValueAndValidity();\n        if (this.form.invalid) {\n            this.markAllControlsAsTouched();\n            this.inputs?.forEach((input) => this.validateInput(input));\n            if (this.textarea) this.validateInput(this.textarea);\n            return;\n        }\n        this.submit.emit(this.form.value);\n        this.resetForm();\n    }\n\n    markAllControlsAsTouched(): void {\n        Object.values(this.form.controls).forEach((control) => {\n            control.markAsTouched();\n        });\n\n        this.inputs?.forEach((input) => this.validateInput(input));\n        if (this.textarea) this.validateInput(this.textarea);\n    }\n\n    phoneValidator(): ValidatorFn {\n        return (control: AbstractControl): ValidationErrors | null => {\n            if (!control.value) {\n                return null;\n            }\n\n            const phoneRegex = /^(?:[+ ]?)[\\d -]{7,15}$/;\n            const valid = phoneRegex.test(control.value);\n            return valid ? null : { invalidPhone: true };\n        };\n    }\n}\n","<section\n    class=\"babylon__contact-form-v2 contact js-bgHeight-section\"\n    [ngClass]=\"{ 'contact--right': rightSide || leftSide }\"\n    #bgSection\n>\n    <div class=\"container\">\n        <div class=\"contact__inner\">\n            <div class=\"contact__content\">\n                <div class=\"contact__content--inner\">\n                    <div\n                        class=\"contact__heading js-bgHeight-heading\"\n                        #headingEl\n                    >\n                        @if (title) {\n                            <h2>{{ title }}</h2>\n                        }\n                        @if (description) {\n                            <p [innerHTML]=\"description\"></p>\n                        }\n                    </div>\n                    <div class=\"blanco-version-form-v2\">\n                        <div class=\"contact-form\">\n                            @if (formReady()) {\n                                <form [formGroup]=\"form\" id=\"contactform\">\n                                    <div class=\"input-group open\">\n                                        <select\n                                            class=\"select-control\"\n                                            [name]=\"dropdown?.title\"\n                                            [id]=\"dropdown?.filterId\"\n                                            formControlName=\"dropdown\"\n                                        >\n                                            @if (dropdown?.options?.length) {\n                                                @for (\n                                                    option of dropdown?.options;\n                                                    track $index\n                                                ) {\n                                                    <option\n                                                        [value]=\"option.code\"\n                                                    >\n                                                        {{ option.name }}\n                                                    </option>\n                                                }\n                                            }\n                                        </select>\n                                        <span class=\"input-group--icon\">\n                                            <svg\n                                                aria-hidden=\"true\"\n                                                class=\"down-arrow\"\n                                                focusable=\"false\"\n                                            >\n                                                <use\n                                                    href=\"/assets/babylon/svg/icon-arrow.svg#icon-arrow\"\n                                                ></use>\n                                            </svg>\n                                        </span>\n                                    </div>\n                                    <div class=\"form-group\">\n                                        @if (inputs?.length) {\n                                            @for (\n                                                input of inputs?.slice(0, 2);\n                                                track $index\n                                            ) {\n                                                <div class=\"input-group\">\n                                                    @if (input.name) {\n                                                        <label\n                                                            class=\"input-group--label\"\n                                                            >{{\n                                                                input.name\n                                                            }}</label\n                                                        >\n                                                    }\n                                                    <input\n                                                        [type]=\"input.type\"\n                                                        class=\"input-control\"\n                                                        required\n                                                        [name]=\"input.name\"\n                                                        [id]=\"input.id\"\n                                                        [formControlName]=\"\n                                                            input.id!\n                                                        \"\n                                                        [placeholder]=\"\n                                                            input.placeholder\n                                                        \"\n                                                        (input)=\"\n                                                            inputChange(\n                                                                $event,\n                                                                input\n                                                            )\n                                                        \"\n                                                    />\n                                                    @if (input.svg) {\n                                                        <span\n                                                            class=\"input-group--icon\"\n                                                        >\n                                                            <svg\n                                                                aria-hidden=\"true\"\n                                                                focusable=\"false\"\n                                                            >\n                                                                <use\n                                                                    [attr.href]=\"\n                                                                        '/assets/babylon/svg/' +\n                                                                        input.svg +\n                                                                        '.svg#' +\n                                                                        input.svg\n                                                                    \"\n                                                                ></use>\n                                                            </svg>\n                                                        </span>\n                                                    } @else {\n                                                        <span\n                                                            class=\"input-group--icon\"\n                                                        >\n                                                            <svg\n                                                                aria-hidden=\"true\"\n                                                                focusable=\"false\"\n                                                            >\n                                                                <use\n                                                                    href=\"/assets/babylon/svg/icon-user.svg#icon-user\"\n                                                                ></use>\n                                                            </svg>\n                                                        </span>\n                                                    }\n                                                    @if (\n                                                        form.controls[input.id!]\n                                                            .invalid &&\n                                                        form.controls[input.id!]\n                                                            .touched\n                                                    ) {\n                                                        <div\n                                                            class=\"form-warning\"\n                                                        >\n                                                            <small>{{\n                                                                input?.error\n                                                            }}</small>\n                                                        </div>\n                                                    }\n                                                </div>\n                                            }\n                                        }\n                                    </div>\n                                    <div class=\"form-group\">\n                                        @if (inputs?.length) {\n                                            @for (\n                                                input of inputs?.slice(2, 4);\n                                                track $index\n                                            ) {\n                                                <div class=\"input-group\">\n                                                    @if (input.name) {\n                                                        <label\n                                                            class=\"input-group--label\"\n                                                            >{{\n                                                                input.name\n                                                            }}</label\n                                                        >\n                                                    }\n                                                    <input\n                                                        [type]=\"input.type\"\n                                                        class=\"input-control\"\n                                                        required\n                                                        [name]=\"input.name\"\n                                                        [id]=\"input.id\"\n                                                        [formControlName]=\"\n                                                            input.id!\n                                                        \"\n                                                        [placeholder]=\"\n                                                            input.placeholder\n                                                        \"\n                                                        (input)=\"\n                                                            inputChange(\n                                                                $event,\n                                                                input\n                                                            )\n                                                        \"\n                                                    />\n                                                    @if (input.svg) {\n                                                        <span\n                                                            class=\"input-group--icon\"\n                                                        >\n                                                            <svg\n                                                                aria-hidden=\"true\"\n                                                                focusable=\"false\"\n                                                            >\n                                                                <use\n                                                                    [attr.href]=\"\n                                                                        '/assets/babylon/svg/' +\n                                                                        input.svg +\n                                                                        '.svg#' +\n                                                                        input.svg\n                                                                    \"\n                                                                ></use>\n                                                            </svg>\n                                                        </span>\n                                                    } @else {\n                                                        <span\n                                                            class=\"input-group--icon\"\n                                                        >\n                                                            <svg\n                                                                aria-hidden=\"true\"\n                                                                focusable=\"false\"\n                                                            >\n                                                                @if (\n                                                                    input.name?.toLowerCase() ===\n                                                                    'email'\n                                                                ) {\n                                                                    <use\n                                                                        href=\"/assets/babylon/svg/icon-envelope.svg#icon-envelope\"\n                                                                    ></use>\n                                                                }\n                                                                @if (\n                                                                    input.name?.toLowerCase() ===\n                                                                        'phone' ||\n                                                                    input.name?.toLowerCase() ===\n                                                                        'telefono'\n                                                                ) {\n                                                                    <use\n                                                                        href=\"/assets/babylon/svg/icon-call.svg#icon-call\"\n                                                                    ></use>\n                                                                }\n                                                            </svg>\n                                                        </span>\n                                                    }\n                                                    @if (\n                                                        form.controls[input.id!]\n                                                            .invalid &&\n                                                        form.controls[input.id!]\n                                                            .touched\n                                                    ) {\n                                                        <div\n                                                            class=\"form-warning\"\n                                                        >\n                                                            <small>{{\n                                                                input?.error\n                                                            }}</small>\n                                                        </div>\n                                                    }\n                                                </div>\n                                            }\n                                        }\n                                    </div>\n                                    @if (textarea) {\n                                        <div class=\"form-group\">\n                                            <div class=\"input-group\">\n                                                <textarea\n                                                    class=\"input-control\"\n                                                    rows=\"\"\n                                                    name=\"message\"\n                                                    [id]=\"textarea.name\"\n                                                    [formControlName]=\"\n                                                        textarea.id!\n                                                    \"\n                                                    [placeholder]=\"\n                                                        textarea.placeholder\n                                                    \"\n                                                    spellcheck=\"false\"\n                                                ></textarea>\n                                                @if (\n                                                    form.controls[textarea.id!]\n                                                        .invalid &&\n                                                    form.controls[textarea.id!]\n                                                        .touched\n                                                ) {\n                                                    <div class=\"form-warning\">\n                                                        <small>{{\n                                                            textarea.error\n                                                        }}</small>\n                                                    </div>\n                                                }\n                                            </div>\n                                        </div>\n                                    }\n                                    <div class=\"input-group last-input\">\n                                        @if (contactInfo?.requiredFieldsLabel) {\n                                            <span\n                                                class=\"checkbox__group required-label\"\n                                                >{{\n                                                    contactInfo?.requiredFieldsLabel\n                                                }}</span\n                                            >\n                                        }\n                                        <div class=\"checkbox__group\">\n                                            @if (conditions) {\n                                                <label>\n                                                    <input\n                                                        type=\"checkbox\"\n                                                        name=\"checkbox\"\n                                                        formControlName=\"checkbox\"\n                                                        [ngClass]=\"{\n                                                            'error-checkbox':\n                                                                form.controls[\n                                                                    'checkbox'\n                                                                ].invalid &&\n                                                                form.controls[\n                                                                    'checkbox'\n                                                                ].touched,\n                                                        }\"\n                                                    />\n                                                    <span>\n                                                        <svg\n                                                            aria-hidden=\"true\"\n                                                            focusable=\"false\"\n                                                            class=\"checkbox--tick\"\n                                                        >\n                                                            <use\n                                                                href=\"/assets/babylon/svg/icon-tick.svg#icon-tick\"\n                                                            ></use>\n                                                        </svg>\n                                                        <div\n                                                            [innerHTML]=\"\n                                                                conditions\n                                                            \"\n                                                        ></div>\n                                                    </span>\n                                                </label>\n                                            }\n                                            @if (conditions2) {\n                                                <label>\n                                                    <input\n                                                        type=\"checkbox\"\n                                                        name=\"checkbox\"\n                                                        formControlName=\"checkbox2\"\n                                                        [ngClass]=\"{\n                                                            'error-checkbox':\n                                                                form.controls[\n                                                                    'checkbox2'\n                                                                ].invalid &&\n                                                                form.controls[\n                                                                    'checkbox2'\n                                                                ].touched,\n                                                        }\"\n                                                    />\n                                                    <span>\n                                                        <svg\n                                                            aria-hidden=\"true\"\n                                                            focusable=\"false\"\n                                                            class=\"checkbox--tick\"\n                                                        >\n                                                            <use\n                                                                href=\"/assets/babylon/svg/icon-tick.svg#icon-tick\"\n                                                            ></use>\n                                                        </svg>\n                                                        <div\n                                                            [innerHTML]=\"\n                                                                conditions2\n                                                            \"\n                                                        ></div>\n                                                    </span>\n                                                </label>\n                                            }\n                                        </div>\n                                    </div>\n                                    @if (button) {\n                                        <div class=\"btn__group\">\n                                            <button\n                                                class=\"btn btn_primary\"\n                                                type=\"submit\"\n                                                [name]=\"button.label\"\n                                                (click)=\"submitForm($event)\"\n                                            >\n                                                <span>{{ button.label }}</span>\n                                            </button>\n                                        </div>\n                                    }\n                                </form>\n                            }\n                        </div>\n                    </div>\n                </div>\n            </div>\n            @if (image) {\n                <div class=\"contact__map\">\n                    <a href=\"\">\n                        <svg\n                            aria-hidden=\"true\"\n                            focusable=\"false\"\n                            class=\"contact__map-graphic--top\"\n                        >\n                            <use\n                                href=\"/assets/babylon/svg/icon-graphic.svg#icon-graphic\"\n                            ></use>\n                        </svg>\n                        <figure>\n                            <img\n                                [src]=\"\n                                    image?.src ||\n                                    'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                \"\n                                [alt]=\"image?.alt ?? image?.title ?? 'title'\"\n                            />\n                        </figure>\n                        <div class=\"btn__group\">\n                            <svg\n                                aria-hidden=\"true\"\n                                focusable=\"false\"\n                                class=\"contact__map-graphic--bottom\"\n                            >\n                                <use\n                                    href=\"/assets/babylon/svg/icon-graphic.svg#icon-graphic\"\n                                ></use>\n                            </svg>\n                            @if (image.buttons; as btn) {\n                                <a\n                                    class=\"btn btn__primary\"\n                                    role=\"button\"\n                                    [href]=\"btn?.[0]?.url\"\n                                    [linkType]=\"btn?.[0]?.linkType\"\n                                >\n                                    <span>{{ btn?.[0]?.label }}</span>\n                                </a>\n                            }\n                        </div>\n                    </a>\n                </div>\n            }\n        </div>\n    </div>\n</section>\n","import { CommonModule } from '@angular/common';\nimport {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    Input,\n} from '@angular/core';\nimport { BabylonSlidersDirective } from '../../../directives/babylon-sliders/babylon-sliders.directive';\n\n@Component({\n    selector: 'lib-babylon-contact-how',\n    standalone: true,\n    imports: [CommonModule, BabylonSlidersDirective],\n    templateUrl: './babylon-contact-how.component.html',\n    styleUrl: './babylon-contact-how.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonContactHowComponent implements AfterViewInit {\n    @Input() pretitle?: string;\n    @Input() title?: string;\n    @Input() items?: BabylonContactMapItem[];\n\n    constructor(private cdr: ChangeDetectorRef) {}\n\n    ngAfterViewInit() {\n        setTimeout(() => {\n            this.cdr.detectChanges();\n        }, 100);\n    }\n}\n\nexport interface BabylonContactMapItem {\n    title?: string;\n    description?: string;\n    icon?: string;\n}\n","<section class=\"babylon__contact-how margin-main\">\n    <div class=\"cs_slider cs_style_1 cs_slider_gap_30 cs_show_shadow_20\">\n        <div class=\"container\">\n            <div class=\"cs_section_heading_wrap_1\">\n                <div class=\"cs_section_heading cs_style_1\">\n                    <div class=\"intro_info no-align\">\n                        @if (pretitle) {\n                            <h3\n                                class=\"pretitle wow fadeInLeft\"\n                                data-wow-duration=\"0.8s\"\n                                data-wow-delay=\"0.2s\"\n                            >\n                                {{ pretitle }}\n                            </h3>\n                        }\n                        @if (title) {\n                            <h2 class=\"title\">{{ title }}</h2>\n                        }\n                    </div>\n                </div>\n                <div class=\"cs_slider_arrows cs_style_4\">\n                    <div class=\"cs_left_arrow slick-arrow cs_center\">\n                        <span class=\"babylon-arrow-left-big\"></span>\n                    </div>\n                    <div class=\"cs_right_arrow slick-arrow cs_center\">\n                        <span class=\"babylon-arrow-right-big\"></span>\n                    </div>\n                </div>\n            </div>\n\n            <div class=\"cs_full_width_right\">\n                <div\n                    class=\"cs_slider_container\"\n                    sliders=\"cs_slider_container2\"\n                    data-autoplay=\"0\"\n                    data-loop=\"1\"\n                    data-speed=\"600\"\n                    data-center=\"0\"\n                    data-variable-width=\"1\"\n                    data-slides-per-view=\"responsive\"\n                    data-xs-slides=\"1\"\n                    data-sm-slides=\"2\"\n                    data-md-slides=\"2\"\n                    data-mlg-slides=\"3\"\n                    data-lg-slides=\"3\"\n                    data-add-slides=\"3\"\n                >\n                    <div class=\"cs_slider_wrapper\">\n                        @if (items?.length) {\n                            @for (item of items; track $index) {\n                                <div class=\"cs_slide\">\n                                    <div\n                                        class=\"cs_iconbox cs_style_3 cs--radius bg--white\"\n                                    >\n                                        <div\n                                            class=\"cs_iconbox_icon cs_mb_29 cs_center cs--radius bg--white\"\n                                        >\n                                            <div\n                                                class=\"info--icon icon--medium\"\n                                            >\n                                                <i\n                                                    class=\"icon--svg icon-plane1_ico_big\"\n                                                    [ngClass]=\"item.icon\"\n                                                ></i>\n                                            </div>\n                                        </div>\n                                        <h3 class=\"title--small mb--10\">\n                                            {{ item.title }}\n                                        </h3>\n                                        <p\n                                            class=\"text\"\n                                            [innerHTML]=\"item.description\"\n                                        ></p>\n                                    </div>\n                                </div>\n                            }\n                        }\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n    <div class=\"cs_height_50 cs_height_lg_40\"></div>\n</section>\n","import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\nimport { BabylonImageI } from '../../../interfaces/babylon-image.interface';\nimport { BabylonButtonI } from '../../../interfaces/babylon-button.interface';\nimport { CommonModule } from '@angular/common';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport { ScreenSizerService } from '../../../services/screen-sizer';\nimport { map } from 'rxjs/operators';\n\n@Component({\n    selector: 'lib-babylon-contact-map',\n    standalone: true,\n    imports: [BabylonLinkTypeDirective],\n    templateUrl: './babylon-contact-map.component.html',\n    styleUrl: './babylon-contact-map.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonContactMapComponent implements OnInit {\n    @Input() contentUrl?: string;\n    @Input() mapImage?: BabylonImageI;\n    @Input() button?: BabylonButtonI;\n    @Input() mapImageMobile?: BabylonImageI;\n\n    get safeUrl(): SafeResourceUrl {\n        return this.sanitizer.bypassSecurityTrustResourceUrl(this.contentUrl!);\n    }\n\n    constructor(private readonly sanitizer: DomSanitizer, private readonly screenSizer: ScreenSizerService) {}\n    ngOnInit(): void {\n        if (this.screenSizer.width < 768 && this.mapImageMobile) {\n            this.mapImage = this.mapImageMobile;\n        }\n    }\n}\n","<section class=\"babylon__contact-map margin-main\">\n    <div class=\"cs_google_map cs_style_1\">\n        @if (contentUrl) {\n            <iframe\n                [src]=\"safeUrl\"\n                allowfullscreen\n                loading=\"lazy\"\n                title=\"map\"\n            ></iframe>\n        } @else {\n            @if (mapImage) {\n                <img [src]=\"mapImage.src\" [alt]=\"mapImage.alt\" loading=\"lazy\" />\n            }\n        }\n        @if (button) {\n            <a\n                [attr.aria-label]=\"button.label\"\n                [href]=\"button.url\"\n                [linkType]=\"button.linkType\"\n                class=\"btn btn_call\"\n                >{{ button.label }}</a\n            >\n        }\n    </div>\n</section>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { BabylonTextInfoI } from '../../../interfaces';\n\n@Component({\n    selector: 'lib-babylon-container-text-l2',\n    standalone: true,\n    imports: [CommonModule],\n    templateUrl: './babylon-container-text-l2.component.html',\n    styleUrl: './babylon-container-text-l2.component.scss',\n})\nexport class BabylonContainerTextL2Component {\n    @Input() background: boolean = false;\n    @Input() leftSide: boolean = false;\n    @Input() texts?: BabylonTextInfoI;\n}\n","<section class=\"lines-2\" [ngClass]=\"{ 'bg-cream': background }\">\n  @if(texts?.title) {\n    <h2>{{ texts?.title }}</h2>\n  }\n</section>\n","import { CommonModule } from '@angular/common';\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    EventEmitter,\n    Input,\n    OnChanges,\n    OnInit,\n    Output,\n    SimpleChanges,\n} from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { Dropdown, DropdownModule } from 'primeng/dropdown';\nimport { BabylonButtonI } from '../../../interfaces/babylon-button.interface';\nimport { BabylonDropdownI } from '../../../interfaces/babylon-dropdown.interface';\nimport { DropdownOption } from '../babylon-rooms-cols/babylon-rooms-cols.component';\n\n@Component({\n    selector: 'lib-babylon-guests-popup',\n    standalone: true,\n    imports: [CommonModule, FormsModule, DropdownModule, ReactiveFormsModule],\n    templateUrl: './babylon-guests-popup.component.html',\n    styleUrl: './babylon-guests-popup.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonGuestsPopupComponent implements OnChanges, OnInit {\n    @Input() defaultValue?: any;\n    @Input() adultsDropdown?: BabylonDropdownI;\n    @Input() kidsDropdown?: BabylonDropdownI;\n    @Input() juniorsDropdown?: BabylonDropdownI;\n    @Input() babiesDropdown?: BabylonDropdownI;\n    @Input() agesDropdown?: BabylonDropdownI;\n    @Input() kidsLabel?: string;\n    @Input() agesLabel?: string;\n    @Input() btn?: BabylonButtonI;\n    @Input() onlyAdults?: boolean;\n    @Input() showAges = true;\n\n    @Output() apply = new EventEmitter<guestsValue>();\n\n    value: guestsValue = {\n        adultsValue: { code: 1, name: '01' },\n        juniorsValue: {},\n        kidsValue: {},\n        infantsValue: {},\n    };\n\n    kids: number[] = [];\n    juniors: number[] = [];\n    agesValue: DropdownOption[] = [];\n\n    applied = false;\n    kidsApplied = true;\n    juniorsApplied = true;\n\n    private isDropdownCleaned = new Set<string>();\n\n    ngOnChanges(changes: SimpleChanges): void {\n        this.cleanIfNeeded('adultsDropdown', changes);\n        this.cleanIfNeeded('juniorsDropdown', changes);\n        this.cleanIfNeeded('kidsDropdown', changes);\n        this.cleanIfNeeded('babiesDropdown', changes);\n        this.cleanIfNeeded('agesDropdown', changes);\n    }\n\n    ngOnInit(): void {\n        if (this.defaultValue) {\n            this.value.adultsValue = this.adultsDropdown?.options?.find(\n                (o) => o.code === this.defaultValue.adultsValue?.code\n            );\n\n            this.value.infantsValue = this.babiesDropdown?.options?.find(\n                (o) => o.code === this.defaultValue.infantsValue?.code\n            );\n\n            if (this.defaultValue.kidsValue?.code != undefined) {\n                this.value.kidsValue = this.kidsDropdown?.options?.find(\n                    (o) => o.code === this.defaultValue.kidsValue.code\n                );\n\n                const count = Number(this.value.kidsValue?.code);\n                this.kids = Array.from({ length: count }, (_, i) => i + 1);\n\n                this.agesValue = this.defaultValue.kidsValue.ages ?? [];\n            }\n\n            if (this.defaultValue.juniorsValue?.code != undefined) {\n                this.value.juniorsValue = this.juniorsDropdown?.options?.find(\n                    (o) => o.code === this.defaultValue.juniorsValue.code\n                );\n\n                const count = Number(this.value.juniorsValue?.code);\n                this.juniors = Array.from({ length: count }, (_, i) => i + 1);\n\n                this.agesValue = this.defaultValue.juniorsValue.ages ?? [];\n            }\n        }\n    }\n\n    private cleanIfNeeded(\n        key: keyof BabylonGuestsPopupComponent,\n        changes: SimpleChanges\n    ): void {\n        if (changes[key] && !this.isDropdownCleaned.has(key)) {\n            const dropdown = this[key] as BabylonDropdownI | undefined;\n            const cleaned = this.cleanDropdownNames(dropdown);\n            (this as any)[key] = cleaned;\n            this.isDropdownCleaned.add(key);\n        }\n    }\n\n    private cleanDropdownNames(\n        dropdown?: BabylonDropdownI\n    ): BabylonDropdownI | undefined {\n        if (!dropdown?.options) return dropdown;\n\n        dropdown.options = dropdown.options.map((opt) => {\n            let name = opt.name;\n\n            if (\n                typeof name === 'string' &&\n                /^[0-9]+$/.test(name) &&\n                name.length > 1\n            ) {\n                name = String(Number(name));\n            }\n\n            return {\n                ...opt,\n                name,\n            };\n        });\n\n        return dropdown;\n    }\n\n    openDropdown(dropdown: Dropdown, event: MouseEvent): void {\n        event.stopPropagation();\n        event.preventDefault();\n        dropdown.onClick.emit(event);\n        if (dropdown.overlayVisible) {\n            dropdown.hide();\n        } else {\n            dropdown.show();\n        }\n    }\n\n    dropdownChange(\n        data: DropdownOption,\n        place: 'kids' | 'babies' | 'adults' | 'juniors'\n    ) {\n        switch (place) {\n            case 'adults':\n                this.value.adultsValue = data;\n                break;\n            case 'kids':\n                this.applied = false;\n                if (data.code && this.showAges) this.kidsApplied = false;\n                this.value.kidsValue = data;\n                this.kids = [];\n                this.agesValue = [];\n                for (let i = 0; i < Number(data.code); i++) {\n                    this.kids?.push(i + 1);\n                    this.agesValue.push({ code: 2, name: '02' });\n                }\n                break;\n            case 'juniors':\n                this.applied = false;\n                if (data.code && this.showAges) this.juniorsApplied = false;\n                this.value.juniorsValue = data;\n                this.juniors = [];\n                this.agesValue = [];\n                for (let i = 0; i < Number(data.code); i++) {\n                    this.juniors?.push(i + 1);\n                    this.agesValue.push({ code: 2, name: '02' });\n                }\n                break;\n            case 'babies':\n                this.value.infantsValue = data;\n\n                break;\n\n            default:\n                break;\n        }\n    }\n\n    applyData(): void {\n        this.applyAges();\n        this.applied = true;\n        this.apply.emit(this.value);\n    }\n\n    applyAges(): void {\n        if (this.value && this.value.kidsValue) {\n            this.value.kidsValue.ages = this.agesValue;\n        }\n        this.applied = true;\n        this.kidsApplied = true;\n    }\n}\n\nexport interface guestsValue {\n    adultsValue?: DropdownOption;\n    juniorsValue?: DropdownOption;\n    kidsValue?: DropdownOption;\n    infantsValue?: DropdownOption;\n}\n","<div class=\"babylon__guests d-flex flex-column\">\n    @if (adultsDropdown) {\n        <div class=\"babylon__guests__dropdown--wrapper\">\n            <span\n                class=\"babylon__guests__icon babylon-adult\"\n                (click)=\"openDropdown(adultsDropdownRef, $event)\"\n            ></span>\n            <div class=\"babylon__guests__dropdown--content\">\n                <div\n                    class=\"babylon__guests__dropdown--title-wrapper\"\n                    (click)=\"openDropdown(adultsDropdownRef, $event)\"\n                >\n                    @if (adultsDropdown.title) {\n                        <span\n                            class=\"babylon__guests__dropdown--title color--brown\"\n                        >\n                            {{ adultsDropdown.title }}\n                        </span>\n                    }\n                </div>\n\n                <div>\n                    <p-dropdown\n                        class=\"babylon__guests__dropdown\"\n                        [options]=\"adultsDropdown.options\"\n                        [(ngModel)]=\"value.adultsValue\"\n                        [placeholder]=\"adultsDropdown.placeholder\"\n                        name=\"adults\"\n                        optionLabel=\"name\"\n                        #adultsDropdownRef\n                        (ngModelChange)=\"dropdownChange($event, 'adults')\"\n                    >\n                    </p-dropdown>\n                </div>\n            </div>\n        </div>\n    }\n    @if (juniorsDropdown && !onlyAdults) {\n        <div class=\"babylon__guests__dropdown--wrapper\">\n            <span\n                class=\"babylon__guests__icon babylon-kid\"\n                (click)=\"openDropdown(juniorsDropdownRef, $event)\"\n            ></span>\n            <div class=\"babylon__guests__dropdown--content\">\n                <div\n                    class=\"babylon__guests__dropdown--title-wrapper\"\n                    (click)=\"openDropdown(juniorsDropdownRef, $event)\"\n                >\n                    @if (juniorsDropdown.title) {\n                        <span\n                            class=\"babylon__guests__dropdown--title color--brown\"\n                        >\n                            {{ juniorsDropdown.title }}\n                        </span>\n                    }\n                    @if (juniorsDropdown.smallTitle) {\n                        <small\n                            class=\"babylon__guests__dropdown--small-title color--camel\"\n                        >\n                            {{ juniorsDropdown.smallTitle }}\n                        </small>\n                    }\n                </div>\n\n                <div>\n                    <p-dropdown\n                        class=\"babylon__guests__dropdown\"\n                        [options]=\"juniorsDropdown.options\"\n                        [(ngModel)]=\"value.juniorsValue\"\n                        [placeholder]=\"juniorsDropdown.placeholder\"\n                        name=\"juniors\"\n                        optionLabel=\"name\"\n                        #juniorsDropdownRef\n                        (ngModelChange)=\"dropdownChange($event, 'juniors')\"\n                    >\n                    </p-dropdown>\n                </div>\n            </div>\n            <span\n                (click)=\"openDropdown(juniorsDropdownRef, $event)\"\n                class=\"icon-pointer-down babylon__guests__dropdown--icon\"\n            ></span>\n        </div>\n    }\n    @if (kidsDropdown && !onlyAdults) {\n        <div class=\"babylon__guests__dropdown--wrapper\">\n            <span\n                class=\"babylon__guests__icon babylon-kid\"\n                (click)=\"openDropdown(kidsDropdownRef, $event)\"\n            ></span>\n            <div class=\"babylon__guests__dropdown--content\">\n                <div\n                    class=\"babylon__guests__dropdown--title-wrapper\"\n                    (click)=\"openDropdown(kidsDropdownRef, $event)\"\n                >\n                    @if (kidsDropdown.title) {\n                        <span\n                            class=\"babylon__guests__dropdown--title color--brown\"\n                        >\n                            {{ kidsDropdown.title }}\n                        </span>\n                    }\n                    @if (kidsDropdown.smallTitle) {\n                        <small\n                            class=\"babylon__guests__dropdown--small-title color--camel\"\n                        >\n                            {{ kidsDropdown.smallTitle }}\n                        </small>\n                    }\n                </div>\n\n                <div>\n                    <p-dropdown\n                        class=\"babylon__guests__dropdown\"\n                        [options]=\"kidsDropdown.options\"\n                        [(ngModel)]=\"value.kidsValue\"\n                        [placeholder]=\"kidsDropdown.placeholder\"\n                        name=\"kids\"\n                        optionLabel=\"name\"\n                        #kidsDropdownRef\n                        (ngModelChange)=\"dropdownChange($event, 'kids')\"\n                    >\n                    </p-dropdown>\n                </div>\n            </div>\n            <span\n                (click)=\"openDropdown(kidsDropdownRef, $event)\"\n                class=\"icon-pointer-down babylon__guests__dropdown--icon\"\n            ></span>\n        </div>\n    }\n    @if (!applied && kids.length && !onlyAdults && showAges) {\n        <div class=\"babylon__guests__kids py-6\">\n            @if (agesLabel) {\n                <header>\n                    <p class=\"text light m-0\">{{ agesLabel }}</p>\n                </header>\n            }\n            <div>\n                <div class=\"row gy-3 justify-content-between\">\n                    @for (\n                        kid of kids;\n                        track $index;\n                        let even = $even, last = $last\n                    ) {\n                        <div\n                            class=\"col-6\"\n                            [ngClass]=\"{ 'offset-3': last && even }\"\n                        >\n                            @if (kidsLabel) {\n                                <span class=\"text-small light\"\n                                    >{{ kidsLabel }} {{ kid }}</span\n                                >\n                            }\n                            <div\n                                class=\"babylon__guests__dropdown--wrapper small\"\n                            >\n                                <p-dropdown\n                                    class=\"babylon__guests__dropdown small\"\n                                    [options]=\"agesDropdown?.options\"\n                                    [(ngModel)]=\"agesValue[$index]\"\n                                    optionLabel=\"name\"\n                                    [placeholder]=\"\n                                        agesDropdown?.options?.[0]?.name\n                                    \"\n                                    name=\"age\"\n                                >\n                                </p-dropdown>\n                            </div>\n                        </div>\n                    }\n                </div>\n            </div>\n        </div>\n    }\n    @if (babiesDropdown && !onlyAdults) {\n        <div class=\"babylon__guests__dropdown--wrapper\">\n            <span\n                class=\"babylon__guests__icon babylon-baby\"\n                (click)=\"openDropdown(babiesDropdownRef, $event)\"\n            ></span>\n            <div class=\"babylon__guests__dropdown--content\">\n                <div\n                    class=\"babylon__guests__dropdown--title-wrapper\"\n                    (click)=\"openDropdown(babiesDropdownRef, $event)\"\n                >\n                    @if (babiesDropdown.title) {\n                        <span\n                            class=\"babylon__guests__dropdown--title color--brown\"\n                        >\n                            {{ babiesDropdown.title }}\n                        </span>\n                    }\n                    @if (babiesDropdown.smallTitle) {\n                        <small\n                            class=\"babylon__guests__dropdown--small-title color--camel\"\n                        >\n                            {{ babiesDropdown.smallTitle }}\n                        </small>\n                    }\n                </div>\n\n                <div>\n                    <p-dropdown\n                        class=\"babylon__guests__dropdown\"\n                        [options]=\"babiesDropdown.options\"\n                        [(ngModel)]=\"value.infantsValue\"\n                        [placeholder]=\"babiesDropdown.placeholder\"\n                        name=\"infants\"\n                        optionLabel=\"name\"\n                        #babiesDropdownRef\n                        (ngModelChange)=\"dropdownChange($event, 'babies')\"\n                    >\n                    </p-dropdown>\n                </div>\n            </div>\n            <span\n                (click)=\"openDropdown(babiesDropdownRef, $event)\"\n                class=\"icon-pointer-down babylon__guests__dropdown--icon\"\n            ></span>\n        </div>\n    }\n    @if (btn) {\n        <a\n            [attr.aria-label]=\"btn.label\"\n            class=\"btn btn_call\"\n            (click)=\"applyData()\"\n            >{{ btn.label }}</a\n        >\n    }\n</div>\n","import { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\n@Injectable({\n    providedIn: 'root',\n})\nexport class BabylonEngineStateService {\n    private queryParamsSource = new BehaviorSubject<string>('');\n\n    currentQueryParams$ = this.queryParamsSource.asObservable();\n\n    constructor() {}\n\n    setQueryParams(params: string) {\n        this.queryParamsSource.next(params);\n    }\n\n    getQueryParamsValue(): string {\n        return this.queryParamsSource.getValue();\n    }\n}\n","import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    EventEmitter,\n    inject,\n    Input,\n    OnInit,\n    Output,\n    PLATFORM_ID,\n    ViewChild,\n} from '@angular/core';\nimport {\n    FormControl,\n    FormGroup,\n    FormsModule,\n    ReactiveFormsModule,\n    Validators,\n} from '@angular/forms';\nimport { Calendar, CalendarModule } from 'primeng/calendar';\nimport { DialogModule } from 'primeng/dialog';\nimport { Dropdown, DropdownModule } from 'primeng/dropdown';\nimport { Subject, takeUntil } from 'rxjs';\nimport { BabylonButtonI } from '../../../interfaces/babylon-button.interface';\nimport { BabylonInputI } from '../../../interfaces/babylon-input.interface';\nimport {\n    BabylonGuestsPopupComponent,\n    guestsValue,\n} from '../babylon-guests-popup/babylon-guests-popup.component';\nimport { BabylonGuestsPopupI } from '../babylon-guests-popup/babylon-guests-popup.interface';\nimport { BabylonEngineStateService } from '../../../services/engine-state.service';\n\n@Component({\n    selector: 'lib-babylon-engine',\n    standalone: true,\n    imports: [\n        FormsModule,\n        ReactiveFormsModule,\n        CalendarModule,\n        BabylonGuestsPopupComponent,\n        DialogModule,\n        DropdownModule,\n        CommonModule,\n    ],\n    templateUrl: './babylon-engine.component.html',\n    styleUrl: './babylon-engine.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonEngineComponent implements OnInit {\n    @ViewChild('datepicker') datepicker!: Calendar;\n    @ViewChild('datepickerIn') datepickerIn!: Calendar;\n    @ViewChild('datepickerOut') datepickerOut!: Calendar;\n    @ViewChild('hotelsDropdown', { static: false }) hotelsDropdown!: Dropdown;\n\n    @Input() modal?: boolean;\n    @Input() datepickerData?: BabylonInputI;\n    @Input() guestsInput?: BabylonInputI;\n    @Input() promoInput?: BabylonInputI;\n    @Input() guests?: BabylonGuestsPopupI;\n    @Input() button?: BabylonButtonI;\n    @Input() title?: string;\n    @Input() subtitle?: string;\n    @Input() url?: string;\n    @Input() codigo?: string;\n    @Input() lang?: string;\n    @Input() glValue?: string;\n    @Input() onlyAdults?: boolean;\n    @Input() showAges = true;\n    @Input() defaultButton?: BabylonButtonI;\n    @Input() hotelsInput?: BabylonInputI;\n    @Input() hotels?: BabylonHotelsDropdownI;\n    @Input() hotelsPlaceholder?: string;\n    @Input() openInNewWindow?: boolean;\n    @Input() multipleMotorsModal?: boolean;\n    @Input() defaultPromoCode?: string;\n\n    @Output() close = new EventEmitter<any>();\n    @Output() openModalMultMotors = new EventEmitter<void>();\n\n    hotelsValue: any;\n    datepickerValue = '';\n    minDate: Date = new Date();\n\n    form = new FormGroup({\n        hotels: new FormControl(undefined, [Validators.required]),\n        dates: new FormControl(this.datepickerValue, [Validators.required]),\n        guests: new FormControl('', [Validators.required]),\n        promo: new FormControl('', [Validators.required]),\n    });\n\n    guestsValue = '';\n    guestsValueSeparates: BabylonGuestValueI = {\n        adults: 2,\n        juniors: {\n            code: 0,\n            codeAges: [],\n        },\n        kids: {\n            code: 0,\n            codeAges: [],\n        },\n        infants: 0,\n    };\n    showingGuests = false;\n    generatedUrl: string = '';\n    private unsubscribe$ = new Subject<void>();\n\n    private platformId = inject(PLATFORM_ID);\n    private engineState = inject(BabylonEngineStateService);\n\n    private buildQueryParams(): URLSearchParams {\n        const formValues = this.form.value;\n        const params = new URLSearchParams();\n\n        if (this.url) {\n            const isMobile =\n                /Mobi|Android|iPhone|iPad|iPod|Windows Phone/i.test(\n                    navigator.userAgent\n                );\n            const affiliate = `${this.codigo}_${this.lang}_${\n                isMobile ? 'mobile' : 'PC'\n            }`;\n            params.append('affiliate', affiliate);\n        }\n\n        if (Array.isArray(formValues.dates) && formValues.dates.length === 2) {\n            const [datein, dateout] = formValues.dates.map((date: string) =>\n                this.formatDate(new Date(date))\n            );\n            params.append('datein', datein);\n            params.append('dateout', dateout);\n            this.saveEngineData(datein, dateout);\n        }\n\n        if (this.guestsValueSeparates.adults) {\n            params.append(\n                'adultos',\n                this.guestsValueSeparates.adults.toString()\n            );\n        }\n\n        if (this.guestsValueSeparates.juniors.code) {\n            params.append(\n                'teenagers',\n                this.guestsValueSeparates.juniors.code.toString()\n            );\n        } else {\n            params.append('teenagers', '0');\n        }\n\n        if (this.guestsValueSeparates.kids.code) {\n            params.append(\n                'children',\n                this.guestsValueSeparates.kids.code.toString()\n            );\n        } else {\n            params.append('children', '0');\n        }\n\n        if (this.guestsValueSeparates.infants) {\n            params.append(\n                'babies',\n                this.guestsValueSeparates.infants.toString()\n            );\n        } else {\n            params.append('babies', '0');\n        }\n\n        this.appendGuestAges(params);\n\n        if (formValues.promo) {\n            params.append('prom', formValues.promo);\n            params.append('prom_clean', '0');\n        } else {\n            params.append('prom_clean', '1');\n        }\n\n        if (this.glValue) params.append('_gl', this.glValue);\n\n        return params;\n    }\n\n    constructor(private cdr: ChangeDetectorRef) {}\n\n    ngOnInit(): void {\n        this.minDate.setHours(0, 0, 0, 0);\n        this.guestsValue = '2';\n        this.form.get('guests')?.setValue(this.guestsValue);\n        if (this.defaultPromoCode) {\n            this.form.get('promo')?.setValue(this.defaultPromoCode);\n        }\n        this.updateGeneratedUrl();\n        this.cdr.detectChanges();\n\n        this.form.valueChanges\n            .pipe(takeUntil(this.unsubscribe$))\n            .subscribe(() => {\n                this.updateGeneratedUrl();\n                this.saveEngineData();\n            });\n\n        this.loadEngineData();\n    }\n\n    toggleHotelsDropdown(): void {\n        if (this.hotelsDropdown) {\n            this.hotelsDropdown.show();\n        }\n    }\n\n    handleDropdownChange(event: any): void {\n        this.hotelsValue = event.value;\n        if (this.hotelsValue?.id) {\n            this.saveEngineData();\n        }\n    }\n\n    toggleShowingGuests(): void {\n        this.showingGuests = !this.showingGuests;\n    }\n\n    guestsChange(data: guestsValue) {\n        this.guestsValueSeparates.adults = Number(data.adultsValue?.code);\n        this.guestsValueSeparates.juniors.code = Number(\n            data.juniorsValue?.code\n        );\n        this.guestsValueSeparates.juniors.codeAges =\n            data.juniorsValue?.ages?.map((age: any) => Number(age.code));\n        this.guestsValueSeparates.kids.code = Number(data.kidsValue?.code);\n        this.guestsValueSeparates.kids.codeAges = data.kidsValue?.ages?.map(\n            (age: any) => Number(age.code)\n        );\n        this.guestsValueSeparates.infants = Number(data.infantsValue?.code);\n\n        const totalGuests =\n            (Number(data.adultsValue?.code)\n                ? Number(data.adultsValue?.code)\n                : 0) +\n            (Number(data.juniorsValue?.code)\n                ? Number(data.juniorsValue?.code)\n                : 0) +\n            (Number(data.kidsValue?.code) ? Number(data.kidsValue?.code) : 0) +\n            (Number(data.infantsValue?.code)\n                ? Number(data.infantsValue?.code)\n                : 0);\n        this.guestsValue =\n            totalGuests < 10\n                ? '0' + totalGuests.toString()\n                : totalGuests.toString();\n\n        this.form?.get('guests')?.setValue(this.guestsValue);\n\n        this.toggleShowingGuests();\n\n        this.saveEngineData();\n    }\n\n    btnClick(e: Event): void {\n        e.preventDefault();\n    }\n\n    closeModal(): void {\n        this.close.emit(this.form.value);\n    }\n\n    updateGeneratedUrl(): void {\n        if (!this.form || !this.button?.url) {\n            this.generatedUrl = this.button?.url || '';\n            return;\n        }\n\n        const params = this.buildQueryParams();\n        const formValues = this.form.value;\n\n        if (formValues.hotels) {\n            this.hotelsValue = formValues.hotels;\n        }\n\n        if (this.hotelsValue && formValues.hotels) {\n            this.generatedUrl = `${this.hotelsValue?.url}?${params.toString()}`;\n        } else {\n            this.generatedUrl = `${this.button?.url}?${params.toString()}`;\n        }\n    }\n\n    private appendGuestAges(params: URLSearchParams): void {\n        const { infants, kids, juniors } = this.guestsValueSeparates;\n\n        if (infants) {\n            Array.from({ length: infants }).forEach(() =>\n                params.append('guestAges', '0')\n            );\n        }\n\n        if (kids?.codeAges?.length) {\n            kids.codeAges.forEach((age) =>\n                params.append('guestAges', age.toString())\n            );\n        }\n\n        if (juniors?.codeAges?.length) {\n            juniors.codeAges.forEach((age) =>\n                params.append('guestAges', age.toString())\n            );\n        }\n    }\n\n    private formatDate(date: Date): string {\n        return date\n            .toLocaleDateString('es-ES', {\n                day: '2-digit',\n                month: '2-digit',\n                year: 'numeric',\n            })\n            .replace(/\\//g, '-');\n    }\n\n    get defaultGuestsValue(): guestsValue {\n        return {\n            adultsValue: {\n                code: this.guestsValueSeparates.adults,\n                name: String(this.guestsValueSeparates.adults).padStart(2, '0'),\n            },\n            kidsValue: {\n                code: this.guestsValueSeparates.kids.code,\n                name: String(this.guestsValueSeparates.kids.code).padStart(\n                    2,\n                    '0'\n                ),\n                ages: this.guestsValueSeparates.kids.codeAges?.map((code) => ({\n                    code,\n                    name: String(code).padStart(2, '0'),\n                })),\n            },\n            juniorsValue: {\n                code: this.guestsValueSeparates.juniors.code,\n                name: String(this.guestsValueSeparates.juniors.code).padStart(\n                    2,\n                    '0'\n                ),\n                ages: this.guestsValueSeparates.juniors.codeAges?.map(\n                    (code) => ({\n                        code,\n                        name: String(code).padStart(2, '0'),\n                    })\n                ),\n            },\n            infantsValue: {\n                code: this.guestsValueSeparates.infants,\n                name: String(this.guestsValueSeparates.infants).padStart(\n                    2,\n                    '0'\n                ),\n            },\n        };\n    }\n\n    scrollToSection() {\n        // Check if the section exists before scrolling\n        // Use a more specific selector if needed\n        // For example, if the section has a specific class or ID, use that\n        /*\n        const section = document.querySelector('#babylon__advantages');\n        if (section) {\n          section.scrollIntoView({ behavior: 'smooth' });\n        } */\n    }\n\n    saveEngineData(datein?: string, dateout?: string) {\n        if (isPlatformBrowser(this.platformId)) {\n            const storedData = sessionStorage.getItem('engineData');\n            const previousData = storedData ? JSON.parse(storedData) : {};\n\n            if (datein && dateout) {\n                const partsIn = datein.split('-');\n                const partsOut = dateout.split('-');\n\n                const inDate = new Date(\n                    Number(partsIn[2]),\n                    Number(partsIn[1]) - 1,\n                    Number(partsIn[0])\n                );\n                const outDate = new Date(\n                    Number(partsOut[2]),\n                    Number(partsOut[1]) - 1,\n                    Number(partsOut[0])\n                );\n\n                if (outDate <= inDate) {\n                    inDate.setDate(inDate.getDate() + 1);\n                    const dd = String(inDate.getDate()).padStart(2, '0');\n                    const mm = String(inDate.getMonth() + 1).padStart(2, '0');\n                    const yyyy = inDate.getFullYear();\n                    dateout = `${dd}-${mm}-${yyyy}`;\n                }\n            }\n            const hotelId = this.hotelsValue?.id || 1;\n\n            const engineData = {\n                period_from: datein\n                    ? datein.replace(/-/g, '/')\n                    : previousData.period_from,\n                period_to: dateout\n                    ? dateout.replace(/-/g, '/')\n                    : previousData.period_to,\n                adults: this.guestsValueSeparates.adults || 1,\n                juniors: this.guestsValueSeparates.kids.code || 0,\n                kids: this.guestsValueSeparates.kids.code || 0,\n                babies: this.guestsValueSeparates.infants || 0,\n                hotelId: hotelId,\n            };\n\n            sessionStorage.setItem('engineData', JSON.stringify(engineData));\n        }\n    }\n\n    loadEngineData() {\n        const storedData = sessionStorage.getItem('engineData');\n        if (!storedData) {\n            this.saveEngineData();\n        }\n    }\n\n    openModalMultipleMotors(): void {\n        const params = this.buildQueryParams().toString();\n        this.engineState.setQueryParams(params);\n\n        this.openModalMultMotors.emit();\n    }\n}\n\nexport interface BabylonHotelI {\n    id?: string;\n    name?: string;\n    ticket?: string;\n}\n\nexport interface BabylonGuestValueI {\n    adults: number;\n    juniors: {\n        code?: number;\n        codeAges?: number[];\n    };\n    kids: {\n        code?: number;\n        codeAges?: number[];\n    };\n    infants: number;\n}\n\nexport interface BabylonHotelsDropdownI {\n    placeholder?: string;\n    options?: BabylonHotelDropdownOption[];\n    title?: string;\n    smallTitle?: string;\n    error?: string;\n}\n\nexport interface BabylonHotelDropdownOption {\n    name?: string;\n    ticker?: string;\n    url?: string;\n    id?: number;\n}\n","<!--Desktop Engine-->\n<div class=\"babylon__engine bg_white\" [ngClass]=\"{ engine__cadena: hotels }\">\n    @if (defaultButton) {\n        <div class=\"btn-default-container\">\n            <button\n                [name]=\"defaultButton\"\n                class=\"btn-call\"\n                (click)=\"scrollToSection()\"\n            >\n                {{ defaultButton }}\n            </button>\n        </div>\n    }\n    <form\n        class=\"babylon__engine__form d-flex align-items-center\"\n        [formGroup]=\"form\"\n    >\n        @if (\n            hotelsInput && hotels && hotels.options && hotels.options.length > 1\n        ) {\n            <div\n                class=\"babylon__engine__input--wrapper d-flex align-items-center hotels\"\n            >\n                <p-dropdown\n                    class=\"babylon__engine__input\"\n                    [options]=\"hotels.options\"\n                    formControlName=\"hotels\"\n                    [placeholder]=\"hotelsPlaceholder\"\n                    optionLabel=\"name\"\n                    required\n                    (onChange)=\"handleDropdownChange($event)\"\n                    #hotelsDropdown\n                >\n                </p-dropdown>\n\n                <span class=\"babylon-arrow-bottom\"></span>\n            </div>\n        }\n        <div\n            class=\"babylon__engine__datepicker--wrapper d-flex justify-content-between align-items-center\"\n        >\n            <p-calendar\n                class=\"babylon__engine__datepicker\"\n                [showOtherMonths]=\"false\"\n                dateFormat=\"dd-mm-yy\"\n                selectionMode=\"range\"\n                [numberOfMonths]=\"2\"\n                [placeholder]=\"datepickerData?.placeholder\"\n                formControlName=\"dates\"\n                [minDate]=\"minDate\"\n                #datepicker\n                [readonlyInput]=\"true\"\n            >\n                <ng-template pTemplate=\"header\">\n                    <div class=\"calendar-header\">\n                        <button\n                            class=\"btn btn_primary btn--light babylon-plus\"\n                            id=\"close\"\n                            (click)=\"datepicker.overlayVisible = false\"\n                        ></button>\n                    </div>\n                </ng-template>\n            </p-calendar>\n\n            <span\n                class=\"babylon__engine__datepicker--icon babylon-arrow-bottom\"\n                (click)=\"datepicker.toggle()\"\n            ></span>\n        </div>\n        <div\n            class=\"babylon__engine__input--wrapper d-flex align-items-center\"\n            (click)=\"toggleShowingGuests()\"\n        >\n            @if (guestsInput?.placeholder) {\n                <span\n                    class=\"guest-info\"\n                    [innerHTML]=\"guestsInput?.placeholder + ':  '\"\n                ></span>\n            }\n            <input\n                class=\"babylon__engine__input no-caret\"\n                type=\"text\"\n                [placeholder]=\"guestsInput?.placeholder\"\n                formControlName=\"guests\"\n                readonly\n            />\n            <span class=\"babylon-arrow-bottom\"></span>\n        </div>\n        <p-dialog class=\"babylon__engine__dialog\" [(visible)]=\"showingGuests\">\n            <lib-babylon-guests-popup\n                [onlyAdults]=\"onlyAdults\"\n                [showAges]=\"showAges\"\n                [defaultValue]=\"defaultGuestsValue\"\n                [adultsDropdown]=\"guests?.adultsDropdown\"\n                [agesDropdown]=\"guests?.agesDropdown\"\n                [agesLabel]=\"guests?.agesLabel\"\n                [babiesDropdown]=\"guests?.babiesDropdown\"\n                [kidsDropdown]=\"guests?.kidsDropdown\"\n                [juniorsDropdown]=\"guests?.juniorsDropdown\"\n                [btn]=\"guests?.btn\"\n                #guestpicker\n                (apply)=\"guestsChange($event)\"\n            >\n            </lib-babylon-guests-popup>\n            <ng-template pTemplate=\"header\">\n                <div class=\"guests-header\">\n                    <button\n                        class=\"btn btn_primary btn--light babylon-plus\"\n                        id=\"close\"\n                        (click)=\"toggleShowingGuests()\"\n                    ></button>\n                </div>\n            </ng-template>\n        </p-dialog>\n        <div\n            class=\"babylon__engine__input--wrapper d-flex align-items-center promo-code\"\n        >\n            <input\n                class=\"babylon__engine__input\"\n                type=\"text\"\n                [placeholder]=\"promoInput?.placeholder\"\n                formControlName=\"promo\"\n            />\n            <span class=\"babylon-tag\"></span>\n        </div>\n\n        @if (button) {\n            @if (multipleMotorsModal) {\n                <a\n                    [attr.aria-label]=\"button.label\"\n                    rel=\"noopener noreferrer\"\n                    class=\"btn btn_call\"\n                    id=\"btn-submit\"\n                    (click)=\"openModalMultipleMotors()\"\n                >\n                    {{ button.label }}\n                </a>\n            } @else {\n                <a\n                    [attr.aria-label]=\"button.label\"\n                    [href]=\"generatedUrl\"\n                    [attr.target]=\"openInNewWindow ? '_blank' : '_self'\"\n                    rel=\"noopener noreferrer\"\n                    class=\"btn btn_call\"\n                    id=\"btn-submit\"\n                >\n                    {{ button.label }}\n                </a>\n            }\n        }\n    </form>\n</div>\n","import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n    ChangeDetectorRef,\n    Component,\n    EventEmitter,\n    inject,\n    Input,\n    OnInit,\n    Output,\n    PLATFORM_ID,\n    Renderer2,\n    ViewChild,\n} from '@angular/core';\nimport {\n    FormControl,\n    FormGroup,\n    FormsModule,\n    ReactiveFormsModule,\n    Validators,\n} from '@angular/forms';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { Calendar, CalendarModule } from 'primeng/calendar';\nimport { DialogModule } from 'primeng/dialog';\nimport { Dropdown, DropdownModule } from 'primeng/dropdown';\nimport { Subject, takeUntil } from 'rxjs';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport { BabylonButtonI } from '../../../interfaces/babylon-button.interface';\nimport { BabylonInputI } from '../../../interfaces/babylon-input.interface';\nimport { BabylonGuestValueI } from '../babylon-engine/babylon-engine.component';\nimport {\n    BabylonGuestsPopupComponent,\n    guestsValue,\n} from '../babylon-guests-popup/babylon-guests-popup.component';\nimport { BabylonGuestsPopupI } from '../babylon-guests-popup/babylon-guests-popup.interface';\n\n@Component({\n    selector: 'lib-babylon-engine-modal',\n    standalone: true,\n    imports: [\n        FormsModule,\n        ReactiveFormsModule,\n        CalendarModule,\n        BabylonGuestsPopupComponent,\n        DialogModule,\n        DropdownModule,\n        CommonModule,\n        BabylonLinkTypeDirective,\n    ],\n    templateUrl: './babylon-engine-modal.component.html',\n    styleUrl: './babylon-engine-modal.component.scss',\n})\nexport class BabylonEngineModalComponent implements OnInit {\n    @ViewChild('datepicker') datepicker!: Calendar;\n    @ViewChild('hotelsDropdown', { static: false }) hotelsDropdown!: Dropdown;\n\n    @Input() defaultPromoCode?: string;\n    @Input() modal?: boolean;\n    @Input() datepickerData?: BabylonInputI;\n    @Input() guestsInput?: BabylonInputI;\n    @Input() promoInput?: BabylonInputI;\n    @Input() button?: BabylonButtonI;\n    @Input() guests?: BabylonGuestsPopupI;\n    @Input() title?: string;\n    @Input() subtitle?: string;\n    @Input() lang?: string;\n    @Input() url?: string;\n    @Input() codigo?: string;\n    @Input() glValue?: string;\n    @Input() onlyAdults?: boolean;\n    @Input() showAges = true;\n\n    @Input() hotelsInput?: BabylonInputI;\n    @Input() hotels?: BabylonHotelsModalDropdownI;\n    @Input() hotelsPlaceholder?: string;\n\n    @Input() openInNewWindow?: boolean;\n\n    @Output() close = new EventEmitter<any>();\n\n    datepickerValue = '';\n    minDate: Date = new Date();\n    hotelsValue: any;\n\n    formModal = new FormGroup({\n        hotels: new FormControl(undefined, [Validators.required]),\n        dates: new FormControl(this.datepickerValue, [Validators.required]),\n        guests: new FormControl('', [Validators.required]),\n        promo: new FormControl('', [Validators.required]),\n    });\n\n    guestsValue = '';\n    guestsValueSeparates: BabylonGuestValueI = {\n        adults: 2,\n        juniors: {\n            code: 0,\n            codeAges: [],\n        },\n        kids: {\n            code: 0,\n            codeAges: [],\n        },\n        infants: 0,\n    };\n    generatedUrl: string = '';\n    private unsubscribe$ = new Subject<void>();\n    showingGuests = false;\n\n    private platformId = inject(PLATFORM_ID);\n\n    constructor(\n        private cdr: ChangeDetectorRef,\n        private readonly dialogRef: MatDialogRef<BabylonEngineModalComponent>,\n        private renderer: Renderer2\n    ) {}\n\n    ngOnInit(): void {\n        this.minDate.setHours(0, 0, 0, 0);\n        this.guestsValue = '2';\n        this.formModal.get('guests')?.setValue(this.guestsValue);\n        if (this.defaultPromoCode) {\n            this.formModal.get('promo')?.setValue(this.defaultPromoCode);\n        }\n        this.updateGeneratedUrl();\n        this.cdr.detectChanges();\n\n        this.formModal.valueChanges\n            .pipe(takeUntil(this.unsubscribe$))\n            .subscribe(() => {\n                this.updateGeneratedUrl();\n                this.saveEngineData();\n            });\n\n        this.loadEngineData();\n    }\n\n    toggleHotelsDropdown(): void {\n        if (this.hotelsDropdown) {\n            this.hotelsDropdown.show();\n        }\n    }\n\n    handleDropdownChange(event: any): void {\n        this.hotelsValue = event.value;\n        if (this.hotelsValue?.id) {\n            this.saveEngineData();\n        }\n    }\n\n    toggleShowingGuests(): void {\n        this.showingGuests = !this.showingGuests;\n    }\n\n    guestsChange(data: guestsValue) {\n        this.guestsValueSeparates.adults = Number(data.adultsValue?.code);\n        this.guestsValueSeparates.juniors.code = Number(\n            data.juniorsValue?.code\n        );\n        this.guestsValueSeparates.juniors.codeAges =\n            data.juniorsValue?.ages?.map((age) => Number(age.code));\n        this.guestsValueSeparates.kids.code = Number(data.kidsValue?.code);\n        this.guestsValueSeparates.kids.codeAges = data.kidsValue?.ages?.map(\n            (age) => Number(age.code)\n        );\n        this.guestsValueSeparates.infants = Number(data.infantsValue?.code);\n\n        const totalGuests =\n            (Number(data.adultsValue?.code)\n                ? Number(data.adultsValue?.code)\n                : 0) +\n            (Number(data.juniorsValue?.code)\n                ? Number(data.juniorsValue?.code)\n                : 0) +\n            (Number(data.kidsValue?.code) ? Number(data.kidsValue?.code) : 0) +\n            (Number(data.infantsValue?.code)\n                ? Number(data.infantsValue?.code)\n                : 0);\n        this.guestsValue =\n            totalGuests < 10\n                ? '0' + totalGuests.toString()\n                : totalGuests.toString();\n\n        this.formModal?.get('guests')?.setValue(this.guestsValue);\n\n        this.toggleShowingGuests();\n\n        this.saveEngineData();\n    }\n\n    btnClick(e: Event): void {\n        e.preventDefault();\n    }\n\n    closeModal(): void {\n        this.close.emit(this.formModal.value);\n        this.dialogRef.close();\n    }\n\n    updateGeneratedUrl(): void {\n        if (!this.formModal || !this.button?.url) {\n            this.generatedUrl = this.button?.url || '';\n            return;\n        }\n\n        const formValues = this.formModal.value;\n        const params = new URLSearchParams();\n\n        if (formValues.hotels) {\n            this.hotelsValue = formValues.hotels;\n        }\n\n        if (this.url) {\n            const isMobile =\n                /Mobi|Android|iPhone|iPad|iPod|Windows Phone/i.test(\n                    navigator.userAgent\n                );\n            const affiliate = `${this.codigo}_${this.lang}_${\n                isMobile ? 'mobile' : 'PC'\n            }`;\n            params.append('affiliate', affiliate);\n        }\n\n        if (Array.isArray(formValues.dates) && formValues.dates.length === 2) {\n            const [datein, dateout] = formValues.dates.map((date: string) =>\n                this.formatDate(new Date(date))\n            );\n            params.append('datein', datein);\n            params.append('dateout', dateout);\n            this.saveEngineData(datein, dateout);\n        }\n\n        if (this.guestsValueSeparates.adults) {\n            params.append(\n                'adultos',\n                this.guestsValueSeparates.adults.toString()\n            );\n        }\n\n        if (this.guestsValueSeparates.juniors.code) {\n            params.append(\n                'teenagers',\n                this.guestsValueSeparates.juniors.code.toString()\n            );\n        } else {\n            params.append('teenagers', '0');\n        }\n\n        if (this.guestsValueSeparates.kids.code) {\n            params.append(\n                'children',\n                this.guestsValueSeparates.kids.code.toString()\n            );\n        } else {\n            params.append('children', '0');\n        }\n\n        if (this.guestsValueSeparates.infants) {\n            params.append(\n                'babies',\n                this.guestsValueSeparates.infants.toString()\n            );\n        } else {\n            params.append('babies', '0');\n        }\n\n        this.appendGuestAges(params);\n\n        if (formValues.promo) {\n            params.append('prom', formValues.promo);\n            params.append('prom_clean', '0');\n        } else {\n            params.append('prom_clean', '1');\n        }\n\n        if (this.glValue) params.append('_gl', this.glValue);\n\n        if (this.hotelsValue && formValues.hotels) {\n            this.generatedUrl = `${this.hotelsValue?.url}?${params.toString()}`;\n        } else {\n            this.generatedUrl = `${this.button?.url}?${params.toString()}`;\n        }\n    }\n\n    private appendGuestAges(params: URLSearchParams): void {\n        const { infants, kids, juniors } = this.guestsValueSeparates;\n\n        if (infants) {\n            Array.from({ length: infants }).forEach(() =>\n                params.append('guestAges', '0')\n            );\n        }\n\n        if (juniors?.codeAges?.length) {\n            juniors.codeAges.forEach((age) =>\n                params.append('guestAges', age.toString())\n            );\n        }\n\n        if (kids?.codeAges?.length) {\n            kids.codeAges.forEach((age) =>\n                params.append('guestAges', age.toString())\n            );\n        }\n    }\n\n    private formatDate(date: Date): string {\n        return date\n            .toLocaleDateString('es-ES', {\n                day: '2-digit',\n                month: '2-digit',\n                year: 'numeric',\n            })\n            .replace(/\\//g, '-');\n    }\n\n    get defaultGuestsValue(): guestsValue {\n        return {\n            adultsValue: {\n                code: this.guestsValueSeparates.adults,\n                name: String(this.guestsValueSeparates.adults).padStart(2, '0'),\n            },\n            kidsValue: {\n                code: this.guestsValueSeparates.kids.code,\n                name: String(this.guestsValueSeparates.kids.code).padStart(\n                    2,\n                    '0'\n                ),\n                ages: this.guestsValueSeparates.kids.codeAges?.map((code) => ({\n                    code,\n                    name: String(code).padStart(2, '0'),\n                })),\n            },\n            juniorsValue: {\n                code: this.guestsValueSeparates.juniors.code,\n                name: String(this.guestsValueSeparates.juniors.code).padStart(\n                    2,\n                    '0'\n                ),\n                ages: this.guestsValueSeparates.juniors.codeAges?.map(\n                    (code) => ({\n                        code,\n                        name: String(code).padStart(2, '0'),\n                    })\n                ),\n            },\n            infantsValue: {\n                code: this.guestsValueSeparates.infants,\n                name: String(this.guestsValueSeparates.infants).padStart(\n                    2,\n                    '0'\n                ),\n            },\n        };\n    }\n\n    saveEngineData(datein?: string, dateout?: string) {\n        if (isPlatformBrowser(this.platformId)) {\n            const storedData = sessionStorage.getItem('engineData');\n            const previousData = storedData ? JSON.parse(storedData) : {};\n\n            if (datein && dateout) {\n                const partsIn = datein.split('-');\n                const partsOut = dateout.split('-');\n\n                const inDate = new Date(\n                    Number(partsIn[2]),\n                    Number(partsIn[1]) - 1,\n                    Number(partsIn[0])\n                );\n                const outDate = new Date(\n                    Number(partsOut[2]),\n                    Number(partsOut[1]) - 1,\n                    Number(partsOut[0])\n                );\n\n                if (outDate <= inDate) {\n                    inDate.setDate(inDate.getDate() + 1);\n                    const dd = String(inDate.getDate()).padStart(2, '0');\n                    const mm = String(inDate.getMonth() + 1).padStart(2, '0');\n                    const yyyy = inDate.getFullYear();\n                    dateout = `${dd}-${mm}-${yyyy}`;\n                }\n            }\n            const hotelId = this.hotelsValue?.id || 1;\n\n            const engineData = {\n                period_from: datein\n                    ? datein.replace(/-/g, '/')\n                    : previousData.period_from,\n                period_to: dateout\n                    ? dateout.replace(/-/g, '/')\n                    : previousData.period_to,\n                adults: this.guestsValueSeparates.adults || 1,\n                juniors: this.guestsValueSeparates.juniors.code || 0,\n                kids: this.guestsValueSeparates.kids.code || 0,\n                babies: this.guestsValueSeparates.infants || 0,\n                hotelId: hotelId,\n            };\n\n            sessionStorage.setItem('engineData', JSON.stringify(engineData));\n        }\n    }\n\n    loadEngineData() {\n        const storedData = sessionStorage.getItem('engineData');\n        if (!storedData) {\n            this.saveEngineData();\n        }\n    }\n}\n\nexport interface BabylonHotelsModalDropdownI {\n    placeholder?: string;\n    options?: BabylonHotelModalDropdownOption[];\n    title?: string;\n    smallTitle?: string;\n    error?: string;\n}\n\nexport interface BabylonHotelModalDropdownOption {\n    name?: string;\n    ticker?: string;\n    url?: string;\n    id?: number;\n}\n","<div class=\"babylon__engines__wrapper\">\n    <div class=\"close-modal\" (click)=\"closeModal()\">\n        <button\n            name=\"close\"\n            class=\"btn btn_primary btn--light btn--close ml--20\"\n            aria-label=\"Close\"\n        >\n            <span class=\"babylon-plus\"></span>\n        </button>\n    </div>\n    <div class=\"babylon__engines engine-modal\">\n        <div\n            class=\"babylon__engines__header d-flex flex-column align-itemns-center\"\n            [ngClass]=\"{\n                'babylon__engines__header--popup-open': showingGuests,\n            }\"\n        >\n            @if (title) {\n                <h4 class=\"title--small\">{{ title }}</h4>\n            }\n            @if (subtitle) {\n                <span class=\"subtitle\">{{ subtitle }}</span>\n            }\n        </div>\n\n        <form\n            class=\"babylon__engines__form d-flex flex-column align-items-center\"\n            [formGroup]=\"formModal\"\n        >\n            @if (\n                hotelsInput &&\n                hotels &&\n                hotels.options &&\n                hotels.options.length > 1\n            ) {\n                <div\n                    class=\"babylon__engines__input--wrapper d-flex align-items-center hotels\"\n                >\n                    <span\n                        class=\"babylon__engines__datepicker__icon--left\"\n                    ></span>\n                    @if (hotelsInput) {\n                        <span\n                            class=\"babylon__engines__datepicker--title\"\n                            (click)=\"toggleHotelsDropdown()\"\n                            >{{ hotelsInput }}</span\n                        >\n                    }\n                    <span class=\"babylon-arrow-bottom\"></span>\n\n                    <p-dropdown\n                        class=\"babylon__engines__input\"\n                        [options]=\"hotels.options\"\n                        formControlName=\"hotels\"\n                        [placeholder]=\"hotelsPlaceholder\"\n                        optionLabel=\"name\"\n                        (onChange)=\"handleDropdownChange($event)\"\n                        #hotelsDropdown\n                    >\n                    </p-dropdown>\n                </div>\n            }\n            <div\n                class=\"babylon__engines__datepicker--wrapper d-flex justify-content-between flex-nowrap\"\n            >\n                <span class=\"babylon__engines__datepicker__icon--left\"></span>\n                @if (datepickerData?.title) {\n                    <span class=\"babylon__engines__datepicker--title\">{{\n                        datepickerData?.title\n                    }}</span>\n                }\n\n                <p-calendar\n                    class=\"babylon__engines__datepicker\"\n                    [showOtherMonths]=\"false\"\n                    dateFormat=\"dd-mm-yy\"\n                    selectionMode=\"range\"\n                    [placeholder]=\"datepickerData?.placeholder\"\n                    formControlName=\"dates\"\n                    [numberOfMonths]=\"2\"\n                    [minDate]=\"minDate\"\n                    #datepicker\n                    [readonlyInput]=\"true\"\n                    [showOnFocus]=\"false\"\n                >\n                    <ng-template pTemplate=\"header\">\n                        <div class=\"calendar-header\">\n                            <button\n                                class=\"btn btn_primary btn--light babylon-plus\"\n                                id=\"close\"\n                                (click)=\"datepicker.overlayVisible = false\"\n                            ></button>\n                        </div>\n                    </ng-template>\n                </p-calendar>\n                <span\n                    class=\"babylon__engines__datepicker__icon babylon-calendar\"\n                    (click)=\"datepicker.toggle()\"\n                ></span>\n            </div>\n            @if (guestsInput) {\n                <div\n                    class=\"babylon__engines__input--wrapper d-flex align-items-center guests\"\n                    (click)=\"toggleShowingGuests()\"\n                >\n                    <span\n                        class=\"babylon__engines__datepicker__icon--left\"\n                    ></span>\n                    @if (guestsInput.placeholder) {\n                        <span\n                            class=\"guest-info\"\n                            [innerHTML]=\"guestsInput.placeholder + ':  '\"\n                        ></span>\n                    }\n                    <input\n                        class=\"babylon__engines__input\"\n                        type=\"text\"\n                        formControlName=\"guests\"\n                        [placeholder]=\"guestsInput.placeholder\"\n                        [value]=\"guestsValue\"\n                        readonly\n                    />\n                    <span class=\"babylon-arrow-bottom\"></span>\n                </div>\n            }\n            @if (showingGuests && guests) {\n                <lib-babylon-guests-popup\n                    [onlyAdults]=\"onlyAdults\"\n                    [defaultValue]=\"defaultGuestsValue\"\n                    [adultsDropdown]=\"guests.adultsDropdown\"\n                    [agesDropdown]=\"guests.agesDropdown\"\n                    [agesLabel]=\"guests.agesLabel\"\n                    [babiesDropdown]=\"guests.babiesDropdown\"\n                    [kidsDropdown]=\"guests.kidsDropdown\"\n                    [juniorsDropdown]=\"guests.juniorsDropdown\"\n                    [showAges]=\"showAges\"\n                    [btn]=\"guests.btn\"\n                    #guestspicker\n                    (apply)=\"guestsChange($event)\"\n                >\n                </lib-babylon-guests-popup>\n                <div class=\"guests-header\">\n                    <button\n                        class=\"btn btn_primary btn--light babylon-plus\"\n                        id=\"close\"\n                        (click)=\"toggleShowingGuests()\"\n                    ></button>\n                </div>\n            }\n            @if (promoInput) {\n                <div\n                    class=\"babylon__engines__input--wrapper d-flex align-items-center promo-code\"\n                >\n                    <span\n                        class=\"babylon__engines__datepicker__icon--left\"\n                    ></span>\n                    <input\n                        class=\"babylon__engines__input\"\n                        type=\"text\"\n                        [placeholder]=\"promoInput.placeholder\"\n                        formControlName=\"promo\"\n                        [value]=\"this.defaultPromoCode || ''\"\n                    />\n                    <span class=\"babylon-tag\"></span>\n                </div>\n            }\n            @if (button) {\n                <a\n                    [attr.aria-label]=\"button.label\"\n                    [href]=\"generatedUrl\"\n                    [attr.target]=\"openInNewWindow ? '_blank' : '_self'\"\n                    class=\"btn btn_call btn--light\"\n                    (click)=\"updateGeneratedUrl(); closeModal()\"\n                >\n                    {{ button.label }}\n                </a>\n            }\n        </form>\n    </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport {\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    ElementRef,\n    EventEmitter,\n    Input,\n    OnInit,\n    Output,\n    QueryList,\n    ViewChild,\n    ViewChildren,\n} from '@angular/core';\nimport {\n    FormControl,\n    FormGroup,\n    FormsModule,\n    ReactiveFormsModule,\n    Validators,\n} from '@angular/forms';\nimport { Calendar, CalendarModule } from 'primeng/calendar';\nimport { DialogModule } from 'primeng/dialog';\nimport { DropdownModule } from 'primeng/dropdown';\nimport { BabylonButtonI, BabylonInputI } from '../../../interfaces';\nimport { BabylonGuestsPopupI } from '../babylon-guests-popup/babylon-guests-popup.interface';\n\n@Component({\n    selector: 'lib-babylon-engine-modal-v2',\n    standalone: true,\n    imports: [\n        FormsModule,\n        ReactiveFormsModule,\n        CalendarModule,\n        DialogModule,\n        DropdownModule,\n        CommonModule,\n    ],\n    templateUrl: './babylon-engine-modal-v2.component.html',\n    styleUrl: './babylon-engine-modal-v2.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonEngineModalV2Component implements OnInit {\n    @ViewChild('datepicker') datepicker!: Calendar;\n    @ViewChildren('adult1') adult1!: QueryList<ElementRef<HTMLSelectElement>>;\n    @ViewChildren('child1') child1!: QueryList<ElementRef<HTMLSelectElement>>;\n    @ViewChildren('babies1') babies1!: QueryList<ElementRef<HTMLSelectElement>>;\n\n    @Input() title?: string;\n    @Input() subtitle?: string;\n    @Input() datepickerData?: BabylonInputI;\n    @Input() guestsInput?: BabylonInputI;\n    @Input() promoInput?: BabylonInputI;\n    @Input() button?: BabylonButtonI;\n    @Input() guests?: BabylonGuestsPopupI;\n    @Input() openInNewWindow?: boolean;\n\n    @Output() close = new EventEmitter<void>();\n\n    form = new FormGroup({\n        dates: new FormControl<Date[] | null>(null, Validators.required),\n        guests: new FormControl<string>('02', Validators.required),\n        promo: new FormControl<string>(''),\n    });\n\n    generatedUrl = '';\n    guestsValue = '02';\n\n    guestsValueSeparates = {\n        adults: 2,\n        kids: 0,\n        infants: 0,\n    };\n\n    showSubfields = false;\n    showChildrenAges = false;\n    showBabiesAges = false;\n    finalizedGuests = false;\n\n    constructor(private cdr: ChangeDetectorRef) {}\n\n    ngOnInit(): void {\n        const today = new Date();\n        const tomorrow = new Date();\n        tomorrow.setDate(today.getDate() + 1);\n\n        this.form.patchValue({\n            dates: [today, tomorrow],\n        });\n\n        this.updateGeneratedUrl();\n\n        this.form.get('promo')?.valueChanges.subscribe(() => {\n            this.updateGeneratedUrl();\n            this.cdr.markForCheck();\n        });\n    }\n\n    openCalendar(): void {\n        this.datepicker.overlayVisible = true;\n    }\n\n    onDateSelect(): void {\n        const value = this.datepicker.value;\n\n        if (Array.isArray(value)) {\n            this.form.patchValue({\n                dates: value as Date[],\n            });\n        }\n\n        this.updateGeneratedUrl();\n        this.cdr.markForCheck();\n    }\n\n    togglePersonas(): void {\n        this.showSubfields = !this.showSubfields;\n    }\n\n    toggleAgeGroup(kind: 'children' | 'babies'): void {\n        if (kind === 'children') this.showChildrenAges = !this.showChildrenAges;\n        else this.showBabiesAges = !this.showBabiesAges;\n    }\n\n    applyGuests(adults: any, children: any, babies: any): void {\n        this.guestsValueSeparates.adults = Number(adults) || 0;\n        this.guestsValueSeparates.kids = Number(children) || 0;\n        this.guestsValueSeparates.infants = Number(babies) || 0;\n\n        const total =\n            this.guestsValueSeparates.adults +\n            this.guestsValueSeparates.kids +\n            this.guestsValueSeparates.infants;\n\n        this.guestsValue = total < 10 ? '0' + total : String(total);\n\n        this.form.get('guests')?.setValue(this.guestsValue);\n\n        this.showSubfields = false;\n        this.finalizedGuests = true;\n\n        this.updateGeneratedUrl();\n        this.cdr.markForCheck();\n    }\n\n    updateGeneratedUrl(): void {\n        if (!this.button?.url) return;\n\n        const params = new URLSearchParams();\n        const dates = this.form.get('dates')?.value;\n        const promo = this.form.get('promo')?.value;\n\n        if (\n            Array.isArray(dates) &&\n            dates.length === 2 &&\n            dates[0] instanceof Date &&\n            dates[1] instanceof Date\n        ) {\n            const datein = this.formatDate(dates[0]);\n            const dateout = this.formatDate(dates[1]);\n\n            params.set('datein', datein);\n            params.set('dateout', dateout);\n        }\n\n        params.set('adultos', String(this.guestsValueSeparates.adults));\n        params.set('children', String(this.guestsValueSeparates.kids));\n        params.set('babies', String(this.guestsValueSeparates.infants));\n\n        if (promo) {\n            params.set('prom', promo);\n            params.set('prom_clean', '0');\n        } else {\n            params.set('prom_clean', '1');\n        }\n\n        this.generatedUrl = `${this.button.url}?${params.toString()}`;\n    }\n\n    private formatDate(date: Date): string {\n        return date\n            .toLocaleDateString('es-ES', {\n                day: '2-digit',\n                month: '2-digit',\n                year: 'numeric',\n            })\n            .replace(/\\//g, '-');\n    }\n\n    closeModal(): void {\n        this.close.emit();\n    }\n\n    get displayDates(): string {\n        const dates = this.form.get('dates')?.value;\n\n        if (\n            !Array.isArray(dates) ||\n            dates.length !== 2 ||\n            !(dates[0] instanceof Date) ||\n            !(dates[1] instanceof Date)\n        ) {\n            return this.formatDate(new Date());\n        }\n\n        return `${this.formatDate(dates[0])} - ${this.formatDate(dates[1])}`;\n    }\n\n    applyGuestsFromViewChildren(): void {\n        const adult = this.adult1.first?.nativeElement.value ?? 0;\n        const child = this.child1.first?.nativeElement.value ?? 0;\n        const babies = this.babies1.first?.nativeElement.value ?? 0;\n\n        this.applyGuests(adult, child, babies);\n    }\n}\n","<div class=\"modal modal__reservar\">\n    <div class=\"modal__inner\">\n        <div\n            class=\"modal__close js-close\"\n            data-modal_name=\"reservar\"\n            role=\"button\"\n            (click)=\"closeModal()\"\n        >\n            <svg aria-hidden=\"true\" focusable=\"false\">\n                <use href=\"/assets/babylon/svg/icon-close.svg#icon-close\"></use>\n            </svg>\n        </div>\n        <figure class=\"modal__reservar-graphic\">\n            <img src=\"/assets/babylon/images/img-40.webp\" />\n        </figure>\n        <div class=\"modal__box\">\n            @if (title) {\n                <h2>{{ title }}</h2>\n            }\n            <div class=\"modal__reservar-form\">\n                @if (datepickerData) {\n                    <div class=\"input-group\" (click)=\"openCalendar()\">\n                        <label class=\"input-group--label\" for=\"In-date\">{{\n                            datepickerData.placeholder\n                        }}</label>\n\n                        <p-calendar\n                            class=\"input-control\"\n                            [showOtherMonths]=\"false\"\n                            dateFormat=\"dd-mm-yy\"\n                            selectionMode=\"range\"\n                            [placeholder]=\"displayDates\"\n                            formControlName=\"dates\"\n                            [numberOfMonths]=\"2\"\n                            #datepicker\n                            [readonlyInput]=\"true\"\n                            [showOnFocus]=\"false\"\n                            (onSelect)=\"onDateSelect()\"\n                        ></p-calendar>\n                        <span\n                            class=\"input-group--icon\"\n                            (click)=\"openCalendar()\"\n                        >\n                            <svg aria-hidden=\"true\" focusable=\"false\">\n                                <use\n                                    href=\"/assets/babylon/svg/icon-calender.svg#icon-calender\"\n                                ></use>\n                            </svg>\n                        </span>\n                    </div>\n                }\n\n                @if (guestsInput) {\n                    <div\n                        class=\"input-group js-personas-subfields\"\n                        role=\"button\"\n                        (click)=\"togglePersonas()\"\n                        [class.open]=\"showSubfields\"\n                        [class.final]=\"finalizedGuests\"\n                    >\n                        <span class=\"input-control\">{{\n                            guestsValue || '02'\n                        }}</span>\n                        <span class=\"input-group--icon\">\n                            <svg\n                                aria-hidden=\"true\"\n                                class=\"persons\"\n                                focusable=\"false\"\n                            >\n                                <use\n                                    href=\"/assets/babylon/svg/icon-persons.svg#icon-persons\"\n                                ></use>\n                            </svg>\n                            <svg\n                                aria-hidden=\"true\"\n                                class=\"down-arrow\"\n                                focusable=\"false\"\n                            >\n                                <use\n                                    href=\"/assets/babylon/svg/icon-arrow.svg#icon-arrow\"\n                                ></use>\n                            </svg>\n                        </span>\n                    </div>\n                }\n                @if (guests) {\n                    <div\n                        class=\"sub-fields\"\n                        [style.display]=\"showSubfields ? 'block' : 'none'\"\n                    >\n                        @if (guests.adultsDropdown) {\n                            <div class=\"input-group\">\n                                <label\n                                    class=\"input-group--label\"\n                                    for=\"adult1\"\n                                    >{{ guests.adultsDropdown.title }}</label\n                                >\n                                <select\n                                    class=\"select-control\"\n                                    name=\"Adultos\"\n                                    id=\"adult1\"\n                                    #adult1\n                                >\n                                    <!-- <option value=\"0\" selected>00</option> -->\n                                    @for (\n                                        option of guests.adultsDropdown.options;\n                                        track $index\n                                    ) {\n                                        <option [value]=\"option.code\">\n                                            {{ option.name }}\n                                        </option>\n                                    }\n                                </select>\n                                <span class=\"input-group--icon\">\n                                    <svg aria-hidden=\"true\" focusable=\"false\">\n                                        <use\n                                            href=\"/assets/babylon/svg/icon-persons.svg#icon-persons\"\n                                        ></use>\n                                    </svg>\n                                </span>\n                            </div>\n                        }\n                        @if (guests.kidsDropdown) {\n                            <div class=\"input-group\">\n                                <div\n                                    class=\"input-group--inner childAge-group-list\"\n                                >\n                                    <label\n                                        class=\"input-group--label\"\n                                        for=\"child1\"\n                                        >{{ guests.kidsDropdown.title }}</label\n                                    >\n                                    <select\n                                        class=\"select-control\"\n                                        name=\"Niños\"\n                                        id=\"child1\"\n                                        #child1\n                                    >\n                                        @for (\n                                            option of guests.kidsDropdown\n                                                .options;\n                                            track $index\n                                        ) {\n                                            <option [value]=\"option.code\">\n                                                {{ option.name }}\n                                            </option>\n                                        }\n                                    </select>\n                                    <span class=\"input-group--icon\">\n                                        <svg\n                                            aria-hidden=\"true\"\n                                            class=\"user\"\n                                            focusable=\"false\"\n                                        >\n                                            <use\n                                                href=\"/assets/babylon/svg/icon-user.svg#icon-user\"\n                                            ></use>\n                                        </svg>\n                                    </span>\n                                </div>\n                                <div\n                                    class=\"age-group-box children-list\"\n                                    [style.display]=\"\n                                        showChildrenAges ? 'block' : 'none'\n                                    \"\n                                >\n                                    <legend class=\"age-group-box--heading\">\n                                        {{ guests.agesLabel }}\n                                    </legend>\n                                    <div class=\"age-group\"></div>\n                                </div>\n                            </div>\n                        }\n                        @if (guests.babiesDropdown) {\n                            <div class=\"input-group\">\n                                <div\n                                    class=\"input-group--inner babiesAge-group-list\"\n                                    role=\"button\"\n                                    (click)=\"toggleAgeGroup('babies')\"\n                                >\n                                    <label\n                                        class=\"input-group--label\"\n                                        for=\"babies1\"\n                                        >{{\n                                            guests.babiesDropdown.title\n                                        }}</label\n                                    >\n                                    <select\n                                        class=\"select-control\"\n                                        name=\"Bebés\"\n                                        id=\"babies1\"\n                                        #babies1\n                                    >\n                                        @for (\n                                            option of guests.babiesDropdown\n                                                .options;\n                                            track $index\n                                        ) {\n                                            <option [value]=\"option.code\">\n                                                {{ option.name }}\n                                            </option>\n                                        }\n                                    </select>\n                                    <span class=\"input-group--icon\">\n                                        <svg\n                                            aria-hidden=\"true\"\n                                            class=\"baby\"\n                                            focusable=\"false\"\n                                        >\n                                            <use\n                                                href=\"/assets/babylon/svg/icon-user.svg#icon-user\"\n                                            ></use>\n                                        </svg>\n                                    </span>\n                                </div>\n                            </div>\n                        }\n                        <div class=\"btn__group\">\n                            <button\n                                type=\"submit\"\n                                class=\"btn btn__secondary js-apply-guests1\"\n                                role=\"button\"\n                                (click)=\"applyGuestsFromViewChildren()\"\n                            >\n                                <span>{{ guests.btn?.label }}</span>\n                            </button>\n                        </div>\n                    </div>\n                }\n                @if (promoInput) {\n                    <div class=\"input-group\">\n                        <label class=\"input-group--label\" for=\"email\">{{\n                            promoInput.placeholder\n                        }}</label>\n                        <input\n                            type=\"text\"\n                            class=\"input-control\"\n                            name=\"email\"\n                            id=\"email\"\n                            placeholder=\"...\"\n                        />\n                        <span class=\"input-group--icon\">\n                            <svg aria-hidden=\"true\" focusable=\"false\">\n                                <use\n                                    href=\"/assets/babylon/svg/icon-promo.svg#icon-promo\"\n                                ></use>\n                            </svg>\n                        </span>\n                    </div>\n                }\n                @if (button) {\n                    <div class=\"btn__group\">\n                        <a\n                            class=\"btn btn__primary\"\n                            [attr.target]=\"openInNewWindow ? '_blank' : '_self'\"\n                            [attr.aria-label]=\"button.label\"\n                            [href]=\"generatedUrl\"\n                            (click)=\"updateGeneratedUrl(); closeModal()\"\n                        >\n                            <span>{{ button.label }}</span>\n                        </a>\n                    </div>\n                }\n            </div>\n        </div>\n    </div>\n</div>\n","import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    EventEmitter,\n    Input,\n    OnDestroy,\n    OnInit,\n    Output,\n    PLATFORM_ID,\n    ViewChild,\n    inject,\n} from '@angular/core';\nimport {\n    FormControl,\n    FormGroup,\n    ReactiveFormsModule,\n    Validators,\n} from '@angular/forms';\nimport { Router } from '@angular/router';\nimport { Calendar, CalendarModule } from 'primeng/calendar';\nimport { Dropdown, DropdownModule } from 'primeng/dropdown';\nimport { Subject, takeUntil } from 'rxjs';\nimport { BabylonEngineModalI } from '../babylon-engine-modal/babylon-engine-modal.interface';\nimport { DropdownOption } from '../babylon-rooms-cols';\n\n@Component({\n    selector: 'lib-babylon-engine-modal-v3',\n    standalone: true,\n    imports: [\n        CommonModule,\n        ReactiveFormsModule,\n        CalendarModule,\n        DropdownModule,\n    ],\n    templateUrl: './babylon-engine-modal-v3.component.html',\n    styleUrl: './babylon-engine-modal-v3.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonEngineModalV3Component implements OnInit, OnDestroy {\n    @Input() engine?: BabylonEngineModalI;\n\n    @ViewChild('arrivalCal') arrivalCal!: Calendar;\n    @ViewChild('departureCal') departureCal!: Calendar;\n    @ViewChild('adultsDropdown') adultsDropdown!: Dropdown;\n\n    @Input() openInNewWindow = true;\n\n    @Input() lang?: string;\n    @Input() codigo?: string;\n    @Input() glValue?: string;\n\n    /** Opciones adultos */\n    @Input() adultsOptions: DropdownOption[] = Array.from(\n        { length: 10 },\n        (_, i) => {\n            const v = i + 1;\n            return { code: v, name: String(v).padStart(2, '0') };\n        }\n    );\n\n    @Output() submitEngine = new EventEmitter<{\n        arrival: Date;\n        departure: Date;\n        adults: number;\n        url: string;\n    }>();\n\n    form = new FormGroup({\n        arrival: new FormControl<Date | null>(null, [Validators.required]),\n        departure: new FormControl<Date | null>(null, [Validators.required]),\n        adults: new FormControl<DropdownOption | null>(null, [\n            Validators.required,\n        ]),\n    });\n\n    generatedUrl = '';\n    minArrival = new Date();\n    minDeparture = new Date();\n\n    @Input() isOpen = false;\n    @Output() closed = new EventEmitter<void>();\n    private readonly router = inject(Router);\n\n    private readonly platformId = inject(PLATFORM_ID);\n    private readonly cdr = inject(ChangeDetectorRef);\n    private readonly destroy$ = new Subject<void>();\n\n    ngOnInit(): void {\n        // min fechas a medianoche\n        this.minArrival.setHours(0, 0, 0, 0);\n        this.minDeparture = new Date(this.minArrival);\n\n        if (this.engine?.guests?.adultsDropdown?.options) {\n            this.adultsOptions = this.engine.guests.adultsDropdown.options;\n        }\n\n        // default adultos = 2\n        const defaultAdults =\n            this.adultsOptions.find((x) => x.code === 2) ??\n            this.adultsOptions[0];\n        this.form.get('adults')?.setValue(defaultAdults);\n\n        this.loadEngineData();\n        this.updateGeneratedUrl();\n\n        this.form.valueChanges.pipe(takeUntil(this.destroy$)).subscribe(() => {\n            this.syncMinDeparture();\n            this.updateGeneratedUrl();\n            this.saveEngineData();\n            this.cdr.markForCheck();\n        });\n\n        this.cdr.markForCheck();\n    }\n\n    ngOnDestroy(): void {\n        this.destroy$.next();\n        this.destroy$.complete();\n    }\n\n    openArrival(): void {\n        this.arrivalCal?.toggle();\n    }\n\n    openDeparture(): void {\n        this.departureCal?.toggle();\n    }\n\n    openAdults(): void {\n        this.adultsDropdown?.show();\n    }\n\n    onClickReserve(e: Event): void {\n        e.preventDefault();\n        this.updateGeneratedUrl();\n\n        const arrival = this.form.value.arrival;\n        const departure = this.form.value.departure;\n        const adults = this.form.value.adults?.code;\n\n        if (arrival && departure && adults && this.generatedUrl) {\n            this.submitEngine.emit({\n                arrival,\n                departure,\n                adults,\n                url: this.generatedUrl,\n            });\n\n            if (isPlatformBrowser(this.platformId)) {\n                if (this.openInNewWindow)\n                    window.open(this.generatedUrl, '_blank');\n                else window.location.assign(this.generatedUrl);\n            }\n        }\n    }\n\n    private syncMinDeparture(): void {\n        const arrival = this.form.value.arrival;\n        if (!arrival) return;\n\n        const min = new Date(arrival);\n        min.setDate(min.getDate() + 1);\n        min.setHours(0, 0, 0, 0);\n        this.minDeparture = min;\n\n        const departure = this.form.value.departure;\n        if (departure && departure <= arrival) {\n            this.form.get('departure')?.setValue(min);\n        }\n    }\n\n    private updateGeneratedUrl(): void {\n        if (!this.engine?.url) {\n            this.generatedUrl = '';\n            return;\n        }\n\n        const { arrival, departure, adults } = this.form.value;\n\n        const params = new URLSearchParams();\n\n        if (isPlatformBrowser(this.platformId) && this.codigo && this.lang) {\n            const isMobile =\n                /Mobi|Android|iPhone|iPad|iPod|Windows Phone/i.test(\n                    navigator.userAgent\n                );\n            const affiliate = `${this.codigo}_${this.lang}_${isMobile ? 'mobile' : 'PC'}`;\n            params.append('affiliate', affiliate);\n        }\n\n        if (arrival) params.append('datein', this.formatDate(arrival));\n        if (departure) params.append('dateout', this.formatDate(departure));\n        if (adults?.code) params.append('adultos', String(adults.code));\n\n        if (this.glValue) params.append('_gl', this.glValue);\n\n        this.generatedUrl = `${this.engine?.url}?${params.toString()}`;\n    }\n\n    private formatDate(date: Date): string {\n        // dd-mm-yyyy\n        const dd = String(date.getDate()).padStart(2, '0');\n        const mm = String(date.getMonth() + 1).padStart(2, '0');\n        const yyyy = date.getFullYear();\n        return `${dd}-${mm}-${yyyy}`;\n    }\n\n    private saveEngineData(): void {\n        if (!isPlatformBrowser(this.platformId)) return;\n\n        const { arrival, departure, adults } = this.form.value;\n\n        const data = {\n            arrival: arrival ? arrival.toISOString() : null,\n            departure: departure ? departure.toISOString() : null,\n            adults: adults?.code ?? 2,\n        };\n\n        sessionStorage.setItem('engineMiniData', JSON.stringify(data));\n    }\n\n    private loadEngineData(): void {\n        if (!isPlatformBrowser(this.platformId)) return;\n\n        const raw = sessionStorage.getItem('engineMiniData');\n        if (!raw) return;\n\n        try {\n            const parsed = JSON.parse(raw);\n            if (parsed?.arrival)\n                this.form.get('arrival')?.setValue(new Date(parsed.arrival));\n            if (parsed?.departure)\n                this.form\n                    .get('departure')\n                    ?.setValue(new Date(parsed.departure));\n\n            const opt = this.adultsOptions.find(\n                (x) => x.code === Number(parsed?.adults)\n            );\n            if (opt) this.form.get('adults')?.setValue(opt);\n        } catch {}\n    }\n}\n","<div class=\"engine-mini\">\n    <form class=\"engine-mini__form\" [formGroup]=\"form\">\n        <!-- LLEGADA -->\n        <div class=\"engine-mini__field engine-mini__field--date\">\n            <span class=\"engine-mini__label\">{{\n                engine?.datepickerData?.placeholder\n            }}</span>\n\n            <p-calendar\n                #arrivalCal\n                formControlName=\"arrival\"\n                [minDate]=\"minArrival\"\n                dateFormat=\"dd-mm-yy\"\n                [readonlyInput]=\"true\"\n                [showOnFocus]=\"false\"\n                appendTo=\"body\"\n                (click)=\"openArrival()\"\n            >\n                <ng-template pTemplate=\"header\">\n                    <div class=\"engine-mini__cal-header\">\n                        <button\n                            type=\"button\"\n                            class=\"engine-mini__cal-close\"\n                            (click)=\"arrivalCal.overlayVisible = false\"\n                            aria-label=\"Close\"\n                        >\n                            ✕\n                        </button>\n                    </div>\n                </ng-template>\n            </p-calendar>\n\n            <button\n                type=\"button\"\n                class=\"engine-mini__icon engine-mini__icon--list\"\n                aria-label=\"Open arrival calendar\"\n                (click)=\"openArrival()\"\n            ></button>\n        </div>\n\n        <!-- SALIDA -->\n        <div class=\"engine-mini__field engine-mini__field--date\">\n            <span class=\"engine-mini__label\">{{ engine?.subtitle }}</span>\n\n            <p-calendar\n                #departureCal\n                formControlName=\"departure\"\n                [minDate]=\"minDeparture\"\n                dateFormat=\"dd-mm-yy\"\n                [readonlyInput]=\"true\"\n                [showOnFocus]=\"false\"\n                appendTo=\"body\"\n                (click)=\"openDeparture()\"\n            >\n                <ng-template pTemplate=\"header\">\n                    <div class=\"engine-mini__cal-header\">\n                        <button\n                            type=\"button\"\n                            class=\"engine-mini__cal-close\"\n                            (click)=\"departureCal.overlayVisible = false\"\n                            aria-label=\"Close\"\n                        >\n                            ✕\n                        </button>\n                    </div>\n                </ng-template>\n            </p-calendar>\n\n            <button\n                type=\"button\"\n                class=\"engine-mini__icon engine-mini__icon--list\"\n                (click)=\"openDeparture()\"\n                aria-label=\"Open departure calendar\"\n            ></button>\n        </div>\n\n        <!-- ADULTOS -->\n        @if (engine?.guests) {\n            <div\n                class=\"engine-mini__field engine-mini__field--dropdown\"\n                (click)=\"openAdults()\"\n            >\n                <span class=\"engine-mini__label\">{{\n                    engine?.guests?.adultsDropdown?.title\n                }}</span>\n\n                <p-dropdown\n                    #adultsDropdown\n                    formControlName=\"adults\"\n                    [options]=\"adultsOptions\"\n                    optionLabel=\"name\"\n                    [showClear]=\"false\"\n                    appendTo=\"body\"\n                    class=\"engine-mini__dropdown\"\n                ></p-dropdown>\n\n                <!--  <span\n                class=\"engine-mini__icon engine-mini__icon--chev\"\n                aria-hidden=\"true\"\n            ></span> -->\n            </div>\n        }\n\n        <!-- BOTÓN -->\n        <button\n            type=\"button\"\n            class=\"engine-mini__btn\"\n            [disabled]=\"form.invalid\"\n            (click)=\"onClickReserve($event)\"\n        >\n            {{ engine?.button?.label ?? 'Book' }}\n        </button>\n    </form>\n</div>\n","import {\n    Component,\n    EventEmitter,\n    inject,\n    Input,\n    Output,\n    PLATFORM_ID,\n} from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { BabylonTextInfoI } from '../../../interfaces';\nimport { BabylonHotelStylesItem } from '../../../interfaces/babylon-hotel-styles.interface';\nimport { BabylonBookingWidgetComponent } from '../babylon-booking-widget';\n\n@Component({\n    selector: 'lib-babylon-engine-widget-modal',\n    standalone: true,\n    imports: [BabylonBookingWidgetComponent],\n    templateUrl: './babylon-engine-widget-modal.component.html',\n    styleUrl: './babylon-engine-widget-modal.component.scss',\n})\nexport class BabylonEngineWidgetModalComponent {\n    @Input() texts?: BabylonTextInfoI;\n    @Input() locale?: string;\n    @Input() widgetConfig?: any;\n    @Input() ticker?: string;\n    @Input() styles?: BabylonHotelStylesItem;\n    @Output() close = new EventEmitter<any>();\n\n    private platformId = inject(PLATFORM_ID);\n\n    constructor(\n        private readonly dialogRef: MatDialogRef<BabylonEngineWidgetModalComponent>\n    ) {}\n    closeModal(): void {\n        this.dialogRef.close();\n    }\n}\n","<section id=\"widget-form\" class=\"mdl-widget\">\n    <div class=\"mod-close\">\n        <button\n            class=\"carousel__button is-close mdl-widget__close\"\n            title=\"Close\"\n            (click)=\"closeModal()\"\n            [style.backgroundColor]=\"styles?.primary ?? '#ff4338'\"\n        >\n            @if (styles?.primary) {\n                <svg\n                    width=\"14\"\n                    height=\"13\"\n                    viewBox=\"0 0 14 13\"\n                    fill=\"none\"\n                    xmlns=\"http://www.w3.org/2000/svg\"\n                >\n                    <path\n                        d=\"M1.33677 0.739403C1.51937 0.55773 1.76696 0.455628 2.02454 0.456284C2.28202 0.456975 2.52861 0.560362 2.71024 0.742856L7.08546 5.14018L11.4344 0.740094C11.616 0.557565 11.8627 0.45426 12.1201 0.453522C12.3777 0.452865 12.6253 0.554968 12.8079 0.736641C12.9904 0.918282 13.0938 1.16484 13.0945 1.42234C13.0951 1.67992 12.993 1.92751 12.8114 2.11011L8.35259 6.59099L12.7409 11.0014C12.9226 11.184 13.0247 11.4317 13.0241 11.6892C13.0234 11.9467 12.9199 12.1933 12.7375 12.3749C12.5549 12.5566 12.3073 12.6587 12.0497 12.658C11.7922 12.6573 11.5456 12.554 11.364 12.3714L6.98948 7.97482L2.6405 12.3749C2.45885 12.5575 2.21164 12.6601 1.95411 12.6608C1.69663 12.6614 1.4496 12.5599 1.26702 12.3784C1.08449 12.1967 0.98118 11.9501 0.980453 11.6927C0.979797 11.4351 1.0819 11.1875 1.26357 11.0049L5.72097 6.52401L1.33332 2.11288C1.15177 1.93037 1.05033 1.68321 1.05089 1.42579C1.05154 1.16825 1.15422 0.921069 1.33677 0.739403Z\"\n                        fill=\"#fff\"\n                    />\n                </svg>\n            } @else {\n                <img\n                    src=\"/assets/babylon/svg/icons/close-small.svg\"\n                    alt=\"close\"\n                />\n            }\n        </button>\n    </div>\n    <div class=\"mod-body\">\n        @if (texts?.title) {\n            <div class=\"m-title\">{{ texts?.title }}</div>\n        }\n        <lib-babylon-booking-widget\n            id=\"modal\"\n            widgetId=\"widget-search-modal\"\n            [hotelId]=\"widgetConfig?.hotelId\"\n            [ticker]=\"ticker ?? widgetConfig?.ticker ?? ''\"\n            [type]=\"widgetConfig?.type\"\n            [engine]=\"widgetConfig.engine\"\n            theme=\"light\"\n            layout=\"column\"\n            layoutColumn=\"true\"\n            [showPrice]=\"widgetConfig?.showPrice\"\n            [defaultAdults]=\"widgetConfig?.defaultAdults\"\n            [defaultChildren]=\"widgetConfig?.defaultChildren\"\n            [defaultJunior]=\"widgetConfig?.defaultJunior\"\n            [currency]=\"widgetConfig?.currency\"\n            [baseUrl]=\"\n                widgetConfig.engine !== 'witbooking'\n                    ? widgetConfig.baseUrl\n                    : widgetConfig.baseUrl + locale + '/'\n            \"\n            [urlChain]=\"widgetConfig?.urlChain\"\n            [urlHotel]=\"widgetConfig?.urlHotel\"\n            [showChildAges]=\"widgetConfig?.showChildAges\"\n            [locale]=\"locale\"\n            [flagTime]=\"false\"\n            [maxRooms]=\"widgetConfig?.maxRooms\"\n            [showAllHotelsOption]=\"widgetConfig.showAllHotelsOption\"\n            [targetBlank]=\"widgetConfig.targetBlank\"\n            ngSkipHydration\n        ></lib-babylon-booking-widget>\n    </div>\n</section>\n","import { isPlatformBrowser } from '@angular/common';\nimport {\n    AfterViewInit,\n    Component,\n    ElementRef,\n    Inject,\n    Input,\n    PLATFORM_ID,\n    Renderer2,\n} from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\n@Component({\n    selector: 'lib-babylon-external-script',\n    standalone: true,\n    imports: [],\n    templateUrl: './babylon-external-script.component.html',\n    styleUrl: './babylon-external-script.component.scss',\n})\nexport class BabylonExternalScriptComponent implements AfterViewInit {\n    @Input() msg_loading?: string;\n    @Input() lang?: string;\n\n    private _script?: string;\n    safeScript?: SafeHtml;\n\n    constructor(\n        private sanitizer: DomSanitizer,\n        private host: ElementRef<HTMLElement>,\n        private renderer: Renderer2,\n        @Inject(PLATFORM_ID) private platformId: Object\n    ) {}\n\n    @Input() set script(value: string | undefined) {\n        this._script = value;\n        this.safeScript = value\n            ? this.sanitizer.bypassSecurityTrustHtml(value)\n            : undefined;\n    }\n    get script(): string | undefined {\n        return this._script;\n    }\n\n    async ngAfterViewInit() {\n        if (!isPlatformBrowser(this.platformId)) return;\n\n        if (!this._script?.includes('utb-iframe-spa')) {\n            console.warn('El payload no contiene el div esperado');\n            return;\n        }\n\n        if (!(window as any).jQuery) {\n            await this.loadScript(\n                'https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js'\n            );\n        }\n\n        await this.loadScript(\n            'https://api.spalopia.app/utbapis/utbinsert/load.php'\n        );\n\n        this.initSpaLopia();\n    }\n\n    private loadScript(src: string): Promise<void> {\n        return new Promise((resolve, reject) => {\n            if (document.querySelector(`script[src=\"${src}\"]`)) {\n                return resolve();\n            }\n            const s = this.renderer.createElement('script');\n            s.src = src;\n            s.onload = () => resolve();\n            s.onerror = (err: any) => reject(err);\n            this.renderer.appendChild(document.body, s);\n        });\n    }\n\n    private initSpaLopia() {\n        const utb = new (window as any).UTBInsertSpaBooking({\n            base: 'https://160-f1401372.engine.arimahotel.com/engine/163/channel/15',\n            path: 'utb-spa-booking-simple',\n            lang: this.lang ?? 'es',\n            msg_loading: this.msg_loading ?? 'loading...',\n            currency: 'EUR',\n        });\n\n        utb.setCookieConsentStatus({\n            'google-analytics': true,\n            'google-ga4': true,\n            facebook: false,\n            fullstory: false,\n        });\n\n        utb.insertIFrameAndPReset('utb-iframe-spa');\n    }\n}\n","@if (safeScript) {\n    <div #container [innerHTML]=\"safeScript\"></div>\n}\n","import {\n    animate,\n    state,\n    style,\n    transition,\n    trigger,\n} from '@angular/animations';\nimport { CommonModule } from '@angular/common';\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    Input,\n    signal,\n} from '@angular/core';\nimport { BabylonTagsI, BabylonTextsColorsI } from '../../../interfaces';\nimport { BabylonImageI } from '../../../interfaces/babylon-image.interface';\nimport { BabylonDynamicHeadingComponent } from '../../shared';\nimport { BabylonItemI } from '../../../interfaces/babylon-item.interface';\n\n@Component({\n    selector: 'lib-babylon-faq',\n    standalone: true,\n    imports: [CommonModule, BabylonDynamicHeadingComponent],\n    templateUrl: './babylon-faq.component.html',\n    styleUrl: './babylon-faq.component.scss',\n    animations: [\n        trigger('slideToggle', [\n            state(\n                'open',\n                style({ height: '*', opacity: 1, overflow: 'hidden' })\n            ),\n            state(\n                'closed',\n                style({ height: '0px', opacity: 0, overflow: 'hidden' })\n            ),\n            transition('closed <=> open', animate('250ms ease')),\n        ]),\n    ],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonFaqComponent {\n    @Input() pretitle?: string;\n    @Input() title?: string;\n    @Input() image?: BabylonImageI;\n    @Input() items?: BabylonItemI[];\n    @Input() tags?: BabylonTagsI;\n    @Input() textColors?: BabylonTextsColorsI;\n\n    selectedIndex = signal<number>(0);\n\n    selectItem(index: number) {\n        this.selectedIndex.set(index);\n    }\n}\n","<section class=\"babylon__faq margin-main\">\n    <div class=\"container\">\n        <div class=\"row align-items-center cs_gap_y_30\">\n            @if (image) {\n                <div class=\"col-lg-6 cs_pr_110\">\n                    <div\n                        class=\"cs_pr_1101 cs_image_layer cs_style_3 position-relative\"\n                    >\n                        <img\n                            [src]=\"\n                                image?.src ||\n                                'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                            \"\n                            [alt]=\"image?.alt ?? image?.title ?? 'title'\"\n                            class=\"cs--radius\"\n                            loading=\"lazy\"\n                        />\n                    </div>\n                </div>\n            }\n            <div class=\"col-lg-6\">\n                <div class=\"intro_info no-align\">\n                    @if (pretitle) {\n                        <lib-babylon-dynamic-heading\n                            [tag]=\"tags?.pretitle || 'h2'\"\n                            cssClass=\"title\"\n                            [color]=\"textColors?.pretitle\"\n                            [content]=\"pretitle\"\n                        ></lib-babylon-dynamic-heading>\n                    }\n                    @if (title) {\n                        <lib-babylon-dynamic-heading\n                            [tag]=\"tags?.title || 'h1'\"\n                            cssClass=\"pretitle mb--10\"\n                            [color]=\"textColors?.title\"\n                            [content]=\"title\"\n                        ></lib-babylon-dynamic-heading>\n                    }\n                </div>\n                @if (items?.length) {\n                    <div class=\"cs_accordians cs_style_1\">\n                        @for (item of items; track $index) {\n                            <div\n                                class=\"cs_accordian\"\n                                [class.active]=\"selectedIndex() === $index\"\n                            >\n                                @if (item.label) {\n                                    <div\n                                        class=\"cs_accordian_head\"\n                                        (click)=\"selectItem($index)\"\n                                    >\n                                        <h2 class=\"title--smaller mb--0\">\n                                            {{ item.label }}\n                                        </h2>\n                                        <span\n                                            class=\"cs_accordian_toggle\"\n                                        ></span>\n                                    </div>\n                                }\n                                @if (item.description) {\n                                    <div\n                                        class=\"cs_accordian_body\"\n                                        [@slideToggle]=\"\n                                            selectedIndex() === $index\n                                                ? 'open'\n                                                : 'closed'\n                                        \"\n                                    >\n                                        <p\n                                            class=\"text mb--0\"\n                                            [innerHTML]=\"item.description\"\n                                        ></p>\n                                    </div>\n                                }\n                            </div>\n                        }\n                    </div>\n                }\n            </div>\n        </div>\n    </div>\n</section>\n","import { isPlatformBrowser } from '@angular/common';\nimport { HttpClient } from '@angular/common/http';\nimport {\n    AfterViewInit,\n    Component,\n    ElementRef,\n    HostListener,\n    Inject,\n    Input,\n    PLATFORM_ID,\n    signal,\n    ViewChild,\n} from '@angular/core';\nimport {\n    FormControl,\n    FormGroup,\n    ReactiveFormsModule,\n    Validators,\n} from '@angular/forms';\nimport {\n    BabylonItemI,\n    BabylonMultimediaI,\n    BabylonTextInfoI,\n} from '../../../interfaces';\n\n@Component({\n    selector: 'lib-babylon-faq-join-c2-img-txt',\n    standalone: true,\n    imports: [ReactiveFormsModule],\n    templateUrl: './babylon-faq-join-c2-img-txt.component.html',\n    styleUrl: './babylon-faq-join-c2-img-txt.component.scss',\n})\nexport class BabylonFaqJoinC2ImgTxtComponent implements AfterViewInit {\n    @Input() texts?: BabylonTextInfoI;\n    @Input() items?: BabylonItemI[];\n    @Input() multimedia?: BabylonMultimediaI;\n    @Input() rightSide?: boolean = false;\n    @Input() leftSide?: boolean = true;\n    @Input() useGraphic?: boolean = false;\n    @Input() svg: string = '/assets/babylon/svg/icon-graphic.svg#icon-graphic';\n\n    selectedIndex = signal<number | null>(0);\n\n    @ViewChild('bgSection') bgSection!: ElementRef<HTMLElement>;\n    @ViewChild('headingEl') headingEl!: ElementRef<HTMLElement>;\n\n    joinForm = new FormGroup({\n        jobOffer: new FormControl(''),\n        name: new FormControl('', Validators.required),\n        lastNames: new FormControl('', Validators.required),\n        phone: new FormControl(''),\n        email: new FormControl('', [Validators.required, Validators.email]),\n        cv: new FormControl(''),\n        message: new FormControl(''),\n        legalNotice: new FormControl(false, Validators.requiredTrue),\n        promotions: new FormControl(false),\n    });\n\n    toggle(i: number) {\n        this.selectedIndex.update((current) => (current === i ? null : i));\n    }\n    constructor(\n        @Inject(PLATFORM_ID) private platformId: Object,\n        private http: HttpClient\n    ) {}\n\n    ngAfterViewInit(): void {\n        if (isPlatformBrowser(this.platformId)) {\n            // Un pequeño setTimeout asegura que Angular haya renderizado y calculado los altos reales\n            setTimeout(() => this.updateBGHeight(), 50);\n        }\n    }\n\n    @HostListener('window:resize')\n    onResize(): void {\n        if (isPlatformBrowser(this.platformId)) {\n            this.updateBGHeight();\n        }\n    }\n\n    updateBGHeight(): void {\n        if (!this.bgSection?.nativeElement || !this.headingEl?.nativeElement) {\n            console.warn(\n                'Faltan los elementos para calcular la altura del fondo'\n            );\n            return;\n        }\n\n        const heading = this.headingEl.nativeElement;\n        const bgSpan = this.bgSection.nativeElement;\n\n        const baseFontSize =\n            parseFloat(getComputedStyle(document.documentElement).fontSize) ||\n            16;\n        const totalPx = (heading.offsetTop || 0) + (heading.offsetHeight || 0);\n        const totalRem = totalPx / baseFontSize;\n\n        // 👇 EL CAMBIO CLAVE: Usar setProperty nativo en lugar de Renderer2\n        bgSpan.style.setProperty('--bg-height', `${totalRem}rem`);\n    }\n\n    onFileSelected(event: any) {\n        const file: File = event.target.files[0];\n        if (file) {\n            this.joinForm.patchValue({ cv: file as any }); // Manejo básico de archivo\n        }\n    }\n\n    onSubmit() {\n        if (this.joinForm.valid) {\n            console.log('Datos del formulario enviados:', this.joinForm.value);\n            // Aquí llamarías a tu servicio HTTP\n            // this.http.post('...', this.joinForm.value).subscribe(...)\n        } else {\n            this.joinForm.markAllAsTouched();\n        }\n    }\n}\n","<section\n    class=\"faq js-bgHeight-section\"\n    [class.faq--right]=\"rightSide || leftSide\"\n    #bgSection\n>\n    <div class=\"container\">\n        <div class=\"faq__inner\">\n            <div class=\"faq__content\">\n                <div class=\"faq__content--inner\">\n                    <div class=\"faq__heading js-bgHeight-heading\" #headingEl>\n                        @if (texts?.title) {\n                            <h2>{{ texts?.title }}</h2>\n                        }\n                        @if (\n                            texts?.pretitle ??\n                            texts?.subtitle ??\n                            texts?.description\n                        ) {\n                            <p\n                                [innerHTML]=\"\n                                    texts?.pretitle ??\n                                    texts?.subtitle ??\n                                    texts?.description\n                                \"\n                            ></p>\n                        }\n                    </div>\n                    @if (items?.length) {\n                        <ul class=\"faq__list\">\n                            @for (item of items; track $index) {\n                                <li\n                                    class=\"faq__item\"\n                                    [class.active]=\"selectedIndex() === $index\"\n                                >\n                                    <div\n                                        class=\"faq__item--heading js-accordion\"\n                                        (click)=\"toggle($index)\"\n                                    >\n                                        @if (item?.label) {\n                                            <h3 [innerHTML]=\"item?.label\"></h3>\n                                            <span class=\"faq__item--icon\">\n                                                <svg\n                                                    aria-hidden=\"true\"\n                                                    focusable=\"false\"\n                                                    class=\"\"\n                                                >\n                                                    <use\n                                                        href=\"/assets/babylon/svg/icon-close.svg#icon-close\"\n                                                    ></use>\n                                                </svg>\n                                            </span>\n                                        }\n                                    </div>\n                                    @if (item?.description) {\n                                        <div class=\"faq__item--content\">\n                                            <p\n                                                [innerHTML]=\"item?.description\"\n                                            ></p>\n                                        </div>\n                                    }\n                                </li>\n                            }\n                        </ul>\n\n                        <div class=\"faq__form\">\n                            <h2 class=\"faq__form--title\">Form Join</h2>\n\n                            <div class=\"contact-form\">\n                                <form\n                                    [formGroup]=\"joinForm\"\n                                    (ngSubmit)=\"onSubmit()\"\n                                    id=\"joinform\"\n                                >\n                                    <div class=\"form-group\">\n                                        <div\n                                            class=\"input-group open\"\n                                            style=\"flex: 1 1 100%\"\n                                        >\n                                            <select\n                                                class=\"select-control\"\n                                                id=\"jobOffer\"\n                                                formControlName=\"jobOffer\"\n                                            >\n                                                <option\n                                                    value=\"\"\n                                                    disabled\n                                                    selected\n                                                >\n                                                    Select an option...\n                                                </option>\n                                                <option value=\"chef\">\n                                                    Chef\n                                                </option>\n                                                <option value=\"waiter\">\n                                                    Waiter\n                                                </option>\n                                                <option value=\"manager\">\n                                                    Manager\n                                                </option>\n                                            </select>\n                                            <span class=\"input-group--icon\">\n                                                <svg\n                                                    aria-hidden=\"true\"\n                                                    class=\"down-arrow\"\n                                                    focusable=\"false\"\n                                                >\n                                                    <use\n                                                        href=\"/assets/babylon/svg/icon-arrow.svg#icon-arrow\"\n                                                    ></use>\n                                                </svg>\n                                            </span>\n                                        </div>\n                                    </div>\n\n                                    <div class=\"form-group\">\n                                        <div class=\"input-group\">\n                                            <label\n                                                class=\"input-group--label\"\n                                                for=\"name\"\n                                                >Name *</label\n                                            >\n                                            <input\n                                                type=\"text\"\n                                                class=\"input-control\"\n                                                id=\"name\"\n                                                formControlName=\"name\"\n                                                placeholder=\" \"\n                                            />\n                                            <span class=\"input-group--icon\">\n                                                <svg\n                                                    aria-hidden=\"true\"\n                                                    focusable=\"false\"\n                                                >\n                                                    <use\n                                                        href=\"/assets/babylon/svg/icon-user.svg#icon-user\"\n                                                    ></use>\n                                                </svg>\n                                            </span>\n                                        </div>\n                                        <div class=\"input-group\">\n                                            <label\n                                                class=\"input-group--label\"\n                                                for=\"lastNames\"\n                                                >Last names *</label\n                                            >\n                                            <input\n                                                type=\"text\"\n                                                class=\"input-control\"\n                                                id=\"lastNames\"\n                                                formControlName=\"lastNames\"\n                                                placeholder=\" \"\n                                            />\n                                            <span class=\"input-group--icon\">\n                                                <svg\n                                                    aria-hidden=\"true\"\n                                                    focusable=\"false\"\n                                                >\n                                                    <use\n                                                        href=\"/assets/babylon/svg/icon-user.svg#icon-user\"\n                                                    ></use>\n                                                </svg>\n                                            </span>\n                                        </div>\n                                    </div>\n\n                                    <div class=\"form-group\">\n                                        <div class=\"input-group\">\n                                            <label\n                                                class=\"input-group--label\"\n                                                for=\"phone\"\n                                                >Phone</label\n                                            >\n                                            <input\n                                                type=\"tel\"\n                                                class=\"input-control\"\n                                                id=\"phone\"\n                                                formControlName=\"phone\"\n                                                placeholder=\" \"\n                                            />\n                                            <span class=\"input-group--icon\">\n                                                <svg\n                                                    aria-hidden=\"true\"\n                                                    focusable=\"false\"\n                                                >\n                                                    <use\n                                                        href=\"/assets/babylon/svg/icon-call.svg#icon-call\"\n                                                    ></use>\n                                                </svg>\n                                            </span>\n                                        </div>\n                                        <div class=\"input-group\">\n                                            <label\n                                                class=\"input-group--label\"\n                                                for=\"email\"\n                                                >Email *</label\n                                            >\n                                            <input\n                                                type=\"email\"\n                                                class=\"input-control\"\n                                                id=\"email\"\n                                                formControlName=\"email\"\n                                                placeholder=\" \"\n                                            />\n                                            <span class=\"input-group--icon\">\n                                                <svg\n                                                    aria-hidden=\"true\"\n                                                    focusable=\"false\"\n                                                >\n                                                    <use\n                                                        href=\"/assets/babylon/svg/icon-envelope.svg#icon-envelope\"\n                                                    ></use>\n                                                </svg>\n                                            </span>\n                                        </div>\n                                    </div>\n\n                                    <div class=\"form-group\">\n                                        <div\n                                            class=\"input-group\"\n                                            style=\"flex: 1 1 100%\"\n                                        >\n                                            <label\n                                                class=\"input-group--label\"\n                                                style=\"\n                                                    padding-top: 1.1rem;\n                                                    padding-bottom: 3.2rem;\n                                                    background: transparent;\n                                                \"\n                                                >Attach CV</label\n                                            >\n                                            <input\n                                                type=\"file\"\n                                                class=\"input-control\"\n                                                id=\"cv\"\n                                                (change)=\"\n                                                    onFileSelected($event)\n                                                \"\n                                            />\n                                        </div>\n                                    </div>\n\n                                    <div class=\"form-group\">\n                                        <div\n                                            class=\"input-group\"\n                                            style=\"flex: 1 1 100%\"\n                                        >\n                                            <label\n                                                class=\"input-group--label\"\n                                                for=\"message\"\n                                                >Message</label\n                                            >\n                                            <textarea\n                                                class=\"input-control\"\n                                                id=\"message\"\n                                                formControlName=\"message\"\n                                                rows=\"3\"\n                                                placeholder=\" \"\n                                            ></textarea>\n                                        </div>\n                                    </div>\n\n                                    <div\n                                        class=\"input-group last-input\"\n                                        style=\"margin-top: 2rem\"\n                                    >\n                                        <span\n                                            class=\"checkbox__group required-label\"\n                                            >* Required fields</span\n                                        >\n\n                                        <div class=\"checkbox__group\">\n                                            <label>\n                                                <input\n                                                    type=\"checkbox\"\n                                                    formControlName=\"legalNotice\"\n                                                />\n                                                <span>\n                                                    <svg\n                                                        aria-hidden=\"true\"\n                                                        focusable=\"false\"\n                                                        class=\"checkbox--tick\"\n                                                    >\n                                                        <use\n                                                            href=\"/assets/babylon/svg/icon-tick.svg#icon-tick\"\n                                                        ></use>\n                                                    </svg>\n                                                    <div>\n                                                        I accept Legal notice /\n                                                        Privacy policy\n                                                    </div>\n                                                </span>\n                                            </label>\n                                        </div>\n\n                                        <div class=\"checkbox__group\">\n                                            <label>\n                                                <input\n                                                    type=\"checkbox\"\n                                                    formControlName=\"promotions\"\n                                                />\n                                                <span>\n                                                    <svg\n                                                        aria-hidden=\"true\"\n                                                        focusable=\"false\"\n                                                        class=\"checkbox--tick\"\n                                                    >\n                                                        <use\n                                                            href=\"/assets/babylon/svg/icon-tick.svg#icon-tick\"\n                                                        ></use>\n                                                    </svg>\n                                                    <div>\n                                                        Recibir las promociones\n                                                        nuevas de Can Bordoy\n                                                    </div>\n                                                </span>\n                                            </label>\n                                        </div>\n                                    </div>\n\n                                    <div\n                                        class=\"btn__group\"\n                                        style=\"margin-top: 2rem\"\n                                    >\n                                        <button\n                                            class=\"btn btn_primary\"\n                                            type=\"submit\"\n                                            [disabled]=\"joinForm.invalid\"\n                                        >\n                                            <span>Send</span>\n                                        </button>\n                                    </div>\n                                </form>\n                            </div>\n                        </div>\n                    }\n                </div>\n            </div>\n            <div class=\"faq__image\">\n                @if (multimedia?.imagenes?.length) {\n                    @for (item of multimedia?.imagenes; track $index) {\n                        @if (useGraphic) {\n                            <svg\n                                aria-hidden=\"true\"\n                                focusable=\"false\"\n                                class=\"faq__graphic--top\"\n                            >\n                                <use [attr.href]=\"svg\"></use>\n                            </svg>\n                            <svg\n                                aria-hidden=\"true\"\n                                focusable=\"false\"\n                                class=\"faq__graphic--bottom\"\n                            >\n                                <use [attr.href]=\"svg\"></use>\n                            </svg>\n                        }\n                        <figure>\n                            <img\n                                [src]=\"\n                                    item?.img?.src ||\n                                    'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                \"\n                                [alt]=\"item?.img?.alt || 'image'\"\n                            />\n                        </figure>\n                    }\n                }\n            </div>\n        </div>\n    </div>\n</section>\n","import { isPlatformBrowser } from '@angular/common';\nimport { HttpClient } from '@angular/common/http';\nimport {\n    AfterViewInit,\n    Component,\n    ElementRef,\n    HostListener,\n    Inject,\n    Input,\n    PLATFORM_ID,\n    signal,\n    ViewChild,\n} from '@angular/core';\nimport { BabylonTextInfoI } from '../../../interfaces';\nimport { BabylonItemI } from '../../../interfaces/babylon-item.interface';\nimport { BabylonMultimediaI } from '../../../interfaces/babylon-multimedia.interface';\n\n@Component({\n    selector: 'lib-babylon-faq-v2',\n    standalone: true,\n    templateUrl: './babylon-faq-v2.component.html',\n    styleUrls: ['./babylon-faq-v2.component.scss'],\n})\nexport class BabylonFaqV2Component implements AfterViewInit {\n    @Input() texts?: BabylonTextInfoI;\n    @Input() items?: BabylonItemI[];\n    @Input() multimedia?: BabylonMultimediaI;\n    @Input() rightSide?: boolean = false;\n    @Input() leftSide?: boolean = true;\n    @Input() useGraphic?: boolean = false;\n    @Input() svg: string = '/assets/babylon/svg/icon-graphic.svg#icon-graphic';\n\n    selectedIndex = signal<number | null>(0);\n\n    @ViewChild('bgSection') bgSection!: ElementRef<HTMLElement>;\n    @ViewChild('headingEl') headingEl!: ElementRef<HTMLElement>;\n\n    toggle(i: number) {\n        this.selectedIndex.update((current) => (current === i ? null : i));\n    }\n    constructor(\n        @Inject(PLATFORM_ID) private platformId: Object,\n        private http: HttpClient\n    ) {}\n\n    ngAfterViewInit(): void {\n        if (isPlatformBrowser(this.platformId)) {\n            // Un pequeño setTimeout asegura que Angular haya renderizado y calculado los altos reales\n            setTimeout(() => this.updateBGHeight(), 50);\n        }\n    }\n\n    @HostListener('window:resize')\n    onResize(): void {\n        if (isPlatformBrowser(this.platformId)) {\n            this.updateBGHeight();\n        }\n    }\n\n    updateBGHeight(): void {\n        if (!this.bgSection?.nativeElement || !this.headingEl?.nativeElement) {\n            console.warn(\n                'Faltan los elementos para calcular la altura del fondo'\n            );\n            return;\n        }\n\n        const heading = this.headingEl.nativeElement;\n        const bgSpan = this.bgSection.nativeElement;\n\n        const baseFontSize =\n            parseFloat(getComputedStyle(document.documentElement).fontSize) ||\n            16;\n        const totalPx = (heading.offsetTop || 0) + (heading.offsetHeight || 0);\n        const totalRem = totalPx / baseFontSize;\n\n        // 👇 EL CAMBIO CLAVE: Usar setProperty nativo en lugar de Renderer2\n        bgSpan.style.setProperty('--bg-height', `${totalRem}rem`);\n    }\n}\n","<section\n    class=\"faq js-bgHeight-section\"\n    [class.faq--right]=\"rightSide || leftSide\"\n    #bgSection\n>\n    <div class=\"container\">\n        <div class=\"faq__inner\">\n            <div class=\"faq__content\">\n                <div class=\"faq__content--inner\">\n                    <div class=\"faq__heading js-bgHeight-heading\" #headingEl>\n                        @if (texts?.title) {\n                            <h2>{{ texts?.title }}</h2>\n                        }\n                        @if (\n                            texts?.pretitle ??\n                            texts?.subtitle ??\n                            texts?.description\n                        ) {\n                            <p\n                                [innerHTML]=\"\n                                    texts?.pretitle ??\n                                    texts?.subtitle ??\n                                    texts?.description\n                                \"\n                            ></p>\n                        }\n                    </div>\n                    @if (items?.length) {\n                        <ul class=\"faq__list\">\n                            @for (item of items; track $index) {\n                                <li\n                                    class=\"faq__item\"\n                                    [class.active]=\"selectedIndex() === $index\"\n                                >\n                                    <div\n                                        class=\"faq__item--heading js-accordion\"\n                                        (click)=\"toggle($index)\"\n                                    >\n                                        @if (item?.label) {\n                                            <h3 [innerHTML]=\"item?.label\"></h3>\n                                            <span class=\"faq__item--icon\">\n                                                <svg\n                                                    aria-hidden=\"true\"\n                                                    focusable=\"false\"\n                                                    class=\"\"\n                                                >\n                                                    <use\n                                                        href=\"/assets/babylon/svg/icon-close.svg#icon-close\"\n                                                    ></use>\n                                                </svg>\n                                            </span>\n                                        }\n                                    </div>\n                                    @if (item?.description) {\n                                        <div class=\"faq__item--content\">\n                                            <p\n                                                [innerHTML]=\"item?.description\"\n                                            ></p>\n                                        </div>\n                                    }\n                                </li>\n                            }\n                        </ul>\n                    }\n                </div>\n            </div>\n            <div class=\"faq__image\">\n                @if (multimedia?.imagenes?.length) {\n                    @for (item of multimedia?.imagenes; track $index) {\n                        @if (useGraphic) {\n                            <svg\n                                aria-hidden=\"true\"\n                                focusable=\"false\"\n                                class=\"faq__graphic--top\"\n                            >\n                                <use [attr.href]=\"svg\"></use>\n                            </svg>\n                            <svg\n                                aria-hidden=\"true\"\n                                focusable=\"false\"\n                                class=\"faq__graphic--bottom\"\n                            >\n                                <use [attr.href]=\"svg\"></use>\n                            </svg>\n                        }\n                        <figure>\n                            <img\n                                [src]=\"\n                                    item?.img?.src ||\n                                    'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                \"\n                                [alt]=\"item?.img?.alt || 'image'\"\n                            />\n                        </figure>\n                    }\n                }\n            </div>\n        </div>\n    </div>\n</section>\n","import { Component, Input } from '@angular/core';\nimport { BabylonIconInfoI, BabylonTextInfoI } from '../../../interfaces';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n    selector: 'lib-babylon-feature-pills',\n    standalone: true,\n    imports: [CommonModule],\n    templateUrl: './babylon-feature-pills.component.html',\n    styleUrl: './babylon-feature-pills.component.scss',\n})\nexport class BabylonFeaturePillsComponent {\n  @Input() texts?: BabylonTextInfoI;\n  @Input() icons?: BabylonIconInfoI[];\n}\n","<section class=\"feature_pills\">\n    <div class=\"container\">\n        <div class=\"feature_pills__inner\">\n          @if (texts?.title) {\n            <span class=\"feature_pills__title\">{{ texts?.title }}</span>\n          }\n          @if (icons?.length) {\n            <div class=\"feature_pills__items\">\n                @for (icon of icons; track $index) {\n                  <div class=\"feature_pills__item\">\n                    @if (icon?.icon) {\n                      <span class=\"feature_pills__item-icon info--icon\">\n                          <!-- <svg\n                              aria-hidden=\"true\"\n                              width=\"42\"\n                              height=\"31\"\n                              focusable=\"false\"\n                          >\n                              <use\n                                  [attr.href]=\"'/assets/babylon/svg/' + icon?.icon + '.svg#' + icon?.icon\"\n                              ></use>\n                          </svg> -->\n                            <i\n                                class=\"icon--svg\"\n                                [ngClass]=\"icon?.icon\"\n                            ></i>\n                      </span>\n                    }\n                      <div class=\"feature_pills__item-content\">\n                          @if (icon?.title) {\n                            <h2>{{ icon.title }}</h2>\n                          }\n                          @if (icon?.text) {\n                            <p>{{ icon?.text }}</p>\n                          }\n                      </div>\n                  </div>\n                }\n            </div>\n          }\n        </div>\n    </div>\n</section>\n<!--\n<section class=\"feature_pills\">\n    <div class=\"container\">\n        <div class=\"feature_pills__inner\">\n            <span class=\"feature_pills__title\">Distancias desde el hotel</span>\n            <div class=\"feature_pills__items\">\n                <div class=\"feature_pills__item\">\n                    <span class=\"feature_pills__item-icon\">\n                        <svg\n                            aria-hidden=\"true\"\n                            width=\"42\"\n                            height=\"31\"\n                            focusable=\"false\"\n                        >\n                            <use\n                                href=\"/assets/babylon/svg/icon-ship.svg#icon-ship\"\n                            ></use>\n                        </svg>\n                    </span>\n                    <div class=\"feature_pills__item-content\">\n                        <h2>Puerto Ferry</h2>\n                        <p>A 10 minutos</p>\n                    </div>\n                </div>\n                <div class=\"feature_pills__item\">\n                    <span class=\"feature_pills__item-icon\">\n                        <svg\n                            aria-hidden=\"true\"\n                            width=\"38\"\n                            height=\"33\"\n                            focusable=\"false\"\n                        >\n                            <use\n                                href=\"/assets/babylon/svg/icon-beach.svg#icon-beach\"\n                            ></use>\n                        </svg>\n                    </span>\n                    <div class=\"feature_pills__item-content\">\n                        <h2>La playa Pujols</h2>\n                        <p>4 km</p>\n                    </div>\n                </div>\n                <div class=\"feature_pills__item\">\n                    <span class=\"feature_pills__item-icon\">\n                        <svg\n                            aria-hidden=\"true\"\n                            width=\"34\"\n                            height=\"34\"\n                            focusable=\"false\"\n                        >\n                            <use\n                                href=\"/assets/babylon/svg/icon-lighthouse.svg#icon-lighthouse\"\n                            ></use>\n                        </svg>\n                    </span>\n                    <div class=\"feature_pills__item-content\">\n                        <h2>Faro de la Mola</h2>\n                        <p>4 km</p>\n                    </div>\n                </div>\n                <div class=\"feature_pills__item\">\n                    <span class=\"feature_pills__item-icon\">\n                        <svg\n                            aria-hidden=\"true\"\n                            width=\"40\"\n                            height=\"24\"\n                            focusable=\"false\"\n                        >\n                            <use\n                                href=\"/assets/babylon/svg/icon-cycle.svg#icon-cycle\"\n                            ></use>\n                        </svg>\n                    </span>\n                    <div class=\"feature_pills__item-content\">\n                        <h2>Distancia punto</h2>\n                        <p>4 km</p>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n</section>\n\n-->\n","import { Component, Input } from '@angular/core';\nimport { BabylonIconInfoI, BabylonTextInfoI } from '../../../interfaces';\n@Component({\n    selector: 'lib-babylon-feature-pills-number',\n    standalone: true,\n    imports: [],\n    templateUrl: './babylon-feature-pills-number.component.html',\n    styleUrl: './babylon-feature-pills-number.component.scss',\n})\nexport class BabylonFeaturePillsNumberComponent {\n    @Input() texts?: BabylonTextInfoI;\n    @Input() svgs?: BabylonIconInfoI[];\n}\n","@if (texts) {\n    <section class=\"feature-pills-number bg-cream\">\n        <div class=\"feature-pills-number__inner\">\n            @if (texts.featurepillsnumberSvgicon1) {\n                <div class=\"feature-pills-number__item\">\n                    <span\n                        class=\"feature-pills-number__icon feature-pills-number__icon--tripadvisor\"\n                    >\n                        <svg aria-hidden=\"true\" focusable=\"false\">\n                            <use\n                                [attr.href]=\"\n                                    '/assets/babylon/svg/' +\n                                    texts.featurepillsnumberSvgicon1 +\n                                    '.svg#' +\n                                    texts.featurepillsnumberSvgicon1\n                                \"\n                            ></use>\n                        </svg>\n                    </span>\n                    @if (texts.featurepillsnumberSvgnumber1) {\n                        <h2>{{ texts.featurepillsnumberSvgnumber1 }}</h2>\n                    }\n                    <div class=\"feature-pills-number__content\">\n                        @if (texts.featurepillsnumberSvgname1) {\n                            <h3>{{ texts.featurepillsnumberSvgname1 }}</h3>\n                        }\n                        @if (texts.featurepillsnumberSvgsubtitle1) {\n                            <p>{{ texts.featurepillsnumberSvgsubtitle1 }}</p>\n                        }\n                    </div>\n                </div>\n            }\n            @if (texts.featurepillsnumberSvgicon2) {\n                <div class=\"feature-pills-number__item\">\n                    <span\n                        class=\"feature-pills-number__icon feature-pills-number__icon--tripadvisor\"\n                    >\n                        <svg aria-hidden=\"true\" focusable=\"false\">\n                            <use\n                                [attr.href]=\"\n                                    '/assets/babylon/svg/' +\n                                    texts.featurepillsnumberSvgicon2 +\n                                    '.svg#' +\n                                    texts.featurepillsnumberSvgicon2\n                                \"\n                            ></use>\n                        </svg>\n                    </span>\n                    @if (texts.featurepillsnumberSvgnumber2) {\n                        <h2>{{ texts.featurepillsnumberSvgnumber2 }}</h2>\n                    }\n                    <div class=\"feature-pills-number__content\">\n                        @if (texts.featurepillsnumberSvgname2) {\n                            <h3>{{ texts.featurepillsnumberSvgname2 }}</h3>\n                        }\n                        @if (texts.featurepillsnumberSvgsubtitle2) {\n                            <p>{{ texts.featurepillsnumberSvgsubtitle2 }}</p>\n                        }\n                    </div>\n                </div>\n            }\n            @if (texts.featurepillsnumberSvgicon3) {\n                <div class=\"feature-pills-number__item\">\n                    <span\n                        class=\"feature-pills-number__icon feature-pills-number__icon--tripadvisor\"\n                    >\n                        <svg aria-hidden=\"true\" focusable=\"false\">\n                            <use\n                                [attr.href]=\"\n                                    '/assets/babylon/svg/' +\n                                    texts.featurepillsnumberSvgicon3 +\n                                    '.svg#' +\n                                    texts.featurepillsnumberSvgicon3\n                                \"\n                            ></use>\n                        </svg>\n                    </span>\n                    @if (texts.featurepillsnumberSvgnumber3) {\n                        <h2>{{ texts.featurepillsnumberSvgnumber3 }}</h2>\n                    }\n                    <div class=\"feature-pills-number__content\">\n                        @if (texts.featurepillsnumberSvgname3) {\n                            <h3>{{ texts.featurepillsnumberSvgname3 }}</h3>\n                        }\n                        @if (texts.featurepillsnumberSvgsubtitle3) {\n                            <p>{{ texts.featurepillsnumberSvgsubtitle3 }}</p>\n                        }\n                    </div>\n                </div>\n            }\n        </div>\n    </section>\n}\n","import { CommonModule } from '@angular/common';\nimport {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    Input,\n} from '@angular/core';\nimport { BabylonButtonI } from '../../../interfaces/babylon-button.interface';\nimport { BabylonSlidersDirective } from '../../../directives/babylon-sliders/babylon-sliders.directive';\nimport { BabylonDynamicHeadingComponent } from '../../shared';\nimport { BabylonTagsI } from '../../../interfaces';\n\n@Component({\n    selector: 'lib-babylon-features-slider',\n    standalone: true,\n    imports: [CommonModule, BabylonSlidersDirective, BabylonDynamicHeadingComponent],\n    templateUrl: './babylon-features-slider.component.html',\n    styleUrl: './babylon-features-slider.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonFeaturesSliderComponent implements AfterViewInit {\n    @Input() pretitle?: string;\n    @Input() title?: string;\n    @Input() items?: BabylonFeaturesSliderItem[];\n    @Input() button?: BabylonButtonI;\n    @Input() tags?: BabylonTagsI;\n\n    constructor(private cdr: ChangeDetectorRef) {}\n\n    ngAfterViewInit() {\n        setTimeout(() => {\n            this.cdr.detectChanges();\n        }, 100);\n    }\n}\n\nexport interface BabylonFeaturesSliderItem {\n    title?: string;\n    description?: string;\n    icon?: string;\n}\n","<section class=\"babylon__features-slider margin-main\">\n    <div class=\"cs_slider cs_style_1 cs_slider_gap_30 cs_show_shadow_20\">\n        <div class=\"container\">\n            <div class=\"cs_section_heading_wrap_1\">\n                <div class=\"cs_section_heading cs_style_1\">\n                    <div class=\"intro_info no-align\">\n                        @if (pretitle) {\n                            <lib-babylon-dynamic-heading\n                                [tag]=\"tags?.pretitle || 'h3'\"\n                                cssClass=\"pretitle wow fadeInLeft\"\n                                [content]=\"pretitle\"\n                                data-wow-duration=\"0.8s\"\n                                data-wow-delay=\"0.2s\"\n                            ></lib-babylon-dynamic-heading>\n                        }\n                        @if (title) {\n                            <lib-babylon-dynamic-heading\n                                [tag]=\"tags?.title || 'h2'\"\n                                cssClass=\"title\"\n                                [content]=\"title\"\n                            ></lib-babylon-dynamic-heading>\n                        }\n                    </div>\n                </div>\n                <div class=\"cs_slider_arrows cs_style_4\">\n                    <div class=\"cs_left_arrow slick-arrow cs_center\">\n                        <span class=\"babylon-arrow-left-big\"></span>\n                    </div>\n                    <div class=\"cs_right_arrow slick-arrow cs_center\">\n                        <span class=\"babylon-arrow-right-big\"></span>\n                    </div>\n                </div>\n            </div>\n\n            <div class=\"cs_full_width_right mb--20\">\n                <div\n                    class=\"cs_slider_container\"\n                    sliders=\"cs_slider_container4\"\n                    data-autoplay=\"0\"\n                    data-loop=\"0\"\n                    data-speed=\"600\"\n                    data-center=\"0\"\n                    data-variable-width=\"1\"\n                    data-slides-per-view=\"responsive\"\n                    data-xs-slides=\"1\"\n                    data-sm-slides=\"2\"\n                    data-md-slides=\"2\"\n                    data-mlg-slides=\"2\"\n                    data-lg-slides=\"2\"\n                    data-xl-slides=\"3\"\n                    data-add-slides=\"3\"\n                >\n                    <div class=\"cs_slider_wrapper\">\n                        @if (items?.length) {\n                            @for (item of items; track $index) {\n                                <div class=\"cs_slide\">\n                                    <div\n                                        class=\"cs_iconbox cs_style_3 cs--radius bg--white\"\n                                    >\n                                        @if (item.icon) {\n                                            <div\n                                                class=\"cs_iconbox_icon cs_mb_29 cs_center cs--radius bg--white\"\n                                            >\n                                                <div\n                                                    class=\"info--icon icon--big\"\n                                                >\n                                                    <i\n                                                        class=\"icon--svg\"\n                                                        [ngClass]=\"item.icon\"\n                                                    ></i>\n                                                </div>\n                                            </div>\n                                        }\n                                        @if (item.title) {\n                                            <h3 class=\"title--small mb--10\">\n                                                {{ item.title }}\n                                            </h3>\n                                        }\n                                        @if (item.description) {\n                                            <p class=\"text\">\n                                                {{ item.description }}\n                                            </p>\n                                        }\n                                    </div>\n                                </div>\n                            }\n                        }\n                    </div>\n                </div>\n            </div>\n            @if (button) {\n                <div class=\"btns__box align--center\">\n                    <a\n                        [attr.aria-label]=\"button.label\"\n                        [href]=\"button.url\"\n                        class=\"btn btn_primary\"\n                    >\n                        <b>{{ button.label }}</b>\n                        <span class=\"babylon-arrow-right-big\"></span>\n                    </a>\n                </div>\n            }\n        </div>\n    </div>\n</section>\n","import { CommonModule } from '@angular/common';\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    EventEmitter,\n    Input,\n    Output,\n} from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { BabylonGalleryFilter } from '../babylon-gallery';\n\n@Component({\n    selector: 'lib-filter-modal',\n    standalone: true,\n    imports: [CommonModule],\n    templateUrl: './babylon-filter-modal.component.html',\n    styleUrl: './babylon-filter-modal.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonFilterModalComponent {\n    @Input() title?: string;\n    @Input() subtitle?: string;\n    @Input() filters?: BabylonGalleryFilter[];\n    @Input() rooms?: Boolean;\n\n    @Output() filterSelect = new EventEmitter<BabylonGalleryFilter>();\n\n    constructor(\n        private readonly dialogRef: MatDialogRef<BabylonFilterModalComponent>\n    ) {}\n\n    close(filter?: BabylonGalleryFilter): void {\n        if (filter) {\n            this.filterSelect.emit(filter);\n        }\n        this.dialogRef.close();\n    }\n}\n","<div class=\"btn-close--modal\">\n    <span\n        class=\"btn btn_primary btn--light babylon-plus btn-responsive\"\n        (click)=\"close()\"\n    ></span>\n</div>\n<div class=\"babylon__filters__wrapper\">\n    <div class=\"babylon__filters\">\n        <header class=\"babylon__filters__header\">\n            @if (title) {\n                <h1 class=\"title light\">{{ title }}</h1>\n            }\n            @if (subtitle) {\n                <span class=\"subtitle light\">{{ subtitle }}</span>\n            }\n        </header>\n        <ul class=\"d-flex flex-column\">\n            @for (filter of filters; track filter.text) {\n                <li class=\"text light\" (click)=\"close(filter)\">\n                    {{ filter.text }}\n                </li>\n            }\n        </ul>\n    </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    Input,\n    OnChanges,\n} from '@angular/core';\nimport { BabylonFloatingButtonsI } from '../../../interfaces/babylon-floating-buttons.interface';\n\nexport interface CmsLink {\n    label?: string; // ej: 'icon-whatsapp' o 'shop-link'\n    url?: string;\n    icon?: string; // ej: 'icon-whatsapp'\n    type?: string;\n    linkType?: string;\n}\nexport interface CmsText {\n    icon?: string; // ej: 'babylon-Whatsapp'\n    label?: string; // ej: 'Whatsapp'\n}\n\nexport interface FloatingButtonsI {\n    links?: (CmsLink | undefined)[];\n    texts?: (CmsText | undefined)[];\n}\n\nexport interface ButtonVM {\n    label: string; // tooltip\n    href: string; // destino final\n    iconClass: string; // clase de tu set de iconos\n}\n\n@Component({\n    selector: 'lib-babylon-floating-buttons',\n    standalone: true,\n    imports: [CommonModule],\n    templateUrl: './babylon-floating-buttons.component.html',\n    styleUrl: './babylon-floating-buttons.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonFloatingButtonsComponent implements OnChanges {\n    private readonly WANTED = new Set(['whatsapp']); // añade 'phone','email', etc.\n\n    @Input() defaultCountryCode = '34';\n\n    @Input() floatingButtons?: BabylonFloatingButtonsI;\n\n    buttons: ButtonVM[] = [];\n\n    ngOnChanges(): void {\n        this.mapButtons();\n    }\n\n    mapButtons(): void {\n        const links = (this.floatingButtons?.links ?? []).filter(\n            Boolean\n        ) as CmsLink[];\n        const texts = (this.floatingButtons?.texts ?? []).filter(\n            Boolean\n        ) as CmsText[];\n\n        // helper: normaliza tokens\n        const toToken = (s?: string) =>\n            (s ?? '')\n                .toLowerCase()\n                .replace(/^icon-/, '')\n                .replace(/^babylon-/, '')\n                .normalize('NFD')\n                .replace(/[\\u0300-\\u036f]/g, '') // quita acentos\n                .replace(/\\s+/g, '');\n\n        // Busca label “bonito” en texts por token\n        const findTextLabel = (token: string) =>\n            texts.find(\n                (t) =>\n                    toToken(t.icon).includes(token) ||\n                    toToken(t.label).includes(token)\n            )?.label;\n\n        this.buttons = links.reduce<ButtonVM[]>((acc, link) => {\n            const labelTok = toToken(link.label);\n            const iconTok = toToken(link.icon);\n            const url = link.url?.trim() ?? '';\n\n            // Decide el kind por tokens/URL\n            let kind: 'whatsapp' | 'other' = 'other';\n            if (\n                labelTok.includes('whatsapp') ||\n                iconTok.includes('whatsapp') ||\n                url.includes('wa.me')\n            ) {\n                kind = 'whatsapp';\n            }\n\n            // Si no está en la whitelist, no lo pinto\n            if (!this.WANTED.has(kind)) return acc;\n\n            switch (kind) {\n                case 'whatsapp': {\n                    const numRaw = this.extractWaNumber(\n                        url,\n                        link.label,\n                        link.icon\n                    );\n                    const number = numRaw\n                        ? this.ensureCountryCode(numRaw)\n                        : undefined;\n                    const href = number\n                        ? `https://wa.me/${number}`\n                        : url && /^https?:\\/\\//i.test(url)\n                          ? url\n                          : 'https://wa.me/';\n                    const finalLabel = findTextLabel('whatsapp') || 'WhatsApp';\n\n                    acc.push({\n                        label: finalLabel,\n                        href,\n                        iconClass: 'babylon-whatsapp-green',\n                    });\n                    break;\n                }\n                default:\n                    // Si más adelante quieres otros casos, añádelos aquí.\n                    break;\n            }\n\n            return acc;\n        }, []);\n    }\n\n    // ================== helpers privados ==================\n\n    /** Extrae un número de WhatsApp desde url/label/icon en múltiples formatos */\n    private extractWaNumber(\n        url?: string,\n        label?: string,\n        icon?: string\n    ): string | undefined {\n        const sources = [url, label, icon].filter(Boolean) as string[];\n\n        for (const s of sources) {\n            // 1) wa.me/XXXXXXXX\n            let m = s.match(/wa\\.me\\/(\\d+)/i);\n            if (m?.[1]) return m[1];\n\n            // 2) api.whatsapp.com/send?phone=XXXXXXXX\n            m = s.match(/whatsapp\\.com\\/send\\?phone=(\\d+)/i);\n            if (m?.[1]) return m[1];\n\n            // 3) \"wa +34 621 295 816\" o \"whatsapp +34621295816\"\n            m = s.match(/(?:^|\\b)(?:wa|whatsapp)\\b[^+\\d]*\\+?([\\d\\s-]{6,})/i);\n            if (m?.[1]) return this.digits(m[1]);\n\n            // 4) último recurso: cualquier número largo en el string\n            m = s.match(/\\+?[\\d\\s-]{6,}/);\n            if (m?.[0]) return this.digits(m[0]);\n        }\n        return undefined;\n    }\n\n    /** Añade prefijo país si parece faltar; limpia '+' y '00' */\n    private ensureCountryCode(num: string): string {\n        if (!num) return num;\n        // quita '+' y '00'\n        num = num.replace(/^\\+/, '');\n        if (num.startsWith('00')) num = num.slice(2);\n\n        // si ya parece internacional, respeta\n        if (num.length > 9) return num;\n\n        // nacional típico (9 dígitos) -> añade CC\n        return `${this.defaultCountryCode}${num}`;\n    }\n\n    /** Solo dígitos */\n    private digits(s?: string): string {\n        return (s ?? '').replace(/\\D+/g, '');\n    }\n}\n","@if (floatingButtons?.links) {\n    <nav class=\"qa\" aria-label=\"Acciones rápidas\">\n        @for (item of buttons; track $index) {\n            @if (item) {\n                <a\n                    class=\"qa__btn\"\n                    [ngClass]=\"item.iconClass\"\n                    [href]=\"item.href\"\n                    target=\"_blank\"\n                    [attr.aria-label]=\"item.label\"\n                    [attr.data-label]=\"item.label\"\n                >\n                    <div class=\"info--icon icon--small\">\n                        <i\n                            class=\"icon--svg\"\n                            [ngClass]=\"item.iconClass\"\n                            aria-hidden=\"true\"\n                        ></i>\n                    </div>\n                </a>\n            }\n        }\n    </nav>\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport {\n    BabylonButtonI,\n    BabylonMultimediaI,\n    BabylonTextInfoI,\n} from '../../../interfaces';\nimport { BabylonAddressItemI } from '../../../interfaces/babylon-address-item.interface';\n\n@Component({\n    selector: 'lib-babylon-fo-addr-cont-img',\n    standalone: true,\n    imports: [BabylonLinkTypeDirective, CommonModule],\n    templateUrl: './babylon-fo-addr-cont-img.component.html',\n    styleUrl: './babylon-fo-addr-cont-img.component.scss',\n})\nexport class BabylonFoAddrContImgComponent {\n    @Input() texts?: BabylonTextInfoI;\n    @Input() multimedia?: BabylonMultimediaI;\n    @Input() buttons?: BabylonButtonI[];\n    @Input() links?: BabylonButtonI[];\n    @Input() address?: BabylonAddressItemI[];\n\n    buildContactHref(value?: string | null): string {\n        const v = (value ?? '').trim();\n        if (!v) return '#';\n\n        const lower = v.toLowerCase();\n\n        if (lower.startsWith('tel:') || lower.startsWith('mailto:')) return v;\n\n        if (this.isEmail(v)) {\n            return `mailto:${v}`;\n        }\n\n        if (this.looksLikePhone(v)) {\n            const phone = v.replace(/[^\\d+]/g, '');\n            return `tel:${phone}`;\n        }\n\n        return v;\n    }\n\n    private isEmail(v: string): boolean {\n        return /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(v.trim());\n    }\n\n    private looksLikePhone(v: string): boolean {\n        const cleaned = v.replace(/[^\\d]/g, '');\n        const allowedChars = /^[\\d\\s()+-]+$/;\n        return allowedChars.test(v) && cleaned.length >= 7;\n    }\n}\n","<section class=\"mdl-f01\">\n    <div class=\"mdl-container\">\n        <div class=\"m-left\">\n            @if (texts?.title) {\n                <h2 class=\"m-titulo\">{{ texts?.title }}</h2>\n            }\n            <div class=\"m-content\">\n                <div class=\"m-colm\">\n                    @if (texts?.addresstitle) {\n                        <div class=\"m-titulo\">{{ texts?.addresstitle }}</div>\n                    }\n                    @if (address?.[0]; as address) {\n                        @if (address.address) {\n                            <div class=\"m-text\">{{ address.address }}</div>\n                        }\n                        <div class=\"m-text\">\n                            @if (address.cp) {\n                                {{ address.cp }}\n                            }\n                            @if (address.locality ?? address.city) {\n                                {{ address.locality ?? address.city }}\n                            }\n                            @if (\n                                (address.locality ?? address.city) &&\n                                (address.province || address.country)\n                            ) {\n                                -\n                            }\n                            @if (address.province) {\n                                {{ address.province }}\n                            }\n                            @if (address.province && address.country) {\n                                -\n                            }\n                            @if (address.country) {\n                                {{ address.country }}\n                            }\n                        </div>\n                    }\n                    @if (buttons?.length) {\n                        <a\n                            type=\"button\"\n                            class=\"m-underline-red\"\n                            [attr.aria-label]=\"buttons?.[0]?.label\"\n                            [href]=\"buttons?.[0]?.url\"\n                            [linkType]=\"buttons?.[0]?.linkType\"\n                        >\n                            {{ buttons?.[0]?.label }}\n                        </a>\n                    }\n                </div>\n                <div class=\"m-colm\">\n                    @if (texts?.contacttitle) {\n                        <div class=\"m-titulo\">{{ texts?.contacttitle }}</div>\n                    }\n                    @if (links) {\n                        @for (item of links; track $index) {\n                            <a\n                                [href]=\"item?.url\"\n                                [attr.aria-label]=\"item?.label\"\n                                [linkType]=\"item?.linkType\"\n                                class=\"m-text m-underline-red\"\n                                >{{ item?.label }}</a\n                            >\n                        }\n                    } @else if (address?.[0]) {\n                        @if (address?.[0]?.phone; as phone) {\n                            <a\n                                [href]=\"buildContactHref(phone)\"\n                                [attr.aria-label]=\"phone\"\n                                class=\"m-text m-underline-red\"\n                                >{{ phone }}</a\n                            >\n                        }\n                        @if (address?.[0]?.email; as email) {\n                            <a\n                                [href]=\"buildContactHref(email)\"\n                                [attr.aria-label]=\"email\"\n                                class=\"m-text m-underline-red\"\n                                >{{ email }}</a\n                            >\n                        }\n                    }\n                </div>\n                @if (multimedia?.imagenes?.[0]; as img) {\n                    <div class=\"m-colmImg\">\n                        <img\n                            [src]=\"\n                                img.img?.src ||\n                                'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                            \"\n                            [alt]=\"img.img?.alt\"\n                        />\n                    </div>\n                }\n            </div>\n        </div>\n        @if (multimedia?.imagenes?.[0]; as img) {\n            <div class=\"m-image\">\n                <img\n                    [src]=\"\n                        img.img?.src ||\n                        'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                    \"\n                    [alt]=\"img.img?.alt\"\n                />\n            </div>\n        }\n    </div>\n</section>\n","import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n    AfterViewInit,\n    Component,\n    ElementRef,\n    inject,\n    Input,\n    PLATFORM_ID,\n} from '@angular/core';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport {\n    BabylonButtonI,\n    BabylonMultimediaI,\n    BabylonTextInfoI,\n} from '../../../interfaces';\nimport { Utils } from '../../../utils';\nimport {\n    getFirstImageByTagFromMultimedia,\n    getImagesByTagFromMultimedia,\n} from '../../../utils/mutimedia.utils';\n\n@Component({\n    selector: 'lib-babylon-fo-c3-img-txt',\n    standalone: true,\n    imports: [CommonModule, BabylonLinkTypeDirective],\n    templateUrl: './babylon-fo-c3-img-txt.component.html',\n    styleUrl: './babylon-fo-c3-img-txt.component.scss',\n})\nexport class BabylonFoC3ImgTxtComponent implements AfterViewInit {\n    @Input() texts?: BabylonTextInfoI;\n    @Input() multimedia?: BabylonMultimediaI;\n\n    tagName: string = 'FoC3ImgTxt';\n    tagNameLogo: string = 'FoC3ImgTxtLogo';\n    tagNameLogoHover: string = 'FoC3ImgTxtLogoHover';\n\n    private readonly platformId = inject(PLATFORM_ID);\n\n    constructor(private el: ElementRef<HTMLElement>) {}\n\n    ngAfterViewInit(): void {\n        if (!isPlatformBrowser(this.platformId)) return;\n        this.setHasFooterClassIfNeeded();\n    }\n\n    /** Equivalente al $(function () { ... }) del jQuery */\n    private setHasFooterClassIfNeeded(): void {\n        const root = this.el.nativeElement;\n\n        // si el propio root es `.mdl-f04`\n        const mdlF04 = root.classList.contains('mdl-f04')\n            ? root\n            : (root.querySelector('.mdl-f04') as HTMLElement | null);\n\n        if (!mdlF04) return;\n\n        const next = mdlF04.nextElementSibling as HTMLElement | null;\n\n        if (\n            next &&\n            next.tagName.toLowerCase() === 'section' &&\n            next.classList.contains('mdl-footer')\n        ) {\n            mdlF04.classList.add('has-footer');\n        }\n    }\n\n    getImagesByTag(tagName: string) {\n        return getImagesByTagFromMultimedia(this.multimedia, tagName);\n    }\n\n    getFirstImageByTag(tagName: string) {\n        return getFirstImageByTagFromMultimedia(this.multimedia, tagName);\n    }\n\n    buildMenuUrl(item: BabylonButtonI | undefined): string {\n        if (!item?.url) return '';\n\n        const baseUrl = item.url.replace(/\\/+$/, '');\n        const brand = (item.vars ?? '').toString().trim();\n\n        if (!brand) return baseUrl;\n\n        const slug = Utils.toSlug(brand);\n        if (!slug) return baseUrl;\n\n        return `${baseUrl}?brand=${slug}`;\n    }\n}\n","<section class=\"mdl-f04\">\n    <div class=\"mdl-container\">\n        @if (texts?.title) {\n            <h2 class=\"m-title\" [innerHTML]=\"texts?.title\"></h2>\n        }\n\n        @if (multimedia?.imagenes) {\n            <div class=\"m-left\">\n                @for (item of multimedia?.imagenes; track $index) {\n                    @if ($index < getImagesByTag(tagName).length) {\n                        <a\n                            [href]=\"buildMenuUrl(item.links?.[0])\"\n                            class=\"m-card\"\n                            [ngClass]=\"{\n                                red: $index % 3 === 0,\n                                blue: $index % 3 === 1,\n                                green: $index % 3 === 2,\n                            }\"\n                        >\n                            @if (getImagesByTag(tagNameLogo)) {\n                                <img\n                                    [src]=\"\n                                        getImagesByTag(tagNameLogo)[$index]?.img\n                                            ?.src\n                                    \"\n                                    [alt]=\"\n                                        getImagesByTag(tagNameLogo)[$index]?.img\n                                            ?.src\n                                    \"\n                                    class=\"m-logo\"\n                                />\n                            }\n                            @if (getImagesByTag(tagNameLogoHover)) {\n                                <img\n                                    [src]=\"\n                                        getImagesByTag(tagNameLogoHover)[$index]\n                                            ?.img?.src\n                                    \"\n                                    [alt]=\"\n                                        getImagesByTag(tagNameLogoHover)[$index]\n                                            ?.img?.src\n                                    \"\n                                    class=\"m-logo m-hover\"\n                                />\n                            }\n                            <span class=\"dot\"></span>\n                            @if (getImagesByTag(tagName)) {\n                                <div class=\"m-hover-img\">\n                                    <img\n                                        [src]=\"\n                                            getImagesByTag(tagName)[$index]?.img\n                                                ?.src\n                                        \"\n                                        [alt]=\"\n                                            getImagesByTag(tagName)[$index]?.img\n                                                ?.src\n                                        \"\n                                    />\n                                </div>\n                            }\n                        </a>\n                    }\n                }\n            </div>\n        }\n    </div>\n</section>\n","import { isPlatformBrowser } from '@angular/common';\nimport { Inject, Injectable, PLATFORM_ID } from '@angular/core';\n\nexport interface ScrollSpyTarget {\n    onScrollY(y: number): void;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ScrollSpyService {\n    private items = new Set<ScrollSpyTarget>();\n    private ticking = false;\n    private bound = false;\n\n    constructor(@Inject(PLATFORM_ID) private platformId: object) {}\n\n    register(item: ScrollSpyTarget): void {\n        if (!isPlatformBrowser(this.platformId)) return;\n        this.items.add(item);\n        if (!this.bound) {\n            window.addEventListener('scroll', this.onScroll, { passive: true });\n            this.bound = true;\n            // Dispara una primera evaluación\n            this.rafTick(window.scrollY);\n        }\n    }\n\n    unregister(item: ScrollSpyTarget): void {\n        this.items.delete(item);\n        if (this.items.size === 0 && this.bound) {\n            window.removeEventListener('scroll', this.onScroll);\n            this.bound = false;\n        }\n    }\n\n    private onScroll = () => {\n        if (this.ticking) return;\n        this.ticking = true;\n        const y = window.scrollY || window.pageYOffset || 0;\n        requestAnimationFrame(() => this.rafTick(y));\n    };\n\n    private rafTick(y: number) {\n        this.items.forEach((i) => i.onScrollY(y));\n        this.ticking = false;\n    }\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport {\n    Directive,\n    ElementRef,\n    HostBinding,\n    HostListener,\n    Inject,\n    OnDestroy,\n    OnInit,\n    PLATFORM_ID,\n} from '@angular/core';\nimport {\n    ScrollSpyService,\n    ScrollSpyTarget,\n} from '../../services/scroll/scroll-spy.service';\n\n@Directive({\n    selector: '.js-scrollto,[appScrollTo]',\n    standalone: true,\n})\nexport class ScrollToDirective implements OnInit, OnDestroy, ScrollSpyTarget {\n    @HostBinding('attr.role') role = 'button';\n    @HostBinding('attr.tabindex') tabindex = '0';\n    @HostBinding('class.active') isActive = false;\n\n    constructor(\n        private el: ElementRef<HTMLElement>,\n        private spy: ScrollSpyService,\n        @Inject(PLATFORM_ID) private platformId: object\n    ) {}\n\n    ngOnInit(): void {\n        if (!isPlatformBrowser(this.platformId)) return;\n        this.spy.register(this);\n        this.onScrollY(this.rootScrollTop());\n    }\n\n    ngOnDestroy(): void {\n        this.spy.unregister(this);\n    }\n\n    // ==== Eventos ====\n    @HostListener('click', ['$event'])\n    onClick(ev: Event) {\n        ev.preventDefault();\n        this.scrollToTarget(false);\n    }\n\n    @HostListener('keydown.enter', ['$event'])\n    @HostListener('keydown.space', ['$event'])\n    onKey(ev: Event) {\n        ev.preventDefault();\n        this.scrollToTarget(false);\n    }\n\n    // ==== Helpers ====\n    private attr(name: string): string | null {\n        return this.el.nativeElement.getAttribute(name);\n    }\n\n    private spacerBase(): number {\n        const raw = this.attr('data-scroll_spacer');\n        const n = raw ? parseInt(raw, 10) : 0;\n        return Number.isFinite(n) ? n : 0;\n    }\n\n    private widthAdj(onScroll: boolean): number {\n      if (!isPlatformBrowser(this.platformId)) return 0;\n\n        const w =\n            window.innerWidth || document.documentElement.clientWidth || 0;\n        if (onScroll) {\n            if (w >= 768) return 30;\n            if (w >= 540) return 20;\n        } else {\n            if (w >= 768) return 20;\n            if (w >= 540) return 10;\n        }\n        return 0;\n    }\n\n    private targetEl(): HTMLElement | null {\n        const sel = this.attr('data-scroll_to');\n        return sel ? (document.querySelector(sel) as HTMLElement | null) : null;\n    }\n\n    /** selector opcional para scroller custom */\n    private scrollContainer(): HTMLElement | null {\n        const sel = this.attr('data-scroll_container');\n        if (!sel) return null;\n        return document.querySelector(sel) as HTMLElement | null;\n    }\n\n    private rootScrollTop(): number {\n      if (!isPlatformBrowser(this.platformId)) return 0;\n        const se = document.scrollingElement as HTMLElement | null;\n        return se\n            ? se.scrollTop\n            : window.pageYOffset || document.documentElement.scrollTop || 0;\n    }\n\n    private pageTop(el: HTMLElement): number {\n        if (!isPlatformBrowser(this.platformId)) return 0;\n        const rect = el.getBoundingClientRect();\n        const pageY =\n            window.pageYOffset || document.documentElement.scrollTop || 0;\n        return rect.top + pageY;\n    }\n\n    private computeScrollTop(\n        onScroll: boolean\n    ): { scroller: HTMLElement | Window; top: number } | null {\n      if (!isPlatformBrowser(this.platformId)) return null;\n        const target = this.targetEl();\n        if (!target) return null;\n\n        const spacer = this.spacerBase() + this.widthAdj(onScroll);\n\n        // 1) Si hay contenedor custom, calculamos relativo a él\n        const container = this.scrollContainer();\n        if (container) {\n            const targetPage = this.pageTop(target);\n            const containerPage = this.pageTop(container);\n            // posición del target dentro del contenedor + scroll actual del contenedor\n            const relative = targetPage - containerPage;\n            const top = relative - spacer;\n            return { scroller: container, top: top < 0 ? 0 : top };\n        }\n\n        // 2) Por defecto: documento (como $('html, body'))\n        const top = this.pageTop(target) - spacer;\n        return { scroller: window, top: top < 0 ? 0 : top };\n    }\n\n    private scrollToTarget(fromScrollHandler: boolean) {\n      if (!isPlatformBrowser(this.platformId)) return;\n        const data = this.computeScrollTop(false);\n        if (!data) return;\n\n        const behavior: ScrollBehavior = window.matchMedia?.(\n            '(prefers-reduced-motion: reduce)'\n        ).matches\n            ? 'auto'\n            : 'smooth';\n\n        if (data.scroller instanceof HTMLElement) {\n            data.scroller.scrollTo({ top: data.top, behavior });\n        } else {\n            window.scrollTo({ top: data.top, behavior });\n        }\n\n        if (this.groupIsActive() && !fromScrollHandler)\n            this.activateSelfAndDeactivateSiblings();\n    }\n\n    private groupIsActive(): boolean {\n        const ul = this.el.nativeElement.closest('ul');\n        return ul?.getAttribute('data-scroll_active') === 'true';\n    }\n\n    private activateSelfAndDeactivateSiblings() {\n        this.isActive = true;\n        if (!this.groupIsActive()) return;\n        const parent = this.el.nativeElement.parentElement;\n        if (!parent) return;\n        Array.from(parent.children).forEach((ch) => {\n            if (ch !== this.el.nativeElement) ch.classList.remove('active');\n        });\n    }\n\n    // ==== ScrollSpyTarget ====\n    onScrollY(scrollY: number): void {\n      if (!isPlatformBrowser(this.platformId)) return;\n        const target = this.targetEl();\n        if (!target) return;\n        const style = window.getComputedStyle(target);\n        if (style.display === 'none') {\n            this.isActive = false;\n            return;\n        }\n\n        // Para marcar activo baste con usar la ventana\n        const data = this.computeScrollTop(true);\n        if (!data) return;\n        const top =\n            data.scroller instanceof HTMLElement\n                ? this.rootScrollTop()\n                : data.top;\n        const height = Math.max(target.offsetHeight, 1);\n        const inRange = scrollY >= data.top && scrollY < data.top + height;\n\n        if (this.groupIsActive()) this.isActive = inRange;\n    }\n}\n","import { Component } from '@angular/core';\nimport { ScrollToDirective } from '../../../directives/scrolls/scroll-to.directive';\nimport { SlickInitDirective } from '../../../directives/sliders/slick-init.directive';\n\n@Component({\n    selector: 'lib-babylon-fo-c3-txt-svg-cta',\n    standalone: true,\n    imports: [SlickInitDirective, ScrollToDirective],\n    templateUrl: './babylon-fo-c3-txt-svg-cta.component.html',\n    styleUrl: './babylon-fo-c3-txt-svg-cta.component.scss',\n})\nexport class BabylonFoC3TxtSvgCtaComponent {}\n","<footer\n    class=\"FoC3TxtSvgCta js-active-slider\"\n    appSlickInit\n    data-slider_autoplay=\"true\"\n    data-slider_fade=\"true\"\n    data-slider_pause=\"false\"\n    data-slider_name=\"FoC3TxtSvgCta__partners--slider\"\n    data-slider_showbtns=\"false\"\n    data-slider_showdots=\"false\"\n    data-slides_pc=\"1\"\n    data-slides_mobile_small=\"1\"\n    data-slides_mobile_xsmall=\"1\"\n    data-slider_draggable=\"true\"\n>\n    <div class=\"FoC3TxtSvgCta__top\">\n        <div class=\"FoC3TxtSvgCta__top--inner\">\n            <div class=\"FoC3TxtSvgCta__left\">\n                <div class=\"FoC3TxtSvgCta__item\">\n                    <h2>address</h2>\n                    <p>\n                        Street Forn de la Glória,14<br />\n                        07012 Palma de Mallorca<br />\n                        Spain\n                    </p>\n                </div>\n                <div class=\"FoC3TxtSvgCta__item\">\n                    <h2>contatc</h2>\n                    <p>\n                        <a href=\"tel:'+34871871202'\">T. +34 871 871 202</a\n                        ><br />\n                        <a href=\"mailto:'info@canbordoy.com'\" class=\"btn__link\"\n                            >info_canbordoy.com</a\n                        >\n                    </p>\n                </div>\n                <div class=\"FoC3TxtSvgCta__item\">\n                    <p>\n                        <a href=\"\" class=\"btn__link btn__link--reverse\"\n                            >Contact</a\n                        >\n                    </p>\n                </div>\n            </div>\n            <div class=\"FoC3TxtSvgCta__right\">\n                <div class=\"FoC3TxtSvgCta__social\">\n                    <h2>social</h2>\n                    <ul>\n                        <li\n                            class=\"FoC3TxtSvgCta__social--icons FoC3TxtSvgCta__social--icons-instagram\"\n                        >\n                            <a href=\"\">\n                                <svg\n                                    aria-hidden=\"true\"\n                                    class=\"CanBordoy-Map__icon-btn--graphic\"\n                                    focusable=\"false\"\n                                >\n                                    <use\n                                        href=\"/assets/babylon/svg/instagram.svg#instagram\"\n                                    ></use>\n                                </svg>\n                            </a>\n                        </li>\n                        <li\n                            class=\"FoC3TxtSvgCta__social--icons FoC3TxtSvgCta__social--icons-facebook\"\n                        >\n                            <a href=\"\">\n                                <svg\n                                    aria-hidden=\"true\"\n                                    class=\"CanBordoy-Map__icon-btn--graphic\"\n                                    focusable=\"false\"\n                                >\n                                    <use\n                                        href=\"/assets/babylon/svg/facebook.svg#facebook\"\n                                    ></use>\n                                </svg>\n                            </a>\n                        </li>\n                        <li\n                            class=\"FoC3TxtSvgCta__social--icons FoC3TxtSvgCta__social--icons-twitter\"\n                        >\n                            <a href=\"\">\n                                <svg\n                                    aria-hidden=\"true\"\n                                    class=\"CanBordoy-Map__icon-btn--graphic\"\n                                    focusable=\"false\"\n                                >\n                                    <use\n                                        href=\"/assets/babylon/svg/twitter.svg#twitter\"\n                                    ></use>\n                                </svg>\n                            </a>\n                        </li>\n                        <li\n                            class=\"FoC3TxtSvgCta__social--icons FoC3TxtSvgCta__social--icons-youtube\"\n                        >\n                            <a href=\"\">\n                                <svg\n                                    aria-hidden=\"true\"\n                                    class=\"CanBordoy-Map__icon-btn--graphic\"\n                                    focusable=\"false\"\n                                >\n                                    <use\n                                        href=\"/assets/babylon/svg/youtube.svg#youtube\"\n                                    ></use>\n                                </svg>\n                            </a>\n                        </li>\n                    </ul>\n                </div>\n                <div class=\"FoC3TxtSvgCta__partners\">\n                    <h2>partners</h2>\n                    <div class=\"swiper FoC3TxtSvgCta__partners--slider\">\n                        <div class=\"swiper-slide\">\n                            <img\n                                src=\"/assets/babylon/images/partners-logo-1.svg\"\n                                width=\"194\"\n                                height=\"73\"\n                            />\n                        </div>\n                        <div class=\"swiper-slide\">\n                            <img\n                                src=\"/assets/babylon/images/partners-logo-2.svg\"\n                                width=\"194\"\n                                height=\"73\"\n                            />\n                        </div>\n                        <div class=\"swiper-slide\">\n                            <img\n                                src=\"/assets/babylon/images/partners-logo-3.svg\"\n                                width=\"194\"\n                                height=\"73\"\n                            />\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n    <div class=\"FoC3TxtSvgCta__bottom\">\n        <div class=\"FoC3TxtSvgCta__bottom--inner\">\n            <ul>\n                <li><a href=\"\">Blog</a></li>\n                <li><a href=\"\">Awards</a></li>\n                <li><a href=\"\">Press zone</a></li>\n                <li><a href=\"\">Faq</a></li>\n                <li><a href=\"\">Pet Policy</a></li>\n                <li><a href=\"\">Ethics channel</a></li>\n                <li><a href=\"\">Privacy</a></li>\n                <li><a href=\"\">Legal notice</a></li>\n                <li><a href=\"\">Cookies</a></li>\n                <li><a href=\"\">Webmap</a></li>\n                <li><a href=\"\">Design by clicktotravel</a></li>\n            </ul>\n        </div>\n        <div\n            class=\"FoC3TxtSvgCta__scrollTop\"\n            role=\"button\"\n            appScrollTo\n            data-scroll_to=\"#page-top\"\n            data-scroll_spacer=\"0\"\n        >\n            <span class=\"FoC3TxtSvgCta__scrollTop--btn\">\n                <svg aria-hidden=\"true\" class=\"\" focusable=\"false\">\n                    <use\n                        href=\"/assets/babylon/svg/arrow-icon.svg#arrow-icon\"\n                    ></use>\n                </svg>\n            </span>\n            <span class=\"FoC3TxtSvgCta__scrollTop--btn-label\">Top</span>\n        </div>\n    </div>\n    <div class=\"FoC3TxtSvgCta__copyright\">\n        <p>Can Bordoy © 2025</p>\n    </div>\n</footer>\n","import { isPlatformBrowser } from '@angular/common';\nimport {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    Component,\n    ElementRef,\n    HostListener,\n    Input,\n    OnDestroy,\n    PLATFORM_ID,\n    inject,\n} from '@angular/core';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport {\n    BabylonButtonI,\n    BabylonMultimediaI,\n    BabylonTextInfoI,\n} from '../../../interfaces';\nimport { BabylonStyleGlobalItem } from '../../../interfaces/babylon-style.interface';\n\n@Component({\n    selector: 'lib-babylon-fo-lis-c4-txt',\n    standalone: true,\n    imports: [BabylonLinkTypeDirective],\n    templateUrl: './babylon-fo-lis-c4-txt.component.html',\n    styleUrl: './babylon-fo-lis-c4-txt.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonFoLisC4TxtComponent implements AfterViewInit, OnDestroy {\n    private readonly platformId = inject(PLATFORM_ID);\n\n    // guardamos los handlers para poder quitarlos al cambiar de modo / destruir\n    private titleClickHandlers = new Map<HTMLElement, (event: Event) => void>();\n\n    @Input() texts?: BabylonTextInfoI;\n    @Input() multimedia?: BabylonMultimediaI;\n    @Input() buttons?: BabylonButtonI[];\n    @Input() styles?: BabylonStyleGlobalItem;\n\n    constructor(private el: ElementRef<HTMLElement>) {}\n\n    ngAfterViewInit(): void {\n        if (!isPlatformBrowser(this.platformId)) return;\n        this.activarAcordeon();\n    }\n\n    ngOnDestroy(): void {\n        if (!isPlatformBrowser(this.platformId)) return;\n        this.cleanTitleListeners();\n    }\n\n    @HostListener('window:resize')\n    onResize(): void {\n        if (!isPlatformBrowser(this.platformId)) return;\n        this.activarAcordeon();\n    }\n\n    /** Equivalente a tu función activarAcordeon() de jQuery */\n    private activarAcordeon(): void {\n        const root = this.el.nativeElement;\n\n        const groups = Array.from(\n            root.querySelectorAll<HTMLElement>('.m-right .m-submenu .m-group')\n        );\n\n        const pages = groups\n            .map((g) => g.querySelector<HTMLElement>('.m-pages'))\n            .filter((el): el is HTMLElement => !!el);\n\n        // quitamos cualquier listener previo\n        this.cleanTitleListeners();\n\n        if (window.innerWidth <= 1024) {\n            // MODO ACORDEÓN (móvil / tablet)\n            pages.forEach((p) => {\n                p.style.display = 'none';\n            });\n            groups.forEach((g) => g.classList.remove('open'));\n\n            groups.forEach((group) => {\n                const title = group.querySelector<HTMLElement>('.m-title');\n                const pagesEl = group.querySelector<HTMLElement>('.m-pages');\n                if (!title || !pagesEl) return;\n\n                const handler = (event: Event) => {\n                    event.preventDefault();\n\n                    // cerrar los demás grupos\n                    groups.forEach((other) => {\n                        if (other === group) return;\n                        other.classList.remove('open');\n                        const otherPages =\n                            other.querySelector<HTMLElement>('.m-pages');\n                        if (otherPages) {\n                            otherPages.style.display = 'none';\n                        }\n                    });\n\n                    // alternar el actual\n                    const isOpen = group.classList.contains('open');\n                    if (isOpen) {\n                        group.classList.remove('open');\n                        pagesEl.style.display = 'none';\n                    } else {\n                        group.classList.add('open');\n                        pagesEl.style.display = 'flex';\n                    }\n                };\n\n                title.addEventListener('click', handler);\n                this.titleClickHandlers.set(title, handler);\n            });\n        } else {\n            // MODO DESKTOP: todo visible, sin acordeón\n            pages.forEach((p) => {\n                p.style.display = ''; // vuelve al display por defecto\n            });\n            groups.forEach((g) => g.classList.remove('open'));\n        }\n    }\n\n    /** Elimina todos los listeners de los títulos */\n    private cleanTitleListeners(): void {\n        this.titleClickHandlers.forEach((handler, el) => {\n            el.removeEventListener('click', handler);\n        });\n        this.titleClickHandlers.clear();\n    }\n\n    /** Equivalente a scrolltopFooter() */\n    scrollTopFooter(): void {\n        if (!isPlatformBrowser(this.platformId)) return;\n\n        window.scrollTo({\n            top: 0,\n            behavior: 'smooth',\n        });\n    }\n\n    getButtonsByOrder(order: string) {\n        let buttonList: BabylonButtonI[] = [];\n        this.buttons?.map((btn: BabylonButtonI) => {\n            if (btn.order === order) {\n                buttonList.push(btn);\n            }\n        });\n        return buttonList;\n    }\n}\n","<!-- con la clase pt-0 podemos eliminar el espacio superior, ya que a veces se necesita por diseño -->\n@if (buttons) {\n    <section class=\"mdl-footer pt-0\">\n        <div class=\"mdl-container\">\n            <div class=\"m-top\">\n                <div class=\"m-left\">\n                    <div class=\"m-group\">\n                        @if (texts?.contacttitle) {\n                            <h2 class=\"m-title\">{{ texts?.contacttitle }}</h2>\n                        }\n                        <div class=\"m-pages\">\n                            @if (texts?.contactEmail) {\n                                <a\n                                    [href]=\"'mailto:' + texts?.contactEmail\"\n                                    class=\"m-page m-underline\"\n                                    [attr.aria-label]=\"texts?.contactEmail\"\n                                    [style.--hover-color]=\"\n                                        styles?.primaryHover ??\n                                        styles?.primary ??\n                                        '#ed3b37'\n                                    \"\n                                >\n                                    {{ texts?.contactEmail }}\n                                </a>\n                            }\n                            @if (texts?.contactTel) {\n                                <a\n                                    [href]=\"'tel:' + texts?.contactTel\"\n                                    class=\"m-page m-underline\"\n                                    [attr.aria-label]=\"texts?.contactTel\"\n                                    [style.--hover-color]=\"\n                                        styles?.primaryHover ??\n                                        styles?.primary ??\n                                        '#ed3b37'\n                                    \"\n                                    >T. {{ texts?.contactTel }}</a\n                                >\n                            }\n                        </div>\n                    </div>\n\n                    <div class=\"m-group\">\n                        @if (texts?.contactOfficeTitle) {\n                            <h2 class=\"m-title\">\n                                {{ texts?.contactOfficeTitle }}\n                            </h2>\n                        }\n                        <div class=\"m-pages\">\n                            @if (texts?.contactOffice) {\n                                <a\n                                    [href]=\"'mailto:' + texts?.contactOffice\"\n                                    class=\"m-page m-underline\"\n                                    [attr.aria-label]=\"texts?.contactOffice\"\n                                    [style.--hover-color]=\"\n                                        styles?.primaryHover ??\n                                        styles?.primary ??\n                                        '#ed3b37'\n                                    \"\n                                    >{{ texts?.contactOffice }}</a\n                                >\n                            }\n                        </div>\n                    </div>\n                </div>\n\n                <div class=\"m-right\">\n                    <div class=\"m-submenu\">\n                        <div class=\"m-group\">\n                            <div class=\"foot-icon\"></div>\n                            @if (texts?.grupoTitle) {\n                                <h2 class=\"m-title\">{{ texts?.grupoTitle }}</h2>\n                            }\n                            <div class=\"m-pages\">\n                                @for (\n                                    item of getButtonsByOrder('1');\n                                    track $index\n                                ) {\n                                    <a\n                                        [href]=\"item.url\"\n                                        [linkType]=\"item.linkType\"\n                                        class=\"m-page\"\n                                        role=\"link\"\n                                        [attr.aria-label]=\"item.label\"\n                                        [style.--hover-color]=\"\n                                            styles?.primaryHover ??\n                                            styles?.primary ??\n                                            '#ed3b37'\n                                        \"\n                                        >{{ item.label }}</a\n                                    >\n                                }\n                            </div>\n                        </div>\n                        <div class=\"m-group\">\n                            <div class=\"foot-icon\"></div>\n                            @if (texts?.aboutTitle) {\n                                <h2 class=\"m-title\">{{ texts?.aboutTitle }}</h2>\n                            }\n                            <div class=\"m-pages\">\n                                @for (\n                                    item of getButtonsByOrder('2');\n                                    track $index\n                                ) {\n                                    <a\n                                        [href]=\"item.url\"\n                                        [linkType]=\"item.linkType\"\n                                        class=\"m-page\"\n                                        role=\"link\"\n                                        [attr.aria-label]=\"item.label\"\n                                        [style.--hover-color]=\"\n                                            styles?.primaryHover ??\n                                            styles?.primary ??\n                                            '#ed3b37'\n                                        \"\n                                        >{{ item.label }}</a\n                                    >\n                                }\n                            </div>\n                        </div>\n                        <div class=\"m-group\">\n                            <div class=\"foot-icon\"></div>\n                            @if (texts?.helpTitle) {\n                                <h2 class=\"m-title\">{{ texts?.helpTitle }}</h2>\n                            }\n                            <div class=\"m-pages\">\n                                @for (\n                                    item of getButtonsByOrder('3');\n                                    track $index\n                                ) {\n                                    <a\n                                        [href]=\"item.url\"\n                                        [linkType]=\"item.linkType\"\n                                        class=\"m-page\"\n                                        role=\"link\"\n                                        [attr.aria-label]=\"item.label\"\n                                        [style.--hover-color]=\"\n                                            styles?.primaryHover ??\n                                            styles?.primary ??\n                                            '#ed3b37'\n                                        \"\n                                        >{{ item.label }}</a\n                                    >\n                                }\n                            </div>\n                        </div>\n                    </div>\n                    <button\n                        type=\"button\"\n                        class=\"m-scrolltop\"\n                        aria-label=\"Scroll to top\"\n                        (click)=\"scrollTopFooter()\"\n                    >\n                        @if (texts?.scrolltext) {\n                            <div class=\"m-text\">{{ texts?.scrolltext }}</div>\n                        }\n                        <svg\n                            width=\"44\"\n                            height=\"44\"\n                            viewBox=\"0 0 44 44\"\n                            fill=\"none\"\n                            xmlns=\"http://www.w3.org/2000/svg\"\n                        >\n                            <path\n                                d=\"M22 44C9.84974 44 0 34.1503 0 22C0 9.84974 9.84974 0 22 0C34.1503 0 44 9.84974 44 22C44 34.1503 34.1503 44 22 44Z\"\n                                [attr.fill]=\"styles?.primary ?? '#FF4338'\"\n                            />\n                            <path\n                                d=\"M22 43C10.402 43 1 33.598 1 22C1 10.402 10.402 1 22 1C33.598 1 43 10.402 43 22C43 33.598 33.598 43 22 43Z\"\n                                [attr.fill]=\"styles?.primary ?? '#FF4338'\"\n                            />\n                            <path\n                                d=\"M21.2757 18.133L16.2237 23.211C16.042 23.3936 15.9403 23.6409 15.941 23.8984C15.9416 24.156 16.0446 24.4028 16.2272 24.5845C16.4098 24.7661 16.6571 24.8678 16.9146 24.8672C17.1722 24.8665 17.419 24.7636 17.6007 24.581L21.9497 20.181L26.3247 24.578C26.5063 24.7606 26.7531 24.8635 27.0107 24.8642C27.2683 24.8648 27.5156 24.7631 27.6982 24.5815C27.8808 24.3998 27.9837 24.153 27.9844 23.8954C27.985 23.6379 27.8833 23.3906 27.7017 23.208L22.6517 18.132C22.4691 17.9496 22.2215 17.8473 21.9635 17.8475C21.7054 17.8477 21.458 17.9504 21.2757 18.133Z\"\n                                fill=\"white\"\n                            />\n                        </svg>\n                    </button>\n                </div>\n            </div>\n            <div class=\"m-bottom\">\n                <div class=\"m-left\">\n                    @if (multimedia?.imagenes?.[0]; as img) {\n                        <img\n                            [src]=\"\n                                img.img?.src ||\n                                'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                            \"\n                            [alt]=\"img.img?.alt\"\n                        />\n                    }\n                    @if (texts?.copyrighttext) {\n                        <span>{{ texts?.copyrighttext }}</span>\n                    }\n                </div>\n                <div class=\"m-right\">\n                    <div class=\"m-legal\">\n                        @for (item of getButtonsByOrder('4'); track $index) {\n                            <a\n                                [href]=\"item.url\"\n                                [linkType]=\"item.linkType\"\n                                class=\"m-page m-underline\"\n                                role=\"link\"\n                                [attr.aria-label]=\"item.label\"\n                                [style.--hover-color]=\"\n                                    styles?.primaryHover ??\n                                    styles?.primary ??\n                                    '#ed3b37'\n                                \"\n                                >{{ item.label }}</a\n                            >\n                        }\n                    </div>\n                </div>\n            </div>\n        </div>\n    </section>\n}\n\n@if (!styles) {\n    <section class=\"mdl-decoration\">\n        <div class=\"red\"></div>\n        <div class=\"blue\"></div>\n        <div class=\"green\"></div>\n    </section>\n} @else {\n    <section\n        class=\"mdl-decoration unicolor\"\n        [style.background-color]=\"styles.primary\"\n    ></section>\n}\n","import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n    AfterViewInit,\n    Component,\n    ElementRef,\n    Inject,\n    Input,\n    OnChanges,\n    OnDestroy,\n    PLATFORM_ID,\n    SimpleChanges,\n    ViewChild,\n} from '@angular/core';\nimport Swiper, { Navigation, SwiperOptions } from 'swiper';\nimport { BabylonItemI, BabylonTextInfoI } from '../../../interfaces';\nimport { BabylonStyleGlobalItem } from '../../../interfaces/babylon-style.interface';\nimport { Utils } from '../../../utils';\n\n@Component({\n    selector: 'lib-babylon-fo-sli-img',\n    standalone: true,\n    imports: [CommonModule],\n    templateUrl: './babylon-fo-sli-img.component.html',\n    styleUrl: './babylon-fo-sli-img.component.scss',\n})\nexport class BabylonFoSliImgComponent\n    implements AfterViewInit, OnChanges, OnDestroy\n{\n    @Input() texts?: BabylonTextInfoI;\n    @Input() items?: BabylonItemI[];\n    @Input() styles?: BabylonStyleGlobalItem;\n    @ViewChild('swiperContainer', { static: false })\n    swiperContainer?: ElementRef<HTMLElement>;\n    @ViewChild('prevBtn', { static: false }) prevBtn?: ElementRef<HTMLElement>;\n    @ViewChild('nextBtn', { static: false }) nextBtn?: ElementRef<HTMLElement>;\n\n    private swiper?: Swiper;\n    private viewReady = false;\n    private cssLoaded = false;\n\n    constructor(@Inject(PLATFORM_ID) private platformId: object) {\n        Swiper.use([Navigation]);\n    }\n\n    ngAfterViewInit(): void {\n        if (!isPlatformBrowser(this.platformId)) return;\n        this.viewReady = true;\n\n        // carga css y luego intenta init\n        Utils.loadStyle$('assets/babylon/css/swiper-bundle.min.css').subscribe({\n            next: () => {\n                this.cssLoaded = true;\n                this.tryInit();\n            },\n            error: () => {\n                this.cssLoaded = true;\n                this.tryInit();\n            },\n        });\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if (!isPlatformBrowser(this.platformId)) return;\n        if (changes['items']) this.tryInit();\n    }\n\n    private tryInit(): void {\n        if (!this.viewReady) return;\n        if (!this.cssLoaded) return;\n        if (!this.items?.length) return;\n\n        if (!this.swiperContainer?.nativeElement) return;\n        if (!this.prevBtn?.nativeElement || !this.nextBtn?.nativeElement)\n            return;\n\n        // espera a que el DOM tenga tamaños reales\n        requestAnimationFrame(() => this.initSwiper());\n    }\n\n    private initSwiper(): void {\n        const el = this.swiperContainer!.nativeElement;\n\n        if (this.swiper) {\n            try {\n                this.swiper.destroy(true, true);\n            } catch {}\n            this.swiper = undefined;\n        }\n\n        const options: SwiperOptions = {\n            modules: [Navigation],\n            loop: false,\n            navigation: {\n                prevEl: this.prevBtn?.nativeElement,\n                nextEl: this.nextBtn?.nativeElement,\n            },\n            watchOverflow: true,\n            observer: true,\n            observeParents: true,\n\n            breakpoints: {\n                0: { slidesPerView: 1, spaceBetween: 16 },\n                768: { slidesPerView: 2, spaceBetween: 20 },\n                1024: { slidesPerView: 3, spaceBetween: 24 },\n            },\n        };\n\n        this.swiper = new Swiper(el, options);\n\n        // recalcula cuando cargan imágenes\n        setTimeout(() => {\n            this.swiper?.update();\n            this.swiper?.navigation?.update();\n        }, 0);\n    }\n\n    ngOnDestroy(): void {\n        if (!isPlatformBrowser(this.platformId)) return;\n        try {\n            this.swiper?.destroy(true, true);\n        } catch {}\n    }\n}\n","<section class=\"mdl-f02\">\n    <div class=\"mdl-container\">\n        @if (items?.length) {\n            <div class=\"swiper-overflow swiper\" #swiperContainer>\n                <div class=\"swiper-wrapper\">\n                    @for (item of items; track $index) {\n                        <div class=\"swiper-slide\">\n                            <img\n                                [src]=\"\n                                    item?.img?.src ||\n                                    'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                \"\n                                [alt]=\"item?.img?.alt\"\n                            />\n                        </div>\n                    }\n                </div>\n            </div>\n        }\n        @if (texts?.title) {\n            <div class=\"m-left\">\n                <h2 class=\"m-titulo\">{{ texts?.title }}</h2>\n            </div>\n        }\n        <button\n            type=\"button\"\n            class=\"m-swiper-button-s next\"\n            aria-label=\"Previous slide\"\n            #nextBtn\n            [style.--color]=\"styles?.primary ?? '#ed3b37'\"\n            [style.--hover-color]=\"\n                styles?.primaryHover ?? styles?.primary ?? '#ed3b37'\n            \"\n        >\n            <svg\n                width=\"8\"\n                height=\"13\"\n                viewBox=\"0 0 8 13\"\n                fill=\"none\"\n                xmlns=\"http://www.w3.org/2000/svg\"\n            >\n                <path\n                    d=\"M6.73421 6.29129L1.65621 1.23929C1.47361 1.05761 1.22632 0.955919 0.968739 0.956575C0.711158 0.957232 0.464388 1.06018 0.282714 1.24279C0.101041 1.42539 -0.00065322 1.67268 3.15776e-06 1.93026C0.000659535 2.18784 0.103613 2.43461 0.286214 2.61629L4.68621 6.96529L0.289214 11.3403C0.106613 11.522 0.00365954 11.7687 0.00300317 12.0263C0.00234679 12.2839 0.104041 12.5312 0.285714 12.7138C0.467388 12.8964 0.714158 12.9993 0.971739 13C1.22932 13.0007 1.47661 12.899 1.65921 12.7173L6.73521 7.66729C6.91755 7.48468 7.01987 7.23713 7.01968 6.97908C7.0195 6.72103 6.91681 6.47363 6.73421 6.29129Z\"\n                    fill=\"white\"\n                />\n            </svg>\n        </button>\n        <button\n            type=\"button\"\n            class=\"m-swiper-button-s prev\"\n            aria-label=\"Next slide\"\n            #prevBtn\n            [style.--color]=\"styles?.primary ?? '#ed3b37'\"\n            [style.--hover-color]=\"\n                styles?.primaryHover ?? styles?.primary ?? '#ed3b37'\n            \"\n        >\n            <svg\n                width=\"8\"\n                height=\"13\"\n                viewBox=\"0 0 8 13\"\n                fill=\"none\"\n                xmlns=\"http://www.w3.org/2000/svg\"\n            >\n                <path\n                    d=\"M1.26579 6.29129L6.34379 1.23929C6.52639 1.05761 6.77368 0.955919 7.03126 0.956575C7.28884 0.957232 7.53561 1.06018 7.71729 1.24279C7.89896 1.42539 8.00065 1.67268 8 1.93026C7.99934 2.18784 7.89639 2.43461 7.71379 2.61629L3.31379 6.96529L7.71079 11.3403C7.89339 11.522 7.99634 11.7687 7.997 12.0263C7.99765 12.2839 7.89596 12.5312 7.71429 12.7138C7.53261 12.8964 7.28584 12.9993 7.02826 13C6.77068 13.0007 6.52339 12.899 6.34079 12.7173L1.26479 7.66729C1.08245 7.48468 0.980128 7.23713 0.980316 6.97908C0.980503 6.72103 1.08319 6.47363 1.26579 6.29129Z\"\n                    fill=\"white\"\n                />\n            </svg>\n        </button>\n    </div>\n</section>\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({ name: 'cleanPhone', standalone: true })\nexport class BabylonCleanPhonePipe implements PipeTransform {\n    transform(phone: string | undefined): string {\n        return phone ? phone.replace(/\\s/g, '') : '';\n    }\n}\n","import {\n    ChangeDetectionStrategy,\n    Component,\n    Input,\n    effect,\n} from '@angular/core';\nimport { BabylonButtonI } from '../../../interfaces/babylon-button.interface';\nimport { BabylonImageI } from '../../../interfaces/babylon-image.interface';\nimport { CommonModule } from '@angular/common';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport { BabylonAdvInfoI } from '../babylon-advantages/babylon-advantages-info.interface';\nimport { BabylonCleanPhonePipe } from '../../../pipes/babylon-clean-phone.pipe';\n\n@Component({\n    selector: 'lib-babylon-footer-contact',\n    standalone: true,\n    imports: [CommonModule, BabylonLinkTypeDirective, BabylonCleanPhonePipe],\n    templateUrl: './babylon-footer-contact.component.html',\n    styleUrl: './babylon-footer-contact.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonFooterContactComponent {\n    @Input() title?: string;\n    @Input() text?: string;\n    @Input() advantages?: BabylonAdvInfoI[];\n    @Input() links?: BabylonButtonI[];\n    @Input() button?: BabylonButtonI;\n    @Input() extraTxt?: string;\n    @Input() img?: BabylonImageI;\n    @Input() address?: BabylonFooterContactAddressItemI;\n}\n\nexport interface BabylonFooterContactAddressItemI {\n    address?: string;\n    city?: string;\n    province?: string;\n    country?: string;\n    cp?: string;\n    locality?: string;\n    phone?: string;\n    email?: string;\n    lat?: string;\n    lon?: string;\n}\n","<section class=\"babylon__footer-contact margin-main1\">\n    <div class=\"container-fluid cs_plr_100\">\n        <div class=\"footer-contact--module\">\n            <div class=\"footer-contact--info\">\n                <div class=\"footer-contact--head\">\n                    @if (title) {\n                        <h2 class=\"title--small mb--30\">{{ title }}</h2>\n                    }\n                    @if (text) {\n                        <p class=\"text\">{{ text }}</p>\n                    }\n                    @if (address) {\n                        <p class=\"text\">\n                            @if (address.address) {\n                                {{ address.address }}<br />\n                            }\n                            @if (address.cp) {\n                                {{ address.cp }}\n                            }\n                            @if (address.city) {\n                                {{ address.city }},\n                            }\n                            @if (address.locality) {\n                                {{ address.locality }}<br />\n                            }\n                            @if (address.province) {\n                                {{ address.province }},\n                            }\n                            @if (address.country) {\n                                {{ address.country }}\n                            }\n                        </p>\n                    }\n                    @if (advantages?.length) {\n                        <ul class=\"mt--30\">\n                            @for (adv of advantages; track $index) {\n                                <li>\n                                    <span class=\"info--icon\"\n                                        ><i\n                                            class=\"icon--svg\"\n                                            [ngClass]=\"adv.icon\"\n                                        ></i\n                                    ></span>\n                                    <p class=\"text\">{{ adv.text }}</p>\n                                </li>\n                            }\n                        </ul>\n                    }\n                </div>\n                @if (address?.email && address?.phone) {\n                    <div class=\"footer-contact--foot\">\n                        <p>\n                            <a\n                                [attr.aria-label]=\"address?.email\"\n                                [href]=\"'mailto:' + address?.email\"\n                                linkType=\"external\"\n                                >{{ address?.email }}</a\n                            >\n                        </p>\n                        <p>\n                            <a\n                                [attr.aria-label]=\"address?.phone\"\n                                [href]=\"'tel:' + (address?.phone | cleanPhone)\"\n                                linkType=\"external\"\n                                >{{ address?.phone }}</a\n                            >\n                        </p>\n                    </div>\n                } @else {\n                    @if (links) {\n                        <div class=\"footer-contact--foot\">\n                            @for (link of links; track $index) {\n                                <p>\n                                    <a\n                                        [attr.aria-label]=\"link?.label\"\n                                        [href]=\"link?.url\"\n                                        [linkType]=\"link?.linkType\"\n                                        [innerHTML]=\"link?.label\"\n                                    ></a>\n                                </p>\n                            }\n                        </div>\n                    }\n                }\n            </div>\n            <div class=\"footer-contact--photo\">\n                @if (extraTxt) {\n                    <span class=\"footer-contact--tag\">{{ extraTxt }}</span>\n                }\n                @if (img) {\n                    <img\n                        [src]=\"img.src\"\n                        [alt]=\"img.alt\"\n                        class=\" \"\n                        loading=\"lazy\"\n                    />\n                }\n                @if (button) {\n                    <div class=\"footer-contact--btns\">\n                        <a\n                            [attr.aria-label]=\"button.label\"\n                            class=\"btn btn_call btn--light\"\n                            [href]=\"button.url\"\n                            [linkType]=\"button.linkType\"\n                        >\n                            <b>{{ button.label }}</b>\n                        </a>\n                    </div>\n                }\n            </div>\n        </div>\n    </div>\n</section>\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { BabylonButtonI } from '../../../interfaces/babylon-button.interface';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\n\n@Component({\n    selector: 'lib-babylon-footer-links',\n    standalone: true,\n    imports: [CommonModule, BabylonLinkTypeDirective],\n    templateUrl: './babylon-footer-links.component.html',\n    styleUrl: './babylon-footer-links.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonFooterLinksComponent {\n    @Input() copyright?: string;\n    @Input() year?: string;\n    @Input() buttons?: BabylonButtonI[];\n}\n","<section class=\"babylon__footer-links\">\n    <div class=\"cs_bottom_footer_wrap\">\n        <div class=\"container\">\n            <div class=\"cs_bottom_footer position-relative\">\n                @if (copyright) {\n                    <div class=\"cs_copyright\">\n                        {{ copyright }}\n                        @if (year) {\n                            <span class=\"cs_copyright_year\"> {{ year }} </span>\n                        }\n                    </div>\n                }\n                @if (buttons) {\n                    <div class=\"cs_bottom_footer_right\">\n                        <ul class=\"cs_footer_links cs_mp_0\">\n                            @for (button of buttons; track $index) {\n                                <li>\n                                    <a\n                                        [attr.aria-label]=\"button?.label\"\n                                        [href]=\"button?.url\"\n                                        [linkType]=\"button?.linkType\"\n                                        >{{ button?.label }}</a\n                                    >\n                                </li>\n                            }\n                        </ul>\n                    </div>\n                }\n            </div>\n        </div>\n    </div>\n</section>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport {\n    BabylonImageI,\n    BabylonTexts,\n    BabylonButtonI,\n} from '../../../interfaces';\nimport { CommonModule } from '@angular/common';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\n\n@Component({\n    selector: 'lib-babylon-footer-logos',\n    standalone: true,\n    imports: [CommonModule, BabylonLinkTypeDirective],\n    templateUrl: './babylon-footer-logos.component.html',\n    styleUrl: './babylon-footer-logos.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonFooterLogosComponent {\n    @Input() logos?: BabylonFooterLogoItemI[];\n    @Input() texts?: BabylonTexts;\n    @Input() buttons?: BabylonButtonI[];\n\n    get filteredButtons() {\n        return (this.buttons || []).filter((b) => !!b);\n    }\n\n    hasContent() {\n        return (\n            (this.texts &&\n                (this.texts.title ||\n                    this.texts.subtitle ||\n                    this.texts.description)) ||\n            this.filteredButtons.length\n        );\n    }\n}\n\nexport interface BabylonFooterLogoItemI {\n    img?: BabylonImageI;\n    link?: BabylonButtonI;\n}\n","<section class=\"babylon__footer-logos\">\n    <div class=\"container\">\n        @if (hasContent()) {\n            <div class=\"intro_info align--center no-align pt--30\">\n                @if (texts?.title) {\n                    <h1 class=\"title--small mb--10\">{{ texts?.title }}</h1>\n                }\n                @if (texts?.subtitle) {\n                    <h2 class=\"title\">{{ texts?.subtitle }}</h2>\n                }\n                @if (texts?.description) {\n                    <p class=\"text mb--10\" [innerHTML]=\"texts?.description\"></p>\n                }\n                @if (buttons?.length) {\n                    <div class=\"btns__box align--center\">\n                        @for (button of buttons; track $index) {\n                            @if (button) {\n                                <div>\n                                    <a\n                                        [attr.aria-label]=\"button?.label\"\n                                        [href]=\"button?.url\"\n                                        [linkType]=\"button?.linkType\"\n                                        class=\"btn btn_primary\"\n                                        ><b>{{ button?.label }}</b\n                                        ><span\n                                            class=\"babylon-arrow-right-big\"\n                                        ></span\n                                    ></a>\n                                </div>\n                            }\n                        }\n                    </div>\n                }\n            </div>\n        }\n        @if (logos) {\n            <ul>\n                @for (logo of logos; track $index) {\n                    <li>\n                        @if (logo.link) {\n                            <a\n                                [attr.aria-label]=\"logo.link.url\"\n                                [href]=\"logo.link.url\"\n                                [linkType]=\"logo.link.linkType\"\n                                aria-label=\"logo.link.url\"\n                            >\n                                <img\n                                    [src]=\"\n                                        logo.img?.src ||\n                                        'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                    \"\n                                    [alt]=\"logo.img?.alt || 'logo'\"\n                                    loading=\"lazy\"\n                            /></a>\n                        } @else {\n                            <img\n                                [src]=\"\n                                    logo.img?.src ||\n                                    'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                \"\n                                [alt]=\"logo.img?.alt || 'logo'\"\n                                loading=\"lazy\"\n                            />\n                        }\n                    </li>\n                }\n            </ul>\n        }\n    </div>\n</section>\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { BabylonButtonI } from '../../../interfaces/babylon-button.interface';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\n\n@Component({\n    selector: 'lib-babylon-footer-social',\n    standalone: true,\n    imports: [CommonModule, BabylonLinkTypeDirective],\n    templateUrl: './babylon-footer-social.component.html',\n    styleUrl: './babylon-footer-social.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonFooterSocialComponent {\n    @Input() title?: string;\n    @Input() text?: string;\n    @Input() links?: BabylonButtonI[];\n}\n","<section class=\"babylon__footer-socials margin-main\">\n    <div class=\"babylon__footer-socials__wrap\">\n        <div class=\"container\">\n            <div class=\"babylon__footer-socials__inner\">\n                @if (title) {\n                    <div class=\"cs_bottom_footer_left\">\n                        <span class=\"text\">{{ title }}</span>\n                    </div>\n                }\n                @if (links) {\n                    <div class=\"cs_bottom_footer_center\">\n                        <ul class=\"cs_social_btns cs_style_1\">\n                            @for (link of links; track $index) {\n                                @if (link.icon) {\n                                    <li>\n                                        <a\n                                            [attr.aria-label]=\"link.icon\"\n                                            [href]=\"link.url || link.linkValue\"\n                                            linkType=\"external\"\n                                            class=\"cs_center\"\n                                        >\n                                            <span\n                                                class=\"info--icon icon--medium\"\n                                            >\n                                                <i [ngClass]=\"link.icon\"></i>\n                                            </span>\n                                        </a>\n                                    </li>\n                                }\n                            }\n                        </ul>\n                    </div>\n                }\n                @if (text) {\n                    <div class=\"cs_bottom_footer_right\">\n                        <span class=\"text\">{{ text }}</span>\n                    </div>\n                }\n            </div>\n        </div>\n    </div>\n</section>\n","import { BabylonButtonI } from '../../../interfaces/babylon-button.interface';\n\nexport class BabylonFooterSocialI {\n    title?: string;\n    text?: string;\n    links?: BabylonButtonI[];\n}\n","import { CommonModule } from '@angular/common';\nimport { FormArray, FormControl } from '@angular/forms';\nimport {\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    EventEmitter,\n    Input,\n    OnInit,\n    Output,\n    signal,\n} from '@angular/core';\nimport {\n    AbstractControl,\n    FormBuilder,\n    FormGroup,\n    FormsModule,\n    ReactiveFormsModule,\n    ValidationErrors,\n    ValidatorFn,\n    Validators,\n} from '@angular/forms';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { ActivatedRoute } from '@angular/router';\nimport { DropdownModule } from 'primeng/dropdown';\nimport {\n    BabylonTagsI,\n    BabylonTextInfoI,\n    BabylonTextsColorsI,\n} from '../../../interfaces';\nimport { BabylonButtonI } from '../../../interfaces/babylon-button.interface';\nimport { BabylonDropdownI } from '../../../interfaces/babylon-dropdown.interface';\nimport { BabylonImageI } from '../../../interfaces/babylon-image.interface';\nimport { BabylonInputI } from '../../../interfaces/babylon-input.interface';\nimport { BabylonDynamicHeadingComponent } from '../../shared';\nimport { Utils } from '../../../utils/utils';\n\n@Component({\n    selector: 'lib-babylon-form-c2-text-input',\n    standalone: true,\n    imports: [\n        CommonModule,\n        FormsModule,\n        ReactiveFormsModule,\n        MatCheckboxModule,\n        DropdownModule,\n        BabylonDynamicHeadingComponent,\n    ],\n    templateUrl: './babylon-form-c2-text-input.component.html',\n    styleUrl: './babylon-form-c2-text-input.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonFormC2TextInputComponent implements OnInit {\n    @Input() inputs?: BabylonInputI[];\n    @Input() buttons?: BabylonButtonI[];\n    @Input() image?: BabylonImageI;\n    @Input() tags?: BabylonTagsI;\n    @Input() textColors?: BabylonTextsColorsI;\n    @Input() texts?: BabylonFormC2TextInputTextsI;\n    @Input() idCv?: number = 99;\n\n    @Output() submit = new EventEmitter<any>();\n\n    cvFile: File | null = null;\n    selectedCvName: string | null = null;\n    showCv = true;\n    languages: any;\n    languageLevels: any;\n\n    readonly allowedCvExtensions = ['pdf', 'doc', 'docx', 'odt', 'rtf'];\n    readonly maxCvSizeMb = 5;\n    readonly maxCvSizeBytes = this.maxCvSizeMb * 1024 * 1024; // 5 MB\n\n    form!: FormGroup;\n\n    formReady = signal<boolean>(false);\n\n    constructor(\n        private readonly fb: FormBuilder,\n        private readonly route: ActivatedRoute,\n        private readonly cdr: ChangeDetectorRef\n    ) {}\n\n    ngOnInit(): void {\n        this.createLanguages();\n        this.createFormInputs();\n        this.initializeForm();\n    }\n    createFormInputs(): void {\n        this.inputs = [\n            {\n                id: 'nombre',\n                title: this.texts?.inputName,\n                name: Utils.normalizeText(this.texts?.inputName ?? ''),\n                placeholder: this.texts?.inputNamePlaceHolder,\n                value: '',\n                type: 'text',\n                error: this.texts?.errorRequired,\n                validators: [Validators.required],\n                valid: true,\n            },\n            {\n                id: 'surname',\n                title:\n                    this.texts?.inputSurnames ??\n                    this.texts?.inputlastname ??\n                    '',\n                name: Utils.normalizeText(\n                    this.texts?.inputSurnames ?? this.texts?.inputlastname ?? ''\n                ),\n                placeholder: this.texts?.inputSurnamesPlaceHolder ?? '',\n                value: '',\n                type: 'text',\n                error: this.texts?.errorRequired,\n                validators: [Validators.required],\n                valid: true,\n            },\n            {\n                id: 'email',\n                title: this.texts?.inputEmail,\n                name: Utils.normalizeText(this.texts?.inputEmail ?? ''),\n                placeholder: this.texts?.inputEmailPlaceHolder,\n                value: '',\n                type: 'text',\n                error: this.texts?.errorEmail,\n                validators: [Validators.email, Validators.required],\n                valid: true,\n            },\n            {\n                id: 'phone',\n                title: this.texts?.inputPhone,\n                name: Utils.normalizeText(this?.texts?.inputPhone ?? ''),\n                placeholder: this.texts?.inputPhonePlaceHolder,\n                value: '',\n                type: 'tel',\n                error: this.texts?.errorPhone ?? '',\n                validators: [Validators.required],\n                valid: true,\n            },\n        ] as BabylonInputI[];\n    }\n    createLanguages(): void {\n        if (!this.texts) return;\n        this.languageLevels = [\n            { id: 'basico', label: this.texts?.basico },\n            { id: 'intermedio', label: this.texts?.intermedio },\n            { id: 'fluido', label: this.texts?.fluido },\n            { id: 'nativo', label: this.texts?.nativo },\n        ];\n        this.languages = Object.entries(this.texts)\n            .filter(([key]) => key.startsWith('lang_'))\n            .map(([key, value]) => ({ id: key, label: value }));\n    }\n    // 3. Getter para el FormArray\n    get languagesFormArray(): FormArray {\n        return this.form.get('languages') as FormArray;\n    }\n    getFilteredLanguages(currentIndex: number): any[] {\n        const selectedLanguageIds = this.languagesFormArray.value\n            .map((v: any) => v.language)\n            .filter((id: string) => id && id !== '');\n\n        return this.languages.filter((lang: any) => {\n            // El idioma actual de este selector siempre debe estar visible\n            const currentSelectedInThisIndex = this.languagesFormArray\n                .at(currentIndex)\n                .get('language')?.value;\n            if (lang.id === currentSelectedInThisIndex) return true;\n\n            // No mostrar si ya está seleccionado en otro selector\n            return !selectedLanguageIds.includes(lang.id);\n        });\n    }\n\n    addLanguage(): void {\n        if (this.languagesFormArray.length < this.languages.length) {\n            const group = this.fb.group({\n                language: ['', Validators.required],\n                level: ['', Validators.required],\n            });\n\n            this.languagesFormArray.push(group);\n            this.cdr.markForCheck();\n        }\n    }\n    removeLanguage(index: number): void {\n        this.languagesFormArray.removeAt(index);\n    }\n\n    initializeForm(): void {\n        const controls: { [key: string]: any } = {};\n\n        this.inputs?.forEach((input) => {\n            if (!input.id) return;\n            controls[input?.id] = ['', input.validators || []];\n        });\n        if (this?.texts?.inputMessage) {\n            controls['message'] = ['', []];\n        }\n        if (this?.texts?.inputDisponibility) {\n            controls['disponibility'] = ['', []];\n        }\n\n        if (this?.texts?.conditions) {\n            controls['checkbox'] = [false, Validators.requiredTrue];\n        }\n        if (this?.texts?.conditions2) {\n            controls['checkbox2'] = [false];\n        }\n\n        controls['cv'] = [null];\n        controls['languages'] = this.fb.array([]);\n\n        this.form = this.fb.group(controls);\n\n        this.addLanguage();\n\n        this.formReady.set(true);\n        this.cdr.detectChanges();\n    }\n\n    validateInput(input: BabylonInputI): void {\n        if (input && input.id) {\n            const control = this.form.get(input.id);\n            if (control) {\n                input.valid = control.errors === null;\n            }\n        }\n    }\n\n    inputChange(event: Event, input: BabylonInputI): void {\n        const inputElement = event.target as HTMLInputElement;\n\n        if (input.type === 'tel') {\n            inputElement.value = inputElement.value.replace(/[^0-9+]/g, '');\n        }\n    }\n\n    resetForm(): void {\n        this.form?.reset();\n\n        Object.values(this.form.controls).forEach((control) => {\n            control.markAsPristine();\n            control.markAsUntouched();\n            control.updateValueAndValidity();\n        });\n\n        this.inputs?.forEach((input) => {\n            input.value = '';\n        });\n\n        this.cvFile = null;\n        this.selectedCvName = null;\n    }\n\n    submitForm(e: Event): void {\n        e.preventDefault();\n        this.form.updateValueAndValidity();\n        if (this.form.invalid) {\n            this.markAllControlsAsTouched();\n            this.inputs?.forEach((input) => this.validateInput(input));\n            return;\n        }\n        const formValue = {\n            ...this.form.value,\n            cv: this.cvFile,\n        };\n\n        this.submit.emit(formValue);\n        this.resetForm();\n    }\n\n    markAllControlsAsTouched(): void {\n        Object.values(this.form.controls).forEach((control) => {\n            control.markAsTouched();\n        });\n\n        this.inputs?.forEach((input) => this.validateInput(input));\n    }\n\n    phoneValidator(): ValidatorFn {\n        return (control: AbstractControl): ValidationErrors | null => {\n            if (!control.value) {\n                return null;\n            }\n\n            const phoneRegex = /^(?:[+ ]?)[\\d -]{7,15}$/;\n            const valid = phoneRegex.test(control.value);\n            return valid ? null : { invalidPhone: true };\n        };\n    }\n\n    onCvSelected(event: Event): void {\n        const input = event.target as HTMLInputElement;\n        if (!input.files || input.files.length === 0) {\n            return;\n        }\n\n        const file = input.files[0];\n        let cvError = this.texts?.textAdjCvError || '';\n\n        const fileName = file.name || '';\n        const extension = fileName.split('.').pop()?.toLowerCase();\n\n        if (!extension || !this.allowedCvExtensions.includes(extension)) {\n            this.cvFile = null;\n            this.selectedCvName = null;\n            this.form.get('cv')?.setValue(null);\n            this.form.get('cv')?.setErrors({ invalidType: true });\n            this.form.get('cv')?.markAsTouched();\n            input.value = '';\n            return;\n        }\n\n        if (file.size > this.maxCvSizeBytes) {\n            this.cvFile = null;\n            this.selectedCvName = null;\n            cvError = cvError + ` Max: ${this.maxCvSizeMb} MB.`;\n            this.form.get('cv')?.setValue(null);\n            this.form.get('cv')?.setErrors({ maxSizeExceeded: true });\n            this.form.get('cv')?.markAsTouched();\n            input.value = '';\n            return;\n        }\n\n        this.cvFile = file;\n        this.selectedCvName = file.name;\n        this.form.get('cv')?.setValue(file);\n        this.form.get('cv')?.setErrors(null);\n        this.form.get('cv')?.markAsDirty();\n    }\n\n    resetNativeFileInput(input: HTMLInputElement): void {\n        input.value = '';\n    }\n\n    removeCv(input: HTMLInputElement): void {\n        this.cvFile = null;\n        this.selectedCvName = null;\n        input.value = '';\n        this.form.get('cv')?.reset(null);\n        this.form.get('cv')?.markAsPristine();\n        this.form.get('cv')?.markAsUntouched();\n    }\n\n    private clearCvControl(): void {\n        this.cvFile = null;\n        this.selectedCvName = null;\n\n        const cvCtrl = this.form.get('cv');\n        if (cvCtrl) {\n            cvCtrl.setValue(null);\n            cvCtrl.setErrors(null);\n            cvCtrl.markAsPristine();\n            cvCtrl.markAsUntouched();\n        }\n    }\n}\n\nexport interface BabylonFormC2TextInputTextsI {\n    conditions?: string;\n    conditions2?: string;\n    cvInput?: string;\n    description?: string;\n    inputDisponibility?: string;\n    inputDisponibilityPlaceHolder?: string;\n    inputLanguages?: string;\n    inputEmail?: string;\n    inputEmailPlaceHolder?: string;\n    inputMessage?: string;\n    inputMessagePlaceHolder?: string;\n    inputName?: string;\n    inputNamePlaceHolder?: string;\n    inputPhone?: string;\n    inputPhonePlaceHolder?: string;\n    inputSurnames?: string;\n    inputSurnamesPlaceHolder?: string;\n    intermedio?: string;\n    lang_1?: string;\n    lang_2?: string;\n    lang_3?: string;\n    lang_4?: string;\n    nativo?: string;\n    requiredFieldsLabel?: string;\n    title?: string;\n    errorRequired?: string;\n    textAdjCvError?: string;\n    errorPhone?: string;\n    errorEmail?: string;\n    inputlastname?: string;\n    SelectItemText?: string;\n    textAdjCv?: string;\n    subtitle?: string;\n    pretitle?: string;\n    basico?: string;\n    fluido?: string;\n    addLang?:string;\n}\n","<section class=\"babylon__contact-form margin-main\">\n    <div class=\"container\">\n        <div class=\"row cs_gap_y_50\">\n            <div class=\"col-lg-6\">\n                <div class=\"cs_pr_100\">\n                    <div class=\"intro_info mb--40\">\n                        @if (texts?.pretitle) {\n                            <lib-babylon-dynamic-heading\n                                [tag]=\"tags?.pretitle || 'h2'\"\n                                cssClass=\"subtitle\"\n                                [color]=\"textColors?.pretitle\"\n                                [content]=\"texts?.pretitle\"\n                            ></lib-babylon-dynamic-heading>\n                        }\n                        @if (texts?.title) {\n                            <lib-babylon-dynamic-heading\n                                [tag]=\"tags?.title || 'h1'\"\n                                cssClass=\"title wow fadeInUp\"\n                                [color]=\"textColors?.title\"\n                                [content]=\"texts?.title\"\n                                data-wow-duration=\"0.8s\"\n                                data-wow-delay=\"0.2s\"\n                            ></lib-babylon-dynamic-heading>\n                        }\n                        @if (texts?.subtitle) {\n                            <lib-babylon-dynamic-heading\n                                [tag]=\"tags?.subtitle || 'h1'\"\n                                cssClass=\"text mb--0\"\n                                [color]=\"textColors?.subtitle\"\n                                [content]=\"texts?.subtitle\"\n                            ></lib-babylon-dynamic-heading>\n                        }\n                        @if (texts?.description) {\n                            <lib-babylon-dynamic-heading\n                                [tag]=\"tags?.description || 'h1'\"\n                                cssClass=\"text mb--0\"\n                                [color]=\"textColors?.description\"\n                                [content]=\"texts?.description\"\n                            ></lib-babylon-dynamic-heading>\n                        }\n                    </div>\n                    @if (formReady()) {\n                        <form\n                            [formGroup]=\"form\"\n                            id=\"contactform\"\n                            class=\"cs_form cs_style_2\"\n                        >\n                            @if (inputs?.length) {\n                                @for (input of inputs; track $index) {\n                                    <div>\n                                        @if (input.title) {\n                                            <label class=\"text mb--10\"\n                                                >{{ input.title }}*</label\n                                            >\n                                        }\n                                        <input\n                                            class=\"cs_form_field_2 cs--radius\"\n                                            [type]=\"input.type\"\n                                            [id]=\"input.name\"\n                                            [name]=\"input.name\"\n                                            [placeholder]=\"input.placeholder\"\n                                            [formControlName]=\"input.id!\"\n                                            [value]=\"input.value\"\n                                            (blur)=\"validateInput(input)\"\n                                            (input)=\"inputChange($event, input)\"\n                                        />\n                                        @if (\n                                            form.controls[input.id!].invalid &&\n                                            form.controls[input.id!].touched\n                                        ) {\n                                            <div class=\"form-warning\">\n                                                <small>{{\n                                                    input?.error\n                                                }}</small>\n                                            </div>\n                                        }\n                                    </div>\n                                }\n                            }\n                            @if (texts?.inputDisponibility) {\n                                <div class=\"cs_textarea_wrapper\">\n                                    <label class=\"text mb--10\">{{\n                                        texts?.inputDisponibility\n                                    }}</label>\n                                    <textarea\n                                        rows=\"4\"\n                                        class=\"cs_form_field_2 cs--radius\"\n                                        formControlName=\"disponibility\"\n                                        [placeholder]=\"\n                                            texts?.inputDisponibilityPlaceHolder ??\n                                            '...'\n                                        \"\n                                    ></textarea>\n                                </div>\n                            }\n                            @if (languages?.length) {\n                                <div\n                                    class=\"languages_section mb--30\"\n                                    formArrayName=\"languages\"\n                                >\n                                    <div\n                                        class=\"d-flex justify-content-between align-items-center mb--10\"\n                                    >\n                                        <label class=\"text\"\n                                            ><b>{{\n                                                texts?.inputLanguages\n                                            }}</b></label\n                                        >\n                                        @if (texts?.addLang) {\n                                            <button\n                                                type=\"button\"\n                                                class=\"btn_add_lang\"\n                                                (click)=\"addLanguage()\"\n                                            >\n                                                + {{ texts?.addLang }}\n                                            </button>\n                                        }\n                                    </div>\n                                    @for (\n                                        langGroup of languagesFormArray.controls;\n                                        track $index\n                                    ) {\n                                        <div\n                                            [formGroupName]=\"$index\"\n                                            class=\"row mb--15 align-items-center\"\n                                        >\n                                            <div class=\"col-5\">\n                                                <p-dropdown\n                                                    formControlName=\"language\"\n                                                    [options]=\"\n                                                        getFilteredLanguages(\n                                                            $index\n                                                        )\n                                                    \"\n                                                    optionLabel=\"label\"\n                                                    optionValue=\"id\"\n                                                    placeholder=\"Selecciona idioma\"\n                                                    class=\"cs_form_field_2 cs--radius form-control\"\n                                                ></p-dropdown>\n                                            </div>\n                                            <div class=\"col-5\">\n                                                <p-dropdown\n                                                    formControlName=\"level\"\n                                                    [options]=\"languageLevels\"\n                                                    optionLabel=\"label\"\n                                                    optionValue=\"id\"\n                                                    placeholder=\"Nivel\"\n                                                    class=\"cs_form_field_2 cs--radius form-control\"\n                                                ></p-dropdown>\n                                            </div>\n                                            <div class=\"col-2\">\n                                                <button\n                                                    type=\"button\"\n                                                    class=\"btn_remove_lang\"\n                                                    (click)=\"\n                                                        removeLanguage($index)\n                                                    \"\n                                                >\n                                                    ×\n                                                </button>\n                                            </div>\n                                        </div>\n                                    }\n                                </div>\n                            }\n                            @if (texts?.inputMessage) {\n                                <div class=\"cs_textarea_wrapper\">\n                                    <label class=\"text mb--10\">{{\n                                        texts?.inputMessage\n                                    }}</label>\n                                    <textarea\n                                        rows=\"4\"\n                                        class=\"cs_form_field_2 cs--radius\"\n                                        formControlName=\"message\"\n                                        [placeholder]=\"\n                                            texts?.inputMessagePlaceHolder || ''\n                                        \"\n                                    ></textarea>\n                                </div>\n                            }\n\n                            @if (texts?.cvInput) {\n                                <div class=\"cs_cv_wrapper\">\n                                    <label class=\"text mb--10\">{{\n                                        texts?.cvInput\n                                    }}</label>\n\n                                    <div\n                                        class=\"cs_cv_field cs_form_field_2 cs--radius\"\n                                    >\n                                        <input\n                                            #cvInput\n                                            type=\"file\"\n                                            class=\"cs_cv_input-real\"\n                                            accept=\".pdf,.doc,.docx,.odt,.rtf\"\n                                            (change)=\"onCvSelected($event)\"\n                                            (click)=\"\n                                                resetNativeFileInput(cvInput)\n                                            \"\n                                        />\n\n                                        @if (texts?.SelectItemText) {\n                                            <button\n                                                type=\"button\"\n                                                class=\"cs_cv_button\"\n                                                (click)=\"cvInput.click()\"\n                                            >\n                                                {{ texts?.SelectItemText }}\n                                            </button>\n                                        }\n\n                                        <span\n                                            class=\"cs_cv_filename\"\n                                            *ngIf=\"selectedCvName\"\n                                        >\n                                            {{ selectedCvName }}\n                                        </span>\n                                        <button\n                                            *ngIf=\"selectedCvName\"\n                                            type=\"button\"\n                                            class=\"cs_cv_remove\"\n                                            (click)=\"removeCv(cvInput)\"\n                                            aria-label=\"Eliminar CV\"\n                                        >\n                                            ×\n                                        </button>\n                                    </div>\n\n                                    @if (\n                                        texts?.textAdjCvError &&\n                                        form.controls['cv']?.invalid &&\n                                        form.controls['cv']?.touched\n                                    ) {\n                                        <div class=\"form-warning\">\n                                            <small>{{\n                                                texts?.textAdjCvError\n                                            }}</small>\n                                        </div>\n                                    }\n                                </div>\n                            }\n\n                            <div class=\"cs_form_checkboxes\">\n                                @if (texts?.conditions) {\n                                    <div class=\"item-check\">\n                                        <mat-checkbox\n                                            class=\"formcontrol\"\n                                            formControlName=\"checkbox\"\n                                            [ngClass]=\"{\n                                                'error-checkbox':\n                                                    form.controls['checkbox']\n                                                        .invalid &&\n                                                    form.controls['checkbox']\n                                                        .touched,\n                                            }\"\n                                        ></mat-checkbox>\n                                        <span\n                                            class=\"conditions\"\n                                            [innerHTML]=\"texts?.conditions\"\n                                        >\n                                        </span>\n                                    </div>\n                                }\n                                @if (texts?.conditions2) {\n                                    <div class=\"item-check\">\n                                        <mat-checkbox\n                                            class=\"formcontrol\"\n                                            formControlName=\"checkbox2\"\n                                            [ngClass]=\"{\n                                                'error-checkbox':\n                                                    form.controls['checkbox2']\n                                                        .invalid &&\n                                                    form.controls['checkbox2']\n                                                        .touched,\n                                            }\"\n                                        ></mat-checkbox>\n                                        <span\n                                            class=\"conditions\"\n                                            [innerHTML]=\"texts?.conditions2\"\n                                        >\n                                        </span>\n                                    </div>\n                                }\n                            </div>\n                            @if (buttons) {\n                                <div class=\"btns__box align--center\">\n                                    <button\n                                        class=\"btn btn_primary\"\n                                        type=\"submit\"\n                                        [name]=\"buttons[0].label\"\n                                        (click)=\"submitForm($event)\"\n                                    >\n                                        <b>{{ buttons[0].label }}</b>\n                                        <span\n                                            class=\"babylon-arrow-right-big\"\n                                        ></span>\n                                    </button>\n                                </div>\n                            }\n                        </form>\n                    }\n                </div>\n            </div>\n            @if (image) {\n                <div class=\"col-lg-6\">\n                    <div class=\"cs_image_layer cs_style_3 position-relative\">\n                        <img\n                            [src]=\"\n                                image?.src ||\n                                'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                            \"\n                            [alt]=\"image?.alt ?? image?.title ?? 'title'\"\n                            class=\"cs--radius\"\n                            loading=\"lazy\"\n                        />\n                    </div>\n                </div>\n            }\n        </div>\n    </div>\n</section>\n","import { CommonModule } from '@angular/common';\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    computed,\n    EventEmitter,\n    inject,\n    Input,\n    OnDestroy,\n    OnInit,\n    signal,\n} from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { Subject, takeUntil, tap } from 'rxjs';\nimport { BabylonLightGalleryDirective } from '../../../directives/babylon-galleries/babylon-light-gallery.directive';\nimport { BabylonDataBackgroundDirective } from '../../../directives/data-background/data-background.directive';\nimport { BabylonButtonI, BabylonTagsI } from '../../../interfaces';\nimport { BabylonImageI } from '../../../interfaces/babylon-image.interface';\nimport { BabylonFilterModalComponent } from '../babylon-filter-modal';\nimport { BabylonDynamicHeadingComponent } from '../../shared';\n\n@Component({\n    selector: 'lib-babylon-gallery',\n    standalone: true,\n    imports: [\n        CommonModule,\n        BabylonLightGalleryDirective,\n        BabylonDataBackgroundDirective,\n        BabylonDynamicHeadingComponent\n    ],\n    templateUrl: './babylon-gallery.component.html',\n    styleUrl: './babylon-gallery.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonGalleryComponent implements OnInit, OnDestroy {\n    @Input() title?: string;\n    @Input() pretitle?: string;\n    @Input() roomTitle?: string;\n    @Input() filterTitle?: string;\n    @Input() filters?: BabylonGalleryFilter[];\n    @Input() images?: BabylonGalleryItem[];\n    @Input() filtersBtn?: BabylonButtonI;\n    @Input() roomsBtn?: BabylonButtonI;\n    @Input() tags?: BabylonTagsI;\n\n    filterSelected = signal<BabylonGalleryFilter | undefined>(undefined);\n\n    destroy$ = new Subject<boolean>();\n\n    imagesDisplayed = computed(() => {\n        if (this.filterSelected()?.all || !this.filterSelected()) {\n            return this.images;\n        } else {\n            return this.images?.filter(\n                (item) => item.filter === this.filterSelected()?.id\n            );\n        }\n    });\n\n    private readonly dialog = inject(MatDialog);\n\n    ngOnInit(): void {\n        this.filterSelected.set(this.filters?.find((f) => f.all));\n    }\n\n    ngOnDestroy(): void {\n        this.destroy$.next(true), this.destroy$.complete();\n    }\n\n    filterItems(filter?: BabylonGalleryFilter): void {\n        if (filter) {\n            !filter.rooms\n                ? this.filterSelected.set(filter)\n                : this.openFiltersModal(true);\n        }\n    }\n\n    openFiltersModal(rooms?: boolean): void {\n        const dialogRef = this.dialog.open(BabylonFilterModalComponent, {\n            width: '100vw',\n            height: '100vh',\n            maxWidth: '100vw',\n            hasBackdrop: true,\n        });\n\n        const event = new EventEmitter<BabylonGalleryFilter>();\n\n        event\n            .pipe(\n                takeUntil(this.destroy$),\n                tap((filter?: BabylonGalleryFilter) => {\n                    this.filterItems(filter);\n                })\n            )\n            .subscribe();\n\n        dialogRef.componentInstance.filters = this.filters?.filter(\n            (filter) => (!rooms && !filter.room) || (rooms && filter.room)\n        );\n\n        dialogRef.componentInstance.filterSelect = event;\n        dialogRef.componentInstance.title = rooms\n            ? this.roomTitle\n            : this.filterTitle;\n        dialogRef.componentInstance.filterSelect = event;\n    }\n}\n\nexport interface BabylonGalleryItem {\n    img?: BabylonImageI;\n    title?: string;\n    filter?: number;\n    path?: {\n      original?: string;\n      webp?: string;\n    };\n}\n\nexport interface BabylonGalleryFilter {\n    id: number;\n    text?: string;\n    rooms?: boolean;\n    room?: boolean;\n    all?: boolean;\n    multimedia?: BabylonGalleryItem[];\n}\n","<section class=\"babylon__gallery margin-main\">\n    <div class=\"container\">\n        <div class=\"intro_info align--center no-align\">\n            @if (pretitle) {\n                <lib-babylon-dynamic-heading\n                    [tag]=\"tags?.pretitle || 'h2'\"\n                    cssClass=\"pretitle mb--0\"\n                    [content]=\"pretitle\"\n                >\n                </lib-babylon-dynamic-heading>\n            }\n            @if (title) {\n                <lib-babylon-dynamic-heading\n                    [tag]=\"tags?.title || 'h3'\"\n                    cssClass=\"title\"\n                    [content]=\"title\"\n                >\n                </lib-babylon-dynamic-heading>\n            }\n        </div>\n    </div>\n    @if (filters?.length) {\n        <div class=\"item d-flex justify-content-center\">\n            @for (filter of filters; track $index) {\n                @if (filter && !filter.room) {\n                    <span\n                        class=\"subtitle--small babylon__gallery__filter\"\n                        (click)=\"filterItems(filter)\"\n                        [ngClass]=\"{\n                            'babylon__gallery__filter--selected':\n                                filterSelected() === filter,\n                        }\"\n                    >\n                        {{ filter.text }}\n                    </span>\n                }\n            }\n        </div>\n    }\n    <div class=\"babylon__gallery__filter-buttons d-flex justify-content-center\">\n        @if (filtersBtn && filtersBtn.label) {\n            <button\n                class=\"d-flex justify-content-between align-items-center\"\n                [name]=\"filtersBtn.label\"\n                (click)=\"openFiltersModal(false)\"\n            >\n                {{ filtersBtn.label }} <span>=</span>\n            </button>\n        }\n        @if (roomsBtn && roomsBtn.label) {\n            <button\n                class=\"d-flex justify-content-between align-items-center\"\n                [name]=\"roomsBtn.label\"\n                (click)=\"openFiltersModal(true)\"\n            >\n                {{ roomsBtn.label }} <span>=</span>\n            </button>\n        }\n    </div>\n    <div class=\"container-fluid cs_plr_100\">\n        <div class=\"cs_grid_style_2 cs_lightgallery\" BabylonLightGallery>\n            @if (imagesDisplayed()?.length) {\n                @for (item of imagesDisplayed(); track $index) {\n                    <div class=\"cs_grid_item\">\n                        <a\n                            [attr.aria-label]=\"\n                                item?.img?.src ||\n                                'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                            \"\n                            [href]=\"\n                                item.img?.src ||\n                                'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                            \"\n                            (click)=\"$event.preventDefault()\"\n                            class=\"cs_gallery_item cs_style_3 cs_lightbox_item d-block cs_bg_filed position-relative cs_type_1 cs--radius\"\n                            dataBackground=\"url('{{ item?.img?.src }}')\"\n                        >\n                            <div class=\"cs_gallery_item_hover cs--radius\">\n                                <span class=\"cs_hover_icon cs_accent_color\">\n                                    <span class=\"babylon-fullscreen\"></span>\n                                </span>\n                                @if (item.title) {\n                                    <span\n                                        class=\"cs_hover_text title--smaller\"\n                                        >{{ item.title }}</span\n                                    >\n                                }\n                            </div>\n                            @if (item.img) {\n                                <img\n                                    [src]=\"item.img.src\"\n                                    [alt]=\"item.img.alt\"\n                                    class=\"d-none\"\n                                    loading=\"lazy\"\n                                />\n                            }\n                        </a>\n                    </div>\n                }\n            }\n        </div>\n    </div>\n</section>\n","import {\n    Component,\n    computed,\n    EventEmitter,\n    inject,\n    Input,\n    OnDestroy,\n    OnInit,\n    signal,\n} from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { Subject, takeUntil, tap } from 'rxjs';\nimport { BabylonButtonI, BabylonTextInfoI } from '../../../interfaces';\nimport { BabylonFilterModalComponent } from '../babylon-filter-modal/babylon-filter-modal.component';\nimport {\n    BabylonGalleryFilter,\n    BabylonGalleryItem,\n} from '../babylon-gallery/babylon-gallery.component';\n\n@Component({\n    selector: 'lib-babylon-gallery-v2',\n    standalone: true,\n    imports: [],\n    templateUrl: './babylon-gallery-v2.component.html',\n    styleUrl: './babylon-gallery-v2.component.scss',\n})\nexport class BabylonGalleryV2Component implements OnInit, OnDestroy {\n    @Input() title?: string;\n    @Input() pretitle?: string;\n    @Input() filters?: BabylonGalleryFilter[];\n    @Input() images?: BabylonGalleryItem[];\n    @Input() filtersBtn?: BabylonButtonI;\n    @Input() roomsBtn?: BabylonButtonI;\n\n    private readonly dialog = inject(MatDialog);\n    private destroy$ = new Subject<boolean>();\n\n    filterSelected = signal<BabylonGalleryFilter | undefined>(undefined);\n\n    imagesDisplayed = computed(() => {\n        if (this.filterSelected()?.all || !this.filterSelected()) {\n            return this.images;\n        } else {\n            return this.images?.filter(\n                (item) => item.filter === this.filterSelected()?.id\n            );\n        }\n    });\n\n    ngOnInit(): void {\n        this.filterSelected.set(this.filters?.find((f) => f.all));\n    }\n\n    ngOnDestroy(): void {\n        this.destroy$.next(true);\n        this.destroy$.complete();\n    }\n\n    filterItems(filter?: BabylonGalleryFilter): void {\n        if (filter) {\n            !filter.rooms\n                ? this.filterSelected.set(filter)\n                : this.openFiltersRoomModal();\n        }\n    }\n\n    openFiltersModal(rooms?: boolean): void {\n        const dialogRef = this.dialog.open(BabylonFilterModalComponent, {\n            width: '100vw',\n            height: '100vh',\n            maxWidth: '100vw',\n            hasBackdrop: true,\n        });\n\n        const event = new EventEmitter<BabylonGalleryFilter>();\n\n        event\n            .pipe(\n                takeUntil(this.destroy$),\n                tap((filter?: BabylonGalleryFilter) => {\n                    this.filterItems(filter);\n                })\n            )\n            .subscribe();\n\n        dialogRef.componentInstance.filters = this.filters?.filter(\n            (filter) => (!rooms && !filter.room) || (rooms && filter.room)\n        );\n\n        dialogRef.componentInstance.filterSelect = event;\n        dialogRef.componentInstance.title = rooms\n            ? this.roomsBtn?.label\n            : this.filtersBtn?.label;\n    }\n\n    openFiltersRoomModal(): void {\n        this.openFiltersModal(true);\n    }\n}\n","<section class=\"gallery\">\n    <div class=\"container\">\n        <div class=\"gallery__inner\">\n            <!-- HEADER -->\n            <div class=\"gallery__heading\">\n                @if (title) {\n                    <h2>{{ title }}</h2>\n                }\n\n                <div class=\"gallery__nav\">\n                    <!-- DESKTOP -->\n                    <ul class=\"desktop\">\n                        @for (filter of filters; track $index) {\n                            @if (filter && !filter.room) {\n                                <li>\n                                    <span\n                                        (click)=\"filterItems(filter)\"\n                                        [class.active]=\"\n                                            filterSelected() === filter\n                                        \"\n                                    >\n                                        {{ filter.text }}\n                                    </span>\n                                </li>\n                            }\n                        }\n                    </ul>\n\n                    <!-- MOBILE -->\n                    <ul class=\"mobile\">\n                        <li\n                            class=\"btn btn__primary\"\n                            (click)=\"openFiltersModal()\"\n                        >\n                            Categorías\n                        </li>\n\n                        <li\n                            class=\"btn btn__primary\"\n                            (click)=\"openFiltersRoomModal()\"\n                        >\n                            habitactiones\n                        </li>\n                    </ul>\n                </div>\n            </div>\n\n            <!-- LIST -->\n            <div class=\"gallery__list\">\n                @if (imagesDisplayed()?.length) {\n                    @for (item of imagesDisplayed(); track $index) {\n                        <div\n                            class=\"gallery__item show\"\n                            data-category=\"habitactiones\"\n                            [attr.data-img]=\"\n                                item.img?.src ||\n                                'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                            \"\n                            [attr.data-title]=\"item.title\"\n                        >\n                            <div\n                                class=\"gallery__item--box js-active-modal\"\n                                role=\"button\"\n                                data-modal_name=\"gallery\"\n                            >\n                                <div class=\"gallery__item--image\">\n                                    <figure>\n                                        <img\n                                            [src]=\"\n                                                item.img?.src ||\n                                                'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                            \"\n                                        />\n                                    </figure>\n                                </div>\n\n                                <div class=\"gallery__item--content\">\n                                    <svg\n                                        aria-hidden=\"true\"\n                                        focusable=\"false\"\n                                        class=\"gallery__item--graphic\"\n                                    >\n                                        <use\n                                            href=\"/assets/babylon/svg/icon-graphic.svg#icon-graphic\"\n                                        ></use>\n                                    </svg>\n\n                                    <span>{{ item.title }}</span>\n\n                                    <svg\n                                        aria-hidden=\"true\"\n                                        class=\"gallery__item--icon\"\n                                        focusable=\"false\"\n                                    >\n                                        <use\n                                            href=\"/assets/babylon/svg/icon-close.svg#icon-close\"\n                                        ></use>\n                                    </svg>\n                                </div>\n                            </div>\n                        </div>\n                    }\n                }\n            </div>\n        </div>\n    </div>\n</section>\n","import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { BabylonButtonI, BabylonImageI } from '../../../interfaces';\nimport { BabylonDynamicHeadingComponent } from '../../shared';\nimport { BabylonTagsI } from '../../../interfaces/babylon-tags.interface';\nimport { BabylonTextsColorsI } from '../../../interfaces/babylon-texts-colors.interface';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\n\n@Component({\n    selector: 'lib-babylon-gr-c2-img',\n    standalone: true,\n    imports: [\n        CommonModule,\n        BabylonDynamicHeadingComponent,\n        BabylonLinkTypeDirective,\n    ],\n    templateUrl: './babylon-gr-c2-img.component.html',\n    styleUrl: './babylon-gr-c2-img.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonGrC2ImgComponent {\n    @Input() title?: string;\n    @Input() items?: GrC2ImgItem[];\n    @Input() tags?: BabylonTagsI;\n    @Input() textColors?: BabylonTextsColorsI;\n}\n\nexport interface GrC2ImgItem {\n    title?: string;\n    subtitle?: string;\n    img?: BabylonImageI;\n    link?: BabylonButtonI[];\n}\n","<section class=\"babylon_grC2Img margin-main\">\n    <div class=\"container\">\n        @if (title) {\n            <div class=\"babylon_grC2Img--heading\">\n                <lib-babylon-dynamic-heading\n                    [tag]=\"tags?.title || 'h3'\"\n                    cssClass=\"babylon_grC2Img--title pretitle\"\n                    [content]=\"title\"\n                    [color]=\"textColors?.title\"\n                ></lib-babylon-dynamic-heading>\n            </div>\n        }\n        @if (items?.length) {\n            <div class=\"babylon_grC2Img--grid\">\n                @for (item of items; track $index) {\n                    <a\n                        class=\"babylon_grC2Img--item\"\n                        [href]=\"item?.link?.[0]?.url\"\n                        [attr.aria-label]=\"item?.link?.[0]?.label\"\n                        [linkType]=\"item?.link?.[0]?.linkType\"\n                        [attr.data-src]=\"\n                            item.img?.src ||\n                            'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                        \"\n                    >\n                        @if (item.img) {\n                            <img [src]=\"item.img.src\" [alt]=\"item.img.alt\" />\n                        }\n                        <div class=\"babylon_grC2Img--itemContent\">\n                            @if (item.title) {\n                                <h4 class=\"babylon_grC2Img--itemTitle\">\n                                    {{ item.title }}\n                                </h4>\n                            }\n                            @if (item.subtitle) {\n                                <span class=\"babylon_grC2Img--itemSubtitle\">{{\n                                    item.subtitle\n                                }}</span>\n                            }\n                        </div>\n                    </a>\n                }\n            </div>\n        }\n    </div>\n</section>\n","import { CommonModule } from '@angular/common';\nimport {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    Input,\n    ViewChild,\n} from '@angular/core';\nimport { BabylonSlidersDirective } from '../../../directives/babylon-sliders/babylon-sliders.directive';\nimport { ViewsType } from '../../../Enum/views.enum';\nimport { BabylonButtonI } from '../../../interfaces/babylon-button.interface';\nimport { BabylonImageI } from '../../../interfaces/babylon-image.interface';\n\n@Component({\n    selector: 'lib-babylon-grid-gallery',\n    standalone: true,\n    imports: [CommonModule, BabylonSlidersDirective],\n    templateUrl: './babylon-grid-gallery.component.html',\n    styleUrl: './babylon-grid-gallery.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonGridGalleryComponent implements AfterViewInit {\n    @Input() pretitle?: string;\n    @Input() title?: string;\n    @Input() button?: BabylonButtonI[];\n    @Input() images?: BabylonImageI[];\n    @Input() view?: string;\n\n    views = ViewsType;\n\n    @ViewChild(BabylonSlidersDirective) sliderDirective:\n        | BabylonSlidersDirective\n        | undefined;\n\n    btnClick(e: Event): void {\n        e.preventDefault();\n    }\n    constructor(private cdr: ChangeDetectorRef) {}\n\n    ngAfterViewInit(): void {\n        setTimeout(() => {\n            // This is a workaround to ensure the slider is initialized after the view is fully loaded\n            this.cdr.detectChanges();\n            //this.moveToNextSlide();\n        }, 500); //this need time\n    }\n\n    moveToNextSlide(): void {\n        if (this.sliderDirective) {\n            this.sliderDirective.moveToNextSlide();\n        }\n    }\n}\n","<section class=\"babylon__grid-gallery margin-main\">\n    <div class=\"container\">\n        <div class=\"intro_info align--center\">\n            @if (pretitle) {\n                <h3 class=\"pretitle\">{{ pretitle }}</h3>\n            }\n            @if (title) {\n                <h2\n                    class=\"title wow fadeInUp\"\n                    data-wow-duration=\"0.8s\"\n                    data-wow-delay=\"0.2s\"\n                >\n                    {{ title }}\n                </h2>\n            }\n        </div>\n        <div class=\"row cs_row_gap_lg_10\">\n            <div class=\"col-9\">\n                <div\n                    class=\"position-relative overflow-hidden cs--radius_5 cs_gallery_hover_show_nav cs_primary_bg\"\n                >\n                    <div\n                        class=\"cs_gallery_slider_thumb slick-slider\"\n                        sliders=\"cs_gallery_slider_thumb\"\n                    >\n                        @if (images?.length) {\n                            @for (image of images; track $index) {\n                                <div\n                                    class=\"cs_gallery_slider_thumb_item cs--radius\"\n                                >\n                                    <img\n                                        [src]=\"\n                                            image?.src ||\n                                            'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                        \"\n                                        [alt]=\"\n                                            image?.alt ??\n                                            image?.title ??\n                                            'title'\n                                        \"\n                                        class=\"cs--radius height-property\"\n                                    />\n                                </div>\n                            }\n                        }\n                    </div>\n                    <div class=\"cs_left_arrow_gallery cs_center\">\n                        <div class=\"cs_left_arrow cs_center cs_primary_color\">\n                            <span class=\"babylon-arrow-left-big\"></span>\n                        </div>\n                    </div>\n                    <div class=\"cs_right_arrow_gallery cs_center\">\n                        <div class=\"cs_right_arrow cs_center cs_primary_color\">\n                            <span class=\"babylon-arrow-right-big\"></span>\n                        </div>\n                    </div>\n                </div>\n            </div>\n            <div\n                class=\"col-3\"\n                [ngClass]=\"{\n                    'no-show-first': view == views.View_1,\n                }\"\n            >\n                <div class=\"cs--radius_5\">\n                    <div\n                        class=\"cs_gallery_slider_nav slick-slider\"\n                        sliders=\"cs_gallery_slider_nav\"\n                    >\n                        @if (images?.length) {\n                            @for (image of images; track $index) {\n                                <div\n                                    class=\"cs_gallery_slider_thumb_mini cs--radius\"\n                                >\n                                    <!-- loading=\"lazy\" should be omitted to prevent loading issues in the second slider -->\n                                    <img\n                                        [src]=\"\n                                            image?.src ||\n                                            'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                        \"\n                                        [alt]=\"\n                                            image?.alt ??\n                                            image?.title ??\n                                            'title'\n                                        \"\n                                    />\n                                </div>\n                            }\n                        }\n                    </div>\n                </div>\n            </div>\n        </div>\n\n        @if (button && button[0] && button[0].label) {\n            <div class=\"btns__box align--center\">\n                <a\n                    [attr.aria-label]=\"button[0].label\"\n                    [href]=\"button[0].url\"\n                    class=\"btn btn_primary\"\n                >\n                    <b>{{ button[0].label }}</b>\n                    <span class=\"babylon-arrow-right-big\"></span>\n                </a>\n            </div>\n        }\n    </div>\n</section>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport { BabylonButtonI, BabylonImageI } from '../../../interfaces';\nimport { BabylonDynamicHeadingComponent } from '../../shared/babylon-dynamic-heading/babylon-dynamic-heading.component';\n\n@Component({\n    selector: 'lib-babylon-mod-c2-img-txt-cta',\n    standalone: true,\n    imports: [\n        CommonModule,\n        BabylonDynamicHeadingComponent,\n        BabylonLinkTypeDirective,\n    ],\n    templateUrl: './babylon-mod-c2-img-txt-cta.component.html',\n    styleUrl: './babylon-mod-c2-img-txt-cta.component.scss',\n})\nexport class BabylonModC2ImgTxtCtaComponent {\n    @Input() title?: string;\n    @Input() items?: BabylonModC2ImgTxtCtaI[];\n\n    constructor(\n        private readonly dialogRef: MatDialogRef<BabylonModC2ImgTxtCtaComponent>\n    ) {}\n\n    close(): void {\n        this.dialogRef.close();\n    }\n}\n\nexport interface BabylonModC2ImgTxtCtaI {\n    title?: string;\n    subtitle?: string;\n    image?: BabylonImageI;\n    img?: BabylonImageI;\n    buttons?: BabylonButtonI[];\n}\n","<div class=\"btn-close--modal\">\n    <a class=\"modal__close js-close\" (click)=\"close()\">\n        <svg aria-hidden=\"true\" focusable=\"false\">\n            <use href=\"/assets/babylon/svg/close-icon.svg#close-icon\"></use>\n        </svg>\n    </a>\n</div>\n\n<div class=\"babylon__discover-wrapper\">\n    <div class=\"container\">\n        @if (title) {\n            <div class=\"babylon__discover-header\">\n                <lib-babylon-dynamic-heading\n                    [tag]=\"title || 'h2'\"\n                    cssClass=\"pretitle--small\"\n                    [content]=\"title\"\n                    [color]=\"title\"\n                ></lib-babylon-dynamic-heading>\n                <hr />\n            </div>\n        }\n        @if (items?.length) {\n            <div class=\"babylon__discover-items\">\n                @for (item of items; track $index) {\n                    <div class=\"babylon__discover-item\">\n                        <div class=\"babylon__discover-item-image\">\n                            <a\n                                class=\"babylon__discover-item-image\"\n                                [href]=\"item.buttons?.[0]?.url\"\n                                [linkType]=\"item.buttons?.[0]?.linkType\"\n                            >\n                                <div class=\"babylon__discover-item-content\">\n                                    @if (item.title) {\n                                        <h3 class=\"title\">{{ item.title }}</h3>\n                                    }\n                                    @if (item.subtitle) {\n                                        <span>{{ item.subtitle }}</span>\n                                    }\n                                </div>\n                                @if (item.image || item.img) {\n                                    <img\n                                        [src]=\"\n                                            (item.img?.src ??\n                                                item.image?.src) ||\n                                            'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                        \"\n                                        [alt]=\"\n                                            item.img?.alt ??\n                                            item.image?.alt ??\n                                            item.title ??\n                                            ''\n                                        \"\n                                    />\n                                }\n                            </a>\n                        </div>\n                        @if (item.buttons?.[0]; as btn) {\n                            <div class=\"babylon__discover-item-cta\">\n                                <button\n                                    [href]=\"btn?.url\"\n                                    [linkType]=\"btn?.linkType\"\n                                    class=\"btn btn_primary\"\n                                    [name]=\"btn?.label\"\n                                >\n                                    <span>{{ btn?.label }}</span>\n                                </button>\n                            </div>\n                        }\n                    </div>\n                }\n            </div>\n        }\n    </div>\n</div>\n","import { CommonModule, DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport {\n    Component,\n    ElementRef,\n    EventEmitter,\n    HostListener,\n    Inject,\n    Input,\n    Output,\n    PLATFORM_ID,\n    ViewChild,\n} from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { NavigationStart, Router } from '@angular/router';\nimport { filter, Subscription } from 'rxjs';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport { LogoType } from '../../../Enum';\nimport {\n    BabylonButtonI,\n    BabylonFloatingButtonsI,\n    BabylonImageI,\n} from '../../../interfaces';\nimport { BabylonEngineWidgetModalComponent } from '../babylon-engine-widget-modal';\nimport { BabylonModC2ImgTxtCtaComponent } from '../babylon-mod-c2-img-txt-cta/babylon-mod-c2-img-txt-cta.component';\n\n@Component({\n    selector: 'lib-babylon-he-me-svg-text-cta-mot',\n    standalone: true,\n    imports: [CommonModule, BabylonLinkTypeDirective],\n    templateUrl: './babylon-he-me-svg-text-cta-mot.component.html',\n    styleUrl: './babylon-he-me-svg-text-cta-mot.component.scss',\n})\nexport class BabylonHeMeSvgTextCtaMotComponent {\n    @ViewChild('mainHeader', { static: true })\n    mainHeader!: ElementRef<HTMLElement>;\n\n    @ViewChild('modalMenu', { static: true })\n    modalMenu!: ElementRef<HTMLElement>;\n\n    @Input() menu?: BabylonButtonI[];\n    @Input() logos?: Record<LogoType, BabylonImageI | undefined>;\n\n    @Input() floatingButtons?: BabylonFloatingButtonsI;\n    @Input() links?: BabylonButtonI[];\n    @Input() locale?: string;\n    @Input() ticker?: string;\n    @Input() widgetConfig?: any;\n    @Input() btnBookLabel?: string;\n    @Input() headerData?: any;\n\n    private activeModalName: string | null = null;\n    private routerSubscription: Subscription;\n\n    private _dinamyHeader: boolean = false;\n    @Input() set dinamyHeader(value: boolean | undefined) {\n        this._dinamyHeader = value ?? false;\n\n        if (!this._dinamyHeader) {\n            this.applySticky(true);\n        } else {\n            this.onWindowScroll();\n        }\n    }\n    get dinamyHeader(): boolean {\n        return this._dinamyHeader;\n    }\n\n    @Output() openEngine = new EventEmitter();\n    @Output() openLanguages = new EventEmitter();\n    @Output() openNews = new EventEmitter();\n    @Output() openSelectorModal = new EventEmitter<string>();\n\n    constructor(\n        private readonly dialog: MatDialog,\n        @Inject(DOCUMENT) private document: Document,\n        @Inject(PLATFORM_ID) private platformId: Object,\n        private router: Router\n    ) {\n        this.routerSubscription = this.router.events\n            .pipe(filter((event) => event instanceof NavigationStart))\n            .subscribe(() => {\n                this.forceCloseAllModals();\n            });\n    }\n\n    private applySticky(isSticky: boolean): void {\n        const body = this.document.body;\n        const header = this.mainHeader?.nativeElement;\n\n        if (isSticky) {\n            body.classList.add('header__sticky', 'header_sticky');\n            header?.classList.add('header__sticky');\n        } else {\n            body.classList.remove('header__sticky', 'header_sticky');\n            header?.classList.remove('header__sticky');\n        }\n    }\n\n    private get isBrowser(): boolean {\n        return isPlatformBrowser(this.platformId);\n    }\n\n    // ====== STICKY HEADER ======\n    @HostListener('window:scroll')\n    onWindowScroll(): void {\n        if (!this.isBrowser) return;\n\n        if (!this.dinamyHeader) {\n            this.applySticky(true);\n            return;\n        }\n\n        const winPos =\n            this.document.documentElement.scrollTop ||\n            this.document.body.scrollTop ||\n            0;\n        this.applySticky(winPos >= 1);\n    }\n\n    // ====== MODALES ======\n    openModal(modalName: string): void {\n        if (!this.isBrowser) return;\n\n        const body = this.document.body;\n        const modalMenu = this.modalMenu?.nativeElement;\n        body.classList.add(modalName, 'modal--open');\n        modalMenu.classList.add('modal--open');\n    }\n\n    closeModal(modalName: string): void {\n        if (!this.isBrowser) return;\n\n        const body = this.document.body;\n        const modalMenu = this.modalMenu?.nativeElement;\n        body.classList.remove(modalName, 'modal--open');\n        modalMenu.classList.remove('modal--open');\n    }\n\n    private forceCloseAllModals(): void {\n        if (!this.isBrowser) return;\n\n        if (this.activeModalName) {\n            this.closeModal(this.activeModalName);\n        } else {\n            this.document.body.classList.remove('modal--open');\n            if (this.modalMenu?.nativeElement) {\n                this.modalMenu.nativeElement.classList.remove('modal--open');\n            }\n        }\n\n        this.dialog.closeAll();\n    }\n\n    // Si quieres una versión genérica usando data-modal_name:\n    handleOpenFromEvent(event: Event): void {\n        if (!this.isBrowser) return;\n\n        const target = event.currentTarget as HTMLElement | null;\n        const modalName = target?.dataset['modal_name'];\n        if (!modalName) return;\n\n        this.openModal(modalName);\n    }\n\n    handleCloseFromEvent(event: Event): void {\n        if (!this.isBrowser) return;\n\n        const target = event.currentTarget as HTMLElement | null;\n        const modalName = target?.dataset['modal_name'];\n        if (!modalName) return;\n\n        this.closeModal(modalName);\n    }\n    openDiscoverModal(): void {\n        const dialogRef = this.dialog.open(BabylonModC2ImgTxtCtaComponent, {\n            width: '100vw',\n            height: '100vh',\n            maxWidth: '100vw',\n            panelClass: ['full-screen', 'modal-bg-bage'],\n            hasBackdrop: true,\n        });\n    }\n\n    openLanguagesModal(): void {\n        this.openLanguages.emit();\n    }\n\n    openEngineModal(): void {\n        const dialogRef = this.dialog.open(BabylonEngineWidgetModalComponent, {\n            width: '100vw',\n            height: '100vh',\n            maxWidth: '100vw',\n            hasBackdrop: true,\n        });\n\n        const event = new EventEmitter();\n\n        event.subscribe(() => {\n            dialogRef.close();\n        });\n\n        dialogRef.componentInstance.locale = this.locale;\n        dialogRef.componentInstance.widgetConfig = this.widgetConfig;\n        dialogRef.componentInstance.ticker = this.ticker;\n        /*   dialogRef.componentInstance.styles = this.styles;\n        dialogRef.componentInstance.close = even; */\n    }\n\n    openNewsletter(): void {\n        this.openNews.emit();\n    }\n}\n","<header #mainHeader class=\"MeSvgTxtCtaMot\">\n    <div class=\"MeSvgTxtCtaMot__logo\">\n        <a href=\"\" class=\"MeSvgTxtCtaMot__logo--img\">\n            <img\n                [src]=\"logos?.logoDesktop?.src\"\n                alt=\"Logo Desktop\"\n                aria-hidden=\"true\"\n            />\n        </a>\n        <a href=\"\" class=\"MeSvgTxtCtaMot__logo--sticky\">\n            <img\n                [src]=\"logos?.logo?.src\"\n                alt=\"Logo Sticky\"\n                aria-hidden=\"true\"\n            />\n        </a>\n    </div>\n    <div class=\"MeSvgTxtCtaMot__nav\">\n        @if (menu) {\n            <ul class=\"MeSvgTxtCtaMot__nav-links\">\n                @for (item of menu; track $index) {\n                    <li>\n                        <a\n                            [href]=\"item.url\"\n                            [linkType]=\"item.linkType\"\n                            [attr.aria-label]=\"item.label\"\n                            [modalClick]=\"openSelectorModal\"\n                            ><span>{{ item.label }}</span></a\n                        >\n                    </li>\n                }\n                <!--   <li>\n                    <a\n                        role=\"button\"\n                        class=\"js-active-modal\"\n                        data-modal_name=\"discover\"\n                        (click)=\"openDiscoverModal()\"\n                        ><span>Descubre</span>\n                    </a>\n                </li> -->\n            </ul>\n        }\n        <ul class=\"MeSvgTxtCtaMot__nav-icons\">\n            <li\n                role=\"button\"\n                class=\"MeSvgTxtCtaMot__nav-icons--menu js-active-modal\"\n                data-modal_name=\"menu\"\n                (click)=\"handleOpenFromEvent($event)\"\n            >\n                <span>\n                    <svg aria-hidden=\"true\" focusable=\"false\">\n                        <use\n                            href=\"/assets/babylon/svg/menu-icon.svg#menu-icon\"\n                        ></use>\n                    </svg>\n                </span>\n            </li>\n            <li role=\"button\" (click)=\"openNewsletter()\">\n                <span\n                    [attr.data-tooltip]=\"\n                        floatingButtons?.textsButtons?.newsletter\n                    \"\n                >\n                    <svg aria-hidden=\"true\" focusable=\"false\">\n                        <use\n                            href=\"/assets/babylon/svg/mail-icon.svg#mail-icon\"\n                        ></use>\n                    </svg>\n                </span>\n            </li>\n            <li role=\"button\" (click)=\"openLanguagesModal()\">\n                <span\n                    [attr.data-tooltip]=\"\n                        floatingButtons?.textsButtons?.language\n                    \"\n                >\n                    <svg aria-hidden=\"true\" focusable=\"false\">\n                        <use\n                            href=\"/assets/babylon/svg/globe-icon.svg#globe-icon\"\n                        ></use>\n                    </svg>\n                </span>\n            </li>\n            @if (headerData?.links?.[1]; as btn) {\n                <li class=\"MeSvgTxtCtaMot__nav-icons--agencies\" role=\"button\">\n                    <a [href]=\"btn.url\" [linkType]=\"btn.linkType\">\n                        <span>\n                            <svg aria-hidden=\"true\" focusable=\"false\">\n                                <use\n                                    href=\"/assets/babylon/svg/agencies-icon.svg#agencies-icon\"\n                                ></use>\n                            </svg>\n                        </span>\n                    </a>\n                </li>\n            }\n\n            @if (headerData?.links?.[2]; as btn) {\n                <li class=\"MeSvgTxtCtaMot__nav-icons--call\" role=\"button\">\n                    <a [href]=\"btn.url\" [linkType]=\"btn.linkType\">\n                        <span>\n                            <svg aria-hidden=\"true\" focusable=\"false\">\n                                <use\n                                    href=\"/assets/babylon/svg/call-icon.svg#call-icon\"\n                                ></use>\n                            </svg>\n                        </span>\n                    </a>\n                </li>\n            }\n        </ul>\n    </div>\n    <div class=\"MeSvgTxtCtaMot__btn\">\n        <button\n            type=\"button\"\n            (click)=\"openEngineModal()\"\n            class=\"btn btn__primary\"\n        >\n            <span>{{ headerData?.btnBook?.label }}</span>\n        </button>\n        @if (headerData?.links?.[1]; as btn) {\n            <a [href]=\"btn.url\" [linkType]=\"btn.linkType\" class=\"btn__link\"\n                ><span>{{ btn?.label }}</span></a\n            >\n        }\n    </div>\n    <div class=\"MeSvgTxtCtaMot__btn--mobile\">\n        <a\n            role=\"button\"\n            class=\"MeSvgTxtCtaMot__btn--mobile-links js-active-modal\"\n            data-modal_name=\"menu\"\n            (click)=\"handleOpenFromEvent($event)\"\n        >\n            @if (floatingButtons?.textsButtons?.menuText) {\n                <span>{{ floatingButtons?.textsButtons?.menuText }}</span>\n            }\n            <svg\n                aria-hidden=\"true\"\n                focusable=\"false\"\n                class=\"MeSvgTxtCtaMot__btn--mobile-links-iconMenu\"\n            >\n                <use\n                    href=\"/assets/babylon/svg/menu-icon-2.svg#menu-icon-2\"\n                ></use>\n            </svg>\n        </a>\n\n        @if (headerData?.btnBook?.label) {\n            <button\n                type=\"button\"\n                (click)=\"openEngineModal()\"\n                class=\"MeSvgTxtCtaMot__btn--mobile-links btn btn__primary\"\n            >\n                <span>{{ headerData?.btnBook?.label }}</span>\n            </button>\n        }\n    </div>\n</header>\n\n<div class=\"modal modal__menu\" #modalMenu>\n    <div class=\"modal__inner\">\n        <div\n            class=\"modal__close js-close\"\n            data-modal_name=\"menu\"\n            role=\"button\"\n            (click)=\"handleCloseFromEvent($event)\"\n        >\n            <svg aria-hidden=\"true\" focusable=\"false\">\n                <use href=\"/assets/babylon/svg/close-icon.svg#close-icon\"></use>\n            </svg>\n        </div>\n        <a href=\"\">\n            <span class=\"modal__logo\">\n                <svg aria-hidden=\"true\" focusable=\"false\">\n                    <use\n                        href=\"/assets/babylon/svg/canbordoy-logo.svg#canbordoy-logo\"\n                    ></use>\n                </svg>\n            </span>\n        </a>\n        <div class=\"modal__menu-nav\">\n            @if (menu) {\n                <ul class=\"modal__menu-nav--links\">\n                    @for (item of menu; track $index) {\n                        <li>\n                            <a\n                                [href]=\"item.url\"\n                                [linkType]=\"item.linkType\"\n                                [attr.aria-label]=\"item.label\"\n                                [modalClick]=\"openSelectorModal\"\n                                ><span>{{ item.label }}</span></a\n                            >\n                        </li>\n                    }\n                </ul>\n            }\n            <ul class=\"modal__menu-nav--icons\">\n                <li\n                    class=\"modal__menu-nav--icons-newsletter\"\n                    role=\"button\"\n                    (click)=\"openNewsletter()\"\n                >\n                    <span>\n                        <svg aria-hidden=\"true\" focusable=\"false\">\n                            <use\n                                href=\"/assets/babylon/svg/mail-icon.svg#mail-icon\"\n                            ></use>\n                        </svg>\n                    </span>\n                </li>\n                <li\n                    class=\"modal__menu-nav--icons-language\"\n                    role=\"button\"\n                    (click)=\"openLanguagesModal()\"\n                >\n                    <span>\n                        <svg aria-hidden=\"true\" focusable=\"false\">\n                            <use\n                                href=\"/assets/babylon/svg/globe-icon.svg#globe-icon\"\n                            ></use>\n                        </svg>\n                    </span>\n                </li>\n\n                @if (headerData?.links?.[1]; as btn) {\n                    <li class=\"modal__menu-nav--icons-agencies\" role=\"button\">\n                        <a [href]=\"btn.url\" [linkType]=\"btn.linkType\">\n                            <span>\n                                <svg aria-hidden=\"true\" focusable=\"false\">\n                                    <use\n                                        href=\"/assets/babylon/svg/agencies-icon.svg#agencies-icon\"\n                                    ></use>\n                                </svg>\n                            </span>\n                        </a>\n                    </li>\n                }\n            </ul>\n        </div>\n    </div>\n</div>\n","import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    Component,\n    ElementRef,\n    EventEmitter,\n    HostListener,\n    inject,\n    Input,\n    OnDestroy,\n    Output,\n    PLATFORM_ID,\n} from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { filter, Subscription } from 'rxjs';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport { LogoType } from '../../../Enum';\nimport {\n    BabylonBodyExtra,\n    BabylonButtonI,\n    BabylonImageI,\n} from '../../../interfaces';\nimport { BabylonFloatingButtonsI } from '../../../interfaces/babylon-floating-buttons.interface';\nimport { BabylonHotelStylesItem } from '../../../interfaces/babylon-hotel-styles.interface';\nimport { Utils } from '../../../utils';\nimport { BabylonEngineWidgetModalComponent } from '../babylon-engine-widget-modal';\n\n@Component({\n    selector: 'lib-babylon-he-svg-list',\n    standalone: true,\n    imports: [CommonModule, BabylonLinkTypeDirective],\n    templateUrl: './babylon-he-svg-list.component.html',\n    styleUrl: './babylon-he-svg-list.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonHeSvgListComponent implements AfterViewInit, OnDestroy {\n    @Input() dinamyHeader?: boolean = false;\n    @Input() hotelPage?: boolean = false;\n    @Input() menu?: BabylonButtonI[];\n    @Input() logos?: Record<LogoType, BabylonImageI | undefined>;\n    @Input() floatingButtons?: BabylonFloatingButtonsI;\n    @Input() links?: BabylonButtonI[];\n    @Input() locale?: string;\n    @Input() ticker?: string;\n\n    @Input() hotel?: string;\n    @Input() items?: BabylonButtonI[];\n    @Input() selected?: BabylonButtonI;\n    @Input() styles?: BabylonHotelStylesItem;\n    @Input() hotelType?: BabylonBodyExtra;\n    @Input() hotelCategory?: BabylonBodyExtra;\n\n    @Input() widgetConfig?: any;\n\n    private readonly platformId = inject(PLATFORM_ID);\n    @Output() openLanguages = new EventEmitter();\n    @Output() openOfferPop = new EventEmitter<string>();\n\n    private domObs?: MutationObserver;\n\n    private readonly router = inject(Router);\n    private navSub?: Subscription;\n\n    constructor(\n        private el: ElementRef<HTMLElement>,\n        private readonly dialog: MatDialog\n    ) {}\n\n    ngAfterViewInit(): void {\n        if (!isPlatformBrowser(this.platformId)) return;\n\n        this.initBreadcrumbFlag();\n        this.updateHeaderSticky();\n\n        requestAnimationFrame(() => {\n            this.updateHeaderSticky();\n            requestAnimationFrame(() => this.updateHeaderSticky());\n        });\n\n        this.domObs = new MutationObserver(() => this.updateHeaderSticky());\n        this.domObs.observe(document.body, { childList: true, subtree: true });\n\n        this.navSub = this.router.events\n            .pipe(filter((e): e is NavigationEnd => e instanceof NavigationEnd))\n            .subscribe(() => {\n                this.closeMenuBurger();\n                requestAnimationFrame(() => this.updateHeaderSticky());\n            });\n    }\n\n    showMenuBurger(): void {\n        if (!isPlatformBrowser(this.platformId)) return;\n\n        const burger = document.querySelector<HTMLElement>('.m-burger-menu');\n        if (burger) {\n            burger.classList.toggle('show');\n        }\n\n        document.documentElement.classList.toggle('overflow-hidden');\n    }\n\n    closeMenuBurger(reload?: boolean): void {\n        if (!isPlatformBrowser(this.platformId)) return;\n\n        const burger = document.querySelector<HTMLElement>('.m-burger-menu');\n        if (!burger) return;\n\n        burger.classList.remove('show');\n        document.documentElement.classList.remove('overflow-hidden');\n    }\n\n    @HostListener('window:scroll')\n    onWindowScroll(): void {\n        if (!isPlatformBrowser(this.platformId)) return;\n        this.updateHeaderSticky();\n    }\n\n    // ======================\n    //  Helpers privados\n    // ======================\n\n    private updateHeaderSticky(): void {\n        const header = document.querySelector<HTMLElement>('.mdl-header');\n        if (!header) return;\n\n        // Respetar .force-sticky\n        if (header.classList.contains('force-sticky')) return;\n\n        // Usamos el hero real como referencia\n        const hero =\n            document.querySelector<HTMLElement>('.mdl-herohome') ||\n            document.querySelector<HTMLElement>('.fake-hero');\n\n        if (!hero || !this.dinamyHeader) {\n            header.classList.add('sticky');\n            return;\n        }\n\n        const sentinel =\n            document.querySelector<HTMLElement>('.sticky-sentinel');\n\n        if (this.dinamyHeader) {\n            const rect = hero.getBoundingClientRect();\n            const windowHeight =\n                window.innerHeight || document.documentElement.clientHeight;\n\n            // Está fuera de vista si:\n            // - Su parte de abajo queda por encima del viewport\n            //   o\n            // - Su parte de arriba queda por debajo del viewport (scroll muy abajo)\n            const scrollTop =\n                window.pageYOffset ||\n                document.documentElement.scrollTop ||\n                document.body.scrollTop ||\n                0;\n\n            const heroTop = rect.top + scrollTop;\n            const heroBottom = heroTop + rect.height;\n\n            const isOutOfView =\n                heroBottom < scrollTop ||\n                heroTop > scrollTop + windowHeight ||\n                scrollTop > 200;\n\n            header.classList.toggle('sticky', isOutOfView);\n            document.body.classList.toggle('header_sticky', isOutOfView);\n        }\n    }\n\n    /** Añade .v-no-hotel al breadcrumb si el header NO es hotel-card */\n    private initBreadcrumbFlag(): void {\n        const header = document.querySelector<HTMLElement>('.mdl-header');\n        const breadcrumb =\n            document.querySelector<HTMLElement>('.mdl-breadcrumb');\n\n        if (!header || !breadcrumb) return;\n\n        if (!header.classList.contains('hotel-card')) {\n            breadcrumb.classList.add('v-no-hotel');\n        }\n    }\n\n    openLanguagesModal(): void {\n        this.openLanguages.emit();\n    }\n\n    openOfferPopup(): void {\n        this.openOfferPop.emit('offerPopUpV3');\n    }\n\n    ngOnDestroy(): void {\n        this.navSub?.unsubscribe();\n        this.domObs?.disconnect();\n    }\n\n    openEngineModal() {\n        const dialogRef = this.dialog.open(BabylonEngineWidgetModalComponent, {\n            width: '100vw',\n            height: '100vh',\n            maxWidth: '100vw',\n            hasBackdrop: true,\n        });\n\n        const event = new EventEmitter();\n\n        event.subscribe(() => {\n            dialogRef.close();\n        });\n\n        dialogRef.componentInstance.locale = this.locale;\n        dialogRef.componentInstance.widgetConfig = this.widgetConfig;\n        dialogRef.componentInstance.ticker = this.ticker;\n        dialogRef.componentInstance.styles = this.styles;\n        dialogRef.componentInstance.close = event;\n    }\n\n    buildMenuUrl(item: BabylonButtonI): string {\n        if (!item?.url) return '';\n\n        const baseUrl = item.url.replace(/\\/+$/, '');\n        const order = item.order?.toString();\n\n        if (order !== '2' && order !== '3') {\n            return baseUrl;\n        }\n\n        const label = (item.label ?? '').toString().trim();\n        if (!label) return baseUrl;\n\n        const filterSlug = this.canonicalSlug(label);\n        if (!filterSlug) return baseUrl;\n\n        return `${baseUrl}?filter=${filterSlug}`;\n    }\n\n    private canonicalSlug(value: string): string {\n        let s = Utils.toSlug(value);\n        if (!s) return '';\n\n        if (s.length > 3 && s.endsWith('es')) {\n            const base = s.slice(0, -2);\n            if (base.endsWith('c')) return base.slice(0, -1) + 'z';\n            return base;\n        }\n\n        if (s.length > 3 && s.endsWith('s')) return s.slice(0, -1);\n\n        return s;\n    }\n\n    getNumber(text: string): number[] {\n        return Utils.extractNumberRange(text);\n    }\n\n    showIfSup(value?: string | null): string {\n        const regex = /\\b(SUP|superior)\\b/i;\n\n        return regex.test(value ?? '') ? 'SUP' : '';\n    }\n}\n","<!-- Añadir clase hotel-card para ficha hotel -->\n<!-- Al añadir la clase force-sticky evitamos el efecto de cambiar entre sticky en el scroll down/up -->\n<section class=\"mdl-header\">\n    <div class=\"mdl-container\">\n        <!-- Menú desktop y contenedor para logo, idioma y usuario -->\n        <div class=\"m-menu\">\n            <!-- Botón flotante para reserva online -->\n            @if (floatingButtons?.links?.length) {\n                @if (floatingButtons?.links?.[1]) {\n                    <div class=\"m-checking-online\">\n                        <a\n                            [href]=\"floatingButtons?.links?.[1]?.url\"\n                            [linkType]=\"floatingButtons?.links?.[1]?.linkType\"\n                            [attr.aria-label]=\"\n                                floatingButtons?.links?.[1]?.label\n                            \"\n                        >\n                            <span>{{\n                                floatingButtons?.links?.[1]?.label\n                            }}</span>\n                        </a>\n                    </div>\n                }\n            }\n\n            <!-- Book now button -->\n            @if (floatingButtons?.textsButtons?.booktext) {\n                <div\n                    class=\"m-book-container\"\n                    [style.backgroundColor]=\"styles?.primary ?? '#ff4338'\"\n                >\n                    <a\n                        (click)=\"openEngineModal()\"\n                        class=\"m-button m-book\"\n                        [style.backgroundColor]=\"styles?.primary ?? '#ff4338'\"\n                        >{{ floatingButtons?.textsButtons?.booktext }}</a\n                    >\n                </div>\n            }\n\n            <!-- Logo -->\n            @if (logos) {\n                <a\n                    [href]=\"menu?.[0]?.url ?? '/es/home'\"\n                    [linkType]=\"menu?.[0]?.linkType\"\n                    [attr.aria-label]=\"menu?.[0]?.label\"\n                    class=\"m-logo\"\n                >\n                    @if (logos.logoDesktop) {\n                        <img\n                            [src]=\"logos.logoDesktop.src\"\n                            [alt]=\"logos.logoDesktop.alt\"\n                        />\n                    }\n                    @if (logos.logoMenu) {\n                        <img\n                            class=\"red\"\n                            [src]=\"logos.logoMenu.src\"\n                            [alt]=\"logos.logoMenu.alt\"\n                        />\n                    }\n                </a>\n            }\n            <!-- Links + Lang + user -->\n            <div class=\"m-links-container\">\n                <!-- Links -->\n                @if (menu?.length) {\n                    <div class=\"m-links\">\n                        @for (item of menu; track $index) {\n                            @if (item) {\n                                <a\n                                    [href]=\"buildMenuUrl(item)\"\n                                    [linkType]=\"item.linkType\"\n                                    [attr.aria-label]=\"item.label\"\n                                    (anchorClicked)=\"closeMenuBurger()\"\n                                >\n                                    @if ($index == 0) {\n                                        <img\n                                            src=\"/assets/babylon/svg/icons/home.svg\"\n                                            alt=\"home\"\n                                        />\n                                    } @else {\n                                        {{ item.label }}\n                                    }\n                                </a>\n                            }\n                        }\n                    </div>\n                }\n                <!-- Motor sticky -->\n\n                <div class=\"m-motor\"></div>\n\n                <!-- user + lang -->\n                <div class=\"m-right\">\n                    <button\n                        type=\"button\"\n                        class=\"m-burger\"\n                        aria-label=\"Abrir menú\"\n                        aria-expanded=\"false\"\n                        aria-controls=\"burger-menu\"\n                        (click)=\"showMenuBurger()\"\n                    >\n                        <svg\n                            width=\"37\"\n                            height=\"23\"\n                            viewBox=\"0 0 37 23\"\n                            fill=\"none\"\n                            xmlns=\"http://www.w3.org/2000/svg\"\n                        >\n                            <path\n                                d=\"M36.2338 0H0V1.81963H36.2338V0Z\"\n                                fill=\"#515050\"\n                            />\n                            <path\n                                d=\"M36.2338 10.5859H0V12.4066H36.2338V10.5859Z\"\n                                fill=\"#515050\"\n                            />\n                            <path\n                                d=\"M36.2338 21.1797H0V22.9993H36.2338V21.1797Z\"\n                                fill=\"#515050\"\n                            />\n                        </svg>\n                    </button>\n                    <!--   <button\n                        type=\"button\"\n                        class=\"m-user\"\n                        aria-label=\"Abrir menú de usuario\"\n                        (click)=\"openOfferPopup()\"\n                    >\n                        <svg\n                            width=\"20\"\n                            height=\"22\"\n                            viewBox=\"0 0 20 22\"\n                            fill=\"none\"\n                            xmlns=\"http://www.w3.org/2000/svg\"\n                        >\n                            <g opacity=\"0.7\">\n                                <path\n                                    d=\"M17.941 14.8491C16.938 13.8431 15.602 13.2891 14.178 13.2891H5.321C3.899 13.2891 2.563 13.8431 1.558 14.8491C0.552001 15.8541 -0.000998646 17.1901 1.35387e-06 18.6121V20.8261C1.35387e-06 21.3191 0.400001 21.7201 0.894001 21.7201C1.386 21.7201 1.787 21.3201 1.787 20.8261V18.6121C1.787 17.6681 2.155 16.7791 2.823 16.1111C3.488 15.4441 4.376 15.0761 5.322 15.0761H14.18C15.125 15.0761 16.013 15.4431 16.679 16.1111C17.347 16.7771 17.714 17.6661 17.714 18.6121V20.8261C17.714 21.3191 18.114 21.7201 18.608 21.7201C19.1 21.7201 19.501 21.3201 19.501 20.8261V18.6121C19.501 17.1901 18.947 15.8541 17.941 14.8491Z\"\n                                    fill=\"#515050\"\n                                />\n                                <path\n                                    d=\"M9.75069 10.644C12.6857 10.644 15.0727 8.257 15.0727 5.322C15.0727 2.387 12.6857 0 9.75069 0C6.81569 0 4.42969 2.387 4.42969 5.322C4.42969 8.257 6.81569 10.644 9.75069 10.644ZM9.75069 1.786C11.7007 1.786 13.2867 3.372 13.2867 5.322C13.2867 7.272 11.7007 8.858 9.75069 8.858C7.80169 8.858 6.21569 7.272 6.21569 5.322C6.21569 3.372 7.80169 1.786 9.75069 1.786Z\"\n                                    fill=\"#515050\"\n                                />\n                            </g>\n                        </svg>\n                    </button> -->\n                    <button\n                        type=\"button\"\n                        class=\"m-lang\"\n                        aria-label=\"Seleccionar idioma\"\n                        data-src=\"#idiomas-form\"\n                        (click)=\"openLanguagesModal()\"\n                    >\n                        <svg\n                            width=\"23\"\n                            height=\"23\"\n                            viewBox=\"0 0 23 23\"\n                            fill=\"none\"\n                            xmlns=\"http://www.w3.org/2000/svg\"\n                        >\n                            <g opacity=\"0.7\">\n                                <path\n                                    d=\"M11.5 23C9.22552 23 7.00211 22.3255 5.11095 21.0619C3.21978 19.7983 1.7458 18.0022 0.87539 15.9009C0.00498277 13.7995 -0.222756 11.4872 0.220974 9.25646C0.664704 7.02568 1.75997 4.97658 3.36828 3.36828C4.97658 1.75997 7.02568 0.664704 9.25646 0.220974C11.4872 -0.222756 13.7995 0.00498277 15.9009 0.87539C18.0022 1.7458 19.7983 3.21978 21.0619 5.11095C22.3255 7.00211 23 9.22552 23 11.5C22.9966 14.5489 21.7839 17.472 19.628 19.628C17.472 21.7839 14.5489 22.9966 11.5 23ZM11.5 1.60466C9.54289 1.60466 7.62972 2.18501 6.00244 3.27232C4.37516 4.35964 3.10685 5.90508 2.35789 7.71322C1.60894 9.52135 1.41298 11.511 1.79479 13.4305C2.17661 15.35 3.11905 17.1132 4.50294 18.4971C5.88682 19.881 7.65001 20.8234 9.56952 21.2052C11.489 21.587 13.4786 21.3911 15.2868 20.6421C17.0949 19.8932 18.6404 18.6248 19.7277 16.9976C20.815 15.3703 21.3953 13.4571 21.3953 11.5C21.3925 8.87646 20.3491 6.36119 18.4939 4.50606C16.6388 2.65094 14.1235 1.60749 11.5 1.60466Z\"\n                                    fill=\"#515050\"\n                                />\n                                <path\n                                    d=\"M11.4994 23C8.19913 23 6.41797 17.0746 6.41797 11.5C6.41797 5.92544 8.19913 0 11.4994 0C14.7996 0 16.5808 5.92544 16.5808 11.5C16.5808 17.0746 14.7996 23 11.4994 23ZM11.4994 1.60465C9.85834 1.60465 8.02262 5.83665 8.02262 11.5C8.02262 17.1633 9.85834 21.3953 11.4994 21.3953C13.1404 21.3953 14.9761 17.1633 14.9761 11.5C14.9761 5.83665 13.1404 1.60465 11.4994 1.60465Z\"\n                                    fill=\"#515050\"\n                                />\n                                <path\n                                    d=\"M11.4997 6.95417C10.213 6.95354 8.93264 6.77352 7.69563 6.41929C6.23211 6.00081 4.85534 5.32366 3.63051 4.41989C3.53663 4.36112 3.45593 4.28355 3.3935 4.19206C3.33107 4.10057 3.28826 3.99715 3.26776 3.8883C3.24727 3.77946 3.24953 3.66754 3.27441 3.55961C3.29929 3.45168 3.34624 3.35007 3.41232 3.26118C3.47839 3.17229 3.56216 3.09804 3.65834 3.04311C3.75452 2.98819 3.86103 2.95377 3.97117 2.94202C4.0813 2.93028 4.19268 2.94147 4.29828 2.97488C4.40388 3.00829 4.50141 3.06321 4.58475 3.13617C5.6566 3.92388 6.86041 4.51401 8.13958 4.87882C10.3371 5.50465 12.6656 5.50465 14.8631 4.87882C16.1414 4.51285 17.3441 3.92162 18.4147 3.13296C18.499 3.06625 18.5959 3.01717 18.6996 2.98864C18.8033 2.9601 18.9116 2.9527 19.0182 2.96687C19.1248 2.98103 19.2274 3.01648 19.3201 3.07111C19.4127 3.12573 19.4934 3.19841 19.5573 3.28484C19.6213 3.37126 19.6673 3.46966 19.6925 3.5742C19.7177 3.67873 19.7216 3.78726 19.704 3.89334C19.6864 3.99943 19.6477 4.10089 19.5902 4.19171C19.5326 4.28253 19.4574 4.36086 19.3689 4.42203C18.1441 5.32556 16.7673 6.00236 15.3038 6.42036C14.0668 6.77422 12.7864 6.95389 11.4997 6.95417Z\"\n                                    fill=\"#515050\"\n                                />\n                                <path\n                                    d=\"M18.8913 20.0246C18.7198 20.0244 18.553 19.9693 18.4152 19.8673C17.3437 19.0781 16.1398 18.4865 14.8604 18.1204C12.6629 17.4945 10.3344 17.4945 8.13689 18.1204C6.85856 18.4863 5.65582 19.0776 4.58526 19.8662C4.50093 19.9329 4.40406 19.982 4.30038 20.0106C4.19671 20.0391 4.08836 20.0465 3.98177 20.0323C3.87518 20.0182 3.77253 19.9827 3.67991 19.9281C3.58729 19.8735 3.50659 19.8008 3.44262 19.7144C3.37864 19.6279 3.33269 19.5295 3.30749 19.425C3.2823 19.3205 3.27837 19.2119 3.29595 19.1058C3.31352 18.9998 3.35224 18.8983 3.40981 18.8075C3.46737 18.7167 3.5426 18.6383 3.63103 18.5772C4.85586 17.6736 6.23264 16.9968 7.69615 16.5788C10.1837 15.8696 12.82 15.8696 15.3075 16.5788C16.7711 16.9973 18.1478 17.6745 19.3727 18.5782C19.5087 18.6785 19.6096 18.8192 19.6609 18.9802C19.7121 19.1412 19.7112 19.3144 19.6581 19.4748C19.6051 19.6353 19.5027 19.7749 19.3655 19.8736C19.2283 19.9723 19.0635 20.0252 18.8945 20.0246H18.8913Z\"\n                                    fill=\"#515050\"\n                                />\n                                <path\n                                    d=\"M22.1977 12.3H0.802325C0.589535 12.3 0.385461 12.2154 0.234996 12.065C0.0845305 11.9145 0 11.7104 0 11.4976C0 11.2848 0.0845305 11.0808 0.234996 10.9303C0.385461 10.7798 0.589535 10.6953 0.802325 10.6953H22.1977C22.4105 10.6953 22.6145 10.7798 22.765 10.9303C22.9155 11.0808 23 11.2848 23 11.4976C23 11.7104 22.9155 11.9145 22.765 12.065C22.6145 12.2154 22.4105 12.3 22.1977 12.3Z\"\n                                    fill=\"#515050\"\n                                />\n                            </g>\n                        </svg>\n                    </button>\n                </div>\n            </div>\n        </div>\n        <div class=\"sticky-sentinel\"></div>\n        <!-- Menú rojo para ficha hotel -->\n        <div\n            class=\"m-card-hotel\"\n            [ngClass]=\"{ hidden: !items?.length }\"\n            [style.backgroundColor]=\"styles?.primary ?? '#ff4338'\"\n        >\n            @if (hotel) {\n                <a\n                    [href]=\"items?.[0]?.url\"\n                    [linkType]=\"items?.[0]?.linkType\"\n                    class=\"m-hotel-logo\"\n                >\n                    <div class=\"m-title\">{{ hotel }}</div>\n                    <div class=\"m-stars\">\n                        @if (hotelType?.bodyextra?.nameIdentifier) {\n                            <span>{{\n                                hotelType?.bodyextra?.nameIdentifier\n                            }}</span>\n                        }\n                        @if (hotelType?.bodyextra?.nameIdentifier === 'Hotel') {\n                            <div class=\"starts-container\">\n                                @for (\n                                    item of getNumber(\n                                        hotelCategory?.bodyextra\n                                            ?.nameIdentifier ?? ''\n                                    );\n                                    track $index\n                                ) {\n                                    <svg\n                                        xmlns=\"http://www.w3.org/2000/svg\"\n                                        width=\"15\"\n                                        height=\"15\"\n                                        viewBox=\"0 0 20 20\"\n                                    >\n                                        <g fill=\"none\" fill-rule=\"evenodd\">\n                                            <g>\n                                                <g>\n                                                    <g\n                                                        transform=\"translate(-1404.000000, -5922.000000) translate(191.000000, 5865.000000) translate(1109.000000, 57.000000)\"\n                                                    >\n                                                        <g>\n                                                            <path\n                                                                fill=\"#fff\"\n                                                                fill-opacity=\"0.8\"\n                                                                fill-rule=\"nonzero\"\n                                                                d=\"M10 0l2.294 7.104c.034.106.133.178.245.178L20 7.267l-6.046 4.374v.001c-.09.066-.128.182-.093.289l2.322 7.095-6.032-4.4c-.09-.065-.213-.065-.303 0l-6.029 4.4 2.322-7.095H6.14c.035-.107-.003-.223-.094-.289L0 7.268l7.461.015.001-.001c.112 0 .211-.072.245-.178L10 0z\"\n                                                                transform=\"translate(104.000000, 0.000000)\"\n                                                            />\n                                                        </g>\n                                                    </g>\n                                                </g>\n                                            </g>\n                                        </g>\n                                    </svg>\n                                }\n                            </div>\n                        }\n\n                        @if (\n                            hotelType?.bodyextra?.nameIdentifier ===\n                                'Apartamento' ||\n                            hotelType?.bodyextra?.nameIdentifier === 'Apartment'\n                        ) {\n                            <div class=\"starts-container\">\n                                @for (\n                                    item of getNumber(\n                                        hotelCategory?.bodyextra\n                                            ?.nameIdentifier ?? ''\n                                    );\n                                    track $index\n                                ) {\n                                    <svg\n                                        width=\"15\"\n                                        height=\"15\"\n                                        viewBox=\"0 0 20 20\"\n                                        fill=\"none\"\n                                        xmlns=\"http://www.w3.org/2000/svg\"\n                                    >\n                                        <g transform=\"translate(2 2)\">\n                                            <path\n                                                d=\"M0.146296 4.26479L1.14015 2.01692C1.31289 1.62559 1.62559 1.31289 2.01692 1.14015L4.26479 0.146297C4.58174 0.00641826 4.93356 -0.0343944 5.27412 0.0292127C5.61467 0.0928198 5.92805 0.257876 6.17314 0.50273L7.9475 2.27839C8.1606 2.49155 8.31388 2.75701 8.39197 3.04813C8.47006 3.33925 8.4702 3.64578 8.39239 3.93698L7.93579 5.64109L12.866 10.5713C12.9085 10.6136 12.9422 10.6639 12.9652 10.7193C12.9882 10.7746 13 10.834 13 10.8939V12.5447C12.9993 12.6652 12.9511 12.7807 12.8659 12.8659C12.7807 12.9511 12.6652 12.9993 12.5447 13H10.8939C10.7926 12.9998 10.6942 12.9659 10.6142 12.9038C10.5341 12.8416 10.477 12.7547 10.4516 12.6566L10.2045 11.6796L9.3303 11.5131C9.24322 11.4968 9.16282 11.4553 9.09903 11.3938C9.03523 11.3323 8.99082 11.2535 8.97127 11.1671L8.73321 10.1173L7.89026 10.0367C7.78479 10.0274 7.68608 9.9808 7.61188 9.90528L5.64109 7.93579L3.93697 8.39239C3.6458 8.47047 3.33919 8.47046 3.04802 8.39236C2.75685 8.31426 2.4914 8.16082 2.27839 7.9475L0.502729 6.17314C0.257875 5.92805 0.0928202 5.61467 0.029213 5.27412C-0.0343943 4.93357 0.00641727 4.58174 0.146296 4.26479ZM3.6703 5.08953C3.81061 5.22968 3.98932 5.32508 4.18385 5.36369C4.37837 5.40229 4.57997 5.38236 4.76317 5.30641C4.94636 5.23047 5.10294 5.10191 5.21309 4.937C5.32324 4.7721 5.38203 4.57823 5.38203 4.37991C5.38203 4.1816 5.32324 3.98773 5.21309 3.82283C5.10294 3.65792 4.94636 3.52936 4.76317 3.45342C4.57997 3.37747 4.37837 3.35754 4.18385 3.39614C3.98932 3.43475 3.81061 3.53015 3.6703 3.6703C3.57689 3.76336 3.50277 3.87395 3.45219 3.99572C3.40162 4.1175 3.37558 4.24806 3.37558 4.37991C3.37558 4.51177 3.40162 4.64233 3.45219 4.76411C3.50277 4.88588 3.57689 4.99647 3.6703 5.08953Z\"\n                                                fill=\"#fff\"\n                                                fill-opacity=\"0.8\"\n                                            />\n                                        </g>\n                                    </svg>\n                                }\n                            </div>\n                        }\n                        <div class=\"m-title-sup\">\n                            {{\n                                showIfSup(\n                                    hotelCategory?.bodyextra?.nameIdentifier\n                                )\n                            }}\n                        </div>\n                    </div>\n                </a>\n            }\n\n            @if (items?.length) {\n                <div class=\"m-hotel-submenus\">\n                    @for (item of items; track $index) {\n                        <a\n                            [href]=\"item.url\"\n                            [linkType]=\"item.linkType\"\n                            [attr.aria-label]=\"item.label\"\n                            class=\"m-submenu\"\n                            >{{ item.label }}</a\n                        >\n                    }\n                </div>\n            }\n        </div>\n    </div>\n\n    <div class=\"m-optionsmobile\">\n        @if (floatingButtons?.links?.length) {\n            @if (floatingButtons?.links?.[1]) {\n                <div class=\"m-checking-online\">\n                    <a\n                        type=\"button\"\n                        class=\"m-checking-online-button\"\n                        [href]=\"floatingButtons?.links?.[1]?.url\"\n                        [linkType]=\"floatingButtons?.links?.[1]?.linkType\"\n                        [attr.aria-label]=\"floatingButtons?.links?.[1]?.label\"\n                    >\n                        {{ floatingButtons?.links?.[1]?.label }}\n                    </a>\n                </div>\n            }\n        }\n        <button\n            type=\"button\"\n            class=\"m-menumobile\"\n            aria-label=\"Abrir menú\"\n            aria-expanded=\"false\"\n            aria-controls=\"burger-menu\"\n            (click)=\"showMenuBurger()\"\n        >\n            @if (floatingButtons?.textsButtons?.menuText) {\n                <span>{{ floatingButtons?.textsButtons?.menuText }}</span>\n            } @else {\n                <span>-</span>\n            }\n\n            <svg\n                width=\"37\"\n                height=\"23\"\n                viewBox=\"0 0 37 23\"\n                fill=\"none\"\n                xmlns=\"http://www.w3.org/2000/svg\"\n            >\n                <g opacity=\"0.7\">\n                    <path d=\"M36.2338 0H0V1.81963H36.2338V0Z\" fill=\"#515050\" />\n                    <path\n                        d=\"M36.2338 10.5859H0V12.4066H36.2338V10.5859Z\"\n                        fill=\"#515050\"\n                    />\n                    <path\n                        d=\"M36.2338 21.1797H0V22.9993H36.2338V21.1797Z\"\n                        fill=\"#515050\"\n                    />\n                </g>\n            </svg>\n        </button>\n\n        @if (floatingButtons?.textsButtons?.booktext) {\n            <a\n                class=\"m-bookmobile\"\n                (click)=\"openEngineModal()\"\n                [style.backgroundColor]=\"styles?.primary ?? '#ff4338'\"\n                >{{ floatingButtons?.textsButtons?.booktext }}</a\n            >\n        }\n    </div>\n\n    <div id=\"burger-menu\" class=\"m-burger-menu\">\n        <button\n            type=\"button\"\n            class=\"close\"\n            aria-label=\"Cerrar menú\"\n            (click)=\"showMenuBurger()\"\n            [ngClass]=\"{\n                color: styles === undefined,\n            }\"\n        >\n            @if (styles?.primary && hotel && items?.length) {\n                <svg\n                    width=\"14\"\n                    height=\"13\"\n                    viewBox=\"0 0 14 13\"\n                    fill=\"none\"\n                    xmlns=\"http://www.w3.org/2000/svg\"\n                >\n                    <path\n                        d=\"M1.33677 0.739403C1.51937 0.55773 1.76696 0.455628 2.02454 0.456284C2.28202 0.456975 2.52861 0.560362 2.71024 0.742856L7.08546 5.14018L11.4344 0.740094C11.616 0.557565 11.8627 0.45426 12.1201 0.453522C12.3777 0.452865 12.6253 0.554968 12.8079 0.736641C12.9904 0.918282 13.0938 1.16484 13.0945 1.42234C13.0951 1.67992 12.993 1.92751 12.8114 2.11011L8.35259 6.59099L12.7409 11.0014C12.9226 11.184 13.0247 11.4317 13.0241 11.6892C13.0234 11.9467 12.9199 12.1933 12.7375 12.3749C12.5549 12.5566 12.3073 12.6587 12.0497 12.658C11.7922 12.6573 11.5456 12.554 11.364 12.3714L6.98948 7.97482L2.6405 12.3749C2.45885 12.5575 2.21164 12.6601 1.95411 12.6608C1.69663 12.6614 1.4496 12.5599 1.26702 12.3784C1.08449 12.1967 0.98118 11.9501 0.980453 11.6927C0.979797 11.4351 1.0819 11.1875 1.26357 11.0049L5.72097 6.52401L1.33332 2.11288C1.15177 1.93037 1.05033 1.68321 1.05089 1.42579C1.05154 1.16825 1.15422 0.921069 1.33677 0.739403Z\"\n                        [attr.fill]=\"styles?.primary ?? '#fff'\"\n                    />\n                </svg>\n            } @else {\n                <img\n                    src=\"/assets/babylon/svg/icons/close-small.svg\"\n                    alt=\"close\"\n                />\n            }\n        </button>\n\n        @if (styles?.primary && hotel && items?.length) {\n            <div\n                class=\"background-container\"\n                [style.backgroundColor]=\"styles?.primary ?? '#ff4338'\"\n            ></div>\n        }\n        <div class=\"m-container\">\n            @if (logos?.logoMenu) {\n                <div class=\"m-header\">\n                    <a\n                        [href]=\"menu?.[0]?.url ?? '/es/home'\"\n                        [linkType]=\"menu?.[0]?.linkType\"\n                        [attr.aria-label]=\"menu?.[0]?.label\"\n                        class=\"m-logo\"\n                    >\n                        <img\n                            [ngClass]=\"{\n                                white:\n                                    styles?.primary && hotel && items?.length,\n                            }\"\n                            [src]=\"logos?.logoMenu?.src\"\n                            [alt]=\"logos?.logoMenu?.alt\"\n                        />\n                    </a>\n                    @if (hotel && items?.length) {\n                        <a\n                            [href]=\"items?.[0]?.url\"\n                            [linkType]=\"items?.[0]?.linkType\"\n                        >\n                            <div class=\"m-title\">{{ hotel }}</div>\n                        </a>\n                    }\n                </div>\n            }\n\n            @if (hotel && items?.length) {\n                <div class=\"m-links hotel-menu\">\n                    <div class=\"m-links-container\">\n                        @for (item of items; track $index) {\n                            <a\n                                [href]=\"item.url\"\n                                [linkType]=\"item.linkType\"\n                                [attr.aria-label]=\"item.label\"\n                                class=\"m-submenu\"\n                                >{{ item.label }}</a\n                            >\n                        }\n                        <a\n                            [href]=\"menu?.[0]?.url ?? '/es/home'\"\n                            [linkType]=\"menu?.[0]?.linkType\"\n                            [attr.aria-label]=\"menu?.[0]?.label\"\n                            class=\"m-logo\"\n                            [style.--hover-color]=\"\n                                styles?.primaryHover ??\n                                styles?.primary ??\n                                '#ed3b37'\n                            \"\n                        >\n                            {{ menu?.[0]?.label }}\n                            <img\n                                [src]=\"logos?.logoMenu?.src\"\n                                [alt]=\"logos?.logoMenu?.alt\"\n                            />\n                        </a>\n                    </div>\n                </div>\n            }\n            @if (menu?.length) {\n                <div\n                    [class]=\"\n                        hotel && items?.length\n                            ? 'm-links menu-general'\n                            : 'm-links'\n                    \"\n                >\n                    <div class=\"m-links-container\">\n                        @for (item of menu; track $index) {\n                            @if (item) {\n                                <a\n                                    [href]=\"buildMenuUrl(item)\"\n                                    [linkType]=\"item.linkType\"\n                                    [attr.aria-label]=\"item.label\"\n                                    (anchorClicked)=\"closeMenuBurger()\"\n                                    [style.--hover-color]=\"\n                                        styles?.primaryHover ??\n                                        styles?.primary ??\n                                        '#ed3b37'\n                                    \"\n                                >\n                                    {{ item.label }}\n                                </a>\n                            }\n                        }\n                    </div>\n                </div>\n            }\n\n            <div class=\"m-footer\">\n                @if (floatingButtons?.links?.length) {\n                    @if (floatingButtons?.links?.[1]) {\n                        <a\n                            class=\"m-checking-online-button\"\n                            [href]=\"floatingButtons?.links?.[1]?.url\"\n                            [linkType]=\"floatingButtons?.links?.[1]?.linkType\"\n                            [attr.aria-label]=\"\n                                floatingButtons?.links?.[1]?.label\n                            \"\n                        >\n                            {{ floatingButtons?.links?.[1]?.label }}\n                        </a>\n                    }\n                }\n\n                <div class=\"m-footer-container\">\n                    <a href=\"mailto:\">\n                        <svg\n                            width=\"17\"\n                            height=\"14\"\n                            viewBox=\"0 0 17 14\"\n                            fill=\"none\"\n                            xmlns=\"http://www.w3.org/2000/svg\"\n                        >\n                            <path\n                                d=\"M14.4671 13.1518H2.67741C2.04751 13.1518 1.45549 12.9068 1.01086 12.4613C0.565375 12.0158 0.320312 11.4238 0.320312 10.7939V2.38198C0.320312 2.37524 0.320312 2.36766 0.320312 2.36093C0.323681 1.73608 0.568744 1.14912 1.01086 0.706168C1.45549 0.260688 2.04751 0.015625 2.67741 0.015625H14.4671C15.097 0.015625 15.689 0.260688 16.1336 0.706168C16.5757 1.14912 16.8208 1.73608 16.8242 2.36093C16.8242 2.36766 16.8242 2.37524 16.8242 2.38198V10.7939C16.8242 11.4238 16.5791 12.0158 16.1336 12.4613C15.689 12.9068 15.097 13.1518 14.4671 13.1518ZM1.66686 3.63084V10.7931C1.66686 11.0592 1.77464 11.3194 1.96328 11.5072C2.15444 11.6983 2.40791 11.8036 2.67823 11.8036H14.4679C14.7332 11.8036 14.9942 11.6958 15.1828 11.5072C15.3715 11.3194 15.4793 11.0592 15.4793 10.7931V3.63084L8.94699 7.98544C8.7213 8.13702 8.4257 8.13702 8.20001 7.98544L1.66686 3.63084ZM1.7199 2.04765L8.57224 6.61615L15.4246 2.04765C15.3749 1.90281 15.2932 1.76976 15.182 1.6586C14.9934 1.46997 14.7332 1.36217 14.4671 1.36217H2.67741C2.40793 1.36217 2.15361 1.46744 1.96245 1.6586C1.85129 1.76976 1.76959 1.90281 1.7199 2.04765Z\"\n                                fill=\"white\"\n                            />\n                        </svg>\n                    </a>\n\n                    <!-- <a (click)=\"openOfferPopup()\">\n                        <svg\n                            width=\"20\"\n                            height=\"23\"\n                            viewBox=\"0 0 20 23\"\n                            fill=\"none\"\n                            xmlns=\"http://www.w3.org/2000/svg\"\n                        >\n                            <path\n                                d=\"M17.941 15.185C16.938 14.179 15.602 13.625 14.178 13.625H5.321C3.899 13.625 2.563 14.179 1.558 15.185C0.552001 16.19 -0.000998646 17.526 1.35387e-06 18.948V21.162C1.35387e-06 21.655 0.400001 22.056 0.894001 22.056C1.386 22.056 1.787 21.656 1.787 21.162V18.948C1.787 18.004 2.155 17.115 2.823 16.447C3.488 15.78 4.376 15.412 5.322 15.412H14.18C15.125 15.412 16.013 15.779 16.679 16.447C17.347 17.113 17.714 18.002 17.714 18.948V21.162C17.714 21.655 18.114 22.056 18.608 22.056C19.1 22.056 19.501 21.656 19.501 21.162V18.948C19.501 17.526 18.947 16.19 17.941 15.185Z\"\n                                fill=\"white\"\n                            />\n                            <path\n                                d=\"M9.75069 10.9799C12.6857 10.9799 15.0727 8.59294 15.0727 5.65794C15.0727 2.72294 12.6857 0.335938 9.75069 0.335938C6.81569 0.335938 4.42969 2.72294 4.42969 5.65794C4.42969 8.59294 6.81569 10.9799 9.75069 10.9799ZM9.75069 2.12194C11.7007 2.12194 13.2867 3.70794 13.2867 5.65794C13.2867 7.60794 11.7007 9.19394 9.75069 9.19394C7.80169 9.19394 6.21569 7.60794 6.21569 5.65794C6.21569 3.70794 7.80169 2.12194 9.75069 2.12194Z\"\n                                fill=\"white\"\n                            />\n                        </svg>\n                    </a> -->\n\n                    <div\n                        class=\"m-lang\"\n                        data-src=\"#idiomas-form\"\n                        (click)=\"openLanguagesModal()\"\n                    >\n                        <svg\n                            width=\"23\"\n                            height=\"23\"\n                            viewBox=\"0 0 23 23\"\n                            fill=\"none\"\n                            xmlns=\"http://www.w3.org/2000/svg\"\n                        >\n                            <path\n                                d=\"M11.5 23C9.22552 23 7.00211 22.3255 5.11095 21.0619C3.21978 19.7983 1.7458 18.0022 0.87539 15.9009C0.00498277 13.7995 -0.222756 11.4872 0.220974 9.25646C0.664704 7.02568 1.75997 4.97658 3.36828 3.36828C4.97658 1.75997 7.02568 0.664704 9.25646 0.220974C11.4872 -0.222756 13.7995 0.00498277 15.9009 0.87539C18.0022 1.7458 19.7983 3.21978 21.0619 5.11095C22.3255 7.00211 23 9.22552 23 11.5C22.9966 14.5489 21.7839 17.472 19.628 19.628C17.472 21.7839 14.5489 22.9966 11.5 23ZM11.5 1.60466C9.54289 1.60466 7.62972 2.18501 6.00244 3.27232C4.37516 4.35964 3.10685 5.90508 2.35789 7.71322C1.60894 9.52135 1.41298 11.511 1.79479 13.4305C2.17661 15.35 3.11905 17.1132 4.50294 18.4971C5.88682 19.881 7.65001 20.8234 9.56952 21.2052C11.489 21.587 13.4786 21.3911 15.2868 20.6421C17.0949 19.8932 18.6404 18.6248 19.7277 16.9976C20.815 15.3703 21.3953 13.4571 21.3953 11.5C21.3925 8.87646 20.3491 6.36119 18.4939 4.50606C16.6388 2.65094 14.1235 1.60749 11.5 1.60466Z\"\n                                fill=\"white\"\n                            />\n                            <path\n                                d=\"M11.4994 23C8.19913 23 6.41797 17.0746 6.41797 11.5C6.41797 5.92544 8.19913 0 11.4994 0C14.7996 0 16.5808 5.92544 16.5808 11.5C16.5808 17.0746 14.7996 23 11.4994 23ZM11.4994 1.60465C9.85834 1.60465 8.02262 5.83665 8.02262 11.5C8.02262 17.1633 9.85834 21.3953 11.4994 21.3953C13.1404 21.3953 14.9761 17.1633 14.9761 11.5C14.9761 5.83665 13.1404 1.60465 11.4994 1.60465Z\"\n                                fill=\"white\"\n                            />\n                            <path\n                                d=\"M11.4997 6.95417C10.213 6.95354 8.93264 6.77352 7.69563 6.41929C6.23211 6.00081 4.85534 5.32366 3.63051 4.41989C3.53663 4.36112 3.45593 4.28355 3.3935 4.19206C3.33107 4.10057 3.28826 3.99715 3.26776 3.8883C3.24727 3.77946 3.24953 3.66754 3.27441 3.55961C3.29929 3.45168 3.34624 3.35007 3.41232 3.26118C3.47839 3.17229 3.56216 3.09804 3.65834 3.04311C3.75452 2.98819 3.86103 2.95377 3.97117 2.94202C4.0813 2.93028 4.19268 2.94147 4.29828 2.97488C4.40388 3.00829 4.50141 3.06321 4.58475 3.13617C5.6566 3.92388 6.86041 4.51401 8.13958 4.87882C10.3371 5.50465 12.6656 5.50465 14.8631 4.87882C16.1414 4.51285 17.3441 3.92162 18.4147 3.13296C18.499 3.06625 18.5959 3.01717 18.6996 2.98864C18.8033 2.9601 18.9116 2.9527 19.0182 2.96687C19.1248 2.98103 19.2274 3.01648 19.3201 3.07111C19.4127 3.12573 19.4934 3.19841 19.5573 3.28484C19.6213 3.37126 19.6673 3.46966 19.6925 3.5742C19.7177 3.67873 19.7216 3.78726 19.704 3.89334C19.6864 3.99943 19.6477 4.10089 19.5902 4.19171C19.5326 4.28253 19.4574 4.36086 19.3689 4.42203C18.1441 5.32556 16.7673 6.00236 15.3038 6.42036C14.0668 6.77422 12.7864 6.95389 11.4997 6.95417Z\"\n                                fill=\"white\"\n                            />\n                            <path\n                                d=\"M18.8913 20.0246C18.7198 20.0244 18.553 19.9693 18.4152 19.8673C17.3437 19.0781 16.1398 18.4865 14.8604 18.1204C12.6629 17.4945 10.3344 17.4945 8.13689 18.1204C6.85856 18.4863 5.65582 19.0776 4.58526 19.8662C4.50093 19.9329 4.40406 19.982 4.30038 20.0106C4.19671 20.0391 4.08836 20.0465 3.98177 20.0323C3.87518 20.0182 3.77253 19.9827 3.67991 19.9281C3.58729 19.8735 3.50659 19.8008 3.44262 19.7144C3.37864 19.6279 3.33269 19.5295 3.30749 19.425C3.2823 19.3205 3.27837 19.2119 3.29595 19.1058C3.31352 18.9998 3.35224 18.8983 3.40981 18.8075C3.46737 18.7167 3.5426 18.6383 3.63103 18.5772C4.85586 17.6736 6.23264 16.9968 7.69615 16.5788C10.1837 15.8696 12.82 15.8696 15.3075 16.5788C16.7711 16.9973 18.1478 17.6745 19.3727 18.5782C19.5087 18.6785 19.6096 18.8192 19.6609 18.9802C19.7121 19.1412 19.7112 19.3144 19.6581 19.4748C19.6051 19.6353 19.5027 19.7749 19.3655 19.8736C19.2283 19.9723 19.0635 20.0252 18.8945 20.0246H18.8913Z\"\n                                fill=\"white\"\n                            />\n                            <path\n                                d=\"M22.1977 12.3H0.802325C0.589535 12.3 0.385461 12.2154 0.234996 12.065C0.0845305 11.9145 0 11.7104 0 11.4976C0 11.2848 0.0845305 11.0808 0.234996 10.9303C0.385461 10.7798 0.589535 10.6953 0.802325 10.6953H22.1977C22.4105 10.6953 22.6145 10.7798 22.765 10.9303C22.9155 11.0808 23 11.2848 23 11.4976C23 11.7104 22.9155 11.9145 22.765 12.065C22.6145 12.2154 22.4105 12.3 22.1977 12.3Z\"\n                                fill=\"white\"\n                            />\n                        </svg>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n</section>\n","import { CommonModule } from '@angular/common';\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    Input,\n} from '@angular/core';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport { BabylonButtonI, BabylonTextsColorsI } from '../../../interfaces';\nimport { BabylonTagsI } from '../../../interfaces/babylon-tags.interface';\nimport { BabylonDynamicHeadingComponent } from '../../shared/babylon-dynamic-heading/babylon-dynamic-heading.component';\n\n@Component({\n    selector: 'lib-babylon-head-intro',\n    imports: [\n        CommonModule,\n        BabylonLinkTypeDirective,\n        BabylonDynamicHeadingComponent,\n    ],\n    templateUrl: './babylon-head-intro.component.html',\n    styleUrls: ['./babylon-head-intro.component.scss'],\n    standalone: true,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonHeadIntroComponent {\n    @Input() pretitle?: string;\n    @Input() title?: string;\n    @Input() text?: string;\n    @Input() buttons?: BabylonButtonI[];\n    @Input() tags?: BabylonTagsI;\n    @Input() textColors?: BabylonTextsColorsI;\n    @Input() identifier?: string;\n}\n","<section class=\"babylon__head-intro margin-main\" [ngClass]=\"identifier\">\n    <div class=\"babylon__head-intro-content\">\n        <div class=\"container\">\n            <div class=\"intro_info align--center no-align\">\n                @if (pretitle) {\n                    <div class=\"pretitle-container\">\n                        <lib-babylon-dynamic-heading\n                            [tag]=\"tags?.pretitle || 'h3'\"\n                            cssClass=\"pretitle\"\n                            [content]=\"pretitle\"\n                            [color]=\"textColors?.pretitle\"\n                        ></lib-babylon-dynamic-heading>\n                    </div>\n                }\n                @if (title) {\n                    <div class=\"title-container\">\n                        <lib-babylon-dynamic-heading\n                            [tag]=\"tags?.title || 'h1'\"\n                            cssClass=\"title\"\n                            [content]=\"title\"\n                            [color]=\"textColors?.title\"\n                        ></lib-babylon-dynamic-heading>\n                    </div>\n                }\n                @if (text) {\n                    <div class=\"text-container\">\n                        <lib-babylon-dynamic-heading\n                            [tag]=\"tags?.text || 'p'\"\n                            cssClass=\"text\"\n                            [content]=\"text\"\n                            [color]=\"textColors?.text\"\n                        ></lib-babylon-dynamic-heading>\n                    </div>\n                }\n                @if (buttons) {\n                    <div class=\"btns__box align--center\">\n                        @for (button of buttons; track $index) {\n                            @if (button.label) {\n                                <div>\n                                    <a\n                                        [attr.aria-label]=\"button?.label\"\n                                        [href]=\"button?.url\"\n                                        [linkType]=\"button?.linkType\"\n                                        class=\"btn btn_primary\"\n                                        ><b>{{ button?.label }}</b\n                                        ><span\n                                            class=\"babylon-arrow-right-big\"\n                                        ></span\n                                    ></a>\n                                </div>\n                            }\n                        }\n                    </div>\n                }\n            </div>\n        </div>\n    </div>\n</section>\n","export enum ButtonType {\n    BookNow = 'book-now',\n    Shop = 'shop-link',\n    News = 'news-link',\n}\n","export enum LogoType {\n    logo = 'logo',\n    logoDesktop = 'logoDesktop',\n    logoMenu = 'logoMenu',\n    logoMobile = 'logoMobile',\n    logoTablet = 'logoTablet',\n    appShareIcon = 'appShareIcon',\n}\n","import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    EventEmitter,\n    inject,\n    Input,\n    Output,\n    PLATFORM_ID,\n} from '@angular/core';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport { ButtonType } from '../../../Enum';\nimport {\n    BabylonButtonI,\n    BabylonImageI,\n    BabylonMenuButtonI,\n    BabylonTagsI,\n    BabylonTextsColorsI,\n} from '../../../interfaces';\nimport { Utils } from '../../../utils';\nimport { BabylonDynamicHeadingComponent } from '../../shared';\n\n@Component({\n    selector: 'lib-babylon-modal-menu',\n    standalone: true,\n    imports: [\n        CommonModule,\n        BabylonLinkTypeDirective,\n        BabylonDynamicHeadingComponent,\n    ],\n    templateUrl: './babylon-modal-menu.component.html',\n    styleUrl: './babylon-modal-menu.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonModalMenuComponent {\n    @Input() menu?: BabylonMenuButtonI[];\n    @Input() socialMedia?: BabylonButtonI[];\n    @Input() address?: BabylonModalMenuAddress;\n    @Input() contact?: BabylonButtonI[];\n    @Input() addressTitle?: string;\n    @Input() contactTitle?: string;\n    @Input() img?: BabylonImageI;\n    @Input() hastag?: string;\n    @Input() logo?: BabylonImageI;\n    @Input() linkLogo?: BabylonButtonI;\n    @Input() modalEvent?: EventEmitter<string>;\n    @Input() imgBackground?: BabylonImageI;\n    @Input() tags?: BabylonTagsI;\n    @Input() textColors?: BabylonTextsColorsI;\n    @Input() links?: BabylonMenuButtonI[];\n    @Input() shop?: string;\n    @Input() news?: string;\n\n    @Output() anchorClicked = new EventEmitter<void>();\n\n    openIndexes: { [key: number]: boolean } = {};\n\n    private platformId = inject(PLATFORM_ID);\n\n    ngOnInit() {\n        if (isPlatformBrowser(this.platformId)) {\n            document.addEventListener('click', this.handleDocumentClick, true);\n        }\n    }\n\n    ngOnDestroy() {\n        if (isPlatformBrowser(this.platformId)) {\n            document.removeEventListener(\n                'click',\n                this.handleDocumentClick,\n                true\n            );\n        }\n    }\n\n    closeMenu(): void {\n        if (isPlatformBrowser(this.platformId)) {\n            const hamburger = document.querySelector('.hamburger');\n            const panelMenu = document.querySelector('.panel_menu');\n            const body = document.querySelector('body');\n            const header = document.querySelector('header');\n\n            if (hamburger) {\n                hamburger.classList.remove('is-active');\n            }\n\n            if (panelMenu) {\n                panelMenu.classList.remove('active');\n            }\n\n            if (body) {\n                body.classList.remove('no_scroll');\n\n                body.style.overflow = '';\n            }\n\n            if (header) {\n                header.classList.remove('header_color');\n            }\n        }\n    }\n\n    toggleSubmenu(\n        index: number,\n        event: Event,\n        hasChildren: number | undefined\n    ): void {\n        if (hasChildren) {\n            event.preventDefault();\n            // Cierra todos menos el actual\n            const isOpen = this.openIndexes[index];\n            this.openIndexes = {};\n            this.openIndexes[index] = !isOpen;\n        }\n    }\n\n    handleDocumentClick = (event: MouseEvent) => {\n        if (isPlatformBrowser(this.platformId)) {\n            const menu = document.querySelector('.cs_hamburger_menu');\n            if (menu && !menu.contains(event.target as Node)) {\n                this.openIndexes = {};\n            }\n        }\n    };\n\n    openShop() {\n        if (!isPlatformBrowser(this.platformId)) return;\n\n        const link = this.getLinkByType(ButtonType.Shop);\n        if (link) this.openLink(link);\n    }\n\n    openNewsletterLink() {\n        if (!isPlatformBrowser(this.platformId)) return;\n\n        const link = this.getLinkByType(ButtonType.News);\n        if (link) this.openLink(link);\n    }\n\n    openLink(link: BabylonMenuButtonI) {\n        if (!isPlatformBrowser(this.platformId)) return;\n\n        switch (link.linkType) {\n            case 'external':\n            case 'external_link':\n                Utils.safeOpenExternal(link.url ?? '');\n                break;\n\n            case 'internal':\n            case 'internal_link':\n                window.location.href = link?.url ?? window.location.href;\n                break;\n\n            default:\n                break;\n        }\n    }\n\n    private getLinkByType(type: ButtonType): BabylonButtonI | undefined {\n        if (!this.links?.length) return undefined;\n        return this.links.find((link) => link?.label === type);\n    }\n\n    getFormattedUrl(link: any): string {\n        if (!link?.url) return '';\n\n        if (link.vars) {\n            const cleanUrl = link.url.endsWith('/')\n                ? link.url.slice(0, -1)\n                : link.url;\n            return cleanUrl + link.vars;\n        }\n\n        return link.url + (link.vars || '');\n    }\n}\n\nexport interface BabylonModalMenuAddress {\n    id?: string;\n    name?: string;\n    address?: string;\n    city?: string;\n    province?: string;\n    country?: string;\n    cp?: string;\n    links?: BabylonButtonI;\n}\n","<div class=\"panel__content\">\n    <div\n        class=\"panel__content_wrapper\"\n        [ngStyle]=\"\n            imgBackground\n                ? { 'background-image': 'url(' + imgBackground.src + ')' }\n                : {}\n        \"\n    >\n        <div class=\"btn-close--modal\">\n            <span\n                class=\"btn btn_primary btn--light babylon-plus btn-responsive\"\n                (click)=\"closeMenu()\"\n            ></span>\n        </div>\n        <div class=\"cs_hamburger_header_top\">\n            @if (logo) {\n                <div class=\"cs_hamburger_brand\">\n                    <span\n                        [attr.aria-label]=\"linkLogo?.url\"\n                        class=\"cs_site_branding\"\n                        [href]=\"linkLogo?.url\"\n                        [linkType]=\"linkLogo?.linkType\"\n                        (click)=\"closeMenu()\"\n                    >\n                        <img\n                            [src]=\"logo.src\"\n                            [alt]=\"logo.alt\"\n                            width=\"200\"\n                            loading=\"lazy\"\n                        />\n                    </span>\n                </div>\n            }\n        </div>\n        <div class=\"container\">\n            <div class=\"row justify-content-between pt-md-0\">\n                <div class=\"col-lg-5\">\n                    <nav\n                        class=\"wrapper_menu cs_hamburger_menu\"\n                        [attr.aria-label]=\"'Menú principal'\"\n                    >\n                        @if (menu && menu.length) {\n                            <ul class=\"cs_nav_list\">\n                                @for (link of menu; track $index) {\n                                    @if (link?.label) {\n                                        <li\n                                            [ngClass]=\"{\n                                                'menu-item-has-children':\n                                                    link.children?.length,\n                                            }\"\n                                            class=\"title--small\"\n                                            [class.open]=\"openIndexes[$index]\"\n                                        >\n                                            <a\n                                                [attr.aria-label]=\"link?.label\"\n                                                [linkType]=\"link?.linkType\"\n                                                [modalClick]=\"modalEvent\"\n                                                [href]=\"getFormattedUrl(link)\"\n                                                [class.active]=\"\n                                                    openIndexes[$index]\n                                                \"\n                                                (anchorClicked)=\"\n                                                    anchorClicked.emit()\n                                                \"\n                                                (click)=\"\n                                                    link.children?.length\n                                                        ? toggleSubmenu(\n                                                              $index,\n                                                              $event,\n                                                              link.children\n                                                                  ?.length\n                                                          )\n                                                        : closeMenu()\n                                                \"\n                                            >\n                                                {{ link?.label }}\n                                            </a>\n                                            @if (link?.children?.length) {\n                                                <span\n                                                    class=\"cs_menu_dropdown_toggle\"\n                                                    [class.active]=\"\n                                                        openIndexes[$index]\n                                                    \"\n                                                    [attr.aria-expanded]=\"\n                                                        openIndexes[$index]\n                                                            ? 'true'\n                                                            : 'false'\n                                                    \"\n                                                    [attr.aria-label]=\"\n                                                        'Ver submenú de ' +\n                                                        link.label\n                                                    \"\n                                                    (click)=\"\n                                                        toggleSubmenu(\n                                                            $index,\n                                                            $event,\n                                                            link.children\n                                                                ?.length\n                                                        )\n                                                    \"\n                                                >\n                                                    <span></span>\n                                                </span>\n                                            }\n                                            @if (\n                                                link?.children?.length &&\n                                                openIndexes[$index]\n                                            ) {\n                                                <ul\n                                                    [class.open]=\"\n                                                        openIndexes[$index]\n                                                    \"\n                                                >\n                                                    @for (\n                                                        child of link?.children;\n                                                        track $index\n                                                    ) {\n                                                        <li>\n                                                            <a\n                                                                [attr.aria-label]=\"\n                                                                    child?.label\n                                                                \"\n                                                                [linkType]=\"\n                                                                    child.linkType\n                                                                \"\n                                                                [href]=\"\n                                                                    getFormattedUrl(\n                                                                        child\n                                                                    )\n                                                                \"\n                                                                [modalClick]=\"\n                                                                    modalEvent\n                                                                \"\n                                                                (anchorClicked)=\"\n                                                                    anchorClicked.emit()\n                                                                \"\n                                                                (click)=\"\n                                                                    closeMenu()\n                                                                \"\n                                                            >\n                                                                {{\n                                                                    child?.label\n                                                                }}\n                                                            </a>\n                                                        </li>\n                                                    }\n                                                </ul>\n                                            }\n                                        </li>\n                                    }\n                                }\n                            </ul>\n                        }\n                    </nav>\n                    <!-- /wrapper_menu -->\n                </div>\n                <div class=\"col-lg-6 d-flex align-items-end\">\n                    <div class=\"menu_panel_details\">\n                        @if (img) {\n                            <div class=\"menu_panel_image\">\n                                <img\n                                    [src]=\"img.src\"\n                                    [alt]=\"img.alt\"\n                                    loading=\"lazy\"\n                                />\n                            </div>\n                        }\n                        <div class=\"row justify-content-between\">\n                            @if (address) {\n                                <div class=\"col-lg-6 mb-lg-0 mb-4\">\n                                    @if (addressTitle) {\n                                        <lib-babylon-dynamic-heading\n                                            [tag]=\"tags?.addressTitle || 'h5'\"\n                                            cssClass=\"pretitle\"\n                                            [content]=\"addressTitle\"\n                                        ></lib-babylon-dynamic-heading>\n                                    }\n                                    <div class=\"contacts\">\n                                        <a\n                                            [attr.aria-label]=\"\n                                                address.links?.url\n                                            \"\n                                            [href]=\"address.links?.url\"\n                                            [linkType]=\"address.links?.linkType\"\n                                            class=\"text text54\"\n                                        >\n                                            @if (address.address) {\n                                                <p\n                                                    [innerHTML]=\"\n                                                        address.address\n                                                    \"\n                                                ></p>\n                                            }\n                                            @if (address.cp || address.city) {\n                                                <p\n                                                    [innerHTML]=\"\n                                                        address.cp +\n                                                        ' ' +\n                                                        address.city\n                                                    \"\n                                                ></p>\n                                            }\n                                            @if (\n                                                address.province ||\n                                                address.country\n                                            ) {\n                                                <p\n                                                    [innerHTML]=\"\n                                                        address.province +\n                                                        ' ' +\n                                                        address.country\n                                                    \"\n                                                ></p>\n                                            }\n                                        </a>\n                                    </div>\n                                </div>\n                            }\n                            @if (contact) {\n                                <div class=\"col-lg-5 mb-lg-0 mb-4\">\n                                    @if (contactTitle) {\n                                        <lib-babylon-dynamic-heading\n                                            [tag]=\"tags?.contactTitle || 'h5'\"\n                                            cssClass=\"pretitle\"\n                                            [content]=\"contactTitle\"\n                                        ></lib-babylon-dynamic-heading>\n                                    }\n                                    @if (contact.length) {\n                                        <div class=\"contacts\">\n                                            <ul>\n                                                @for (\n                                                    link of contact;\n                                                    track $index\n                                                ) {\n                                                    @if (link) {\n                                                        <li>\n                                                            <a\n                                                                [attr.aria-label]=\"\n                                                                    link?.label\n                                                                \"\n                                                                class=\"text\"\n                                                                [href]=\"\n                                                                    link?.url\n                                                                \"\n                                                                [linkType]=\"\n                                                                    link?.linkType\n                                                                \"\n                                                                >{{\n                                                                    link?.label\n                                                                }}</a\n                                                            >\n                                                        </li>\n                                                    }\n                                                }\n                                            </ul>\n                                        </div>\n                                    }\n                                </div>\n                            }\n                        </div>\n\n                        <div\n                            class=\"see-more row justify-content-between\"\n                            style=\"display: none\"\n                        >\n                            @if (address) {\n                                <div\n                                    class=\"see-more__address col-lg-6 mb-lg-0 mb-4\"\n                                ></div>\n                            }\n                        </div>\n                        @if (socialMedia) {\n                            <div class=\"social\">\n                                <ul class=\"row\">\n                                    @for (link of socialMedia; track $index) {\n                                        <li class=\"col-lg-2\">\n                                            <a\n                                                [attr.aria-label]=\"link.icon\"\n                                                [href]=\"link.url\"\n                                                (click)=\"closeMenu()\"\n                                                linkType=\"external\"\n                                                ><i [ngClass]=\"link.icon\"></i\n                                            ></a>\n                                        </li>\n                                    }\n                                </ul>\n                            </div>\n                        }\n                        @if (shop) {\n                            <button\n                                class=\"btn btn_shop\"\n                                id=\"btn_shop\"\n                                (click)=\"openShop()\"\n                            >\n                                <div class=\"icon-container\">\n                                    <i class=\"icon--svg\" [ngClass]=\"shop\"></i>\n                                </div>\n                            </button>\n                        }\n                        @if (news) {\n                            <button\n                                class=\"btn btn_news\"\n                                id=\"btn_news\"\n                                (click)=\"openNewsletterLink()\"\n                            >\n                                <div class=\"icon-container\">\n                                    <i class=\"icon--svg\" [ngClass]=\"news\"></i>\n                                </div>\n                            </button>\n                        }\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n","import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    EventEmitter,\n    inject,\n    Input,\n    OnDestroy,\n    OnInit,\n    Output,\n    PLATFORM_ID,\n    signal,\n} from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport { LogoType } from '../../../Enum/logo-type.enum';\nimport { BabylonButtonI } from '../../../interfaces/babylon-button.interface';\nimport { BabylonImageI } from '../../../interfaces/babylon-image.interface';\nimport { BabylonMenuButtonI } from '../../../interfaces/babylon-menu-button.interface';\nimport { BabylonMenuInfoI } from '../../../interfaces/babylon-menu-info.interface';\nimport { ScreenSizerService } from '../../../services';\nimport { BabylonModalMenuComponent } from '../babylon-modal-menu/babylon-modal-menu.component';\n\n@Component({\n    selector: 'lib-babylon-header-book-show',\n    standalone: true,\n    imports: [\n        CommonModule,\n        RouterModule,\n        BabylonLinkTypeDirective,\n        BabylonModalMenuComponent,\n    ],\n    templateUrl: './babylon-header-book-show.component.html',\n    styleUrl: './babylon-header-book-show.component.scss',\n    providers: [BabylonLinkTypeDirective],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonHeaderBookShowComponent implements OnInit, OnDestroy {\n    @Input() headerFixed: boolean = false;\n    @Input() logos?: Record<LogoType, BabylonImageI | undefined>;\n    @Input() linkLogo?: BabylonButtonI;\n    @Input() menu?: BabylonMenuButtonI[];\n    @Input() menuInfo?: BabylonMenuInfoI;\n    @Input() btnBook?: BabylonButtonI;\n    @Input() lang?: string;\n    @Input() title?: string;\n    @Input() ndTitle?: string;\n    @Input() headerInMenu?: boolean = false;\n    @Input() multipleMotorsModal?: boolean;\n\n    @Input() screenBreakpoint: number = 1279;\n\n    @Output() openEngine = new EventEmitter();\n    @Output() openLanguages = new EventEmitter();\n    @Output() openNews = new EventEmitter();\n    @Output() modalClick = new EventEmitter<string>();\n    @Output() openModalMultMotors = new EventEmitter<void>();\n\n    showBtnBook = signal(false);\n\n    private platformId = inject(PLATFORM_ID);\n\n    constructor(private readonly screenSizer: ScreenSizerService) {}\n\n    ngOnInit(): void {\n        if (isPlatformBrowser(this.platformId)) {\n            this.checkScreen();\n            window.addEventListener('resize', this.checkScreen.bind(this));\n        }\n    }\n\n    ngOnDestroy(): void {\n        if (isPlatformBrowser(this.platformId)) {\n            window.removeEventListener('resize', this.checkScreen.bind(this));\n        }\n    }\n\n    checkScreen(): void {\n        if (isPlatformBrowser(this.platformId)) {\n            this.showBtnBook.set(window.innerWidth <= this.screenBreakpoint);\n        }\n    }\n\n    preventLink(linkType: string): void {\n        if (linkType.includes('internal')) {\n            this.toggleMenu();\n        }\n    }\n\n    toggleMenu(): void {\n        if (isPlatformBrowser(this.platformId)) {\n            const hamburger = document.querySelector('.hamburger');\n            const panelMenu = document.querySelector('.panel_menu');\n            const body = document.body;\n            const header = document.querySelector('header');\n\n            if (hamburger) {\n                hamburger.classList.toggle('is-active');\n            }\n            if (panelMenu) {\n                panelMenu.classList.toggle('active');\n            }\n            if (body) {\n                body.classList.toggle('no_scroll');\n            }\n            if (header) {\n                header.classList.toggle('header_color');\n            }\n        }\n    }\n\n    openLanguagesModal(): void {\n        this.openLanguages.emit();\n    }\n\n    openEngineModal(): void {\n        this.openEngine.emit();\n    }\n\n    openNewsletter(): void {\n        this.openNews.emit();\n    }\n\n    openModalMultipleMotors(): void {\n        this.openModalMultMotors.emit();\n    }\n\n    onAnchorClicked(): void {\n        if (isPlatformBrowser(this.platformId)) {\n            const panelMenu = document.querySelector('.panel_menu');\n            if (panelMenu && panelMenu.classList.contains('active')) {\n                this.toggleMenu();\n            }\n        }\n    }\n}\n","<div class=\"babylon-header cs-header-component fixed_header\">\n    <header\n        class=\"cs_site_header cs_style_1 cs_transparent_header cs_primary_color cs_sticky_header fixed_header\"\n        [ngClass]=\"{ cs_gescout_sticky: headerFixed }\"\n    >\n        <div class=\"cs_main_header\" id=\"headerBookShow\">\n            <div class=\"container-fluid cs_plr_100\">\n                <div class=\"cs_main_header_in\">\n                    @if (logos?.logoDesktop) {\n                        <div class=\"cs_main_header_left\">\n                            <a\n                                [attr.aria-label]=\"linkLogo?.url\"\n                                class=\"cs_site_branding\"\n                                [href]=\"linkLogo?.url\"\n                                [linkType]=\"linkLogo?.linkType\"\n                            >\n                                <img\n                                    [src]=\"logos?.logoDesktop?.src\"\n                                    width=\"240\"\n                                    height=\"60\"\n                                    [alt]=\"logos?.logoDesktop?.alt\"\n                                    loading=\"lazy\"\n                                />\n                            </a>\n                        </div>\n                    }\n                    @if (logos?.logo) {\n                        <div class=\"cs_main_header_left_sticky\">\n                            <a\n                                [attr.aria-label]=\"linkLogo?.url\"\n                                class=\"cs_site_branding\"\n                                [href]=\"linkLogo?.url\"\n                                [linkType]=\"linkLogo?.linkType\"\n                            >\n                                <img\n                                    [src]=\"logos?.logo?.src\"\n                                    width=\"240\"\n                                    height=\"60\"\n                                    [alt]=\"logos?.logo?.alt\"\n                                    loading=\"lazy\"\n                                />\n                            </a>\n                        </div>\n                    }\n                    @if (menu) {\n                        <div class=\"cs_main_header_center babylon__header__box\">\n                            <nav\n                                class=\"cs_nav cs_fs_13 cs_semibold cs_menu_item_global\"\n                            >\n                                @if (menu.length) {\n                                    <ul class=\"cs_nav_list\">\n                                        @for (link of menu; track $index) {\n                                            <li\n                                                [ngClass]=\"{\n                                                    'menu-item-has-children':\n                                                        link.children?.length,\n                                                }\"\n                                            >\n                                                <a\n                                                    [attr.aria-label]=\"\n                                                        link.label\n                                                    \"\n                                                    [linkType]=\"link.linkType\"\n                                                    [href]=\"link.url\"\n                                                    (anchorClicked)=\"\n                                                        onAnchorClicked()\n                                                    \"\n                                                >\n                                                    {{ link.label }}\n                                                </a>\n                                                @if (link.children?.length) {\n                                                    <ul>\n                                                        @for (\n                                                            item of link.children;\n                                                            track $index\n                                                        ) {\n                                                            <li>\n                                                                <a\n                                                                    [attr.aria-label]=\"\n                                                                        item.label\n                                                                    \"\n                                                                    [linkType]=\"\n                                                                        item.linkType\n                                                                    \"\n                                                                    [href]=\"\n                                                                        item.url\n                                                                    \"\n                                                                    (anchorClicked)=\"\n                                                                        onAnchorClicked()\n                                                                    \"\n                                                                >\n                                                                    {{\n                                                                        item.label\n                                                                    }}\n                                                                </a>\n                                                            </li>\n                                                        }\n                                                    </ul>\n                                                }\n                                            </li>\n                                        }\n                                    </ul>\n                                }\n                            </nav>\n                        </div>\n                    }\n                    <div class=\"cs_main_header_right\">\n                        @if (btnBook && showBtnBook()) {\n                            <button\n                                [name]=\"btnBook.label\"\n                                class=\"btn btn_call btn--light1\"\n                                (click)=\"multipleMotorsModal ? openModalMultipleMotors() : openEngineModal()\"\n                                id=\"btn-book\"\n                            >\n                                <b>{{ btnBook.label }} </b>\n                            </button>\n                        }\n\n                        @if (lang) {\n                            <button\n                                [name]=\"lang\"\n                                class=\"btn btn_primary btn--light ml--20 btn-lang\"\n                                id=\"btn-lang\"\n                                (click)=\"openLanguagesModal()\"\n                            >\n                                <b>{{ lang }}</b>\n                            </button>\n                        }\n\n                        <button\n                            name=\"hamburguer\"\n                            class=\"cs_hamburger_btn ml--20\"\n                            aria-label=\"menu\"\n                            (click)=\"toggleMenu()\"\n                        >\n                            <span class=\"cs_hamburger_btn_in\">\n                                <span></span>\n                                <span></span>\n                                <span></span>\n                                <span></span>\n                            </span>\n                        </button>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </header>\n\n    @if (menuInfo && menu) {\n      <section class=\"babylon__menu\">\n            <lib-babylon-modal-menu\n                class=\"panel_menu\"\n                [menu]=\"menu\"\n                [address]=\"menuInfo.address\"\n                [addressTitle]=\"menuInfo.address?.title\"\n                [contact]=\"menuInfo.contact?.links\"\n                [contactTitle]=\"menuInfo.contact?.title\"\n                [socialMedia]=\"menuInfo.socialMedia\"\n                [img]=\"menuInfo.img\"\n                [linkLogo]=\"linkLogo\"\n                [logo]=\"logos?.logoMenu\"\n                (anchorClicked)=\"onAnchorClicked()\"\n                [modalEvent]=\"modalClick\"\n                [imgBackground]=\"menuInfo.imgBackground\"\n                [tags]=\"menuInfo.tags\"\n                [textColors]=\"menuInfo.textColors\"\n            ></lib-babylon-modal-menu>\n        </section>\n    }\n</div>\n","import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    EmbeddedViewRef,\n    EventEmitter,\n    inject,\n    Input,\n    Output,\n    PLATFORM_ID,\n    TemplateRef,\n} from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport { ButtonType } from '../../../Enum';\nimport { LogoType } from '../../../Enum/logo-type.enum';\nimport { BabylonButtonI } from '../../../interfaces/babylon-button.interface';\nimport { BabylonImageI } from '../../../interfaces/babylon-image.interface';\nimport { BabylonMenuButtonI } from '../../../interfaces/babylon-menu-button.interface';\nimport { BabylonMenuInfoI } from '../../../interfaces/babylon-menu-info.interface';\nimport { Utils } from '../../../utils';\nimport { BabylonEngineComponent } from '../babylon-engine';\nimport { BabylonModalMenuComponent } from '../babylon-modal-menu/babylon-modal-menu.component';\n\n@Component({\n    selector: 'lib-babylon-header-clear',\n    standalone: true,\n    imports: [\n        RouterModule,\n        CommonModule,\n        BabylonModalMenuComponent,\n        BabylonLinkTypeDirective,\n    ],\n    templateUrl: './babylon-header-clear.component.html',\n    styleUrl: './babylon-header-clear.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonHeaderClearComponent {\n    @Input() logos?: Record<LogoType, BabylonImageI | undefined>;\n    @Input() linkLogo?: BabylonButtonI;\n    @Input() lang?: string;\n    @Input() menu?: BabylonMenuButtonI[];\n    @Input() menuInfo?: BabylonMenuInfoI;\n    @Input() btnBook?: BabylonButtonI;\n    @Input() engineRef?: TemplateRef<EmbeddedViewRef<BabylonEngineComponent>>;\n    @Input() engineShow = false;\n    @Input() buttonShow = false;\n    @Input() multipleMotorsModal?: boolean;\n    @Input() engineExtern?: boolean = false;\n    @Input() links?: BabylonMenuButtonI[];\n    @Input() shop?: string;\n\n    @Output() openEngine = new EventEmitter();\n    @Output() openLanguages = new EventEmitter();\n    @Output() openNews = new EventEmitter();\n    @Output() modalClick = new EventEmitter<string>();\n    @Output() anchorClicked = new EventEmitter<void>();\n    @Output() openModalMultMotors = new EventEmitter<void>();\n\n    private platformId = inject(PLATFORM_ID);\n\n    onAnchorClicked(): void {\n        if (isPlatformBrowser(this.platformId)) {\n            const panelMenu = document.querySelector('.panel_menu');\n            if (panelMenu && panelMenu.classList.contains('active')) {\n                this.toggleMenu();\n            }\n        }\n    }\n\n    openLanguagesModal(): void {\n        this.openLanguages.emit();\n    }\n\n    openEngineModal(): void {\n        if (!this.engineExtern) {\n            this.openEngine.emit();\n        } else {\n            if (isPlatformBrowser(this.platformId)) {\n                if (this.links && this.links?.length > 0) {\n                    this.links.forEach((link) => {\n                        if (link.label === ButtonType.BookNow) {\n                            window.open(link?.url, '_blank');\n                        }\n                    });\n                }\n            }\n        }\n    }\n\n    openNewsletter(): void {\n        this.openNews.emit();\n    }\n\n    openModalMultipleMotors(): void {\n        this.openModalMultMotors.emit();\n    }\n\n    toggleMenu(): void {\n        if (isPlatformBrowser(this.platformId)) {\n            const hamburger = document.querySelector('.hamburger');\n            const panelMenu = document.querySelector('.panel_menu');\n            const body = document.body;\n            const header = document.querySelector('header');\n\n            if (hamburger) {\n                hamburger.classList.toggle('is-active');\n            }\n            if (panelMenu) {\n                panelMenu.classList.toggle('active');\n            }\n            if (body) {\n                body.classList.toggle('no_scroll');\n            }\n            if (header) {\n                header.classList.toggle('header_color');\n            }\n        }\n    }\n\n    openShop() {\n        if (isPlatformBrowser(this.platformId)) {\n            if (this.links && this.links?.length > 0) {\n                this.links.forEach((link) => {\n                    if (link && link?.label === ButtonType.Shop) {\n                        this.openLink(link);\n                    }\n                });\n            }\n        }\n    }\n\n    openLink(link: BabylonMenuButtonI) {\n        if (!isPlatformBrowser(this.platformId)) return;\n\n        switch (link.linkType) {\n            case 'external':\n                Utils.safeOpenExternal(link.url ?? '');\n\n                break;\n            case 'external_link':\n                Utils.safeOpenExternal(link.url ?? '');\n\n                break;\n            case 'internal':\n                window.location.href = link?.url ?? window.location.href;\n\n                break;\n            case 'internal_link':\n                window.location.href = link?.url ?? window.location.href;\n\n                break;\n\n            default:\n                break;\n        }\n    }\n}\n","<div class=\"babylon-header\">\n    <header\n        class=\"cs_site_header cs_style_1 cs_transparent_header cs_primary_color cs_sticky_header fixed_header\"\n    >\n        <div class=\"cs_main_header\">\n            <div class=\"container-fluid cs_plr_100\">\n                <div class=\"cs_main_header_in\">\n                    <div class=\"cs_main_header_left\">\n                        <button\n                            name=\"menu\"\n                            class=\"cs_hamburger_btn\"\n                            (click)=\"toggleMenu()\"\n                            aria-label=\"Menu\"\n                        >\n                            <span class=\"cs_hamburger_btn_in\">\n                                <span></span>\n                                <span></span>\n                                <span></span>\n                                <span></span>\n                            </span>\n                        </button>\n                        @if (shop) {\n                            <button\n                                class=\"btn btn_shop\"\n                                id=\"btn-shop\"\n                                (click)=\"openShop()\"\n                            >\n                                <div class=\"icon-container\">\n                                    <i class=\"icon--svg\" [ngClass]=\"shop\"></i>\n                                </div>\n                            </button>\n                        }\n                        @if (lang) {\n                            <button\n                                [name]=\"lang\"\n                                class=\"btn btn_primary btn--light ml--20 btn-lang\"\n                                id=\"btn-lang\"\n                                (click)=\"openLanguagesModal()\"\n                            >\n                                <b>{{ lang }}</b>\n                            </button>\n                        }\n                    </div>\n                    <div class=\"cs_main_header_center\">\n                        @if (logos?.logoDesktop) {\n                            <a\n                                [attr.aria-label]=\"linkLogo?.url\"\n                                class=\"cs_site_branding\"\n                                [href]=\"linkLogo?.url\"\n                                [linkType]=\"linkLogo?.linkType\"\n                            >\n                                <img\n                                    [src]=\"logos?.logoDesktop?.src\"\n                                    [alt]=\"logos?.logoDesktop?.alt\"\n                                    width=\"200\"\n                                    loading=\"lazy\"\n                                />\n                            </a>\n                        }\n                    </div>\n                    <div class=\"cs_main_header_center_sticky\">\n                        @if (logos?.logo) {\n                            <a\n                                [attr.aria-label]=\"linkLogo?.url\"\n                                class=\"cs_site_branding\"\n                                [href]=\"linkLogo?.url\"\n                                [linkType]=\"linkLogo?.linkType\"\n                            >\n                                <img\n                                    [src]=\"logos?.logo?.src\"\n                                    [alt]=\"logos?.logo?.alt\"\n                                    width=\"200\"\n                                    loading=\"lazy\"\n                                />\n                            </a>\n                        }\n                    </div>\n                    <div\n                        class=\"cs_main_header_right\"\n                        [ngClass]=\"{ clear__engine: engineRef && engineShow }\"\n                    >\n                        @if (btnBook && buttonShow) {\n                            <button\n                                [name]=\"btnBook.label\"\n                                class=\"btn btn_call btn--light1\"\n                                id=\"btn-book\"\n                                (click)=\"\n                                    multipleMotorsModal\n                                        ? openModalMultipleMotors()\n                                        : openEngineModal()\n                                \"\n                            >\n                                <b>{{ btnBook.label }} </b>\n                            </button>\n                        }\n                        <button\n                            aria-label=\"newsletter\"\n                            class=\"btn btn_primary btn--light ml--20 btn-lang\"\n                            id=\"btn-news-modal\"\n                            name=\"newsletter\"\n                            (click)=\"openNewsletter()\"\n                        >\n                            <b class=\"babylon-envelope\"></b>\n                        </button>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </header>\n\n    @if (engineRef && engineShow) {\n        <ng-container [ngTemplateOutlet]=\"engineRef\"></ng-container>\n    }\n\n    @if (menuInfo && menu) {\n        <section class=\"babylon__menu\">\n            <lib-babylon-modal-menu\n                class=\"panel_menu\"\n                [menu]=\"menu\"\n                [address]=\"menuInfo.address\"\n                [addressTitle]=\"menuInfo.address?.title\"\n                [contact]=\"menuInfo.contact?.links\"\n                [contactTitle]=\"menuInfo.contact?.title\"\n                [socialMedia]=\"menuInfo.socialMedia\"\n                [img]=\"menuInfo.img\"\n                [shop]=\"shop\"\n                [linkLogo]=\"linkLogo\"\n                [logo]=\"logos?.logoMenu\"\n                (anchorClicked)=\"onAnchorClicked()\"\n                [modalEvent]=\"modalClick\"\n                [imgBackground]=\"menuInfo.imgBackground\"\n                [tags]=\"menuInfo.tags\"\n                [textColors]=\"menuInfo.textColors\"\n            ></lib-babylon-modal-menu>\n        </section>\n    }\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, inject, Input, OnInit } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport { BabylonImageI, BabylonMenuButtonI } from '../../../interfaces';\n\n@Component({\n    selector: 'lib-babylon-menu-modal',\n    standalone: true,\n    imports: [CommonModule, BabylonLinkTypeDirective],\n    templateUrl: './babylon-menu-modal.component.html',\n    styleUrl: './babylon-menu-modal.component.scss',\n})\nexport class BabylonMenuModalComponent implements OnInit {\n    @Input() menu?: BabylonMenuButtonI[];\n    @Input() imgs?: BabylonImageI[];\n    @Input() links?: BabylonMenuButtonI[];\n    @Input() maxItemsTop = 6;\n\n    imagePairs: BabylonImageI[][] = [];\n\n    private readonly dialogRef: MatDialogRef<BabylonMenuModalComponent> =\n        inject(MatDialogRef);\n\n    close(): void {\n        this.dialogRef.close();\n    }\n\n    ngOnInit(): void {\n        if (!this.imgs?.length) {\n            this.imagePairs = [];\n            return;\n        }\n\n        const pairs: BabylonImageI[][] = [];\n\n        for (let i = 0; i < this.imgs.length; i += 2) {\n            pairs.push(this.imgs.slice(i, i + 2));\n        }\n\n        this.imagePairs = pairs;\n    }\n}\n","<div class=\"modal modal__menu\">\n    <div class=\"modal__inner\">\n        <div\n            class=\"modal__close js-close\"\n            data-modal_name=\"menu\"\n            role=\"button\"\n            (click)=\"close()\"\n        >\n            <svg aria-hidden=\"true\" focusable=\"false\">\n                <use href=\"/assets/babylon/svg/icon-close.svg#icon-close\"></use>\n            </svg>\n        </div>\n        @if (menu) {\n            <div class=\"modal__box\">\n                <div class=\"modal__menu-nav\">\n                    <ul>\n                        @for (\n                            item of menu | slice: 0 : maxItemsTop;\n                            track $index\n                        ) {\n                            <li class=\"modal__menu-item\">\n                                <a [href]=\"item.url\" [linkType]=\"item.linkType\">\n                                    <span class=\"modal__menu-nav--graphics\">\n                                        @if (imagePairs[$index]?.[0]) {\n                                            <figure\n                                                role=\"img\"\n                                                class=\"modal__menu-item--img left\"\n                                            >\n                                                <img\n                                                    [src]=\"\n                                                        imagePairs[$index][0]\n                                                            .src\n                                                    \"\n                                                    [alt]=\"\n                                                        imagePairs[$index][0]\n                                                            .alt || ''\n                                                    \"\n                                                />\n                                            </figure>\n                                        }\n\n                                        @if (imagePairs[$index]?.[1]) {\n                                            <figure\n                                                role=\"img\"\n                                                class=\"modal__menu-item--img right\"\n                                            >\n                                                <img\n                                                    [src]=\"\n                                                        imagePairs[$index][1]\n                                                            .src\n                                                    \"\n                                                    [alt]=\"\n                                                        imagePairs[$index][1]\n                                                            .alt || ''\n                                                    \"\n                                                />\n                                            </figure>\n                                        }\n                                    </span>\n\n                                    <span>{{ item.label }}</span>\n                                </a>\n                            </li>\n                        }\n                    </ul>\n                    @if (menu.length > maxItemsTop) {\n                        <ul class=\"morelinks\">\n                            @for (\n                                item of menu | slice: maxItemsTop;\n                                track $index\n                            ) {\n                                <li class=\"modal__menu-item\">\n                                    <a\n                                        [href]=\"item.url\"\n                                        [linkType]=\"item.linkType\"\n                                    >\n                                        <span>{{ item.label }}</span>\n                                    </a>\n                                </li>\n                            }\n                        </ul>\n                    }\n                </div>\n            </div>\n            <svg\n                aria-hidden=\"true\"\n                focusable=\"false\"\n                class=\"modal__inner--graphic left\"\n            >\n                <use\n                    href=\"/assets/babylon/svg/icon-graphic.svg#icon-graphic\"\n                ></use>\n            </svg>\n            <svg\n                aria-hidden=\"true\"\n                focusable=\"false\"\n                class=\"modal__inner--graphic right\"\n            >\n                <use\n                    href=\"/assets/babylon/svg/icon-graphic.svg#icon-graphic\"\n                ></use>\n            </svg>\n        }\n    </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport {\n    BabylonInputI,\n    BabylonButtonI,\n    BabylonImageI,\n} from '../../../interfaces';\nimport { BabylonDataBackgroundDirective } from '../../../directives/data-background/data-background.directive';\nimport {\n    FormBuilder,\n    FormGroup,\n    FormsModule,\n    ReactiveFormsModule,\n    Validators,\n} from '@angular/forms';\n\n@Component({\n    selector: 'lib-babylon-newsletter',\n    standalone: true,\n    imports: [\n        CommonModule,\n        MatCheckboxModule,\n        BabylonDataBackgroundDirective,\n        ReactiveFormsModule,\n        FormsModule,\n    ],\n    templateUrl: './babylon-newsletter.component.html',\n    styleUrl: './babylon-newsletter.component.scss',\n})\nexport class BabylonNewsletterComponent implements OnInit{\n    @Input() title?: string;\n    @Input() subtitle?: string;\n    @Input() conditions?: string;\n    @Input() input?: BabylonInputI;\n    @Input() button?: BabylonButtonI;\n    @Input() img?: BabylonImageI;\n\n    @Output() submitForm = new EventEmitter<string>();\n\n    form!: FormGroup;\n\n    constructor(\n        private readonly dialogRef: MatDialogRef<BabylonNewsletterComponent>,\n        private readonly fb: FormBuilder\n    ) {}\n\n    ngOnInit(): void {\n        this.form = this.fb.group({\n            input: ['', [Validators.email, Validators.required]],\n            checkbox: [false, [Validators.requiredTrue]],\n        });\n    }\n\n    validateInput(): void {\n        if (this.input) {\n            this.input.valid = this.form.controls['input'].errors === null;\n        }\n    }\n\n    inputChange(event: Event): void {\n        this.input!.value = (event.target as HTMLInputElement).value;\n    }\n\n    close(): void {\n        this.dialogRef.close();\n    }\n\n    submit(): void {\n        this.submitForm.emit(this.input!.value as string);\n        this.close();\n    }\n}\n","<div class=\"newsletter\" id=\"NewsletterModal\">\n    <div class=\"btn-close--modal\">\n        <span\n            class=\"btn btn_primary btn--light babylon-plus btn-responsive\"\n            (click)=\"close()\"\n        >\n            <svg aria-hidden=\"true\" focusable=\"false\">\n                <use href=\"/assets/babylon/svg/close-icon.svg#close-icon\"></use>\n            </svg>\n        </span>\n    </div>\n    <div class=\"row m-0 w-100 h-100\">\n        @if (img) {\n        <div class=\"col-5 p-0 newsletter__image\">\n            <figure\n                class=\"background-image\"\n                [attr.data-src]=\"img.src\"\n                dataBackground=\"url('{{img.src}}')\"\n            ></figure>\n        </div>\n        }\n        <div class=\"col-12 col-xl-7 newsletter__wrapper px-5\">\n            <div\n                class=\"newsletter__content d-flex flex-column align-items-center\"\n            >\n                @if (title) {\n                    <h2 class=\"title text-center\">{{ title }}</h2>\n                }\n                @if (subtitle) {\n                    <h3 class=\"subtitle text-center\">\n                        {{ subtitle }}\n                    </h3>\n                }\n                <form class=\"d-flex flex-column news_form\" [formGroup]=\"form\">\n                    @if (input) {\n                        <input\n                            class=\"newsletter__input\"\n                            type=\"text\"\n                            [placeholder]=\"input.placeholder\"\n                            formControlName=\"input\"\n                            (input)=\"inputChange($event)\"\n                            (blur)=\"validateInput()\"\n                        />\n                    }\n                    @if (!input?.valid) {\n                        <span class=\"form-error\">\n                            {{ input?.error }}\n                        </span>\n                    }\n                    <div class=\"d-flex align-items-center underline-links\">\n                        <mat-checkbox\n                            class=\"formcontrol\"\n                            formControlName=\"checkbox\"\n                        ></mat-checkbox>\n                        @if (conditions) {\n                            <span\n                                class=\"text--small m-0 pt-2\"\n                                [innerHTML]=\"conditions\"\n                            ></span>\n                        }\n                    </div>\n                    @if (button) {\n                        <button\n                            [name]=\"button.label\"\n                            (click)=\"submit()\"\n                            class=\"btn btn-primary\"\n                            if=\"btnSend\"\n                            [ngClass]=\"{ 'pointers-none': !form.valid }\"\n                        >\n                            {{ button.label }}\n                        </button>\n                    }\n                </form>\n            </div>\n        </div>\n    </div>\n</div>\n","import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    inject,\n    Input,\n    PLATFORM_ID,\n} from '@angular/core';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport { BabylonButtonI } from '../../../interfaces/babylon-button.interface';\nimport { BabylonImageI } from '../../../interfaces/babylon-image.interface';\nimport { BabylonTextInfoI } from '../../../interfaces/babylon-text-info.interface';\nimport { BabylonModalService } from '../../../services/modals-service';\n\n@Component({\n    selector: 'lib-babylon-offer-popup',\n    standalone: true,\n    imports: [CommonModule, BabylonLinkTypeDirective],\n    templateUrl: './babylon-offer-popup.component.html',\n    styleUrl: './babylon-offer-popup.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonOfferPopupComponent implements AfterViewInit {\n    @Input() image?: BabylonImageI;\n    @Input() button?: BabylonButtonI;\n    @Input() texts?: BabylonTextInfoI;\n    @Input() additionalButtons?: BabylonButtonI[];\n\n    popupOfferOpen: boolean = false;\n    hasAnyValue: boolean = false;\n\n    private platformId = inject(PLATFORM_ID);\n\n    constructor(\n        private readonly modalService: BabylonModalService,\n        private cdr: ChangeDetectorRef\n    ) {}\n\n    ngAfterViewInit(): void {\n        if (isPlatformBrowser(this.platformId)) {\n            if (this.image || this.button || this.texts)\n                this.hasAnyValue = true;\n            this.popupOfferOpen =\n                sessionStorage.getItem('bannerOfferClosed') !== 'true';\n            this.cdr.detectChanges();\n        }\n    }\n\n    close(): void {\n        this.popupOfferOpen = false;\n        sessionStorage.setItem('bannerOfferClosed', 'true');\n    }\n}\n","@if (hasAnyValue && popupOfferOpen) {\n    <div class=\"offer-popup__background\"></div>\n    <div class=\"offer-popup\">\n        <div class=\"btn-close--modal\" (click)=\"close()\">\n            <button name=\"close\" class=\"btn btn_primary btn--close\">\n                <span class=\"babylon-plus\"></span>\n            </button>\n        </div>\n        <div class=\"row m-0 w-100 h-100\">\n            @if (image) {\n                <div class=\"col-12 col-xl-6 p-0 offer-popup__image\">\n                    <figure>\n                        <img\n                            class=\"background-image\"\n                            [src]=\"\n                                image?.src ||\n                                'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                            \"\n                            [alt]=\"image?.alt ?? image?.title ?? 'title'\"\n                            loading=\"lazy\"\n                        />\n                    </figure>\n                </div>\n            }\n            <div class=\"col-12 col-xl-6 offer-popup__wrapper px-5\">\n                <div class=\"intro_info align--center\">\n                    @if (texts?.title) {\n                        <h2 class=\"title--small\">\n                            {{ texts?.title }}\n                        </h2>\n                    }\n                    @if (texts?.subtitle) {\n                        <h3 class=\"subtitle--small mb--20\">\n                            {{ texts?.subtitle }}\n                        </h3>\n                    }\n                    @if (texts?.description) {\n                        <p\n                            class=\"text--small\"\n                            [innerHTML]=\"texts?.description\"\n                        ></p>\n                    }\n                    @if (button) {\n                        <div class=\"btns__box justify-between1\">\n                            <a\n                                [attr.aria-label]=\"button.label\"\n                                class=\"btn btn-call\"\n                                [href]=\"button.url\"\n                                [linkType]=\"button.linkType\"\n                            >\n                                {{ button.label }}\n                            </a>\n                        </div>\n                    }\n                    @if (additionalButtons?.length) {\n                        <div\n                            class=\"btns__box justify-between1 additional-buttons\"\n                        >\n                            @for (button of additionalButtons; track $index) {\n                                @if (button) {\n                                    <a\n                                        [attr.aria-label]=\"button.label\"\n                                        class=\"btn btn-call\"\n                                        [href]=\"button.url\"\n                                        [linkType]=\"button.linkType\"\n                                    >\n                                        {{ button.label }}\n                                    </a>\n                                }\n                            }\n                        </div>\n                    }\n                </div>\n            </div>\n        </div>\n    </div>\n}\n","import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    EmbeddedViewRef,\n    EventEmitter,\n    inject,\n    Input,\n    Output,\n    PLATFORM_ID,\n    TemplateRef,\n} from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { NavigationEnd, Router, RouterModule } from '@angular/router';\nimport { filter } from 'rxjs';\nimport { ButtonType, LogoType } from '../../../Enum';\nimport {\n    BabylonButtonI,\n    BabylonImageI,\n    BabylonMenuButtonI,\n    BabylonMenuInfoI,\n} from '../../../interfaces';\nimport { ScreenSizerService } from '../../../services';\nimport { BabylonEngineComponent } from '../babylon-engine';\nimport { BabylonMenuModalComponent } from '../babylon-menu-modal/babylon-menu-modal.component';\nimport { BabylonNewsletterComponent } from '../babylon-newsletter/babylon-newsletter.component';\nimport { BabylonOfferPopupComponent } from '../babylon-offer-popup/babylon-offer-popup.component';\n\n@Component({\n    selector: 'lib-babylon-header-clear-v2',\n    standalone: true,\n    imports: [RouterModule, CommonModule],\n    templateUrl: './babylon-header-clear-v2.component.html',\n    styleUrl: './babylon-header-clear-v2.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonHeaderClearV2Component {\n    @Input() headerFixed: boolean = false;\n\n    @Input() logos?: Record<LogoType, BabylonImageI | undefined>;\n    @Input() linkLogo?: BabylonButtonI;\n    @Input() lang?: string;\n    @Input() menu?: BabylonMenuButtonI[];\n    @Input() menuInfo?: BabylonMenuInfoI;\n    @Input() btnBook?: BabylonButtonI;\n    @Input() engineRef?: TemplateRef<EmbeddedViewRef<BabylonEngineComponent>>;\n    @Input() engineShow = false;\n    @Input() buttonShow = false;\n    @Input() multipleMotorsModal?: boolean;\n    @Input() engineExtern?: boolean = false;\n    @Input() links?: BabylonMenuButtonI[];\n    @Input() shop?: string;\n\n    @Output() openEngine = new EventEmitter();\n    \n    /*    \n        @Output() openNews = new EventEmitter();\n        @Output() modalClick = new EventEmitter<string>();\n        @Output() anchorClicked = new EventEmitter<void>();\n        @Output() openModalMultMotors = new EventEmitter<void>(); */\n\n    @Output() openLanguages = new EventEmitter();\n\n    private platformId = inject(PLATFORM_ID);\n\n    constructor(\n        private readonly dialog: MatDialog,\n        private readonly screenSizer: ScreenSizerService,\n        private readonly router: Router\n    ) {\n        this.router.events\n            .pipe(filter((e): e is NavigationEnd => e instanceof NavigationEnd))\n            .subscribe(() => {\n                this.dialog.closeAll();\n            });\n    }\n\n    openEngineModalV2(): void {\n        if (!this.engineExtern) {\n            this.openEngine.emit();\n        } else {\n            if (isPlatformBrowser(this.platformId)) {\n                if (this.links && this.links?.length > 0) {\n                    this.links.forEach((link) => {\n                        if (link.label === ButtonType.BookNow) {\n                            window.open(link?.url, '_blank');\n                        }\n                    });\n                }\n            }\n        }\n    }\n\n    openLanguagesModal(): void {\n        this.openLanguages.emit();\n    }\n\n    openMenuModal(): void {\n        const dialogRef = this.dialog.open(BabylonMenuModalComponent, {\n            width: '100vw',\n            height: '100vh',\n            maxWidth: '100vw',\n            hasBackdrop: true,\n        });\n\n        dialogRef.componentInstance.menu = this.menu;\n        dialogRef.componentInstance.imgs = this.menuInfo?.imgs;\n        /* dialogRef.componentInstance.links = this.languagesData?.items;\n        dialogRef.componentInstance.maxItemsTop = this.languagesData?.selected; */\n    }\n\n    openOffer(): void {\n        const dialogRef = this.dialog.open(BabylonOfferPopupComponent, {\n            width: this.screenSizer.minMediumTablet() ? '65%' : '95vw',\n            height: this.screenSizer.minMediumTablet() ? '80%' : '85vh',\n            maxHeight: this.screenSizer.minMediumTablet() ? '714px' : '100vh',\n            maxWidth: this.screenSizer.minMediumTablet() ? '1000px' : '100vw',\n            hasBackdrop: true,\n            panelClass: 'newsletter',\n        });\n    }\n\n    openNewsletter(): void {\n        const dialogRef = this.dialog.open(BabylonNewsletterComponent, {\n            width: this.screenSizer.minMediumTablet() ? '65%' : '95vw',\n            height: this.screenSizer.minMediumTablet() ? '80%' : '85vh',\n            maxHeight: this.screenSizer.minMediumTablet() ? '714px' : '100vh',\n            maxWidth: this.screenSizer.minMediumTablet() ? '1000px' : '100vw',\n            hasBackdrop: true,\n            panelClass: 'newsletter',\n        });\n    }\n}\n","<header class=\"header cs_sticky_header fixed_header\" id=\"headerClearV2\">\n    <div class=\"header__logo\">\n        <a href=\"/es/home\">\n            <svg aria-hidden=\"true\" focusable=\"false\" class=\"header__logo--img\">\n                <use\n                    href=\"/assets/babylon/svg/blanco-logo.svg#blanco-logo\"\n                ></use>\n            </svg>\n        </a>\n    </div>\n    <div class=\"header__nav--desktop\">\n        <span\n            class=\"header__nav-lang js-active-modal\"\n            data-modal_name=\"language\"\n            role=\"button\"\n            (click)=\"openLanguagesModal()\"\n        >\n            <svg\n                aria-hidden=\"true\"\n                focusable=\"false\"\n                class=\"header__nav--arrow\"\n            >\n                <use href=\"/assets/babylon/svg/icon-arrow.svg#icon-arrow\"></use>\n            </svg>\n            <span>Idiomas</span>\n        </span>\n        <span\n            class=\"header__nav-menu js-active-modal\"\n            data-modal_name=\"menu\"\n            role=\"button\"\n            (click)=\"openMenuModal()\"\n            >Menu</span\n        >\n        <span\n            class=\"header__nav-book js-active-modal\"\n            data-modal_name=\"reservar\"\n            role=\"button\"\n            (click)=\"openEngineModalV2()\"\n            >Book</span\n        >\n        <span class=\"header__nav-club\" role=\"button\">\n            <span>Club Blanco</span>\n            <svg\n                aria-hidden=\"true\"\n                focusable=\"false\"\n                class=\"header__nav--arrow\"\n            >\n                <use href=\"/assets/babylon/svg/icon-arrow.svg#icon-arrow\"></use>\n            </svg>\n        </span>\n    </div>\n    <div class=\"header__nav--mobile\">\n        <span\n            class=\"header__nav-menu js-active-modal\"\n            data-modal_name=\"menu\"\n            role=\"button\"\n            (click)=\"openMenuModal()\"\n            >Menu</span\n        >\n        <span\n            class=\"header__nav-book js-active-modal\"\n            data-modal_name=\"reservar\"\n            role=\"button\"\n            (click)=\"openEngineModalV2()\"\n            >Book</span\n        >\n        <ul class=\"header__nav-links\">\n            <!-- header__nav-links--currentColor -->\n            <li\n                class=\"header__nav-links--item js-active-modal\"\n                data-modal_name=\"language\"\n                role=\"button\"\n                (click)=\"openLanguagesModal()\"\n            >\n                <svg\n                    aria-hidden=\"true\"\n                    focusable=\"false\"\n                    class=\"header__nav-links--icon\"\n                >\n                    <use\n                        href=\"/assets/babylon/svg/icon-globe.svg#icon-globe\"\n                    ></use>\n                </svg>\n            </li>\n            <!-- <li class=\"header__nav-links--item\">\n                    <a href=\"/\">\n                        <svg aria-hidden=\"true\" focusable=\"false\" class=\"header__nav-links--icon\">\n                            <use href=\"#icon-whatsapp\"></use>\n                        </svg>\n                    </a>\n                </li> -->\n            <!-- <li class=\"header__nav-links--item  js-active-modal\" data-modal_name=\"newsletter\">\n                    <svg aria-hidden=\"true\" focusable=\"false\" class=\"header__nav-links--icon\">\n                        <use href=\"#icon-envelope\"></use>\n                    </svg>\n                </li> -->\n            <li class=\"header__nav-links--item\">\n                <a href=\"/\">\n                    <svg\n                        aria-hidden=\"true\"\n                        focusable=\"false\"\n                        class=\"header__nav-links--icon\"\n                    >\n                        <use\n                            href=\"/assets/babylon/svg/icon-user.svg#icon-user\"\n                        ></use>\n                    </svg>\n                </a>\n            </li>\n            <li class=\"header__nav-links--item\">\n                <a href=\"tel:'+34 971 328 451'\">\n                    <svg\n                        aria-hidden=\"true\"\n                        focusable=\"false\"\n                        class=\"header__nav-links--icon\"\n                    >\n                        <use\n                            href=\"/assets/babylon/svg/icon-call.svg#icon-call\"\n                        ></use>\n                    </svg>\n                </a>\n            </li>\n        </ul>\n    </div>\n</header>\n","import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    EventEmitter,\n    inject,\n    Input,\n    OnInit,\n    Output,\n    PLATFORM_ID,\n} from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport { ButtonType } from '../../../Enum';\nimport { BabylonButtonI } from '../../../interfaces/babylon-button.interface';\nimport { BabylonImageI } from '../../../interfaces/babylon-image.interface';\nimport { BabylonMenuButtonI } from '../../../interfaces/babylon-menu-button.interface';\nimport { BabylonMenuInfoI } from '../../../interfaces/babylon-menu-info.interface';\nimport { Utils } from '../../../utils';\nimport { BabylonModalMenuComponent } from '../babylon-modal-menu/babylon-modal-menu.component';\n\n@Component({\n    selector: 'lib-babylon-header-menu-center',\n    standalone: true,\n    imports: [\n        RouterModule,\n        CommonModule,\n        BabylonLinkTypeDirective,\n        BabylonModalMenuComponent,\n    ],\n    templateUrl: './babylon-header-menu-center.component.html',\n    styleUrl: './babylon-header-menu-center.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonHeaderMenuCenterComponent implements OnInit {\n    @Input() headerFixed: boolean = false;\n    @Input() logo?: BabylonImageI;\n    @Input() logoSticky?: BabylonImageI;\n    @Input() linkLogo?: BabylonButtonI;\n    @Input() btnBook?: BabylonButtonI;\n    @Input() shop?: string;\n    @Input() news?: string;\n    @Input() menu?: BabylonMenuButtonI[];\n    @Input() menuInfo?: BabylonMenuInfoI;\n    @Input() lang?: string;\n    @Input() title?: string;\n    @Input() ndTitle?: string;\n    @Input() multipleMotorsModal?: boolean;\n    @Input() links?: BabylonButtonI[];\n    @Input() engineExtern?: boolean = false;\n\n    @Output() openEngine = new EventEmitter();\n    @Output() openLanguages = new EventEmitter();\n    @Output() openNews = new EventEmitter();\n    @Output() modalClick = new EventEmitter<string>();\n    @Output() openModalMultMotors = new EventEmitter<void>();\n\n    isHamburgerActive: boolean = false;\n\n    private platformId = inject(PLATFORM_ID);\n    public btnBookButton : BabylonButtonI = {}; \n\n    ngOnInit(): void {\n        if (this.links && this.links.length > 0) {\n            this.btnBookButton = this.links.filter(link => link.label === 'book-now' && link.linkType === 'component_link')?.[0]\n        }\n    }\n\n    openLanguagesModal(): void {\n        this.openLanguages.emit();\n    }\n\n    openNewsletter(): void {\n        this.openNews.emit();\n    }\n\n    openModalMultipleMotors(): void {\n        this.openModalMultMotors.emit();\n    }\n\n    preventLink(e: Event): void {\n        e.preventDefault();\n        this.isHamburgerActive = false;\n    }\n\n    toggleMenu(): void {\n        if (isPlatformBrowser(this.platformId)) {\n            const hamburger = document.querySelector('.hamburger');\n            const panelMenu = document.querySelector('.panel_menu');\n            const body = document.querySelector('body');\n            const header = document.querySelector('header');\n\n            if (hamburger) {\n                hamburger.classList.toggle('is-active');\n            }\n\n            if (panelMenu) {\n                panelMenu.classList.toggle('active');\n            }\n\n            if (body) {\n                body.classList.toggle('no_scroll');\n                if (panelMenu?.classList.contains('active')) {\n                    body.style.overflow = 'hidden';\n                } else {\n                    body.style.overflow = '';\n                }\n            }\n\n            if (header) {\n                header.classList.toggle('header_color');\n            }\n        }\n    }\n\n    onAnchorClicked(): void {\n        if ($('.panel_menu').hasClass('active')) {\n            this.toggleMenu();\n        }\n    }\n\n    openShop() {\n        if (!isPlatformBrowser(this.platformId)) return;\n\n        const link = this.getLinkByType(ButtonType.Shop);\n        if (link) this.openLink(link);\n    }\n    \n    openNewsletterLink() {\n        if (!isPlatformBrowser(this.platformId)) return;\n\n        const link = this.getLinkByType(ButtonType.News);\n        if (link) this.openLink(link);\n    }\n\n    openEngineModal(): void {\n        if (!this.engineExtern) {\n            this.openEngine.emit();\n            return;\n        }\n\n        if (!isPlatformBrowser(this.platformId)) return;\n\n        const link = this.getLinkByType(ButtonType.BookNow);\n        if (link?.url) window.open(link.url, '_blank');\n    }\n\n    openLink(link: BabylonMenuButtonI) {\n        if (!isPlatformBrowser(this.platformId)) return;\n\n        switch (link.linkType) {\n            case 'external':\n            case 'external_link':\n                Utils.safeOpenExternal(link.url ?? '');\n                break;\n\n            case 'internal':\n            case 'internal_link':\n                window.location.href = link?.url ?? window.location.href;\n                break;\n\n            default:\n                break;\n        }\n    }\n\n    private getLinkByType(type: ButtonType): BabylonButtonI | undefined {\n        if (!this.links?.length) return undefined;\n        return this.links.find((link) => link?.label === type);\n    }\n}\n","<div class=\"babylon-header\">\n    <header\n        class=\"cs_site_header cs_style_1 cs_transparent_header cs_primary_color cs_sticky_header fixed_header\"\n    >\n        <div class=\"cs_main_header\">\n            <div class=\"container-fluid cs_plr_100\">\n                <div class=\"cs_main_header_in\">\n                    <div class=\"cs_main_header_left\">\n                        @if (logo) {\n                            <a\n                                [attr.aria-label]=\"linkLogo?.url\"\n                                class=\"cs_site_branding\"\n                                [href]=\"linkLogo?.url\"\n                                [linkType]=\"linkLogo?.linkType\"\n                            >\n                                <img\n                                    [src]=\"logo.src\"\n                                    [alt]=\"logo.alt\"\n                                    width=\"250\"\n                                    loading=\"lazy\"\n                                />\n                            </a>\n                        }\n                    </div>\n                    <div class=\"cs_main_header_left_sticky\">\n                        @if (logoSticky) {\n                            <a\n                                [attr.aria-label]=\"linkLogo?.url\"\n                                class=\"cs_site_branding\"\n                                [href]=\"linkLogo?.url\"\n                                [linkType]=\"linkLogo?.linkType\"\n                            >\n                                <img\n                                    [src]=\"logoSticky.src\"\n                                    [alt]=\"logoSticky.alt\"\n                                    width=\"250\"\n                                    loading=\"lazy\"\n                                />\n                            </a>\n                        }\n                    </div>\n                    @if (menu) {\n                        <div class=\"cs_main_header_center\">\n                            <nav class=\"cs_nav cs_fs_13 cs_semibold\">\n                                @if (menu.length) {\n                                    <ul class=\"cs_nav_list\">\n                                        @for (link of menu; track $index) {\n                                            <li\n                                                [ngClass]=\"{\n                                                    'menu-item-has-children':\n                                                        link.children?.length,\n                                                }\"\n                                            >\n                                                <a\n                                                    [attr.aria-label]=\"\n                                                        link.label\n                                                    \"\n                                                    [linkType]=\"link.linkType\"\n                                                    [href]=\"link.url\"\n                                                    (click)=\"\n                                                        preventLink($event)\n                                                    \"\n                                                >\n                                                    {{ link.label }}\n                                                </a>\n                                                @if (link.children?.length) {\n                                                    <ul>\n                                                        @for (\n                                                            item of link.children;\n                                                            track $index\n                                                        ) {\n                                                            <li>\n                                                                <a\n                                                                    [attr.aria-label]=\"\n                                                                        item.label\n                                                                    \"\n                                                                    [linkType]=\"\n                                                                        item.linkType\n                                                                    \"\n                                                                    [href]=\"\n                                                                        item.url\n                                                                    \"\n                                                                    (click)=\"\n                                                                        preventLink(\n                                                                            $event\n                                                                        )\n                                                                    \"\n                                                                >\n                                                                    {{\n                                                                        item.label\n                                                                    }}\n                                                                </a>\n                                                            </li>\n                                                        }\n                                                    </ul>\n                                                }\n                                            </li>\n                                        }\n                                    </ul>\n                                }\n                            </nav>\n                        </div>\n                    }\n                    <div class=\"cs_main_header_right\">\n                        @if (shop) {\n                            <button\n                                class=\"btn btn_shop\"\n                                id=\"btn-shop\"\n                                (click)=\"openShop()\"\n                            >\n                                <div class=\"icon-container\">\n                                    <i class=\"icon--svg\" [ngClass]=\"shop\"></i>\n                                </div>\n                            </button>\n                        }\n                        @if (news) {\n                            <button\n                                class=\"btn btn_news\"\n                                id=\"btn-news\"\n                                (click)=\"openNewsletterLink()\"\n                            >\n                                <div class=\"icon-container\">\n                                    <i class=\"icon--svg\" [ngClass]=\"news\"></i>\n                                </div>\n                            </button>\n                        }\n                        @if (btnBook) {\n                            @if (btnBookButton) {\n                                <a\n                                    [name]=\"btnBook.label\"\n                                    class=\"btn btn_call btn--light1\"\n                                    id=\"btn-book\"\n                                    type=\"button\"\n                                    [linkType]=\"btnBookButton.linkType\"\n                                    [href]=\"btnBookButton.url\"\n                                    [modalClick]=\"modalClick\"\n                                >\n                                    <b>{{ btnBook.label }}</b>\n                                </a>\n                            } @else {\n                                <button\n                                    [name]=\"btnBook.label\"\n                                    class=\"btn btn_call btn--light1\"\n                                    id=\"btn-book\"\n                                    type=\"button\"\n                                    (click)=\"\n                                        multipleMotorsModal\n                                            ? openModalMultipleMotors()\n                                            : openEngineModal()\n                                    \"\n                                >\n                                    <b>{{ btnBook.label }} </b>\n                                </button>\n                            }\n                        }\n                        @if (lang) {\n                            <button\n                                [name]=\"lang\"\n                                class=\"btn btn_primary btn--light ml--20 btn-lang\"\n                                id=\"btn-lang\"\n                                (click)=\"openLanguagesModal()\"\n                            >\n                                <b>{{ lang }}</b>\n                            </button>\n                        }\n\n                        <button\n                            class=\"cs_hamburger_btn ml--20\"\n                            name=\"hamburguer\"\n                            aria-label=\"menu\"\n                            (click)=\"toggleMenu()\"\n                        >\n                            <span class=\"cs_hamburger_btn_in\">\n                                <span></span>\n                                <span></span>\n                                <span></span>\n                                <span></span>\n                            </span>\n                        </button>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </header>\n\n    @if (menuInfo && menu) {\n        <section class=\"babylon__menu\">\n            <lib-babylon-modal-menu\n                class=\"panel_menu\"\n                [menu]=\"menu\"\n                [address]=\"menuInfo.address\"\n                [addressTitle]=\"menuInfo.address?.title\"\n                [contact]=\"menuInfo.contact?.links\"\n                [contactTitle]=\"menuInfo.contact?.title\"\n                [socialMedia]=\"menuInfo.socialMedia\"\n                [img]=\"menuInfo.img\"\n                [linkLogo]=\"linkLogo\"\n                [shop]=\"shop\"\n                [news]=\"news\"\n                [links]=\"links\"\n                [logo]=\"logo\"\n                (anchorClicked)=\"onAnchorClicked()\"\n                [modalEvent]=\"modalClick\"\n                [imgBackground]=\"menuInfo.imgBackground\"\n                [tags]=\"menuInfo.tags\"\n                [textColors]=\"menuInfo.textColors\"\n            ></lib-babylon-modal-menu>\n        </section>\n    }\n</div>\n","import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    EventEmitter,\n    inject,\n    Input,\n    OnInit,\n    Output,\n    PLATFORM_ID,\n} from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport { LogoType } from '../../../Enum';\nimport { BabylonImageI } from '../../../interfaces';\nimport { BabylonButtonI } from '../../../interfaces/babylon-button.interface';\nimport { BabylonMenuButtonI } from '../../../interfaces/babylon-menu-button.interface';\nimport { BabylonMenuInfoI } from '../../../interfaces/babylon-menu-info.interface';\nimport { BabylonModalMenuComponent } from '../babylon-modal-menu/babylon-modal-menu.component';\n\ndeclare var $: any;\n@Component({\n    selector: 'lib-babylon-header-menu-logo-center',\n    standalone: true,\n    imports: [\n        RouterModule,\n        CommonModule,\n        BabylonLinkTypeDirective,\n        BabylonModalMenuComponent,\n    ],\n    templateUrl: './babylon-header-menu-logo-center.component.html',\n    styleUrl: './babylon-header-menu-logo-center.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonHeaderMenuLogoCenterComponent implements OnInit {\n    @Input() headerFixed: boolean = false;\n    @Input() logos?: Record<LogoType, BabylonImageI | undefined>;\n    @Input() linkLogo?: BabylonButtonI;\n    @Input() menu?: BabylonMenuButtonI[];\n    @Input() menuInfo?: BabylonMenuInfoI;\n    @Input() btnBook?: BabylonButtonI;\n    @Input() lang?: string;\n    @Input() title?: string;\n    @Input() ndTitle?: string;\n    @Input() multipleMotorsModal?: boolean;\n\n    @Output() openEngine = new EventEmitter();\n    @Output() openLanguages = new EventEmitter();\n    @Output() openNews = new EventEmitter();\n    @Output() modalClick = new EventEmitter<string>();\n    @Output() openModalMultMotors = new EventEmitter<void>();\n\n    leftMenu: BabylonMenuButtonI[] = [];\n    rightMenu: BabylonMenuButtonI[] = [];\n\n    isHamburgerActive: boolean = false;\n\n    private platformId = inject(PLATFORM_ID);\n\n    ngOnInit(): void {\n        const midIndex = this.menu ? Math.ceil(this.menu.length / 2) : 0;\n        this.leftMenu = this.menu ? this.menu.slice(0, midIndex) : [];\n        this.rightMenu = this.menu ? this.menu.slice(midIndex) : [];\n    }\n\n    preventLink(e: Event): void {\n        e.preventDefault();\n        this.isHamburgerActive = false;\n    }\n\n    openLanguagesModal(): void {\n        this.openLanguages.emit();\n    }\n\n    openEngineModal(): void {\n        this.openEngine.emit();\n    }\n\n    openNewsletter(): void {\n        this.openNews.emit();\n    }\n\n    openModalMultipleMotors(): void {\n        this.openModalMultMotors.emit();\n    }\n\n    closeHamburgerMenu() {\n        this.isHamburgerActive = false;\n    }\n\n    onAnchorClicked(): void {\n        if ($('.panel_menu').hasClass('active')) {\n            this.toggleMenu();\n        }\n    }\n\n    toggleMenu(): void {\n        if (isPlatformBrowser(this.platformId)) {\n            const hamburger = document.querySelector('.hamburger');\n            const panelMenu = document.querySelector('.panel_menu');\n            const body = document.querySelector('body');\n            const header = document.querySelector('header');\n\n            if (hamburger) {\n                hamburger.classList.toggle('is-active');\n            }\n\n            if (panelMenu) {\n                panelMenu.classList.toggle('active');\n            }\n\n            if (body) {\n                body.classList.toggle('no_scroll');\n                if (panelMenu?.classList.contains('active')) {\n                    body.style.overflow = 'hidden';\n                } else {\n                    body.style.overflow = '';\n                }\n            }\n\n            if (header) {\n                header.classList.toggle('header_color');\n            }\n        }\n    }\n\n    get linkHref(): string {\n        return this.linkLogo?.url ?? '/' + this.lang?.toLowerCase();\n    }\n}\n","<div class=\"babylon-header\">\n    <header\n        class=\"cs_site_header cs_style_1 cs_transparent_header cs_primary_color cs_sticky_header fixed_header\"\n    >\n        <div class=\"cs_main_header\" id=\"headerCenterBookShow\">\n            <div class=\"container-fluid cs_plr_100\">\n                <div class=\"cs_main_header_in\">\n                    <div class=\"cs_main_header_left\">\n                        @if (logos) {\n                            <div class=\"cs_logo_left\">\n                                <div class=\"cs_logo_item\">\n                                    <a\n                                        [attr.aria-label]=\"linkHref\"\n                                        [href]=\"linkHref\"\n                                    >\n                                        <img\n                                            [src]=\"logos.logo?.src\"\n                                            [alt]=\"logos.logo?.alt\"\n                                            class=\"cs_logo\"\n                                            width=\"250\"\n                                            loading=\"lazy\"\n                                        />\n                                    </a>\n                                </div>\n                            </div>\n                        }\n                    </div>\n                    <div class=\"cs_btn-engine-container\">\n                        <button\n                            class=\"btn btn_call\"\n                            (click)=\"multipleMotorsModal ? openModalMultipleMotors() : openEngineModal()\"\n                            id=\"btn-book\"\n                        >\n                            <b>{{ btnBook?.label }} </b>\n                        </button>\n                    </div>\n                    @if (menu) {\n                        <div class=\"cs_main_header_center\">\n                            <nav class=\"cs_nav cs_fs_13 cs_semibold\">\n                                <div class=\"cs_menu_logo\">\n                                    <div class=\"leftMenu\">\n                                        <ul class=\"cs_nav_list\">\n                                            <!-- Primera mitad del menú -->\n                                            @for (\n                                                link of leftMenu;\n                                                track $index\n                                            ) {\n                                                <li\n                                                    [ngClass]=\"{\n                                                        'menu-item-has-children':\n                                                            link.children\n                                                                ?.length,\n                                                    }\"\n                                                >\n                                                    <a\n                                                        [attr.aria-label]=\"\n                                                            link.label\n                                                        \"\n                                                        [linkType]=\"\n                                                            link.linkType\n                                                        \"\n                                                        (click)=\"\n                                                            preventLink($event)\n                                                        \"\n                                                        [href]=\"link.url\"\n                                                    >\n                                                        {{ link.label }}\n                                                    </a>\n                                                    @if (\n                                                        link.children?.length\n                                                    ) {\n                                                        <ul>\n                                                            @for (\n                                                                item of link.children;\n                                                                track $index\n                                                            ) {\n                                                                <li>\n                                                                    <a\n                                                                        [attr.aria-label]=\"\n                                                                            item.label\n                                                                        \"\n                                                                        [href]=\"\n                                                                            item.url\n                                                                        \"\n                                                                        (click)=\"\n                                                                            preventLink(\n                                                                                $event\n                                                                            )\n                                                                        \"\n                                                                        [routerLink]=\"\n                                                                            item.url\n                                                                        \"\n                                                                    >\n                                                                        {{\n                                                                            item.label\n                                                                        }}\n                                                                    </a>\n                                                                </li>\n                                                            }\n                                                        </ul>\n                                                    }\n                                                </li>\n                                            }\n                                        </ul>\n                                    </div>\n\n                                    <!-- Logo en el centro -->\n                                    @if (logos) {\n                                        <div class=\"cs_logo_center\">\n                                            <ul>\n                                                <li class=\"cs_logo_item\">\n                                                    <a\n                                                        [attr.aria-label]=\"\n                                                            linkHref\n                                                        \"\n                                                        [href]=\"linkHref\"\n                                                    >\n                                                        <img\n                                                            [src]=\"\n                                                                logos\n                                                                    .logoDesktop\n                                                                    ?.src\n                                                            \"\n                                                            [alt]=\"\n                                                                logos\n                                                                    .logoDesktop\n                                                                    ?.alt\n                                                            \"\n                                                            class=\"cs_logo\"\n                                                            width=\"200\"\n                                                            loading=\"lazy\"\n                                                        />\n                                                    </a>\n                                                </li>\n                                            </ul>\n                                        </div>\n                                    }\n\n                                    <div class=\"rightMenu\">\n                                        <ul class=\"cs_nav_list\">\n                                            <!-- Segunda mitad del menú -->\n                                            @for (\n                                                link of rightMenu;\n                                                track $index\n                                            ) {\n                                                <li\n                                                    [ngClass]=\"{\n                                                        'menu-item-has-children':\n                                                            link.children\n                                                                ?.length,\n                                                    }\"\n                                                >\n                                                    <a\n                                                        [attr.aria-label]=\"\n                                                            link.label\n                                                        \"\n                                                        [linkType]=\"\n                                                            link.linkType\n                                                        \"\n                                                        (click)=\"\n                                                            preventLink($event)\n                                                        \"\n                                                        [href]=\"link.url\"\n                                                    >\n                                                        {{ link.label }}\n                                                    </a>\n                                                    @if (\n                                                        link.children?.length\n                                                    ) {\n                                                        <ul>\n                                                            @for (\n                                                                item of link.children;\n                                                                track $index\n                                                            ) {\n                                                                <li>\n                                                                    <a\n                                                                        [attr.aria-label]=\"\n                                                                            item.label\n                                                                        \"\n                                                                        [href]=\"\n                                                                            item.url\n                                                                        \"\n                                                                        (click)=\"\n                                                                            preventLink(\n                                                                                $event\n                                                                            )\n                                                                        \"\n                                                                        [routerLink]=\"\n                                                                            item.url\n                                                                        \"\n                                                                    >\n                                                                        {{\n                                                                            item.label\n                                                                        }}\n                                                                    </a>\n                                                                </li>\n                                                            }\n                                                        </ul>\n                                                    }\n                                                </li>\n                                            }\n                                        </ul>\n                                    </div>\n                                </div>\n                                <div class=\"cs_menu_no_logo\">\n                                    @if (menu.length) {\n                                        <ul class=\"cs_nav_list\">\n                                            @for (link of menu; track $index) {\n                                                <li\n                                                    [ngClass]=\"{\n                                                        'menu-item-has-children':\n                                                            link.children\n                                                                ?.length,\n                                                    }\"\n                                                >\n                                                    <a\n                                                        [attr.aria-label]=\"\n                                                            link.label\n                                                        \"\n                                                        [linkType]=\"\n                                                            link.linkType\n                                                        \"\n                                                        [href]=\"link.url\"\n                                                        (click)=\"\n                                                            preventLink($event)\n                                                        \"\n                                                        [routerLink]=\"link.url\"\n                                                    >\n                                                        {{ link.label }}\n                                                    </a>\n                                                    @if (\n                                                        link.children?.length\n                                                    ) {\n                                                        <ul>\n                                                            @for (\n                                                                item of link.children;\n                                                                let childrenIndex = $index;\n                                                                track childrenIndex\n                                                            ) {\n                                                                <li>\n                                                                    <a\n                                                                        [attr.aria-label]=\"\n                                                                            item.label\n                                                                        \"\n                                                                        [href]=\"\n                                                                            item.url\n                                                                        \"\n                                                                        (click)=\"\n                                                                            preventLink(\n                                                                                $event\n                                                                            )\n                                                                        \"\n                                                                        [routerLink]=\"\n                                                                            item.url\n                                                                        \"\n                                                                    >\n                                                                        {{\n                                                                            item.label\n                                                                        }}\n                                                                    </a>\n                                                                </li>\n                                                            }\n                                                        </ul>\n                                                    }\n                                                </li>\n                                            }\n                                        </ul>\n                                    }\n                                </div>\n                            </nav>\n                        </div>\n                    }\n\n                    <!-- Logo en el centro -->\n                    @if (logos) {\n                        <div class=\"cs_logo_center__small-desktop\">\n                            <li class=\"cs_logo_item\">\n                                <a\n                                    [attr.aria-label]=\"linkHref\"\n                                    [href]=\"linkHref\"\n                                >\n                                    <img\n                                        [src]=\"logos.logoDesktop?.src\"\n                                        [alt]=\"logos.logoDesktop?.alt\"\n                                        class=\"cs_logo\"\n                                        width=\"200\"\n                                        loading=\"lazy\"\n                                    />\n                                </a>\n                            </li>\n                        </div>\n                    }\n\n                    <div class=\"cs_main_header_right\">\n                        @if (lang) {\n                            <button\n                                class=\"btn btn_unlink ml--20 btn-lang\"\n                                name=\"idioma\"\n                                id=\"btn-lang\"\n                                (click)=\"openLanguagesModal()\"\n                            >\n                                <b>{{ lang }}</b>\n                            </button>\n                        }\n\n                        <button\n                            class=\"cs_hamburger_btn ml--20\"\n                            name=\"nlose\"\n                            (click)=\"toggleMenu()\"\n                        >\n                            <span class=\"cs_hamburger_btn_in\">\n                                <span></span>\n                                <span></span>\n                                <span></span>\n                                <span></span>\n                            </span>\n                        </button>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </header>\n    @if (menuInfo && menu) {\n        <section class=\"babylon__menu\">\n            <lib-babylon-modal-menu\n                class=\"panel_menu\"\n                [menu]=\"menu\"\n                [address]=\"menuInfo.address\"\n                [addressTitle]=\"menuInfo.address?.title\"\n                [contact]=\"menuInfo.contact?.links\"\n                [contactTitle]=\"menuInfo.contact?.title\"\n                [socialMedia]=\"menuInfo.socialMedia\"\n                [img]=\"menuInfo.img\"\n                [linkLogo]=\"linkLogo\"\n                [logo]=\"logos?.logoMenu\"\n                (anchorClicked)=\"onAnchorClicked()\"\n                [modalEvent]=\"modalClick\"\n                [imgBackground]=\"menuInfo.imgBackground\"\n                [tags]=\"menuInfo.tags\"\n                [textColors]=\"menuInfo.textColors\"\n            ></lib-babylon-modal-menu>\n        </section>\n    }\n</div>\n","import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    EmbeddedViewRef,\n    EventEmitter,\n    inject,\n    Input,\n    Output,\n    PLATFORM_ID,\n    TemplateRef,\n} from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport { LogoType } from '../../../Enum/logo-type.enum';\nimport { BabylonButtonI } from '../../../interfaces/babylon-button.interface';\nimport { BabylonImageI } from '../../../interfaces/babylon-image.interface';\nimport { BabylonMenuButtonI } from '../../../interfaces/babylon-menu-button.interface';\nimport { BabylonMenuInfoI } from '../../../interfaces/babylon-menu-info.interface';\nimport { BabylonEngineComponent } from '../babylon-engine/babylon-engine.component';\nimport { BabylonModalMenuComponent } from '../babylon-modal-menu/babylon-modal-menu.component';\n\n@Component({\n    selector: 'lib-babylon-header-menu-show',\n    standalone: true,\n    imports: [\n        RouterModule,\n        CommonModule,\n        BabylonLinkTypeDirective,\n        BabylonModalMenuComponent,\n    ],\n    templateUrl: './babylon-header-menu-show.component.html',\n    styleUrl: './babylon-header-menu-show.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonHeaderMenuShowComponent {\n    @Input() headerFixed: boolean = false;\n    @Input() logos?: Record<LogoType, BabylonImageI | undefined>;\n    @Input() linkLogo?: BabylonButtonI;\n    @Input() menu?: BabylonMenuButtonI[];\n    @Input() menuInfo?: BabylonMenuInfoI;\n    @Input() lang?: string;\n    @Input() btnBook?: BabylonButtonI;\n    @Input() engineRef?: TemplateRef<EmbeddedViewRef<BabylonEngineComponent>>;\n    @Input() engineShow = false;\n    @Input() multipleMotorsModal?: boolean;\n\n    @Output() openEngine = new EventEmitter();\n    @Output() openLanguages = new EventEmitter();\n    @Output() openNews = new EventEmitter();\n    @Output() modalClick = new EventEmitter<string>();\n    @Output() openModalMultMotors = new EventEmitter<void>();\n\n    private platformId = inject(PLATFORM_ID);\n\n    onAnchorClicked(): void {\n        if (isPlatformBrowser(this.platformId)) {\n            const panelMenu = document.querySelector('.panel_menu');\n            if (panelMenu?.classList.contains('active')) {\n                this.toggleMenu();\n            }\n        }\n    }\n\n    isRooms(name: string): boolean {\n        return name === 'Habitaciones';\n    }\n\n    isOffers(name: string): boolean {\n        return name === 'Ofertas';\n    }\n\n    openLanguagesModal(): void {\n        this.openLanguages.emit();\n    }\n\n    openEngineModal(): void {\n        this.openEngine.emit();\n    }\n\n    openNewsletter(): void {\n        this.openNews.emit();\n    }\n\n    openModalMultipleMotors(): void {\n        this.openModalMultMotors.emit();\n    }\n\n    toggleMenu(): void {\n        if (isPlatformBrowser(this.platformId)) {\n            const hamburger = document.querySelector('.hamburger');\n            const panelMenu = document.querySelector('.panel_menu');\n            const body = document.querySelector('body');\n            const header = document.querySelector('header');\n\n            if (hamburger) {\n                hamburger.classList.toggle('is-active');\n            }\n\n            if (panelMenu) {\n                panelMenu.classList.toggle('active');\n            }\n\n            if (body) {\n                body.classList.toggle('no_scroll');\n            }\n\n            if (header) {\n                header.classList.toggle('header_color');\n            }\n        }\n    }\n}\n","<div class=\"babylon-header\">\n    <header\n        class=\"cs_site_header cs_style_1 cs_transparent_header cs_primary_color cs_sticky_header fixed_header\"\n        [ngClass]=\"{ cs_gescout_sticky: headerFixed }\"\n    >\n        <div class=\"cs_main_header\">\n            <div class=\"container-fluid cs_plr_100\">\n                <div class=\"cs_main_header_in\">\n                    @if (logos?.logoDesktop) {\n                        <div class=\"cs_main_header_left\">\n                            <a\n                                [attr.aria-label]=\"linkLogo?.url\"\n                                class=\"cs_site_branding\"\n                                [href]=\"linkLogo?.url\"\n                                [linkType]=\"linkLogo?.linkType\"\n                            >\n                                <img\n                                    [src]=\"logos?.logoDesktop?.src\"\n                                    [alt]=\"logos?.logoDesktop?.alt\"\n                                    width=\"250\"\n                                    loading=\"lazy\"\n                                />\n                            </a>\n                        </div>\n                    }\n                    @if (logos?.logo) {\n                        <div class=\"cs_main_header_left_sticky\">\n                            <a\n                                [attr.aria-label]=\"linkLogo?.url\"\n                                class=\"cs_site_branding\"\n                                [href]=\"linkLogo?.url\"\n                                [linkType]=\"linkLogo?.linkType\"\n                            >\n                                <img\n                                    [src]=\"logos?.logo?.src\"\n                                    [alt]=\"logos?.logo?.alt\"\n                                    width=\"250\"\n                                    loading=\"lazy\"\n                                />\n                            </a>\n                        </div>\n                    }\n                    @if (menu) {\n                        <div class=\"cs_main_header_center\">\n                            <nav class=\"cs_nav cs_fs_13 cs_semibold\">\n                                @if (menu.length) {\n                                    <ul class=\"cs_nav_list\">\n                                        @for (link of menu; track $index) {\n                                            <li\n                                                [ngClass]=\"{\n                                                    'menu-item-has-children':\n                                                        isRooms(link.name!) ||\n                                                        isOffers(link.name!),\n                                                }\"\n                                            >\n                                                <a\n                                                    [attr.aria-label]=\"\n                                                        link.label\n                                                    \"\n                                                    [linkType]=\"link.linkType\"\n                                                    [href]=\"link.url\"\n                                                    [modalClick]=\"modalClick\"\n                                                >\n                                                    {{ link.label }}\n                                                </a>\n                                                @if (\n                                                    isRooms(link.name!) ||\n                                                    isOffers(link.name!)\n                                                ) {\n                                                    <ul>\n                                                        @for (\n                                                            item of link.children;\n                                                            let childrenIndex = $index;\n                                                            track childrenIndex\n                                                        ) {\n                                                            <li>\n                                                                <a\n                                                                    [attr.aria-label]=\"\n                                                                        item.label\n                                                                    \"\n                                                                    [linkType]=\"\n                                                                        item.linkType\n                                                                    \"\n                                                                    [href]=\"\n                                                                        item.url\n                                                                    \"\n                                                                >\n                                                                    {{\n                                                                        item.label\n                                                                    }}\n                                                                </a>\n                                                            </li>\n                                                        }\n                                                    </ul>\n                                                }\n                                            </li>\n                                        }\n                                    </ul>\n                                }\n                            </nav>\n                        </div>\n                    }\n                    <div\n                        class=\"cs_main_header_right\"\n                        [ngClass]=\"{ clear__engine: engineRef && engineShow }\"\n                    >\n                        @if (btnBook && !engineShow) {\n                            <button\n                                [name]=\"btnBook.label\"\n                                class=\"btn btn_call btn--light1\"\n                                id=\"btn-book\"\n                                (click)=\"multipleMotorsModal ? openModalMultipleMotors() : openEngineModal()\"\n                            >\n                                <b>{{ btnBook.label }} </b>\n                            </button>\n                        }\n                        @if (lang) {\n                            <button\n                                [name]=\"lang\"\n                                class=\"btn btn_primary btn--light ml--20 btn-lang\"\n                                (click)=\"openLanguagesModal()\"\n                                id=\"btn-lang\"\n                            >\n                                <b>{{ lang }}</b>\n                            </button>\n                        }\n\n                        <button\n                            aria-label=\"newsletter\"\n                            class=\"btn btn_primary btn--light ml--20 btn-lang\"\n                            id=\"btn-news-modal\"\n                            name=\"newsletter\"\n                            (click)=\"openNewsletter()\"\n                        >\n                            <b class=\"babylon-envelope\"></b>\n                        </button>\n\n                        <button\n                            name=\"menu\"\n                            class=\"cs_hamburger_btn ml--20\"\n                            (click)=\"toggleMenu()\"\n                        >\n                            <span class=\"cs_hamburger_btn_in\">\n                                <span></span>\n                                <span></span>\n                                <span></span>\n                                <span></span>\n                            </span>\n                        </button>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </header>\n\n    @if (engineRef && engineShow) {\n        <ng-container [ngTemplateOutlet]=\"engineRef\"></ng-container>\n    }\n\n    @if (menuInfo && menu) {\n        <section class=\"babylon__menu\">\n            <lib-babylon-modal-menu\n                class=\"panel_menu\"\n                [menu]=\"menu\"\n                [address]=\"menuInfo.address\"\n                [addressTitle]=\"menuInfo.address?.title\"\n                [contact]=\"menuInfo.contact?.links\"\n                [contactTitle]=\"menuInfo.contact?.title\"\n                [socialMedia]=\"menuInfo.socialMedia\"\n                [img]=\"menuInfo.img\"\n                [linkLogo]=\"linkLogo\"\n                [logo]=\"logos?.logoMenu\"\n                (anchorClicked)=\"onAnchorClicked()\"\n                [modalEvent]=\"modalClick\"\n                [imgBackground]=\"menuInfo.imgBackground\"\n                [tags]=\"menuInfo.tags\"\n                [textColors]=\"menuInfo.textColors\"\n            ></lib-babylon-modal-menu>\n        </section>\n    }\n</div>\n","import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    EventEmitter,\n    inject,\n    Input,\n    Output,\n    PLATFORM_ID,\n} from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { RouterModule } from '@angular/router';\nimport { ButtonType } from '../../../Enum';\nimport { LogoType } from '../../../Enum/logo-type.enum';\nimport { BabylonButtonI } from '../../../interfaces/babylon-button.interface';\nimport { BabylonImageI } from '../../../interfaces/babylon-image.interface';\nimport { BabylonMenuButtonI } from '../../../interfaces/babylon-menu-button.interface';\nimport { BabylonMenuInfoI } from '../../../interfaces/babylon-menu-info.interface';\nimport { ScreenSizerService } from '../../../services';\nimport { BabylonModalMenuComponent } from '../babylon-modal-menu/babylon-modal-menu.component';\nimport { BabylonOfferPopupComponent } from '../babylon-offer-popup/babylon-offer-popup.component';\nimport { BabylonAddressItem } from '../babylon-static-footer/babylon-static-footer.component';\n\n@Component({\n    selector: 'lib-babylon-header-mobile',\n    standalone: true,\n    imports: [RouterModule, CommonModule, BabylonModalMenuComponent],\n    templateUrl: './babylon-header-mobile.component.html',\n    styleUrl: './babylon-header-mobile.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonHeaderMobileComponent {\n    @Input() headerFixed: boolean = false;\n    @Input() logos?: Record<LogoType, BabylonImageI | undefined>;\n    @Input() linkLogo?: BabylonButtonI;\n    @Input() menu?: BabylonMenuButtonI[];\n    @Input() links?: BabylonMenuButtonI[];\n    @Input() shop?: string;\n    @Input() news?: string;\n    @Input() menuInfo?: BabylonMenuInfoI;\n    @Input() lang?: string;\n    @Input() socialMedia?: BabylonButtonI[];\n    @Input() address?: BabylonAddressItem;\n    @Input() contactInfo?: BabylonButtonI[];\n    @Input() contactLinks?: BabylonButtonI[];\n    @Input() title?: string;\n    @Input() ndTitle?: string;\n    @Input() btnBook?: BabylonButtonI;\n    @Input() addressTitle?: string;\n    @Input() contactTitle?: string;\n    @Input() multipleMotorsModal?: boolean;\n    @Input() engineExtern?: boolean = false;\n    @Input() extraLogo?: boolean = false;\n\n    @Output() openEngine = new EventEmitter();\n    @Output() openLanguages = new EventEmitter();\n    @Output() openNews = new EventEmitter();\n\n    @Output() anchorClicked = new EventEmitter<void>();\n    @Output() modalClick = new EventEmitter<string>();\n    @Output() openModalMultMotors = new EventEmitter<void>();\n\n    private platformId = inject(PLATFORM_ID);\n\n    constructor(\n        private readonly dialog: MatDialog,\n        private readonly screenSizer: ScreenSizerService\n    ) {}\n\n    onAnchorClicked(): void {\n        if ($('.panel_menu').hasClass('active')) {\n            this.onToggleMenu();\n        }\n    }\n\n    isRooms(name: string): boolean {\n        return name === 'Habitaciones';\n    }\n\n    isOffers(name: string): boolean {\n        return name === 'Ofertas';\n    }\n\n    preventLink(e: Event): void {\n        e.preventDefault();\n    }\n\n    openOffer(): void {\n        this.dialog.open(BabylonOfferPopupComponent, {\n            width: this.screenSizer.minMediumTablet() ? '65%' : '95vw',\n            height: this.screenSizer.minMediumTablet() ? '80%' : '85vh',\n            maxHeight: this.screenSizer.minMediumTablet() ? '714px' : '100vh',\n            maxWidth: this.screenSizer.minMediumTablet() ? '1000px' : '100vw',\n            hasBackdrop: true,\n            panelClass: 'newsletter',\n        });\n    }\n\n    openLanguagesModal(): void {\n        this.openLanguages.emit();\n    }\n\n    openEngineModal(): void {\n        if (!this.engineExtern) {\n            this.openEngine.emit();\n        } else {\n            if (isPlatformBrowser(this.platformId)) {\n                if (this.links && this.links?.length > 0) {\n                    this.links.forEach((link) => {\n                        if (link.label === ButtonType.BookNow) {\n                            window.open(link?.url, '_blank');\n                        }\n                    });\n                }\n            }\n        }\n    }\n\n    openNewsletter(): void {\n        this.openNews.emit();\n    }\n\n    openModalMultipleMotors(): void {\n        this.openModalMultMotors.emit();\n    }\n\n    onToggleMenu(): void {\n        if (isPlatformBrowser(this.platformId)) {\n            const hamburger = document.querySelector('.hamburger');\n            const panelMenu = document.querySelector('.panel_menu');\n            const body = document.querySelector('body');\n            const header = document.querySelector('header');\n\n            if (hamburger) {\n                hamburger.classList.toggle('is-active');\n            }\n\n            if (panelMenu) {\n                panelMenu.classList.toggle('active');\n            }\n\n            if (body) {\n                body.classList.toggle('no_scroll');\n                if (panelMenu?.classList.contains('active')) {\n                    body.style.overflow = 'hidden';\n                } else {\n                    body.style.overflow = '';\n                }\n            }\n\n            if (header) {\n                header.classList.toggle('header_color');\n            }\n        }\n    }\n}\n","<header\n    class=\"cs_site_header cs_style_1 cs_transparent_header cs_primary_color cs_sticky_header fixed_header\"\n>\n    <div class=\"cs_main_header\">\n        <div class=\"container-fluid cs_plr_100\">\n            <div class=\"cs_main_header_in\">\n                <div class=\"cs_main_header_left\">\n                    <button\n                        class=\"cs_hamburger_btn\"\n                        name=\"menu\"\n                        (click)=\"onToggleMenu()\"\n                        aria-label=\"Menu\"\n                    >\n                        <span class=\"cs_hamburger_btn_in\">\n                            <span></span>\n                            <span></span>\n                            <span></span>\n                            <span></span>\n                        </span>\n                    </button>\n                    <span class=\"menu-label\">MENU</span>\n                </div>\n                <div class=\"cs_main_header_center\">\n                    @if (btnBook) {\n                        <button\n                            [name]=\"btnBook.label\"\n                            class=\"btn btn_call btn--light1\"\n                            id=\"btn-book\"\n                            (click)=\"\n                                multipleMotorsModal\n                                    ? openModalMultipleMotors()\n                                    : openEngineModal()\n                            \"\n                        >\n                            <b>{{ btnBook.label }} </b>\n                        </button>\n                    }\n                </div>\n                <div class=\"cs_main_header_right\">\n                    @if (lang) {\n                        <button\n                            [name]=\"lang\"\n                            class=\"btn btn_primary btn--light ml--20 btn-lang\"\n                            id=\"btn-lang\"\n                            (click)=\"openLanguagesModal()\"\n                        >\n                            <b>{{ lang }}</b>\n                        </button>\n                    }\n                </div>\n            </div>\n        </div>\n    </div>\n</header>\n\n@if (logos?.logoMobile || logos?.logo) {\n    <div class=\"header-responsive\">\n        <a class=\"cs_site_branding\" [href]=\"linkLogo?.url\" aria-label=\"logo\">\n            @if (logos?.logoMobile) {\n                <img\n                    class=\"logo-mobile-default\"\n                    [src]=\"logos?.logoMobile?.src\"\n                    [alt]=\"logos?.logoMobile?.alt\"\n                    width=\"200\"\n                    loading=\"lazy\"\n                />\n            }\n            @if (logos?.logo) {\n                <img\n                    class=\"logo-mobile-scroll\"\n                    [src]=\"logos?.logo?.src\"\n                    [alt]=\"logos?.logo?.alt\"\n                    width=\"200\"\n                    loading=\"lazy\"\n                />\n            }\n        </a>\n\n        <div class=\"header-responsive_lang-wrapper\">\n            @if (lang) {\n                <button\n                    class=\"btn btn_primary btn--light ml--20 btn-lang\"\n                    [name]=\"lang\"\n                    (click)=\"openLanguagesModal()\"\n                >\n                    <b>{{ lang }}</b>\n                </button>\n            }\n        </div>\n    </div>\n}\n\n@if (menuInfo && menu) {\n    <section class=\"babylon__menu\">\n        <lib-babylon-modal-menu\n            class=\"panel_menu\"\n            [menu]=\"menu\"\n            [address]=\"menuInfo.address\"\n            [addressTitle]=\"menuInfo.address?.title\"\n            [contact]=\"menuInfo.contact?.links\"\n            [contactTitle]=\"menuInfo.contact?.title\"\n            [socialMedia]=\"menuInfo.socialMedia\"\n            [img]=\"menuInfo.img\"\n            [linkLogo]=\"linkLogo\"\n            [shop]=\"shop\"\n            [news]=\"news\"\n            [links]=\"links\"\n            [logo]=\"logos?.logoMenu\"\n            (toggleMenu)=\"onToggleMenu()\"\n            (anchorClicked)=\"onAnchorClicked()\"\n            [modalEvent]=\"modalClick\"\n            [imgBackground]=\"menuInfo.imgBackground\"\n            [tags]=\"menuInfo.tags\"\n            [textColors]=\"menuInfo.textColors\"\n        ></lib-babylon-modal-menu>\n    </section>\n}\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport { BabylonHotelItem } from './babylon-hotel.interface';\n@Component({\n    selector: 'lib-babylon-hotels-list',\n    standalone: true,\n    imports: [CommonModule, BabylonLinkTypeDirective],\n    templateUrl: './babylon-hotels-list.component.html',\n    styleUrl: './babylon-hotels-list.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonHotelsListComponent {\n    @Input() pretitle?: string;\n    @Input() title?: string;\n    @Input() hotels?: BabylonHotelItem[];\n\n    collapsed1 = true;\n    toggleCollapse1(): void {\n        this.collapsed1 = !this.collapsed1;\n    }\n}\n","<section class=\"babylon__hotels-list margin-main\">\n    <div class=\"container\">\n        <div class=\"intro_info align--center no-align\">\n            @if (pretitle) {\n                <h2 class=\"pretitle mb--10\">{{ pretitle }}</h2>\n            }\n            @if (title) {\n                <h3 class=\"title\">{{ title }}</h3>\n            }\n        </div>\n    </div>\n    @if (hotels) {\n        <div class=\"container-fluid cs_plr_100\">\n            <!-- TODO: FALTA FILTRO -->\n            <div class=\"row cs_gap_y_80\">\n                @for (hotel of hotels; track $index) {\n                    <div class=\"babylon__hotels-list--item col-xl-4 col-md-6\">\n                        <div\n                            class=\"cs_card cs_style_7 cs--radius overflow-hidden\"\n                        >\n                            <a\n                                [attr.aria-label]=\"hotel?.link?.[0]?.url\"\n                                [href]=\"hotel?.link?.[0]?.url\"\n                                [linkType]=\"hotel?.link?.[0]?.linkType\"\n                                class=\"cs_card_thumb d-block overflow-hidden position-relative cs_primary_bg\"\n                            >\n                                @if (hotel.img) {\n                                    <img\n                                        [src]=\"hotel.img.src\"\n                                        [alt]=\"hotel.img.alt\"\n                                        loading=\"lazy\"\n                                    />\n                                }\n                            </a>\n                            <div class=\"cs_card_info position-relative\">\n                                <div\n                                    class=\"intro_info align--center no-align\"\n                                    [ngClass]=\"collapsed1 ? 'close' : 'open'\"\n                                >\n                                    @if (hotel.pretitle) {\n                                        <h3 class=\"pretitle\">\n                                            {{ hotel.pretitle }}\n                                        </h3>\n                                    }\n                                    @if (hotel.title) {\n                                        <h2 class=\"title--small mb--10\">\n                                            {{ hotel.title }}\n                                        </h2>\n                                    }\n                                    @if (hotel.text) {\n                                        <p class=\"text\">{{ hotel.text }}</p>\n                                    }\n                                    @if (hotel.textMore) {\n                                        <p class=\"text text-more\">\n                                            {{ hotel.textMore }}\n                                        </p>\n                                    }\n                                    <div\n                                        class=\"btns__box align--center no-align\"\n                                    >\n                                        @if (hotel.btnMore) {\n                                            <span\n                                                class=\"btn-link btn-more\"\n                                                (click)=\"toggleCollapse1()\"\n                                            >\n                                                <b>{{ hotel.btnMore }}</b>\n                                                <span\n                                                    class=\"babylon-plus\"\n                                                ></span>\n                                            </span>\n                                        }\n                                        @if (hotel.btnLess) {\n                                            <span\n                                                class=\"btn-link btn-minus\"\n                                                (click)=\"toggleCollapse1()\"\n                                            >\n                                                <b>{{ hotel.btnLess }}</b>\n                                                <span\n                                                    class=\"babylon-minus\"\n                                                ></span>\n                                            </span>\n                                        }\n                                    </div>\n                                </div>\n                                @if (hotel?.services?.length) {\n                                    <ul class=\"babylon__hotels-list--services\">\n                                        @for (\n                                            service of hotel?.services?.slice(\n                                                0,\n                                                4\n                                            );\n                                            track $index\n                                        ) {\n                                            @if (service.name) {\n                                                <li\n                                                    class=\"babylon__hotels-list--services--item\"\n                                                >\n                                                    {{ service.name }}\n                                                </li>\n                                            }\n                                        }\n                                        <div\n                                            class=\"babylon__hotels-list--footer\"\n                                        >\n                                            <div\n                                                class=\"babylon__hotels-list--footer--text\"\n                                            >\n                                                @if (hotel.fTitle) {\n                                                    <p\n                                                        class=\"babylon__hotels-list--footer--title\"\n                                                    >\n                                                        {{ hotel.fTitle }}\n                                                    </p>\n                                                }\n                                                @if (hotel.fSubtitle) {\n                                                    <p\n                                                        class=\"babylon__hotels-list--footer--subtitle\"\n                                                    >\n                                                        {{ hotel.fSubtitle }}\n                                                    </p>\n                                                }\n                                            </div>\n                                            @if (hotel.price) {\n                                                <span\n                                                    class=\"babylon__hotels-list--footer--price\"\n                                                    >{{ hotel.price\n                                                    }}<span>€</span></span\n                                                >\n                                            }\n                                        </div>\n                                    </ul>\n                                }\n                            </div>\n                        </div>\n                        <div class=\"btns__box align--center\">\n                            @if (hotel.button) {\n                                <a\n                                    [attr.aria-label]=\"\n                                        hotel?.button?.[0]?.label\n                                    \"\n                                    [href]=\"hotel?.button?.[0]?.url\"\n                                    [linkType]=\"hotel?.button?.[0]?.linkType\"\n                                    class=\"btn btn_call\"\n                                >\n                                    <b>{{ hotel?.button?.[0]?.label }}</b>\n                                    <span\n                                        class=\"babylon-arrow-right-big\"\n                                    ></span>\n                                </a>\n                            }\n                            @if (hotel.link) {\n                                <a\n                                    [attr.aria-label]=\"hotel?.link?.[0]?.label\"\n                                    [href]=\"hotel?.link?.[0]?.url\"\n                                    [linkType]=\"hotel?.link?.[0]?.linkType\"\n                                    class=\"btn-link\"\n                                >\n                                    <b>{{ hotel?.link?.[0]?.label }}</b>\n                                    <span\n                                        class=\"babylon-arrow-right-big\"\n                                    ></span>\n                                </a>\n                            }\n                        </div>\n                    </div>\n                }\n            </div>\n        </div>\n    }\n</section>\n","import { isPlatformBrowser } from '@angular/common';\nimport {\n    AfterViewInit,\n    ChangeDetectorRef,\n    Directive,\n    ElementRef,\n    inject,\n    PLATFORM_ID,\n    Renderer2,\n} from '@angular/core';\n\n@Directive({\n    selector: '[BabylonHotelsSlider]',\n    standalone: true,\n})\nexport class BabylonHotelsSliderDirective implements AfterViewInit {\n    private observer: MutationObserver | undefined;\n    private readonly platformId = inject(PLATFORM_ID);\n\n    constructor(\n        private el: ElementRef,\n        private renderer: Renderer2,\n        private cdr: ChangeDetectorRef\n    ) {}\n\n    ngAfterViewInit(): void {\n        if (isPlatformBrowser(this.platformId)) {\n            this.observer = new MutationObserver((mutations) => {\n                mutations.forEach((mutation) => {\n                    if (\n                        mutation.type === 'childList' &&\n                        this.el.nativeElement.querySelector('.cs_hotels_slide')\n                    ) {\n                        this.initSlider();\n                        this.observer?.disconnect();\n                    }\n                });\n            });\n\n            this.observer.observe(this.el.nativeElement, {\n                childList: true,\n                subtree: true,\n            });\n\n            setTimeout(() => {\n                if (\n                    this.el.nativeElement.querySelector('.cs_hotels_slide') &&\n                    !this.observer?.takeRecords().length\n                ) {\n                    this.initSlider();\n                }\n            }, 1000);\n        }\n    }\n\n    private initSlider() {\n        const slider = this.el.nativeElement;\n        const arrows = slider.querySelectorAll(\n            '.cs_hotels_slide_arrow_right, .cs_hotels_slide_arrow_left'\n        );\n        const slides = slider.querySelectorAll('.cs_hotels_slide');\n\n        arrows.forEach((arrow: any) => {\n            arrow.addEventListener('click', (event: any) => {\n                const direction = arrow.classList.contains(\n                    'cs_hotels_slide_arrow_left'\n                )\n                    ? 'prev'\n                    : 'next';\n                this.updateSlides(direction);\n                this.cdr.detectChanges();\n            });\n        });\n\n        slides.forEach((slide: any) => {\n            const anchorElement = slide.querySelector('a');\n            const dataSrc = anchorElement.getAttribute('data-src');\n            if (anchorElement && dataSrc) {\n                anchorElement.style.backgroundImage = `url(${dataSrc})`;\n                anchorElement.style.backgroundSize = 'cover';\n                anchorElement.style.backgroundPosition = 'center';\n            }\n\n            const imgElement = slide.querySelector('img');\n            if (imgElement) {\n                imgElement.remove();\n            }\n        });\n\n        if (!slider.querySelector('.cs_hotels_slide.active')) {\n            const firstSlide = slider.querySelector('.cs_hotels_slide');\n            if (firstSlide) {\n                firstSlide.classList.add('active');\n            }\n        }\n\n        this.updateSlides('next');\n    }\n\n    private updateSlides(direction: string) {\n        const activeSlide = this.el.nativeElement.querySelector(\n            '.cs_hotels_slide.active'\n        );\n        const slides =\n            this.el.nativeElement.querySelectorAll('.cs_hotels_slide');\n        const totalSlides = slides.length;\n        const activeIndex = Array.from(slides).indexOf(activeSlide);\n        let nextIndex;\n\n        if (!activeSlide) {\n            nextIndex = 0;\n        } else {\n            nextIndex =\n                direction === 'next'\n                    ? activeIndex === totalSlides - 1\n                        ? 0\n                        : activeIndex + 1\n                    : activeIndex === 0\n                      ? totalSlides - 1\n                      : activeIndex - 1;\n        }\n\n        const nextSlide = slides[nextIndex];\n        slides.forEach((slide: any) =>\n            slide.classList.remove(\n                'prev-1',\n                'next-1',\n                'prev-2',\n                'next-2',\n                'active'\n            )\n        );\n        this.renderer.addClass(nextSlide, 'active');\n\n        const prev1Index = nextIndex === 0 ? totalSlides - 1 : nextIndex - 1;\n        const prev2Index = prev1Index === 0 ? totalSlides - 1 : prev1Index - 1;\n        const next1Index = nextIndex === totalSlides - 1 ? 0 : nextIndex + 1;\n        const next2Index = next1Index === totalSlides - 1 ? 0 : next1Index + 1;\n\n        slides[prev1Index].classList.add('prev-1');\n        slides[next1Index].classList.add('next-1');\n    }\n}\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { BabylonHotelsSliderDirective } from '../../../directives/babylon-sliders/babylon-hotels-slider.directive';\nimport { BabylonDataBackgroundDirective } from '../../../directives/data-background/data-background.directive';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport { BabylonHotelItem } from '../babylon-hotels-list/babylon-hotel.interface';\n\n@Component({\n    selector: 'lib-babylon-hotels-slider',\n    standalone: true,\n    imports: [\n        CommonModule,\n        BabylonLinkTypeDirective,\n        BabylonHotelsSliderDirective,\n        BabylonDataBackgroundDirective,\n    ],\n    templateUrl: './babylon-hotels-slider.component.html',\n    styleUrl: './babylon-hotels-slider.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonHotelsSliderComponent {\n    @Input() subtitle?: string;\n    @Input() title?: string;\n    @Input() hotels?: BabylonHotelItem[];\n}\n","<section class=\"babylon__hotels-slider margin-main bg--dark1\">\n    <div class=\"container\">\n        <div class=\"intro_info align--center intro_info--light1 no-align\">\n            @if (title) {\n                <h2\n                    class=\"title wow fadeInUp\"\n                    data-wow-duration=\"0.8s\"\n                    data-wow-delay=\"0.2s\"\n                >\n                    {{ title }}\n                </h2>\n            }\n            @if (subtitle) {\n                <h3 class=\"subtitle\">{{ subtitle }}</h3>\n            }\n        </div>\n    </div>\n    @if (hotels) {\n        <div class=\"cs_hotels_slide_container\" BabylonHotelsSlider>\n            <div class=\"container-fluid\">\n                <div class=\"cs_hotels_slide_wrapper cs_lightgallery\">\n                    @for (hotel of hotels; track $index) {\n                        <div class=\"cs_hotels_slide\">\n                            <a\n                                [href]=\"hotel?.link?.[0]?.url\"\n                                [attr.aria-label]=\"hotel?.link?.[0]?.label\"\n                                [linkType]=\"hotel?.link?.[0]?.linkType\"\n                                class=\"cs_hotels_slide_item cs_bg_filed cs_lightbox_item cs_custom_pointer_wrap cs--radius\"\n                                [attr.data-src]=\"\n                                    hotel.img?.src ||\n                                    'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                \"\n                            >\n                                @if (hotel.img) {\n                                    <img\n                                        [src]=\"hotel.img.src\"\n                                        [alt]=\"hotel.img.alt\"\n                                        class=\"d-none\"\n                                        loading=\"lazy\"\n                                    />\n                                }\n                                <div\n                                    class=\"intro_info align--center intro_info--light no-align\"\n                                >\n                                    @if (hotel.pretitle) {\n                                        <h3 class=\"pretitle--small mb--0\">\n                                            {{ hotel.pretitle }}\n                                        </h3>\n                                    }\n                                    @if (hotel.title) {\n                                        <h2 class=\"title--small mb--0\">\n                                            {{ hotel.title }}\n                                        </h2>\n                                    }\n                                    <div\n                                        class=\"btns__box align--vertical-center\"\n                                    >\n                                        @if (\n                                            hotel.link &&\n                                            hotel?.link?.[0]?.label\n                                        ) {\n                                            <a\n                                                [attr.aria-label]=\"\n                                                    hotel?.link?.[0]?.label\n                                                \"\n                                                [href]=\"hotel?.link?.[0]?.url\"\n                                                [linkType]=\"\n                                                    hotel?.link?.[0]?.linkType\n                                                \"\n                                                class=\"btn btn_primary btn--light\"\n                                            >\n                                                <b>{{\n                                                    hotel?.link?.[0]?.label\n                                                }}</b>\n                                                <span\n                                                    class=\"babylon-arrow-right-big\"\n                                                ></span>\n                                            </a>\n                                        }\n                                        @if (\n                                            hotel.button &&\n                                            hotel?.button?.[0]?.label\n                                        ) {\n                                            <a\n                                                [attr.aria-label]=\"\n                                                    hotel?.button?.[0]?.label\n                                                \"\n                                                [href]=\"hotel?.button?.[0]?.url\"\n                                                [linkType]=\"\n                                                    hotel?.button?.[0]?.linkType\n                                                \"\n                                                class=\"btn btn_call\"\n                                            >\n                                                <b>{{\n                                                    hotel?.button?.[0]?.label\n                                                }}</b>\n                                                <span\n                                                    class=\"babylon-arrow-right-big\"\n                                                ></span>\n                                            </a>\n                                        }\n                                    </div>\n                                </div>\n                            </a>\n                        </div>\n                    }\n                </div>\n            </div>\n            <div class=\"cs_hotels_slide_arrows\">\n                <span class=\"cs_hotels_slide_arrow_left\">\n                    <span class=\"babylon-arrow-left-big\"></span>\n                </span>\n                <span class=\"cs_hotels_slide_arrow_right\">\n                    <span class=\"babylon-arrow-right-big\"></span>\n                </span>\n            </div>\n        </div>\n    }\n</section>\n","import { isPlatformBrowser } from '@angular/common';\nimport {\n    AfterViewInit,\n    Directive,\n    ElementRef,\n    inject,\n    Input,\n    NgZone,\n    OnDestroy,\n    PLATFORM_ID,\n    Renderer2,\n} from '@angular/core';\n\n@Directive({\n    selector: '[stickyAvoidFooter]', // úsala en .hero-banner__actions\n    standalone: true,\n})\nexport class StickyAvoidFooterDirective implements AfterViewInit, OnDestroy {\n    /** Selector del footer (por defecto como en tu HTML) */\n    @Input() footerSelector = '.footer__links';\n    /** Margen de seguridad inferior del viewport al evaluar visibilidad del footer */\n    @Input() viewportPadding = 30; // px\n    /** Bottom cuando el footer NO es visible */\n    @Input() defaultBottom = '3rem';\n    /** Ajuste fino cuando el footer SÍ es visible */\n    @Input() overlapAdjustPx = 10; // px\n    @Input() platformId = inject(PLATFORM_ID);\n\n    private cleanupFns: Array<() => void> = [];\n    private rafPending = false;\n\n    constructor(\n        private el: ElementRef<HTMLElement>,\n        private zone: NgZone,\n        private r2: Renderer2\n    ) {}\n\n    ngAfterViewInit(): void {\n      if (!isPlatformBrowser(this.platformId)) return;\n        // Cálculo inicial\n        this.adjust();\n\n        // Listeners performantes fuera de Angular\n        this.zone.runOutsideAngular(() => {\n            const onScroll = () => this.scheduleAdjust();\n            const onResize = () => this.scheduleAdjust();\n            window.addEventListener('scroll', onScroll, { passive: true });\n            window.addEventListener('resize', onResize, { passive: true });\n            this.cleanupFns.push(() =>\n                window.removeEventListener('scroll', onScroll)\n            );\n            this.cleanupFns.push(() =>\n                window.removeEventListener('resize', onResize)\n            );\n        });\n    }\n\n    ngOnDestroy(): void {\n        this.cleanupFns.forEach((fn) => fn());\n    }\n\n    private scheduleAdjust(): void {\n        if (this.rafPending) return;\n        this.rafPending = true;\n        requestAnimationFrame(() => {\n            this.rafPending = false;\n            this.adjust();\n        });\n    }\n\n    private adjust(): void {\n        const button = this.el.nativeElement;\n        const footer = document.querySelector<HTMLElement>(this.footerSelector);\n\n        if (!button) return;\n\n        // Asegura posición controlable (por si acaso)\n        const pos = getComputedStyle(button).position;\n        if (pos === 'static') {\n            this.r2.setStyle(button, 'position', 'fixed'); // o 'absolute' según tu layout\n            this.r2.setStyle(\n                button,\n                'right',\n                getComputedStyle(button).right || '1rem'\n            );\n        }\n\n        if (!footer) {\n            this.r2.setStyle(button, 'bottom', this.defaultBottom);\n            return;\n        }\n\n        const footerRect = footer.getBoundingClientRect();\n        const windowHeight = window.innerHeight;\n        const footerHeight = footer.offsetHeight;\n\n        const isFooterFullyVisible =\n            footerRect.top >= 0 &&\n            footerRect.bottom <= windowHeight - this.viewportPadding;\n\n        if (isFooterFullyVisible) {\n            const overlap = windowHeight - footerRect.top;\n            const bottomPx = overlap - footerHeight + this.overlapAdjustPx;\n            this.r2.setStyle(button, 'bottom', `${bottomPx}px`);\n        } else {\n            this.r2.setStyle(button, 'bottom', this.defaultBottom);\n        }\n    }\n}\n","import { Component, Input } from '@angular/core';\nimport { ScrollToDirective } from '../../../directives/scrolls/scroll-to.directive';\nimport { StickyAvoidFooterDirective } from '../../../directives/utils/sticky-avoid-footer.directive';\nimport { BabylonButtonI, BabylonMultimediaI, BabylonTextInfoI } from '../../../interfaces';\n\n@Component({\n    selector: 'lib-babylon-img-banner',\n    standalone: true,\n    imports: [ScrollToDirective, StickyAvoidFooterDirective],\n    templateUrl: './babylon-img-banner.component.html',\n    styleUrl: './babylon-img-banner.component.scss',\n})\nexport class BabylonImgBannerComponent {\n  @Input() texts?: BabylonTextInfoI;\n  @Input() multimedia?: BabylonMultimediaI;\n  @Input() buttons?: BabylonButtonI[];\n\n}\n","<section class=\"img-banner\">\n    @if (multimedia?.imagenes?.length && multimedia?.imagenes?.[0]?.img?.src) {\n        <figure>\n            <img\n                [src]=\"\n                    multimedia?.imagenes?.[0]?.img?.src ||\n                    'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                \"\n                [alt]=\"multimedia?.imagenes?.[0]?.img?.alt || 'image'\"\n                class=\"img-banner__image\"\n                width=\"1800\"\n                height=\"1000\"\n            />\n        </figure>\n    }\n    <div\n        class=\"img-banner__content js-scrollto\"\n        data-scroll_spacer=\"50\"\n        data-scroll_to=\".start\"\n        role=\"button\"\n    >\n        @if (texts?.title) {\n            <h1 [innerHTML]=\"texts?.title\"></h1>\n        }\n        @if (texts?.subtitle) {\n            <p [innerHTML]=\"texts?.subtitle\"></p>\n        }\n        <span class=\"img-banner__content-icon\">\n            <span class=\"img-banner__content-icon--line\">\n                <svg aria-hidden=\"true\" focusable=\"false\">\n                    <use\n                        href=\"/assets/babylon/svg/arrow-line.svg#arrow-line\"\n                    ></use>\n                </svg>\n            </span>\n            <span class=\"img-banner__content-icon--img\">\n                <svg aria-hidden=\"true\" focusable=\"false\">\n                    <use\n                        href=\"/assets/babylon/svg/icon-arrow.svg#icon-arrow\"\n                    ></use>\n                </svg>\n            </span>\n        </span>\n    </div>\n    <span class=\"hero-banner__cookies\">\n        <svg\n            aria-hidden=\"true\"\n            focusable=\"false\"\n            class=\"hero-banner__cookies--img\"\n        >\n            <use href=\"/assets/babylon/svg/icon-cookies.svg#icon-cookies\"></use>\n        </svg>\n    </span>\n    @if (buttons?.length) {\n        <div\n            class=\"hero-banner__actions\"\n            stickyAvoidFooter\n            [footerSelector]=\"'.footer__links'\"\n            [viewportPadding]=\"30\"\n            [defaultBottom]=\"'3rem'\"\n            [overlapAdjustPx]=\"10\"\n        >\n            @for (btn of buttons; track $index) {\n                <span\n                    [class]=\"\n                        'hero-banner__actions--icon hero-banner__actions--' +\n                        btn?.label?.toLowerCase()\n                    \"\n                >\n                    @if (btn?.label) {\n                        <span>{{ btn.label }}</span>\n                    }\n                    <span class=\"hero-banner__actions--img\">\n                        <svg aria-hidden=\"true\" focusable=\"false\">\n                            <use\n                                [attr.href]=\"\n                                    '/assets/babylon/svg/icon-' +\n                                    btn?.label?.toLowerCase() +\n                                    '.svg#icon-' +\n                                    btn?.label?.toLowerCase()\n                                \"\n                            ></use>\n                        </svg>\n                    </span>\n                </span>\n            }\n        </div>\n    }\n</section>\n<div class=\"start\"></div>\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { BabylonImageI } from '../../../interfaces/babylon-image.interface';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport { BabylonButtonI } from '../../../interfaces/babylon-button.interface';\n\n@Component({\n    selector: 'lib-babylon-info-big',\n    standalone: true,\n    imports: [CommonModule, BabylonLinkTypeDirective],\n    templateUrl: './babylon-info-big.component.html',\n    styleUrl: './babylon-info-big.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonInfoBigComponent {\n    @Input() img?: BabylonImageI;\n    @Input() imgSmall?: BabylonImageI;\n    @Input() pretitle?: string;\n    @Input() title?: string;\n    @Input() text?: string;\n    @Input() button?: BabylonButtonI;\n}\n","<section class=\"babylon__infoImgBig margin-main\">\n    <div class=\"babylon__infoImgBig--content margin-main\">\n        <div class=\"babylon__infoImgBig--boxImg\">\n            @if (img) {\n                <figure\n                    class=\"figure-big\"\n                    role=\"img\"\n                    [style.background-image]=\"'url(' + img.src + ')'\"\n                ></figure>\n            }\n            @if (imgSmall) {\n                <figure\n                    class=\"figure-small\"\n                    role=\"img\"\n                    [style.background-image]=\"'url(' + imgSmall.src + ')'\"\n                ></figure>\n            }\n        </div>\n        <div class=\"babylon__infoImgBig--boxInfo\">\n            <div class=\"row justify-content-center align-items-center\">\n                <div class=\"col-lg-8\">\n                    <div\n                        class=\"intro_info intro_info--light align--center no-align\"\n                    >\n                        @if (pretitle) {\n                            <h4 class=\"pretitle-top\">{{ pretitle }}</h4>\n                        }\n                        @if (title) {\n                            <h2 class=\"title mb-4\">{{ title }}</h2>\n                        }\n                        @if (text) {\n                            <div class=\"text\" [innerHTML]=\"text\"></div>\n                        }\n                        @if (button) {\n                            <div class=\"btns__box align--center\">\n                                <a\n                                    [attr.aria-label]=\"button.label\"\n                                    [href]=\"button.url\"\n                                    [linkType]=\"button.linkType\"\n                                    class=\"btn btn_primary btn--light\"\n                                    >{{ button.label }}</a\n                                >\n                            </div>\n                        }\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n</section>\n","import { DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport {\n    AfterViewInit,\n    Directive,\n    ElementRef,\n    Inject,\n    Input,\n    PLATFORM_ID,\n    Renderer2,\n} from '@angular/core';\n\ntype BgPair = { image: string; color: string };\n\n@Directive({\n    selector: '[swapOnReload]',\n    standalone: true,\n})\nexport class SwapOnReloadDirective implements AfterViewInit {\n    private pairsInput: BgPair[] | null | undefined;\n\n    // Acepta array, string vacío (atributo presente), boolean (atributo minimizado), null/undefined\n    @Input('swapOnReload')\n    set swapOnReload(value: BgPair[] | '' | true | null | undefined) {\n        this.pairsInput = Array.isArray(value) ? value : null; // si es ''/true/null => leemos de data-pairs\n    }\n\n    @Input() bgStorageKey?: string;\n\n    constructor(\n        private el: ElementRef<HTMLElement>,\n        private renderer: Renderer2,\n        @Inject(PLATFORM_ID) private platformId: Object,\n        @Inject(DOCUMENT) private doc: Document\n    ) {}\n\n    ngAfterViewInit(): void {\n        if (!isPlatformBrowser(this.platformId)) return;\n\n        const host = this.el.nativeElement;\n        const pairs = this.resolvePairs(host);\n        if (!pairs || pairs.length === 0) return;\n\n        const storageKey = this.resolveStorageKey(host);\n        const lastImg = window.localStorage.getItem(storageKey);\n\n        let chosen: BgPair;\n        if (pairs.length === 1) {\n            chosen = pairs[0];\n        } else {\n            const candidates = pairs.filter((p) => p.image !== lastImg);\n            const pool = candidates.length ? candidates : pairs;\n            chosen = pool[Math.floor(Math.random() * pool.length)];\n        }\n\n        this.renderer.setStyle(\n            host,\n            'background-image',\n            `url(${chosen.image})`\n        );\n        this.renderer.setStyle(host, 'background-color', chosen.color);\n\n        try {\n            window.localStorage.setItem(storageKey, chosen.image);\n        } catch {}\n    }\n\n    private resolvePairs(host: HTMLElement): BgPair[] | null {\n        if (Array.isArray(this.pairsInput) && this.pairsInput.length)\n            return this.pairsInput;\n\n        const attr = host.getAttribute('data-pairs');\n        if (!attr) return null;\n        try {\n            const parsed = JSON.parse(attr) as BgPair[];\n            return Array.isArray(parsed) ? parsed : null;\n        } catch (e) {\n            console.warn(\n                '[SwapOnReloadDirective] data-pairs no es JSON válido:',\n                e\n            );\n            return null;\n        }\n    }\n\n    private resolveStorageKey(host: HTMLElement): string {\n        if (this.bgStorageKey) return this.bgStorageKey;\n        if (!host.id)\n            host.id = 'swap-bg-' + Math.random().toString(36).slice(2, 9);\n        return `lastBgPair-${host.id}`;\n    }\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport {\n    AfterViewInit,\n    Component,\n    ElementRef,\n    Inject,\n    Input,\n    PLATFORM_ID,\n    Renderer2,\n} from '@angular/core';\nimport { SwapOnReloadDirective } from '../../../directives/images/swap-on-reload.directive';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport {\n    BabylonButtonI,\n    BabylonMultimediaI,\n    BabylonTextInfoI,\n} from '../../../interfaces';\n\ntype BgPair = { image: string; color: string };\n\n@Component({\n    selector: 'lib-babylon-info-big-v2',\n    standalone: true,\n    imports: [SwapOnReloadDirective, BabylonLinkTypeDirective],\n    templateUrl: './babylon-info-big-v2.component.html',\n    styleUrl: './babylon-info-big-v2.component.scss',\n})\nexport class BabylonInfoBigV2Component implements AfterViewInit {\n    constructor(\n        private el: ElementRef<HTMLElement>,\n        private renderer: Renderer2\n    ) {}\n    @Input() texts?: BabylonTextInfoI;\n    @Input() multimedia?: BabylonMultimediaI;\n    @Input() buttons?: BabylonButtonI[];\n\n    ngAfterViewInit(): void {\n        if (!isPlatformBrowser(Inject(PLATFORM_ID))) return;\n        this.shuffleBackgroundPairs('.swapOnReload');\n    }\n\n    getDataPairs(): string {\n        if (!this.multimedia?.imagenes?.length) return '[]';\n        const pairs = this.multimedia.imagenes.map((img) => ({\n            image: img?.img?.src || '',\n            color: img?.ndTitle || '#708EC0',\n        }));\n        return JSON.stringify(pairs);\n    }\n\n    /** Versión Angular del shuffleBackgroundPairs */\n    private shuffleBackgroundPairs(selector: string): void {\n        const root = this.el.nativeElement;\n        const nodes = root.querySelectorAll<HTMLElement>(selector);\n\n        nodes.forEach((node, idx) => {\n            const raw = node.getAttribute('data-pairs');\n            if (!raw) return;\n\n            let pairs: BgPair[] | null = null;\n            try {\n                pairs = JSON.parse(raw) as BgPair[];\n            } catch {\n                // Si el JSON viniera con comillas simples, puedes normalizar:\n                try {\n                    pairs = JSON.parse(raw.replace(/'/g, '\"')) as BgPair[];\n                } catch {\n                    pairs = null;\n                }\n            }\n            if (!Array.isArray(pairs) || pairs.length === 0) return;\n\n            // Clave para recordar el último fondo (usa id si existe; si no, el índice)\n            const storageKey = `lastBgPair-${node.id || idx}`;\n            const lastImage = localStorage.getItem(storageKey) || '';\n\n            // Elige evitando repetir la última imagen si hay más de una opción\n            let pool = pairs;\n            if (pairs.length > 1 && lastImage) {\n                const filtered = pairs.filter((p) => p.image !== lastImage);\n                pool = filtered.length ? filtered : pairs; // por si todas coinciden\n            }\n            const chosen = pool[Math.floor(Math.random() * pool.length)];\n\n            // Aplica estilos\n            this.renderer.setStyle(\n                node,\n                'background-image',\n                `url(${chosen.image})`\n            );\n            this.renderer.setStyle(node, 'background-color', chosen.color);\n            this.renderer.setStyle(node, 'background-size', 'cover'); // opcional\n            this.renderer.setStyle(node, 'background-position', 'center'); // opcional\n\n            // Recuerda la última imagen usada\n            localStorage.setItem(storageKey, chosen.image);\n        });\n    }\n}\n","<section\n    id=\"destino-hero\"\n    class=\"destino\"\n    swapOnReload\n    [attr.data-pairs]=\"getDataPairs()\"\n>\n    <div class=\"container\">\n        <div class=\"destino__inner\">\n            <div class=\"destino__heading\">\n                @if (texts?.subtitle) {\n                    <span class=\"destino__title\">{{ texts?.subtitle }}</span>\n                }\n                @if (texts?.title) {\n                    <h2>{{ texts?.title }}</h2>\n                }\n            </div>\n            <div class=\"destino__graphic\">\n                @if (texts?.svg) {\n                    <img\n                        class=\"destino__graphic--img\"\n                        [src]=\"texts?.svg\"\n                        [alt]=\"texts?.title\"\n                    />\n                }\n            </div>\n            <div class=\"destino__content\">\n                @if (texts?.description) {\n                    <p [innerHTML]=\"texts?.description\"></p>\n                }\n                @if (buttons?.length && buttons?.[0]?.label) {\n                    <div class=\"btn__group\">\n                        <a\n                            role=\"button\"\n                            [href]=\"buttons?.[0]?.url\"\n                            [linkType]=\"buttons?.[0]?.linkType\"\n                            [attr.aria-label]=\"buttons?.[0]?.label\"\n                            class=\"btn btn__white\"\n                            ><span>{{ buttons?.[0]?.label }}</span></a\n                        >\n                    </div>\n                }\n            </div>\n        </div>\n        @if (texts?.subtitle) {\n            <span class=\"destino__bottom-text\">{{ texts?.subtitle }}</span>\n        }\n    </div>\n</section>\n<!--\n<section\n    id=\"destino-hero\"\n    class=\"destino\"\n    swapOnReload\n    data-pairs='[\n            {\"image\": \"/assets/babylon/images/img-22.webp\", \"color\": \"#708EC0\"},\n            {\"image\": \"/assets/babylon/images/img-23.webp\", \"color\": \"#0861A3\"}\n        ]'\n>\n    <div class=\"container\">\n        <div class=\"destino__inner\">\n            <div class=\"destino__heading\">\n                <span class=\"destino__title\">UN ENTORNO BLANCO</span>\n                <h2>Formentera, una isla con alma</h2>\n            </div>\n            <div class=\"destino__graphic\">\n                <svg\n                    aria-hidden=\"true\"\n                    focusable=\"false\"\n                    class=\"destino__graphic--img\"\n                >\n                    <use\n                        href=\"/assets/babylon/svg/island-formentera.svg#island-formentera\"\n                    ></use>\n                </svg>\n            </div>\n            <div class=\"destino__content\">\n                <p>\n                    Les invitamos a descubrir un lugar fantástico en el que las\n                    sensaciones se viven de manera diferente, mucho más\n                    relajados y con la vista puesta en el horizonte, les\n                    invitamos a descubrir Formentera, una isla única.\n                </p>\n                <div class=\"btn__group\">\n                    <a href=\"\" class=\"btn btn__white\"\n                        ><span>Ver Destino</span></a\n                    >\n                </div>\n            </div>\n        </div>\n        <span class=\"destino__bottom-text\"\n            >“vive el paraiso y siente la calma”</span\n        >\n    </div>\n</section>\n-->\n","import { Component, Input } from '@angular/core';\nimport { BabylonTextInfoI } from '../../../interfaces';\nimport { BabylonMultimediaI } from '../../../interfaces/babylon-multimedia.interface';\n\n@Component({\n    selector: 'lib-babylon-info-big-v3',\n    standalone: true,\n    imports: [],\n    templateUrl: './babylon-info-big-v3.component.html',\n    styleUrl: './babylon-info-big-v3.component.scss',\n})\nexport class BabylonInfoBigV3Component {\n  @Input() texts?: BabylonTextInfoI;\n  @Input() multimedia?: BabylonMultimediaI;\n}\n","<section class=\"info-img-big-v3\">\n    @if (multimedia?.imagenes?.length) {\n        <figure>\n            <img\n                [src]=\"\n                    multimedia?.imagenes?.[0]?.img?.src ||\n                    'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                \"\n                [alt]=\"multimedia?.imagenes?.[0]?.img?.alt\"\n            />\n        </figure>\n    }\n    <div class=\"info-img-big-v3__content\">\n        <div class=\"container\">\n            <div class=\"info-img-big-v3__content--inner\">\n                @if (texts?.title) {\n                    <h2>{{ texts?.title }}</h2>\n                }\n                @if (texts?.subtitle) {\n                    <p [innerHTML]=\"texts?.subtitle\"></p>\n                }\n            </div>\n        </div>\n    </div>\n</section>\n","import { Component, Input } from '@angular/core';\nimport { BabylonButtonI, BabylonMultimediaI, BabylonTextInfoI } from '../../../interfaces';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\n\n@Component({\n    selector: 'lib-babylon-info-circle-imgs',\n    standalone: true,\n    imports: [BabylonLinkTypeDirective],\n    templateUrl: './babylon-info-circle-imgs.component.html',\n    styleUrl: './babylon-info-circle-imgs.component.scss',\n})\nexport class BabylonInfoCircleImgsComponent {\n  @Input() texts?: BabylonTextInfoI;\n  @Input() multimedia?: BabylonMultimediaI;\n  @Input() buttons?: BabylonButtonI[];\n}\n","<section class=\"alquiler-vehiculos\">\n    <div class=\"container\">\n        <div class=\"alquiler-vehiculos__inner\">\n            @if (texts?.title) {\n                <span\n                    class=\"alquiler-vehiculos__title\"\n                    [innerHTML]=\"texts?.title\"\n                ></span>\n            }\n            @if (multimedia?.imagenes?.length) {\n                <ul class=\"alquiler-vehiculos__list\">\n                    @for (item of multimedia?.imagenes; track $index) {\n                        @if (item?.img?.src) {\n                            <li class=\"alquiler-vehiculos__item\">\n                                <figure>\n                                    <img\n                                        [src]=\"\n                                            item?.img?.src ||\n                                            'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                        \"\n                                        [alt]=\"item?.img?.alt\"\n                                    />\n                                </figure>\n                            </li>\n                        }\n                    }\n                </ul>\n            }\n            @if (texts?.subtitle) {\n                <p\n                    class=\"alquiler-vehiculos__text\"\n                    [innerHTML]=\"texts?.subtitle\"\n                ></p>\n            }\n            @if (buttons?.length) {\n                <div class=\"btn__group\">\n                    @for (btn of buttons; track $index) {\n                        <a\n                            [attr.aria-label]=\"btn?.label\"\n                            [href]=\"btn?.url\"\n                            class=\"btn btn__primary\"\n                        >\n                            <span>{{ btn?.label }}</span>\n                        </a>\n                    }\n                </div>\n            }\n        </div>\n    </div>\n</section>\n","import { CommonModule } from '@angular/common';\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    Input,\n    OnInit,\n} from '@angular/core';\nimport { BabylonDataBackgroundDirective } from '../../../directives/data-background/data-background.directive';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport { BabylonTagsI } from '../../../interfaces';\nimport { BabylonButtonI } from '../../../interfaces/babylon-button.interface';\nimport { BabylonImageI } from '../../../interfaces/babylon-image.interface';\nimport { BabylonDynamicHeadingComponent } from '../../shared';\n\n@Component({\n    selector: 'lib-babylon-info-grid',\n    standalone: true,\n    imports: [\n        CommonModule,\n        BabylonDataBackgroundDirective,\n        BabylonLinkTypeDirective,\n        BabylonDynamicHeadingComponent,\n    ],\n    templateUrl: './babylon-info-grid.component.html',\n    styleUrl: './babylon-info-grid.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonInfoGridComponent implements OnInit {\n    @Input() pretitle?: string;\n    @Input() title?: string;\n    @Input() text?: string;\n    @Input() items?: BabylonInfoGridItemI[];\n    @Input() buttons?: BabylonButtonI[];\n    @Input() tags?: BabylonTagsI;\n    collapsed1 = true;\n    collapsedStates: boolean[] = [];\n\n    ngOnInit(): void {\n        this.collapsedStates = new Array(this.items?.length).fill(true);\n    }\n\n    toggleCollapse(index: number): void {\n        this.collapsedStates[index] = !this.collapsedStates[index];\n    }\n}\n\nexport interface BabylonInfoGridItemI {\n    pretitle?: string;\n    title?: string;\n    text?: string;\n    image?: BabylonImageI;\n    links?: BabylonButtonI;\n    buttons?: BabylonButtonI[];\n}\n","<section class=\"babylon__info-grid margin-main bg--dark1\">\n    <div class=\"container\">\n        <div class=\"intro_info align--center intro_info--light1 no-align\">\n            @if (pretitle) {\n                <lib-babylon-dynamic-heading\n                    [tag]=\"tags?.pretitle || 'h3'\"\n                    cssClass=\"pretitle\"\n                    [content]=\"pretitle\"\n                ></lib-babylon-dynamic-heading>\n            }\n            @if (title) {\n                <lib-babylon-dynamic-heading\n                    [tag]=\"tags?.title || 'h2'\"\n                    cssClass=\"title wow fadeInUp\"\n                    [content]=\"title\"\n                    data-wow-duration=\"0.8s\"\n                    data-wow-delay=\"0.2s\"\n                ></lib-babylon-dynamic-heading>\n            }\n        </div>\n        <div class=\"cs_grid_style_1\">\n            @if (items?.length) {\n                @for (item of items; track $index; let last = $last) {\n                    @if (item) {\n                        <div\n                            class=\"cs_grid_item\"\n                            [ngClass]=\"{\n                                close: collapsedStates[$index],\n                                open: !collapsedStates[$index],\n                                last: last,\n                            }\"\n                        >\n                            <div\n                                class=\"cs_gallery_item cs_style_1 d-block cs_bg_filed position-relative cs--radius\"\n                                [attr.data-src]=\"\n                                    item.image?.src ||\n                                    'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                \"\n                                dataBackground=\"url('{{ item.image?.src }}')\"\n                            >\n                                @if (item.image) {\n                                    <img\n                                        [src]=\"\n                                            item.image.src ||\n                                            'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                        \"\n                                        [alt]=\"\n                                            item.image.alt ??\n                                            item.image.title ??\n                                            'title'\n                                        \"\n                                        class=\"d-none\"\n                                        loading=\"lazy\"\n                                    />\n                                }\n                                <div\n                                    class=\"intro_info intro_info--light intro_head\"\n                                >\n                                    @if (item?.pretitle) {\n                                        <h4 class=\"pretitle--small mb--10\">\n                                            {{ item?.pretitle }}\n                                        </h4>\n                                    }\n                                    @if (item?.title) {\n                                        <h2 class=\"title--small\">\n                                            {{ item?.title }}\n                                        </h2>\n                                    }\n                                </div>\n                                @if (item?.links) {\n                                    <a\n                                        class=\"cs_gallery_item_link\"\n                                        [attr.aria-label]=\"item?.links?.url\"\n                                        [href]=\"item?.links?.url\"\n                                        [linkType]=\"item?.links?.linkType\"\n                                    ></a>\n                                }\n                                @if (item.text) {\n                                    <span\n                                        class=\"icon-plus cs--radius\"\n                                        (click)=\"toggleCollapse($index)\"\n                                    >\n                                        <span class=\"babylon-plus\"></span>\n                                    </span>\n                                    <span\n                                        class=\"icon-minus cs--radius\"\n                                        (click)=\"toggleCollapse($index)\"\n                                    >\n                                        <span class=\"babylon-minus\"></span>\n                                    </span>\n                                    <div\n                                        class=\"text-more intro_info intro_info--light no-align\"\n                                    >\n                                        <p class=\"text text--light\">\n                                            {{ item?.text }}\n                                        </p>\n\n                                        @if (item.buttons?.length) {\n                                            <div class=\"button-container\">\n                                                <div\n                                                    class=\"btns__box align--center\"\n                                                >\n                                                    @for (\n                                                        btn of item.buttons;\n                                                        track $index\n                                                    ) {\n                                                        <a\n                                                            [attr.aria-label]=\"\n                                                                btn?.label\n                                                            \"\n                                                            [href]=\"btn?.url\"\n                                                            [linkType]=\"\n                                                                btn?.linkType\n                                                            \"\n                                                            class=\"btn btn_primary\"\n                                                        >\n                                                            <b>{{\n                                                                btn?.label\n                                                            }}</b>\n                                                        </a>\n                                                    }\n                                                </div>\n                                            </div>\n                                        }\n                                    </div>\n                                }\n                            </div>\n                        </div>\n                    }\n                }\n            }\n        </div>\n        @if (buttons?.length) {\n            <div class=\"btns__box\">\n                @for (button of buttons; track $index; let odd = $odd) {\n                    @if (button && button.label) {\n                        <a\n                            [attr.aria-label]=\"button?.label\"\n                            [href]=\"button?.url\"\n                            [linkType]=\"button?.linkType\"\n                            class=\"btn\"\n                            [ngClass]=\"{\n                                btn_primary: !odd,\n                                btn_call: odd,\n                            }\"\n                        >\n                            <b>{{ button?.label }}</b>\n                            <span class=\"babylon-arrow-right-big\"></span>\n                        </a>\n                    }\n                }\n            </div>\n        }\n    </div>\n</section>\n","import { BabylonButtonI } from '../../../interfaces';\nimport { BabylonInfoGridItemI } from './babylon-info-grid.component';\n\nexport class BabylonInfoGridI {\n    pretitle?: string;\n    title?: string;\n    text?: string;\n    items?: BabylonInfoGridItemI[];\n    buttons?: BabylonButtonI[];\n}\n","import {\n    Directive,\n    ElementRef,\n    Input,\n    OnChanges,\n    Renderer2,\n} from '@angular/core';\n\n@Directive({\n    selector: '[backgroundStrip]',\n    standalone: true,\n})\nexport class BabylonBackgroundStrip implements OnChanges {\n    @Input() topBG?: string;\n    @Input() bottomBG?: string;\n    @Input() topColor?: any;\n    @Input() bottomColor?: any;\n\n    private topSection?: HTMLElement;\n    private bottomSection?: HTMLElement;\n\n    constructor(\n        private el: ElementRef,\n        private renderer: Renderer2\n    ) {}\n\n    ngOnChanges(): void {\n        this.updateBackgroundStyle();\n    }\n\n    private updateBackgroundStyle(): void {\n        const nativeElement = this.el.nativeElement;\n\n        // Limpiar elementos previos\n        if (this.topSection) {\n            this.renderer.removeChild(nativeElement, this.topSection);\n            this.topSection = undefined;\n        }\n        if (this.bottomSection) {\n            this.renderer.removeChild(nativeElement, this.bottomSection);\n            this.bottomSection = undefined;\n        }\n\n        // Crear sección superior si hay contenido\n        if ((this.topBG && this.topBG.trim() !== '') || this.topColor) {\n            this.topSection = this.renderer.createElement('div');\n            this.renderer.addClass(this.topSection, 'top-section');\n            this.renderer.appendChild(nativeElement, this.topSection);\n\n            if (this.topBG && this.topBG.trim() !== '') {\n                this.renderer.setStyle(\n                    this.topSection,\n                    'background-image',\n                    `url('${this.topBG}')`\n                );\n                this.renderer.setStyle(\n                    this.topSection,\n                    'background-size',\n                    'cover'\n                );\n                this.renderer.setStyle(\n                    this.topSection,\n                    'background-position',\n                    'center'\n                );\n            }\n            if (this.topColor) {\n                this.renderer.setStyle(\n                    this.topSection,\n                    'background-color',\n                    typeof this.topColor == 'string'\n                        ? this.topColor\n                        : (this.topColor?.color ?? '#fff')\n                );\n            }\n        }\n\n        // Crear sección inferior si hay contenido\n        if (\n            (this.bottomBG && this.bottomBG.trim() !== '') ||\n            this.bottomColor\n        ) {\n            this.bottomSection = this.renderer.createElement('div');\n            this.renderer.addClass(this.bottomSection, 'bottom-section');\n            this.renderer.appendChild(nativeElement, this.bottomSection);\n\n            if (this.bottomBG && this.bottomBG.trim() !== '') {\n                this.renderer.setStyle(\n                    this.bottomSection,\n                    'background-image',\n                    `url('${this.bottomBG}')`\n                );\n                this.renderer.setStyle(\n                    this.bottomSection,\n                    'background-size',\n                    'cover'\n                );\n                this.renderer.setStyle(\n                    this.bottomSection,\n                    'background-position',\n                    'center'\n                );\n            }\n            if (this.bottomColor) {\n                this.renderer.setStyle(\n                    this.bottomSection,\n                    'background-color',\n                    typeof this.bottomColor == 'string'\n                        ? this.bottomColor\n                        : (this.bottomColor?.color ?? '#fff')\n                );\n            }\n        }\n    }\n}\n","import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    EventEmitter,\n    inject,\n    Input,\n    OnInit,\n    Output,\n    PLATFORM_ID,\n} from '@angular/core';\nimport { BabylonBackgroundStrip } from '../../../directives/babylon-background-strip/babylon-background-strip.directive';\nimport { BabylonSlidersDirective } from '../../../directives/babylon-sliders/babylon-sliders.directive';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport { BabylonButtonI } from '../../../interfaces/babylon-button.interface';\nimport { BabylonImageI } from '../../../interfaces/babylon-image.interface';\nimport { BabylonTagsI } from '../../../interfaces/babylon-tags.interface';\nimport { BabylonTextsColorsI } from '../../../interfaces/babylon-texts-colors.interface';\nimport { BabylonDynamicHeadingComponent } from '../../shared/babylon-dynamic-heading';\nimport { BabylonAdvInfoI } from '../babylon-advantages/babylon-advantages-info.interface';\n\n@Component({\n    selector: 'lib-babylon-info-img',\n    standalone: true,\n    imports: [\n        CommonModule,\n        BabylonSlidersDirective,\n        BabylonBackgroundStrip,\n        BabylonLinkTypeDirective,\n        BabylonDynamicHeadingComponent,\n    ],\n    templateUrl: './babylon-info-img.component.html',\n    styleUrl: './babylon-info-img.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonInfoImgComponent implements OnInit {\n    @Input() rightSide: boolean = false;\n    @Input() title?: string;\n    @Input() pretitle?: string;\n    @Input() description?: string;\n    @Input() text?: string;\n    @Input() ndtitle?: string;\n    @Input() buttons?: BabylonButtonI[];\n    @Input() images?: BabylonImageI[];\n    @Input() advantages?: BabylonAdvInfoI[];\n    @Input() logo?: BabylonImageI;\n    @Input() advTitle?: string;\n    @Input() tags?: BabylonTagsI;\n    @Input() textColors?: BabylonTextsColorsI;\n    @Input() identifier?: string;\n\n    @Input() set topBG(topBG: BabylonImageI) {\n        this._topBG = topBG?.src;\n    }\n    @Input() set bottomBG(bottomBG: BabylonImageI) {\n        this._bottomBG = bottomBG?.src;\n    }\n    @Input() topColor?: string;\n    @Input() bottomColor?: string;\n    @Input() textColor?: string;\n\n    @Input() lessBtn?: string;\n    @Input() moreBtn?: string;\n\n    _topBG?: string;\n    _bottomBG?: string;\n    showAll: boolean = false;\n    showAllFunctionally: boolean = false;\n\n    private platformId = inject(PLATFORM_ID);\n\n    get topBG(): string | undefined {\n        return this._topBG;\n    }\n\n    get bottomBG(): string | undefined {\n        return this._bottomBG;\n    }\n\n    @Output() modalClick = new EventEmitter<string>();\n\n    get showBtn(): string {\n        return this.showAll ? (this.lessBtn ?? '') : (this.moreBtn ?? '');\n    }\n\n    btnClick(e: Event): void {\n        e.preventDefault();\n    }\n\n    toggleView() {\n        if (isPlatformBrowser(this.platformId)) {\n            this.showAll = !this.showAll;\n            this.showAllFunctionally = !this.showAllFunctionally;\n        }\n    }\n\n    ngOnInit(): void {\n        if (this.buttons) {\n            this.buttons = this.buttons.filter((b) => !!b && !!b.label);\n        }\n    }\n}\n","<section\n    class=\"babylon__infoimg margin-main\"\n    backgroundStrip\n    [topBG]=\"topBG\"\n    [bottomBG]=\"bottomBG\"\n    [topColor]=\"topColor\"\n    [bottomColor]=\"bottomColor\"\n    [id]=\"identifier ?? 'InfoImg'\"\n>\n    <div class=\"container-fluid p-0 position-relative\">\n        <div class=\"container\">\n            <div\n                class=\"row align-items-center cs_gap_y_40\"\n                [ngClass]=\"{ 'column-reverse': rightSide }\"\n            >\n                @if (rightSide) {\n                    <ng-container\n                        [ngTemplateOutlet]=\"infoImgContent\"\n                        [ngTemplateOutletContext]=\"{ alignClass: '' }\"\n                    />\n                    <ng-container\n                        [ngTemplateOutlet]=\"imageSlider\"\n                        [ngTemplateOutletContext]=\"{\n                            extraClass: 'cs_pl_110',\n                        }\"\n                    />\n                } @else {\n                    <ng-container\n                        [ngTemplateOutlet]=\"imageSlider\"\n                        [ngTemplateOutletContext]=\"{\n                            extraClass: 'cs_pr_110',\n                        }\"\n                    />\n                    <ng-container\n                        [ngTemplateOutlet]=\"infoImgContent\"\n                        [ngTemplateOutletContext]=\"{ alignClass: 'no-align' }\"\n                    />\n                }\n            </div>\n        </div>\n    </div>\n</section>\n\n<ng-template #infoImgContent let-alignClass=\"alignClass\" let-showAll=\"showAll\">\n    <div class=\"col-lg-5\">\n        <div class=\"intro_info {{ alignClass }}\">\n            @if (pretitle) {\n                <lib-babylon-dynamic-heading\n                    [tag]=\"tags?.pretitle || 'h3'\"\n                    cssClass=\"pretitle wow fadeInUp\"\n                    [content]=\"pretitle\"\n                    [color]=\"textColors?.pretitle\"\n                    data-wow-duration=\"0.8s\"\n                    data-wow-delay=\"0.2s\"\n                ></lib-babylon-dynamic-heading>\n            }\n            @if (logo && logo.src) {\n                <div class=\"logo_title\">\n                    <img [src]=\"logo.src\" [alt]=\"logo.alt\" loading=\"lazy\" />\n                </div>\n            } @else {\n                @if (title) {\n                    <lib-babylon-dynamic-heading\n                        [tag]=\"tags?.title || 'h2'\"\n                        cssClass=\"title\"\n                        [color]=\"textColors?.title\"\n                        [content]=\"title\"\n                    ></lib-babylon-dynamic-heading>\n                }\n            }\n            @if (text) {\n                <lib-babylon-dynamic-heading\n                    [tag]=\"tags?.subtitle || 'h3'\"\n                    cssClass=\"subtitle\"\n                    [color]=\"textColors?.subtitle\"\n                    [content]=\"text\"\n                ></lib-babylon-dynamic-heading>\n            }\n            @if (ndtitle) {\n                <lib-babylon-dynamic-heading\n                    [tag]=\"tags?.ndtitle || 'h4'\"\n                    cssClass=\"title-{{\n                        alignClass === 'no-align' ? 'right' : 'left'\n                    }}\"\n                    [content]=\"ndtitle\"\n                ></lib-babylon-dynamic-heading>\n            }\n            @if (description) {\n                <lib-babylon-dynamic-heading\n                    [tag]=\"tags?.description || 'p'\"\n                    cssClass=\"text\"\n                    [color]=\"textColors?.description\"\n                    [content]=\"description\"\n                ></lib-babylon-dynamic-heading>\n            }\n            @if (advTitle) {\n                <lib-babylon-dynamic-heading\n                    [tag]=\"tags?.advTitle || 'h5'\"\n                    cssClass=\"title--smaller\"\n                    [content]=\"advTitle\"\n                ></lib-babylon-dynamic-heading>\n            }\n            @if (advantages?.length) {\n                <ul\n                    class=\"cs_list cs_style_1 cs_mp_0 info-img-list\"\n                    [class.show-more]=\"showAllFunctionally\"\n                    [class.view-minus]=\"!showAllFunctionally\"\n                >\n                    @if (advantages?.length) {\n                        @for (adv of advantages; track $index) {\n                            <li>\n                                @if (adv.icon) {\n                                    <div class=\"info--icon icon--40\">\n                                        <i class=\"icon--svg {{ adv.icon }}\"></i>\n                                    </div>\n                                }\n                                @if (adv.title || adv.text) {\n                                    <div>\n                                        @if (adv.title) {\n                                            <p\n                                                class=\"text mb--0\"\n                                                [innerHTML]=\"adv.title\"\n                                            ></p>\n                                        }\n                                        @if (adv.text) {\n                                            <span\n                                                class=\"text--small\"\n                                                [innerHTML]=\"adv.text\"\n                                            ></span>\n                                        }\n                                    </div>\n                                }\n                            </li>\n                        }\n                    }\n                </ul>\n                @if (advantages!.length > 6) {\n                    <div class=\"btns__box align--center\">\n                        <a\n                            class=\"btn-link\"\n                            (click)=\"toggleView()\"\n                            [attr.aria-label]=\"showBtn\"\n                        >\n                            {{ showBtn }}\n                        </a>\n                    </div>\n                }\n            }\n            @if (buttons?.length) {\n                <div class=\"btns__box\">\n                    @for (button of buttons; track $index; let odd = $odd) {\n                        @if (button && button.label) {\n                            @if (\n                                button.linkType === 'component' ||\n                                button.linkType === 'component_link' ||\n                                button.linkType === 'anchor' ||\n                                button.linkType === 'anchor_link' ||\n                                button.linkType === 'nolink'\n                            ) {\n                                <button\n                                    type=\"button\"\n                                    [attr.aria-label]=\"button.label\"\n                                    [linkType]=\"button.linkType\"\n                                    [href]=\"button.url\"\n                                    [modalClick]=\"modalClick\"\n                                    class=\"btn\"\n                                    [ngClass]=\"{\n                                        btn_primary: !odd,\n                                        btn_call: odd,\n                                    }\"\n                                >\n                                    <b>{{ button.label }}</b>\n                                    <span\n                                        class=\"babylon-arrow-right-big\"\n                                    ></span>\n                                </button>\n                            } @else {\n                                <a\n                                    [attr.aria-label]=\"button.label\"\n                                    [linkType]=\"button.linkType\"\n                                    [href]=\"button.url\"\n                                    class=\"btn\"\n                                    [ngClass]=\"{\n                                        btn_primary: !odd,\n                                        btn_call: odd,\n                                    }\"\n                                >\n                                    <b>{{ button.label }}</b>\n                                    <span\n                                        class=\"babylon-arrow-right-big\"\n                                    ></span>\n                                </a>\n                            }\n                        }\n                    }\n                </div>\n            }\n        </div>\n    </div>\n</ng-template>\n\n<ng-template #imageSlider let-extraClass=\"extraClass\">\n    <div class=\"col-lg-7\">\n        <div class=\"{{ extraClass }}\">\n            <div class=\"cs_slider cs_style_1 cs_slider_gap_24\">\n                <div\n                    class=\"cs_slider_container\"\n                    sliders=\"cs_slider_container\"\n                    data-autoplay=\"0\"\n                    data-loop=\"1\"\n                    data-speed=\"600\"\n                    data-center=\"0\"\n                    data-variable-width=\"0\"\n                    data-slides-per-view=\"responsive\"\n                    data-xs-slides=\"1\"\n                    data-sm-slides=\"1\"\n                    data-md-slides=\"1\"\n                    data-mlg-slides=\"1\"\n                    data-lg-slides=\"1\"\n                    data-add-slides=\"1\"\n                >\n                    <div class=\"cs_slider_wrapper\">\n                        @if (images?.length) {\n                            @for (image of images; track $index) {\n                                <div class=\"cs_slide\">\n                                    <div\n                                        class=\"cs_video_block cs_style_1 cs_type_3 position-relative cs--radius\"\n                                    >\n                                        <figure\n                                            class=\"cs_video_block_bg h-100 w-100 position-absolute start-0 top-0 cs_bg_filed\"\n                                            [style.background-image]=\"\n                                                'url(' +\n                                                (image?.src ||\n                                                    'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7') +\n                                                ')'\n                                            \"\n                                        ></figure>\n                                    </div>\n                                </div>\n                            }\n                        }\n                    </div>\n                </div>\n                @if (images && images.length > 1) {\n                    <div\n                        class=\"cs_pagination cs_style_1\"\n                        [ngClass]=\"{\n                            cs_type_3: extraClass === 'cs_pl_110',\n                            'cs_type_3--left': extraClass === 'cs_pr_110',\n                        }\"\n                    ></div>\n                }\n            </div>\n        </div>\n    </div>\n</ng-template>\n","import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    inject,\n    Input,\n    PLATFORM_ID,\n} from '@angular/core';\nimport { BabylonBackgroundStrip } from '../../../directives/babylon-background-strip/babylon-background-strip.directive';\nimport { BabylonSlidersDirective } from '../../../directives/babylon-sliders/babylon-sliders.directive';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport { BabylonButtonI } from '../../../interfaces/babylon-button.interface';\nimport { BabylonImageI } from '../../../interfaces/babylon-image.interface';\nimport { BabylonAdvInfoI } from '../babylon-advantages/babylon-advantages-info.interface';\n\n@Component({\n    selector: 'lib-babylon-info-img-slider',\n    standalone: true,\n    imports: [\n        CommonModule,\n        BabylonSlidersDirective,\n        BabylonBackgroundStrip,\n        BabylonLinkTypeDirective,\n    ],\n    templateUrl: './babylon-info-img-slider.component.html',\n    styleUrl: './babylon-info-img-slider.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonInfoImgSliderComponent {\n    @Input() rightSide: boolean = false;\n    @Input() items?: BabylonInfoImgSliderItemI[];\n    @Input() topBG?: string;\n    @Input() bottomBG?: string;\n    @Input() topColor?: string;\n    @Input() bottomColor?: string;\n    @Input() identifier?: string;\n\n    @Input() lessBtn?: string;\n    @Input() moreBtn?: string;\n\n    showAll = false;\n\n    get showBtn(): string {\n        return this.showAll ? (this.lessBtn ?? '') : (this.moreBtn ?? '');\n    }\n\n    private platformId = inject(PLATFORM_ID);\n\n    btnClick(e: Event): void {\n        e.preventDefault();\n    }\n\n    toggleView() {\n        if (isPlatformBrowser(this.platformId)) {\n            this.showAll = !this.showAll;\n            document\n                .querySelector('.info-img-list')\n                ?.classList.toggle('view-minus');\n        }\n    }\n}\n\nexport interface BabylonInfoImgSliderItemI {\n    pretitle?: string;\n    title?: string;\n    subtitle?: string;\n    description?: string;\n    ndtitle?: string;\n    logo?: BabylonImageI;\n    buttons?: BabylonButtonI[];\n    image?: BabylonImageI;\n    advantages?: BabylonAdvInfoI[];\n    advTitle?: string;\n}\n","<section\n    class=\"babylon__infoimg margin-main\"\n    [id]=\"identifier ?? 'InfoImg'\"\n    backgroundStrip\n    [topBG]=\"topBG\"\n    [bottomBG]=\"bottomBG\"\n    [topColor]=\"topColor\"\n    [bottomColor]=\"bottomColor\"\n>\n    <div class=\"container-fluid p-0 position-relative\">\n        <div class=\"container\">\n            <div\n                class=\"row align-items-center cs_gap_y_40\"\n                [ngClass]=\"{ 'flex-row-reverse': rightSide }\"\n            >\n                <ng-container\n                    [ngTemplateOutlet]=\"imageSlider\"\n                    [ngTemplateOutletContext]=\"{\n                        extraClass: rightSide ? 'cs_pl_110' : 'cs_pr_110',\n                    }\"\n                ></ng-container>\n            </div>\n        </div>\n    </div>\n</section>\n\n<ng-template #imageSlider let-extraClass=\"extraClass\">\n    <div class=\"col-lg-12\">\n        <div class=\"{{ extraClass }}\">\n            <div class=\"cs_slider cs_style_1 cs_slider_gap_24\">\n                <div\n                    class=\"cs_slider_container\"\n                    sliders=\"cs_slider_container\"\n                    data-autoplay=\"0\"\n                    data-loop=\"1\"\n                    data-speed=\"600\"\n                    data-center=\"0\"\n                    data-variable-width=\"0\"\n                    data-slides-per-view=\"responsive\"\n                    data-xs-slides=\"1\"\n                    data-sm-slides=\"1\"\n                    data-md-slides=\"1\"\n                    data-mlg-slides=\"1\"\n                    data-lg-slides=\"1\"\n                    data-add-slides=\"1\"\n                >\n                    <div class=\"cs_slider_wrapper\">\n                        @if (items?.length) {\n                            @for (item of items; track $index) {\n                                <div class=\"cs_slide\">\n                                    <div class=\"row align-items-center\">\n                                        <div\n                                            class=\"col-lg-6\"\n                                            [ngClass]=\"{\n                                                'order-lg-1': !rightSide,\n                                                'order-lg-2': rightSide,\n                                            }\"\n                                        >\n                                            <div\n                                                class=\"intro_info\"\n                                                [ngClass]=\"{\n                                                    'no-align':\n                                                        $index % 2 !== 0,\n                                                }\"\n                                            >\n                                                @if (item.pretitle) {\n                                                    <h3\n                                                        class=\"pretitle wow fadeInUp\"\n                                                        data-wow-duration=\"0.8s\"\n                                                        data-wow-delay=\"0.2s\"\n                                                    >\n                                                        {{ item.pretitle }}\n                                                    </h3>\n                                                }\n                                                @if (\n                                                    item.logo && item.logo.src\n                                                ) {\n                                                    <div class=\"logo_title\">\n                                                        <img\n                                                            [src]=\"\n                                                                item.logo.src\n                                                            \"\n                                                            [alt]=\"\n                                                                item.logo.alt\n                                                            \"\n                                                        />\n                                                    </div>\n                                                } @else {\n                                                    @if (item.title) {\n                                                        <h2 class=\"title\">\n                                                            {{ item.title }}\n                                                        </h2>\n                                                    }\n                                                }\n                                                @if (item.subtitle) {\n                                                    <h3 class=\"subtitle\">\n                                                        {{ item.subtitle }}\n                                                    </h3>\n                                                }\n                                                @if (item.ndtitle) {\n                                                    <h4\n                                                        class=\"title-{{\n                                                            $index % 2 === 0\n                                                                ? 'left'\n                                                                : 'right'\n                                                        }}\"\n                                                    >\n                                                        {{ item.ndtitle }}\n                                                    </h4>\n                                                }\n                                                @if (item.description) {\n                                                    <p class=\"text\">\n                                                        {{ item.description }}\n                                                    </p>\n                                                }\n                                                @if (item.advTitle) {\n                                                    <h5 class=\"title--smaller\">\n                                                        {{ item.advTitle }}\n                                                    </h5>\n                                                }\n                                                @if (item.advantages?.length) {\n                                                    <ul\n                                                        class=\"cs_list cs_style_1 cs_mp_0 info-img-list view-minus\"\n                                                    >\n                                                        @for (\n                                                            adv of item.advantages;\n                                                            track adv.icon;\n                                                            let advIndex = $index\n                                                        ) {\n                                                            <li>\n                                                                @if (adv.icon) {\n                                                                    <div\n                                                                        class=\"info--icon\"\n                                                                        [ngClass]=\"{\n                                                                            'icon--40':\n                                                                                advIndex %\n                                                                                    2 !==\n                                                                                0,\n                                                                        }\"\n                                                                    >\n                                                                        <i\n                                                                            class=\"icon--svg {{\n                                                                                adv.icon\n                                                                            }}\"\n                                                                        ></i>\n                                                                    </div>\n                                                                }\n                                                                @if (\n                                                                    adv.title ||\n                                                                    adv.text\n                                                                ) {\n                                                                    <p\n                                                                        class=\"text mb--0\"\n                                                                    >\n                                                                        {{\n                                                                            adv.title\n                                                                        }}<span\n                                                                            class=\"text--small\"\n                                                                            >{{\n                                                                                adv.text\n                                                                            }}</span\n                                                                        >\n                                                                    </p>\n                                                                }\n                                                            </li>\n                                                        }\n                                                    </ul>\n                                                    @if (\n                                                        item.advantages!\n                                                            .length > 6\n                                                    ) {\n                                                        <div\n                                                            class=\"btns__box align--center\"\n                                                        >\n                                                            <a\n                                                                class=\"btn-link\"\n                                                                (click)=\"\n                                                                    toggleView()\n                                                                \"\n                                                            >\n                                                                {{ showBtn }}\n                                                            </a>\n                                                        </div>\n                                                    }\n                                                }\n                                                @if (item.buttons) {\n                                                    <div class=\"btns__box\">\n                                                        @for (\n                                                            button of item.buttons;\n                                                            track $index;\n                                                            let odd = $odd\n                                                        ) {\n                                                            @if (\n                                                                button &&\n                                                                button.label\n                                                            ) {\n                                                                <a\n                                                                    [href]=\"\n                                                                        button?.url\n                                                                    \"\n                                                                    [linkType]=\"\n                                                                        button?.linkType\n                                                                    \"\n                                                                    class=\"btn\"\n                                                                    [ngClass]=\"{\n                                                                        btn_primary:\n                                                                            !odd,\n                                                                        btn_call:\n                                                                            odd,\n                                                                    }\"\n                                                                >\n                                                                    <b>{{\n                                                                        button?.label\n                                                                    }}</b>\n                                                                    <span\n                                                                        class=\"babylon-arrow-right-big\"\n                                                                    ></span>\n                                                                </a>\n                                                            }\n                                                        }\n                                                    </div>\n                                                }\n                                            </div>\n                                        </div>\n\n                                        <div\n                                            class=\"col-lg-6\"\n                                            [ngClass]=\"{\n                                                'order-lg-2': !rightSide,\n                                                'order-lg-1 cs_pr_110':\n                                                    rightSide,\n                                            }\"\n                                        >\n                                            <div\n                                                class=\"cs_video_block cs_style_1 cs_type_3 position-relative cs--radius\"\n                                            >\n                                                <figure\n                                                    class=\"cs_video_block_bg h-100 w-100 position-absolute start-0 top-0 cs_bg_filed\"\n                                                    [style.background-image]=\"\n                                                        'url(' +\n                                                        item.image?.src +\n                                                        ')'\n                                                    \"\n                                                ></figure>\n                                            </div>\n                                        </div>\n                                    </div>\n                                </div>\n                            }\n                        }\n                    </div>\n                </div>\n                <div\n                    class=\"cs_pagination cs_style_1\"\n                    [ngClass]=\"{\n                        cs_type_3: extraClass === 'cs_pr_110',\n                        'cs_type_3--left': extraClass === 'cs_pl_110',\n                    }\"\n                ></div>\n            </div>\n        </div>\n    </div>\n</ng-template>\n","import { CommonModule, DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport {\n    AfterViewInit,\n    Component,\n    HostListener,\n    Inject,\n    Input,\n    PLATFORM_ID,\n} from '@angular/core';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport {\n    BabylonButtonI,\n    BabylonMultimediaI,\n    BabylonTextInfoI,\n} from '../../../interfaces';\n\n@Component({\n    selector: 'lib-babylon-info-img-v2',\n    standalone: true,\n    imports: [BabylonLinkTypeDirective, CommonModule],\n    templateUrl: './babylon-info-img-v2.component.html',\n    styleUrl: './babylon-info-img-v2.component.scss',\n})\nexport class BabylonInfoImgV2Component implements AfterViewInit {\n    @Input() rightSide?: boolean = false;\n    @Input() multimedia?: BabylonMultimediaI;\n    @Input() texts?: BabylonTextInfoI;\n    @Input() buttons?: BabylonButtonI[];\n\n    @Input() useGraphic?: boolean = false;\n    @Input() svg: string = '/assets/babylon/svg/icon-graphic.svg#icon-graphic';\n\n    constructor(\n        @Inject(PLATFORM_ID) private platformId: Object,\n        @Inject(DOCUMENT) private document: Document\n    ) {}\n\n    ngAfterViewInit(): void {\n        if (isPlatformBrowser(this.platformId)) {\n            setTimeout(() => this.updateHeaderHeight(), 50);\n        }\n    }\n\n    @HostListener('window:resize')\n    onResize(): void {\n        if (isPlatformBrowser(this.platformId)) {\n            this.updateHeaderHeight();\n        }\n    }\n\n    updateHeaderHeight(): void {\n        // 1. Asumimos los 100px que mide tu header aproximadamente\n        const headerPx = 100;\n\n        // 2. Calculamos la conversión a REM (100px / 16px suele ser 6.25rem)\n        const baseFontSize =\n            parseFloat(\n                getComputedStyle(this.document.documentElement).fontSize\n            ) || 16;\n\n        const headerRem = headerPx / baseFontSize;\n\n        // 3. Inyectamos la variable calculada en el CSS\n        this.document.documentElement.style.setProperty(\n            '--header-height-sm',\n            `${headerRem}rem`\n        );\n\n        this.document.documentElement.style.setProperty(\n            '--header-height-xxl',\n            `${headerRem}rem`\n        );\n    }\n}\n","<section\n    #bgSection\n    class=\"info-img-v2-ficha__module\"\n    [ngClass]=\"{ 'info-img-v2-ficha__module--right': rightSide }\"\n>\n    <div class=\"container\">\n        <div class=\"info-img-v2-ficha__module-inner\">\n            @if (\n                multimedia?.imagenes?.length &&\n                multimedia?.imagenes?.[0]?.img?.src\n            ) {\n                <div class=\"info-img-v2-ficha__module-image\">\n                    @if (useGraphic) {\n                        <svg\n                            aria-hidden=\"true\"\n                            focusable=\"false\"\n                            class=\"info-img-v2-ficha__module-graphic--top\"\n                        >\n                            <use [attr.href]=\"svg\"></use>\n                        </svg>\n                        <svg\n                            aria-hidden=\"true\"\n                            focusable=\"false\"\n                            class=\"info-img-v2-ficha__module-graphic--bottom\"\n                        >\n                            <use [attr.href]=\"svg\"></use>\n                        </svg>\n                    }\n                    <figure>\n                        <img\n                            [src]=\"\n                                multimedia?.imagenes?.[0]?.img?.src ||\n                                'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                            \"\n                            [alt]=\"multimedia?.imagenes?.[0]?.img?.alt\"\n                        />\n                    </figure>\n                </div>\n            }\n            <div class=\"info-img-v2-ficha__module-content\">\n                <div class=\"info-img-v2-ficha__module-content--inner\">\n                    <div #headingEl class=\"info-img-v2-ficha__module-heading\">\n                        @if (texts?.title) {\n                            <h2>{{ texts?.title }}</h2>\n                        }\n                        @if (texts?.description) {\n                            <p [innerHTML]=\"texts?.description\"></p>\n                        }\n                    </div>\n                    <div class=\"info-img-v2-ficha__module-text\">\n                        <div class=\"info-img-v2-ficha__module-text--box\">\n                            @if (texts?.title2) {\n                                <h3>{{ texts?.title2 }}</h3>\n                            }\n                            @if (texts?.description2) {\n                                <p [innerHTML]=\"texts?.description2\"></p>\n                            }\n                        </div>\n                        @if (buttons?.length && buttons?.[0]?.label) {\n                            <div class=\"btn__group\">\n                                <button\n                                    class=\"btn btn__primary\"\n                                    [attr.aria-label]=\"buttons?.[0]?.label\"\n                                    [href]=\"buttons?.[0]?.url\"\n                                    [linkType]=\"buttons?.[0]?.linkType\"\n                                >\n                                    <span>{{ buttons?.[0]?.label }}</span>\n                                </button>\n                            </div>\n                        }\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n</section>\n","import { CommonModule } from '@angular/common';\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    EventEmitter,\n    Input,\n    Output,\n} from '@angular/core';\nimport { BabylonBackgroundStrip } from '../../../directives/babylon-background-strip/babylon-background-strip.directive';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport { BabylonButtonI } from '../../../interfaces/babylon-button.interface';\nimport { BabylonImageI } from '../../../interfaces/babylon-image.interface';\nimport { BabylonTagsI } from '../../../interfaces/babylon-tags.interface';\nimport { BabylonTextsColorsI } from '../../../interfaces/babylon-texts-colors.interface';\nimport { BabylonDynamicHeadingComponent } from '../../shared/babylon-dynamic-heading';\n\n@Component({\n    selector: 'lib-babylon-info-intro',\n    standalone: true,\n    imports: [\n        CommonModule,\n        BabylonBackgroundStrip,\n        BabylonLinkTypeDirective,\n        BabylonDynamicHeadingComponent,\n    ],\n    templateUrl: './babylon-info-intro.component.html',\n    styleUrl: './babylon-info-intro.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonInfoIntroComponent {\n    @Input() title?: string;\n    @Input() pretitle?: string;\n    @Input() description?: string;\n    @Input() button?: BabylonButtonI;\n    @Input() images?: BabylonImageI[];\n    @Input() tags?: BabylonTagsI;\n    @Input() textColors?: BabylonTextsColorsI;\n\n    @Input() set topBG(topBG: BabylonImageI) {\n        this._topBG = topBG?.src;\n    }\n    @Input() set bottomBG(bottomBG: BabylonImageI) {\n        this._bottomBG = bottomBG?.src;\n    }\n    @Input() topColor?: string;\n    @Input() bottomColor?: string;\n\n    @Input() logo?: BabylonImageI;\n    @Input() logo2?: BabylonImageI;\n\n    @Input() buttonModal?: string;\n    @Output() clickPopup = new EventEmitter<string>();\n    @Output() modalClick = new EventEmitter<string>();\n\n    _topBG?: string;\n    _bottomBG?: string;\n\n    get topBG(): string | undefined {\n        return this._topBG;\n    }\n\n    get bottomBG(): string | undefined {\n        return this._bottomBG;\n    }\n}\n","<section\n    class=\"babylon__intro bg--gray margin-main\"\n    backgroundStrip\n    [topBG]=\"topBG\"\n    [bottomBG]=\"bottomBG\"\n    [topColor]=\"topColor\"\n    [bottomColor]=\"bottomColor\"\n>\n    <div class=\"container\">\n        <div class=\"intro_info align--center no-align\">\n            @if (pretitle) {\n                <lib-babylon-dynamic-heading\n                    [tag]=\"tags?.pretitle || 'h3'\"\n                    cssClass=\"pretitle wow fadeInUp\"\n                    [content]=\"pretitle\"\n                    [color]=\"textColors?.pretitle\"\n                    data-wow-duration=\"0.8s\"\n                    data-wow-delay=\"0.2s\"\n                ></lib-babylon-dynamic-heading>\n            }\n            @if (title) {\n                <lib-babylon-dynamic-heading\n                    [tag]=\"tags?.title || 'h2'\"\n                    cssClass=\"title\"\n                    [color]=\"textColors?.title\"\n                    [content]=\"title\"\n                ></lib-babylon-dynamic-heading>\n            }\n            @if (description) {\n                <lib-babylon-dynamic-heading\n                    [tag]=\"tags?.description || 'p'\"\n                    cssClass=\"subtitle\"\n                    [color]=\"textColors?.description\"\n                    [content]=\"description\"\n                ></lib-babylon-dynamic-heading>\n            }\n            @if (buttonModal) {\n                <div class=\"btns__box btns__box-popup\">\n                    <a\n                        class=\"btn ml--20\"\n                        name=\"idioma\"\n                        [href]=\"buttonModal\"\n                        linkType=\"component\"\n                        [clickPopup]=\"clickPopup\"\n                    >\n                        <span class=\"babylon-plus\"></span>\n                    </a>\n                </div>\n            }\n            @if (images && images[0]?.src) {\n                <div class=\"cs_image_layer cs_about_img\">\n                    <img\n                        [src]=\"images[0].src\"\n                        [alt]=\"images[0].alt\"\n                        class=\"cs--radius\"\n                        loading=\"lazy\"\n                    />\n                    <!-- foto opcional -->\n                </div>\n            }\n\n            @if (button?.label) {\n                <div class=\"btns__box align--center\">\n                    <a\n                        [attr.aria-label]=\"button?.label\"\n                        [href]=\"button?.url\"\n                        [linkType]=\"button?.linkType\"\n                        [modalClick]=\"modalClick\"\n                        class=\"btn btn_primary\"\n                    >\n                        <b>{{ button?.label }}</b>\n                        <span class=\"babylon-arrow-right-big\"></span>\n                    </a>\n                </div>\n            }\n        </div>\n    </div>\n    @if (logo || logo2) {\n        <div class=\"intro_logo_wrapper\">\n            @if (logo) {\n                <div class=\"intro_logo_1\">\n                    <img [src]=\"logo.src\" [alt]=\"logo.alt\" loading=\"lazy\" />\n                </div>\n            }\n            @if (logo2) {\n                <div class=\"intro_logo_2\">\n                    <img [src]=\"logo2.src\" [alt]=\"logo2.alt\" loading=\"lazy\" />\n                </div>\n            }\n        </div>\n    }\n</section>\n","import { Component, Input } from '@angular/core';\nimport { BabylonMultimediaI, BabylonTextInfoI } from '../../../interfaces';\n\n@Component({\n    selector: 'lib-babylon-info-show-img',\n    standalone: true,\n    imports: [],\n    templateUrl: './babylon-info-show-img.component.html',\n    styleUrl: './babylon-info-show-img.component.scss',\n})\nexport class BabylonInfoShowImgComponent {\n    @Input() texts?: BabylonTextInfoI;\n    @Input() multimedia?: BabylonMultimediaI;\n}\n","<section class=\"info-show-img bg-cream\" style=\"--hm-speed: 80s\">\n    @if (multimedia?.imagenes?.length) {\n        <div class=\"info-show-img__slider-1\">\n            <div class=\"info-show-img__slider-1--inner\">\n                @for (item of multimedia?.imagenes; track $index) {\n                    @if (item?.img?.src) {\n                        <div class=\"info-show-img__item\">\n                            <img\n                                [src]=\"\n                                    item?.img?.src ||\n                                    'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                \"\n                                [alt]=\"item?.img?.alt\"\n                            />\n                        </div>\n                    }\n                }\n            </div>\n\n            <!-- Duplicate the div for infinite loop marquee -->\n            <div class=\"info-show-img__slider-1--inner\">\n                @for (item of multimedia?.imagenes; track $index) {\n                    @if (item?.img?.src) {\n                        <div class=\"info-show-img__item\">\n                            <img\n                                [src]=\"\n                                    item?.img?.src ||\n                                    'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                \"\n                                [alt]=\"item?.img?.alt\"\n                            />\n                        </div>\n                    }\n                }\n            </div>\n            <!-- Duplicate the div for infinite loop marquee -->\n        </div>\n    }\n    <!-- TODO temporal array staticImagenes for second array of images-->\n    @if (texts?.title) {\n        <div class=\"info-show-img__title\">\n            <h2>\n                {{ texts?.title }}\n            </h2>\n        </div>\n    }\n    @if (multimedia?.staticImagenes?.length) {\n        <div class=\"info-show-img__slider-2\">\n            <div class=\"info-show-img__slider-2--inner\">\n                @for (item of multimedia?.staticImagenes; track $index) {\n                    @if (item?.img?.src) {\n                        <div class=\"info-show-img__item\">\n                            <img\n                                [src]=\"\n                                    item?.img?.src ||\n                                    'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                \"\n                                [alt]=\"item?.img?.alt\"\n                            />\n                        </div>\n                    }\n                }\n            </div>\n            <!-- Duplicate the div for infinite loop marquee -->\n            <div class=\"info-show-img__slider-2--inner\">\n                @for (item of multimedia?.staticImagenes; track $index) {\n                    @if (item?.img?.src) {\n                        <div class=\"info-show-img__item\">\n                            <img\n                                [src]=\"\n                                    item?.img?.src ||\n                                    'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                \"\n                                [alt]=\"item?.img?.alt\"\n                            />\n                        </div>\n                    }\n                }\n            </div>\n            <!-- Duplicate the div for infinite loop marquee -->\n            <div class=\"info-show-img__welcomeText\">\n                <svg\n                    aria-hidden=\"true\"\n                    focusable=\"false\"\n                    class=\"info-show-img__welcomeText--img\"\n                >\n                    <use\n                        href=\"/assets/babylon/svg/island-formentera.svg#island-formentera\"\n                    ></use>\n                </svg>\n                @if (texts?.subtitle) {\n                    <p>{{ texts?.subtitle }}</p>\n                }\n            </div>\n        </div>\n    }\n</section>\n","import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { BabylonButtonI } from '../../../interfaces/babylon-button.interface';\nimport { BabylonImageI } from '../../../interfaces/babylon-image.interface';\nimport { CommonModule } from '@angular/common';\nimport { BabylonSlidersDirective } from '../../../directives/babylon-sliders/babylon-sliders.directive';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport { BabylonDynamicHeadingComponent } from '../../shared/babylon-dynamic-heading';\nimport { BabylonTagsI } from '../../../interfaces/babylon-tags.interface';\nimport { BabylonTextsColorsI } from '../../../interfaces';\n\n@Component({\n    selector: 'lib-babylon-info-zig-zag',\n    standalone: true,\n    imports: [CommonModule, BabylonSlidersDirective, BabylonLinkTypeDirective, BabylonDynamicHeadingComponent],\n    templateUrl: './babylon-info-zig-zag.component.html',\n    styleUrl: './babylon-info-zig-zag.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonInfoZigZagComponent {\n    @Input() rightSide: boolean = false;\n    @Input() texts?: BabylonTextZigzagI;\n    @Input() buttons?: BabylonButtonI[];\n    @Input() images?: BabylonImageI[];\n    @Input() tags?: BabylonTagsI;\n    @Input() textColors?: BabylonTextsColorsI;\n    @Input() identifier?: string;\n\n    @Output() modalClick = new EventEmitter<string>();\n\n    btnClick(e: Event): void {\n        e.preventDefault();\n    }\n}\n\nexport interface BabylonTextZigzagI {\n    pretitle?: string;\n    title?: string;\n    contenttitle?: string;\n    contentsubtitle?: string;\n    contentdescription?: string;\n    logo?: BabylonImageI;\n    iconTitle?: string;\n    icons?: BabylonZigZagIconI[];\n}\n\nexport interface BabylonZigZagIconI {\n  title?: string;\n  text?: string;\n  icon?: string;\n}\n\n","<!-- <section class=\"container-fluid p-0\"> -->\n<section\n    class=\"babylon__offers-list margin-main\"\n    [id]=\"identifier ?? 'InfoZigZag'\"\n>\n    @if (texts?.pretitle || texts?.title) {\n        <div class=\"container\">\n            <div class=\"intro_info align--center no-align\">\n                @if (texts?.pretitle) {\n                    <lib-babylon-dynamic-heading\n                        [tag]=\"tags?.pretitle || 'h3'\"\n                        cssClass=\"pretitle mb--10\"\n                        [content]=\"texts?.pretitle ?? ''\"\n                        [color]=\"textColors?.pretitle\"\n                    ></lib-babylon-dynamic-heading>\n                }\n                @if (texts?.title) {\n                    <lib-babylon-dynamic-heading\n                        [tag]=\"tags?.title || 'h1'\"\n                        cssClass=\"title mb--10\"\n                        [content]=\"texts?.title ?? ''\"\n                        [color]=\"textColors?.title\"\n                    ></lib-babylon-dynamic-heading>\n                }\n            </div>\n        </div>\n    }\n    <div class=\"container-fluid\">\n        <div\n            [ngClass]=\"{ cs_mobile_reverse: rightSide }\"\n            class=\"row align-items-center cs_gap_y_40\"\n        >\n            @if (rightSide) {\n                <div class=\"col-lg-6\" id=\"InfoZigZagRight\">\n                    <div class=\"cs_pr_110 cs_pl_110 cs_plr_movil\">\n                        <div class=\"cs_section_heading cs_style_1\">\n                            <div class=\"intro_info\">\n                                @if (texts?.contentsubtitle) {\n                                    <lib-babylon-dynamic-heading\n                                        [tag]=\"tags?.contentsubtitle || 'h3'\"\n                                        cssClass=\"pretitle mb--30\"\n                                        [content]=\"texts?.contentsubtitle ?? ''\"\n                                        [color]=\"textColors?.contentsubtitle\"\n                                    ></lib-babylon-dynamic-heading>\n                                }\n                                @if (texts?.logo && texts?.logo?.src) {\n                                    <div class=\"logo_title\">\n                                        <img\n                                            [src]=\"texts?.logo?.src\"\n                                            [alt]=\"texts?.logo?.alt\"\n                                            loading=\"lazy\"\n                                        />\n                                    </div>\n                                } @else {\n                                    @if (texts?.contenttitle) {\n                                        <lib-babylon-dynamic-heading\n                                            [tag]=\"tags?.contenttitle || 'h2'\"\n                                            cssClass=\"title\"\n                                            [content]=\"\n                                                texts?.contenttitle ?? ''\n                                            \"\n                                            [color]=\"textColors?.contenttitle\"\n                                        ></lib-babylon-dynamic-heading>\n                                    }\n                                }\n                                @if (texts?.contentdescription) {\n                                    <lib-babylon-dynamic-heading\n                                        [tag]=\"tags?.contentdescription || 'p'\"\n                                        cssClass=\"text\"\n                                        [content]=\"\n                                            texts?.contentdescription ?? ''\n                                        \"\n                                        [color]=\"textColors?.contentdescription\"\n                                    ></lib-babylon-dynamic-heading>\n                                }\n\n                                @if (texts?.iconTitle) {\n                                    <lib-babylon-dynamic-heading\n                                        [tag]=\"tags?.iconTitle || 'h5'\"\n                                        cssClass=\"title--smaller\"\n                                        [content]=\"texts?.iconTitle ?? ''\"\n                                        [color]=\"textColors?.iconTitle\"\n                                    ></lib-babylon-dynamic-heading>\n                                }\n                                @if (texts?.icons?.length) {\n                                    <ul class=\"cs_list cs_style_1 cs_mp_0\">\n                                        @for (\n                                            ico of texts?.icons;\n                                            track $index\n                                        ) {\n                                            <li>\n                                                @if (ico?.icon) {\n                                                    <div\n                                                        class=\"info--icon icon--40\"\n                                                    >\n                                                        <i\n                                                            class=\"icon--svg\"\n                                                            [ngClass]=\"\n                                                                ico?.icon\n                                                            \"\n                                                        ></i>\n                                                    </div>\n                                                }\n                                                @if (ico?.title) {\n                                                    <p class=\"text mb--0\">\n                                                        {{ ico?.title }}\n                                                        @if (ico?.text) {\n                                                            <span\n                                                                class=\"text--small\"\n                                                                [innerHTML]=\"\n                                                                    ico?.text\n                                                                \"\n                                                            ></span>\n                                                        }\n                                                    </p>\n                                                }\n                                            </li>\n                                        }\n                                    </ul>\n                                }\n\n                                @if (buttons?.length) {\n                                    <div class=\"btns__box\">\n                                        @for (\n                                            button of buttons;\n                                            track $index;\n                                            let odd = $odd\n                                        ) {\n                                            @if (button?.label) {\n                                                <a\n                                                    [attr.aria-label]=\"\n                                                        button?.label\n                                                    \"\n                                                    [href]=\"button?.url\"\n                                                    [linkType]=\"\n                                                        button?.linkType\n                                                    \"\n                                                    class=\"btn\"\n                                                    [ngClass]=\"{\n                                                        btn_primary: !odd,\n                                                        btn_call: odd,\n                                                    }\"\n                                                    [modalClick]=\"modalClick\"\n                                                    (click)=\"btnClick($event)\"\n                                                >\n                                                    <b>{{ button?.label }}</b>\n                                                    <span\n                                                        class=\"babylon-arrow-right-big\"\n                                                    ></span>\n                                                </a>\n                                            }\n                                        }\n                                    </div>\n                                }\n                            </div>\n                        </div>\n                    </div>\n                </div>\n                <div class=\"col-lg-6\">\n                    <div class=\"cs_slider cs_style_1 cs_slider_gap_24\">\n                        <div\n                            class=\"cs_slider_container\"\n                            sliders=\"cs_slider_container\"\n                            data-autoplay=\"0\"\n                            data-loop=\"1\"\n                            data-speed=\"600\"\n                            data-center=\"0\"\n                            data-variable-width=\"0\"\n                            data-slides-per-view=\"responsive\"\n                            data-xs-slides=\"1\"\n                            data-sm-slides=\"1\"\n                            data-md-slides=\"1\"\n                            data-mlg-slides=\"1\"\n                            data-lg-slides=\"1\"\n                            data-add-slides=\"1\"\n                        >\n                            <div class=\"cs_slider_wrapper\">\n                                @if (images) {\n                                    @for (image of images; track $index) {\n                                        <div class=\"cs_slide\">\n                                            <div\n                                                class=\"cs_image_layer cs_style_4 position-relative cs_bg_filed cs_width_left_50_vw cs--radius\"\n                                                [style.background-image]=\"\n                                                    'url(' +\n                                                    (image?.src ||\n                                                        'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7') +\n                                                    ')'\n                                                \"\n                                            ></div>\n                                        </div>\n                                    }\n                                }\n                            </div>\n                        </div>\n                        @if (images && images.length > 1) {\n                            <div\n                                class=\"cs_pagination cs_style_1 cs_type_3 cs_type_3--left\"\n                            ></div>\n                        }\n                    </div>\n                </div>\n            } @else {\n                <div class=\"col-lg-6\" id=\"InfoZigZagLeft\">\n                    <div class=\"cs_slider cs_style_1\">\n                        <div\n                            class=\"cs_slider_container\"\n                            sliders=\"cs_slider_container\"\n                            data-autoplay=\"0\"\n                            data-loop=\"1\"\n                            data-speed=\"600\"\n                            data-center=\"0\"\n                            data-variable-width=\"0\"\n                            data-slides-per-view=\"responsive\"\n                            data-xs-slides=\"1\"\n                            data-sm-slides=\"1\"\n                            data-md-slides=\"1\"\n                            data-mlg-slides=\"1\"\n                            data-lg-slides=\"1\"\n                            data-add-slides=\"1\"\n                        >\n                            <div class=\"cs_slider_wrapper\">\n                                @if (images?.length) {\n                                    @for (image of images; track $index) {\n                                        <div class=\"cs_slide\">\n                                            <div\n                                                class=\"cs_image_layer cs_style_4 position-relative cs_bg_filed cs_width_left_50_vw cs--radius\"\n                                                [style.background-image]=\"\n                                                    'url(' +\n                                                    (image?.src ||\n                                                        'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7') +\n                                                    ')'\n                                                \"\n                                            ></div>\n                                        </div>\n                                    }\n                                }\n                            </div>\n                        </div>\n                        @if (images && images.length > 1) {\n                            <div\n                                class=\"cs_pagination cs_style_1 cs_type_3\"\n                            ></div>\n                        }\n                    </div>\n                </div>\n                <div class=\"col-lg-6\">\n                    <div class=\"cs_pl_110 cs_pr_110 cs_plr_movil\">\n                        <div class=\"cs_section_heading cs_style_1\">\n                            <div class=\"intro_info\">\n                                @if (texts?.contentsubtitle) {\n                                    <lib-babylon-dynamic-heading\n                                        [tag]=\"tags?.contentsubtitle || 'h3'\"\n                                        cssClass=\"pretitle mb--30\"\n                                        [content]=\"texts?.contentsubtitle ?? ''\"\n                                        [color]=\"textColors?.contentsubtitle\"\n                                    ></lib-babylon-dynamic-heading>\n                                }\n                                @if (texts?.logo && texts?.logo?.src) {\n                                    <div class=\"logo_title\">\n                                        <img\n                                            [src]=\"texts?.logo?.src\"\n                                            [alt]=\"texts?.logo?.alt\"\n                                            loading=\"lazy\"\n                                        />\n                                    </div>\n                                } @else {\n                                    @if (texts?.contenttitle) {\n                                        <lib-babylon-dynamic-heading\n                                            [tag]=\"tags?.contenttitle || 'h2'\"\n                                            cssClass=\"title\"\n                                            [content]=\"\n                                                texts?.contenttitle ?? ''\n                                            \"\n                                            [color]=\"textColors?.contenttitle\"\n                                        ></lib-babylon-dynamic-heading>\n                                    }\n                                }\n                                @if (texts?.contentdescription) {\n                                    <lib-babylon-dynamic-heading\n                                        [tag]=\"tags?.contentdescription || 'p'\"\n                                        cssClass=\"text\"\n                                        [content]=\"\n                                            texts?.contentdescription ?? ''\n                                        \"\n                                        [color]=\"textColors?.contentdescription\"\n                                    ></lib-babylon-dynamic-heading>\n                                }\n\n                                @if (texts?.iconTitle) {\n                                    <lib-babylon-dynamic-heading\n                                        [tag]=\"tags?.iconTitle || 'h5'\"\n                                        cssClass=\"title--smaller\"\n                                        [content]=\"texts?.iconTitle ?? ''\"\n                                        [color]=\"textColors?.iconTitle\"\n                                    ></lib-babylon-dynamic-heading>\n                                }\n                                @if (texts?.icons?.length) {\n                                    <ul class=\"cs_list cs_style_1 cs_mp_0\">\n                                        @for (\n                                            ico of texts?.icons;\n                                            track $index\n                                        ) {\n                                            <li>\n                                                @if (ico?.icon) {\n                                                    <div\n                                                        class=\"info--icon icon--40\"\n                                                    >\n                                                        <i\n                                                            class=\"icon--svg\"\n                                                            [ngClass]=\"\n                                                                ico?.icon\n                                                            \"\n                                                        ></i>\n                                                    </div>\n                                                }\n                                                @if (ico?.title) {\n                                                    <p class=\"text mb--0\">\n                                                        {{ ico?.title }}\n                                                        @if (ico?.text) {\n                                                            <span\n                                                                class=\"text--small\"\n                                                                [innerHTML]=\"\n                                                                    ico?.text\n                                                                \"\n                                                            ></span>\n                                                        }\n                                                    </p>\n                                                }\n                                            </li>\n                                        }\n                                    </ul>\n                                }\n\n                                @if (buttons?.length) {\n                                    <div class=\"btns__box\">\n                                        @for (\n                                            button of buttons;\n                                            track $index;\n                                            let odd = $odd\n                                        ) {\n                                            @if (button?.label) {\n                                                <a\n                                                    [attr.aria-label]=\"\n                                                        button?.label\n                                                    \"\n                                                    [href]=\"button?.url\"\n                                                    [linkType]=\"\n                                                        button?.linkType\n                                                    \"\n                                                    class=\"btn\"\n                                                    [ngClass]=\"{\n                                                        btn_primary: !odd,\n                                                        btn_call: odd,\n                                                    }\"\n                                                    (click)=\"btnClick($event)\"\n                                                >\n                                                    <b>{{ button?.label }}</b>\n                                                    <span\n                                                        class=\"babylon-arrow-right-big\"\n                                                    ></span>\n                                                </a>\n                                            }\n                                        }\n                                    </div>\n                                }\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            }\n        </div>\n    </div>\n</section>\n","import { CommonModule } from '@angular/common';\nimport {\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    EventEmitter,\n    Input,\n    OnInit,\n    Output,\n} from '@angular/core';\nimport { BabylonSlidersDirective } from '../../../directives/babylon-sliders/babylon-sliders.directive';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport { BabylonTextsColorsI } from '../../../interfaces';\nimport { BabylonButtonI } from '../../../interfaces/babylon-button.interface';\nimport { BabylonImageI } from '../../../interfaces/babylon-image.interface';\nimport { BabylonTagsI } from '../../../interfaces/babylon-tags.interface';\nimport { BabylonDynamicHeadingComponent } from '../../shared/babylon-dynamic-heading';\n\n@Component({\n    selector: 'lib-babylon-info-zig-zag-counter',\n    standalone: true,\n    imports: [\n        CommonModule,\n        BabylonSlidersDirective,\n        BabylonLinkTypeDirective,\n        BabylonDynamicHeadingComponent,\n    ],\n    templateUrl: './babylon-info-zig-zag-counter.component.html',\n    styleUrl: './babylon-info-zig-zag-counter.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonInfoZigZagCounterComponent implements OnInit {\n    @Input() rightSide: boolean = true;\n    @Input() dateStart?: string;\n    @Input() dateFinish?: string;\n    @Input() texts?: BabylonTextZigZagCounterI;\n    @Input() buttons?: BabylonButtonI[];\n    @Input() images?: BabylonImageI[];\n    @Input() tags?: BabylonTagsI;\n    @Input() textColors?: BabylonTextsColorsI;\n\n    @Output() modalClick = new EventEmitter<string>();\n\n    public days?: number;\n    public hours?: number;\n    public minutes?: number;\n    public countdownInterval: any;\n\n    constructor(private cd: ChangeDetectorRef) {}\n\n    ngOnInit(): void {\n        this.initializeCounter();\n    }\n\n    btnClick(e: Event): void {\n        e.preventDefault();\n    }\n    initializeCounter(): void {\n        this.updateCounter();\n        this.countdownInterval = setInterval(() => {\n            this.updateCounter();\n        }, 60000);\n    }\n    updateCounter(): void {\n        let isBefore = true;\n        if (!this.dateStart || !this.dateFinish) {\n            return;\n        }\n        const sdate = new Date(this.dateStart);\n        const fdate = new Date(this.dateFinish);\n        const now = Date.now();\n\n        if (\n            !sdate ||\n            isNaN(sdate.getTime()) ||\n            !fdate ||\n            isNaN(fdate.getTime())\n        ) {\n            return;\n        }\n\n        if (sdate.getTime() <= now) {\n            isBefore = false;\n        }\n        let diff = isBefore ? sdate.getTime() - now : fdate.getTime() - now;\n        if (diff <= 0) {\n            clearInterval(this.countdownInterval);\n            this.days = 0;\n            this.hours = 0;\n            this.minutes = 0;\n            return;\n        }\n        const MS_IN_MINUTE = 60 * 1000;\n        const MS_IN_HOUR = MS_IN_MINUTE * 60;\n        const MS_IN_DAY = MS_IN_HOUR * 24;\n        this.days = Math.floor(diff / MS_IN_DAY);\n        diff -= this.days * MS_IN_DAY;\n        this.hours = Math.floor(diff / MS_IN_HOUR);\n        diff -= this.hours * MS_IN_HOUR;\n        this.minutes = Math.floor(diff / MS_IN_MINUTE);\n\n        this.cd.detectChanges();\n    }\n}\n\nexport interface BabylonTextZigZagCounterI {\n    pretitle?: string;\n    title?: string;\n    contenttitle?: string;\n    contentsubtitle?: string;\n    contentdescription?: string;\n    logo?: BabylonImageI;\n    iconTitle?: string;\n    icons?: BabylonZigZagIconCounterI[];\n    daysText?: string;\n    hoursText?: string;\n    minutesText?: string;\n}\n\nexport interface BabylonZigZagIconCounterI {\n    title?: string;\n    text?: string;\n    icon?: string;\n}\n","<!-- <section class=\"container-fluid p-0\"> -->\n<section class=\"babylon__offers-list margin-main\" id=\"InfoZigZagCounter\">\n    @if (texts?.pretitle || texts?.title) {\n        <div class=\"container\">\n            <div class=\"intro_info align--center no-align\">\n                @if (texts?.pretitle) {\n                    <lib-babylon-dynamic-heading\n                        [tag]=\"tags?.pretitle || 'h3'\"\n                        cssClass=\"pretitle mb--10\"\n                        [content]=\"texts?.pretitle ?? ''\"\n                        [color]=\"textColors?.pretitle\"\n                    ></lib-babylon-dynamic-heading>\n                }\n                @if (texts?.title) {\n                    <lib-babylon-dynamic-heading\n                        [tag]=\"tags?.title || 'h1'\"\n                        cssClass=\"title mb--10\"\n                        [content]=\"texts?.title ?? ''\"\n                        [color]=\"textColors?.title\"\n                    ></lib-babylon-dynamic-heading>\n                }\n            </div>\n        </div>\n    }\n    <div class=\"container-fluid\">\n        <div\n            [class]=\"\n                'row align-items-center cs_gap_y_40' +\n                (rightSide ? 'rightside' : '')\n            \"\n        >\n            <div class=\"col-lg-6\">\n                <div class=\"cs_pr_110 cs_pl_110 cs_plr_movil\">\n                    <div class=\"cs_section_heading cs_style_1\">\n                        <div class=\"intro_info\">\n                            @if (texts?.contentsubtitle) {\n                                <lib-babylon-dynamic-heading\n                                    [tag]=\"tags?.contentsubtitle || 'h3'\"\n                                    cssClass=\"pretitle mb--30\"\n                                    [content]=\"texts?.contentsubtitle ?? ''\"\n                                    [color]=\"textColors?.contentsubtitle\"\n                                ></lib-babylon-dynamic-heading>\n                            }\n                            @if (texts?.logo && texts?.logo?.src) {\n                                <div class=\"logo_title\">\n                                    <img\n                                        [src]=\"texts?.logo?.src\"\n                                        [alt]=\"texts?.logo?.alt\"\n                                        loading=\"lazy\"\n                                    />\n                                </div>\n                            } @else {\n                                @if (texts?.contenttitle) {\n                                    <lib-babylon-dynamic-heading\n                                        [tag]=\"tags?.contenttitle || 'h2'\"\n                                        cssClass=\"title\"\n                                        [content]=\"texts?.contenttitle ?? ''\"\n                                        [color]=\"textColors?.contenttitle\"\n                                    ></lib-babylon-dynamic-heading>\n                                }\n                            }\n                            <div class=\"counter_date\">\n                                <div>\n                                    <div class=\"counter_date_box\">\n                                        {{ days ? days : 0 }}\n                                    </div>\n                                    @if (texts?.daysText) {\n                                        <div class=\"counter_date_label\">\n                                            {{ texts?.daysText }}\n                                        </div>\n                                    }\n                                </div>\n                                <div>\n                                    <div class=\"counter_date_box\">\n                                        {{ hours ? hours : 0 }}\n                                    </div>\n                                    @if (texts?.hoursText) {\n                                        <div class=\"counter_date_label\">\n                                            {{ texts?.hoursText }}\n                                        </div>\n                                    }\n                                </div>\n                                <div>\n                                    <div class=\"counter_date_box\">\n                                        {{ minutes ? minutes : 0 }}\n                                    </div>\n                                    @if (texts?.minutesText) {\n                                        <div class=\"counter_date_label\">\n                                            {{ texts?.minutesText }}\n                                        </div>\n                                    }\n                                </div>\n                            </div>\n                            @if (texts?.contentdescription) {\n                                <lib-babylon-dynamic-heading\n                                    [tag]=\"tags?.contentdescription || 'p'\"\n                                    cssClass=\"text\"\n                                    [content]=\"texts?.contentdescription ?? ''\"\n                                    [color]=\"textColors?.contentdescription\"\n                                ></lib-babylon-dynamic-heading>\n                            }\n\n                            @if (texts?.iconTitle) {\n                                <lib-babylon-dynamic-heading\n                                    [tag]=\"tags?.iconTitle || 'h5'\"\n                                    cssClass=\"title--smaller\"\n                                    [content]=\"texts?.iconTitle ?? ''\"\n                                    [color]=\"textColors?.iconTitle\"\n                                ></lib-babylon-dynamic-heading>\n                            }\n                            @if (texts?.icons?.length) {\n                                <ul class=\"cs_list cs_style_1 cs_mp_0\">\n                                    @for (ico of texts?.icons; track $index) {\n                                        <li>\n                                            @if (ico?.icon) {\n                                                <div\n                                                    class=\"info--icon icon--40\"\n                                                >\n                                                    <i\n                                                        class=\"icon--svg\"\n                                                        [ngClass]=\"ico?.icon\"\n                                                    ></i>\n                                                </div>\n                                            }\n                                            @if (ico?.title) {\n                                                <p class=\"text mb--0\">\n                                                    {{ ico?.title }}\n                                                    @if (ico?.text) {\n                                                        <span\n                                                            class=\"text--small\"\n                                                            [innerHTML]=\"\n                                                                ico?.text\n                                                            \"\n                                                        ></span>\n                                                    }\n                                                </p>\n                                            }\n                                        </li>\n                                    }\n                                </ul>\n                            }\n\n                            @if (buttons?.length) {\n                                <div class=\"btns__box\">\n                                    @for (\n                                        button of buttons;\n                                        track $index;\n                                        let odd = $odd\n                                    ) {\n                                        @if (button?.label) {\n                                            <a\n                                                [attr.aria-label]=\"\n                                                    button?.label\n                                                \"\n                                                [href]=\"button?.url\"\n                                                [linkType]=\"button?.linkType\"\n                                                class=\"btn btn_primary\"\n                                                [modalClick]=\"modalClick\"\n                                                (click)=\"btnClick($event)\"\n                                            >\n                                                <b>{{ button?.label }}</b>\n                                            </a>\n                                        }\n                                    }\n                                </div>\n                            }\n                        </div>\n                    </div>\n                </div>\n            </div>\n            <div class=\"col-lg-6\">\n                <div class=\"cs_slider cs_style_1 cs_slider_gap_24\">\n                    <div\n                        class=\"cs_slider_container\"\n                        sliders=\"cs_slider_container\"\n                        data-autoplay=\"0\"\n                        data-loop=\"1\"\n                        data-speed=\"600\"\n                        data-center=\"0\"\n                        data-variable-width=\"0\"\n                        data-slides-per-view=\"responsive\"\n                        data-xs-slides=\"1\"\n                        data-sm-slides=\"1\"\n                        data-md-slides=\"1\"\n                        data-mlg-slides=\"1\"\n                        data-lg-slides=\"1\"\n                        data-add-slides=\"1\"\n                    >\n                        <div class=\"cs_slider_wrapper\">\n                            @if (images) {\n                                @for (image of images; track $index) {\n                                    <div class=\"cs_slide\">\n                                        <div\n                                            class=\"cs_image_layer cs_style_4 position-relative cs_bg_filed cs_width_left_50_vw cs--radius\"\n                                            [style.background-image]=\"\n                                                'url(' +\n                                                (image?.src ||\n                                                    'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7') +\n                                                ')'\n                                            \"\n                                        ></div>\n                                    </div>\n                                }\n                            }\n                        </div>\n                    </div>\n                    @if (images && images.length > 1) {\n                        <div\n                            class=\"cs_pagination cs_style_1 cs_type_3 cs_type_3--left\"\n                        ></div>\n                    }\n                </div>\n            </div>\n        </div>\n    </div>\n</section>\n","import { CommonModule } from '@angular/common';\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    Input,\n    EventEmitter,\n    Output,\n} from '@angular/core';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport { BabylonButtonI } from '../../../interfaces/babylon-button.interface';\nimport { BabylonImageI } from '../../../interfaces/babylon-image.interface';\nimport { BabylonAdvInfoI } from '../babylon-advantages/babylon-advantages-info.interface';\n\n@Component({\n    selector: 'lib-babylon-info-zigzag-v2',\n    standalone: true,\n    imports: [CommonModule, BabylonLinkTypeDirective],\n    templateUrl: './babylon-info-zigzag-v2.component.html',\n    styleUrl: './babylon-info-zigzag-v2.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonInfoZigzagV2Component {\n    @Input() rightSide: boolean = false;\n    @Input() identifier?: string;\n    @Input() items: BabylonInfoZigzagV2Item[] = [];\n\n    @Output() modalClick = new EventEmitter<string>();\n}\n\nexport interface BabylonInfoZigzagV2Item {\n    pretitle?: string;\n    title?: string;\n    text?: string;\n    features?: BabylonAdvInfoI[];\n    buttons?: BabylonButtonI[];\n    image?: BabylonImageI;\n}\n","<section\n    class=\"babylon__info-zigzag-v2 margin-main\"\n    [id]=\"identifier ?? 'infoZigZagV2'\"\n>\n    <div class=\"cs_feature_box cs_style_2\">\n        <div class=\"container\">\n            <div class=\"row cs_gap_y_50\">\n                <div\n                    class=\"col-lg-6\"\n                    [ngClass]=\"{ cs_mobile_reverse_sp: rightSide }\"\n                >\n                    @if (rightSide) {\n                        <ng-container\n                            [ngTemplateOutlet]=\"content\"\n                            [ngTemplateOutletContext]=\"items[0]\"\n                        ></ng-container>\n                    } @else {\n                        <ng-container\n                            [ngTemplateOutlet]=\"ndContent\"\n                            [ngTemplateOutletContext]=\"items[1]\"\n                        ></ng-container>\n                    }\n                </div>\n                <div\n                    class=\"col-lg-6\"\n                    [ngClass]=\"{ cs_mobile_reverse_sp: !rightSide }\"\n                >\n                    @if (rightSide) {\n                        <ng-container\n                            [ngTemplateOutlet]=\"ndContent\"\n                            [ngTemplateOutletContext]=\"items[1]\"\n                        ></ng-container>\n                    } @else {\n                        <ng-container\n                            [ngTemplateOutlet]=\"content\"\n                            [ngTemplateOutletContext]=\"items[0]\"\n                        ></ng-container>\n                    }\n                </div>\n            </div>\n        </div>\n    </div>\n</section>\n\n<ng-template #content>\n    @if (items[0]; as item) {\n        @if (item.image) {\n            <div class=\"cs_feature_box_thumb cs_mb_55 cs_mb_lg_40\">\n                <img\n                    [src]=\"\n                        item.image.src ||\n                        'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                    \"\n                    [alt]=\"item.image.alt ?? item.image.title ?? 'title'\"\n                    class=\"cs_feature_thumb_1 cs--radius\"\n                    loading=\"lazy\"\n                />\n            </div>\n        }\n        <div class=\"cs_pl_110\">\n            <div class=\"intro_info\">\n                @if (item.pretitle) {\n                    <p class=\"pretitle\" [innerHTML]=\"item.pretitle\"></p>\n                }\n                @if (item.title) {\n                    <h2 class=\"title\" [innerHTML]=\"item.title\"></h2>\n                }\n                @if (item.text) {\n                    <p class=\"text\" [innerHTML]=\"item.text\"></p>\n                }\n                @if (item.buttons?.length) {\n                    <div class=\"btns__box\">\n                        @for (\n                            button of item.buttons;\n                            track $index;\n                            let odd = $odd\n                        ) {\n                            <a\n                                [attr.aria-label]=\"button?.label\"\n                                [href]=\"button?.url\"\n                                [linkType]=\"button?.linkType\"\n                                class=\"btn\"\n                                [ngClass]=\"{\n                                    btn_primary: !odd,\n                                    btn_call: odd,\n                                }\"\n                                [modalClick]=\"modalClick\"\n                            >\n                                <b>{{ button?.label }}</b>\n                                <span class=\"babylon-arrow-right-big\"></span>\n                            </a>\n                        }\n                    </div>\n                }\n            </div>\n        </div>\n        @if (item.features?.length) {\n            <div class=\"cs_pr_110\">\n                <ul class=\"cs_feature_list cs_mp_0\">\n                    @for (feature of item.features; track $index) {\n                        <li>\n                            <div class=\"info--icon icon--medium\">\n                                <i\n                                    class=\"icon--svg\"\n                                    [ngClass]=\"feature.icon\"\n                                ></i>\n                            </div>\n                            <div class=\"intro_info\">\n                                @if (feature.title) {\n                                    <h2 class=\"title--smaller mb--10\">\n                                        {{ feature.title }}\n                                    </h2>\n                                }\n                                @if (feature.text) {\n                                    <p\n                                        class=\"text\"\n                                        [innerHTML]=\"feature.text\"\n                                    ></p>\n                                }\n                            </div>\n                        </li>\n                    }\n                </ul>\n            </div>\n        }\n    }\n</ng-template>\n\n<ng-template #ndContent>\n    @if (items[1]; as item) {\n        <div class=\"cs_height_30 cs_height_lg_0\"></div>\n        <div class=\"cs_pl_110\">\n            <div class=\"intro_info\">\n                @if (item.pretitle) {\n                    <p class=\"pretitle\" [innerHTML]=\"item.pretitle\"></p>\n                }\n                @if (item.title) {\n                    <h2 class=\"title\" [innerHTML]=\"item.title\"></h2>\n                }\n                @if (item.text) {\n                    <p class=\"text\" [innerHTML]=\"item.text\"></p>\n                }\n                @if (item.buttons?.length) {\n                    <div class=\"btns__box\">\n                        @for (\n                            button of item.buttons;\n                            track $index;\n                            let odd = $odd\n                        ) {\n                            <a\n                                [attr.aria-label]=\"button?.label\"\n                                [href]=\"button?.url\"\n                                [linkType]=\"button?.linkType\"\n                                class=\"btn\"\n                                [ngClass]=\"{\n                                    btn_primary: !odd,\n                                    btn_call: odd,\n                                }\"\n                                [modalClick]=\"modalClick\"\n                            >\n                                <b>{{ button?.label }}</b>\n                                <span class=\"babylon-arrow-right-big\"></span>\n                            </a>\n                        }\n                    </div>\n                }\n            </div>\n        </div>\n        @if (item.image) {\n            <div class=\"cs_feature_box_thumb cs_mb_lg_40\">\n                <img\n                    [src]=\"\n                        item.image.src ||\n                        'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                    \"\n                    [alt]=\"item.image.alt ?? item.image.title ?? 'title'\"\n                    class=\"cs_feature_thumb_1 cs--radius\"\n                    loading=\"lazy\"\n                />\n            </div>\n        }\n    }\n</ng-template>\n","import { isPlatformBrowser } from '@angular/common';\nimport {\n    AfterViewInit,\n    Directive,\n    ElementRef,\n    inject,\n    NgZone,\n    OnDestroy,\n    PLATFORM_ID,\n    Renderer2,\n} from '@angular/core';\n\n@Directive({\n    selector: '[sliderFixArrows]', // úsala en el nodo con .js-slider_fix-arrows\n    standalone: true,\n})\nexport class SliderFixArrowsDirective implements AfterViewInit, OnDestroy {\n    private rafPending = false;\n    private cleanups: Array<() => void> = [];\n\n    platformId = inject(PLATFORM_ID);\n\n    constructor(\n        private el: ElementRef<HTMLElement>,\n        private r2: Renderer2,\n        private zone: NgZone\n    ) {}\n\n    ngAfterViewInit(): void {\n        if (!isPlatformBrowser(this.platformId)) return;\n        // Primer cálculo\n        this.calcPosition();\n\n        // Recalcular a los 500ms (similar a tu setTimeout)\n        setTimeout(() => this.calcPosition(), 500);\n\n        // Escuchar scroll/resize sin disparar change detection a lo loco\n        this.zone.runOutsideAngular(() => {\n            const onScroll = () => this.scheduleCalc();\n            const onResize = () => this.scheduleCalc();\n\n            window.addEventListener('scroll', onScroll, { passive: true });\n            window.addEventListener('resize', onResize, { passive: true });\n\n            this.cleanups.push(() =>\n                window.removeEventListener('scroll', onScroll)\n            );\n            this.cleanups.push(() =>\n                window.removeEventListener('resize', onResize)\n            );\n        });\n    }\n\n    ngOnDestroy(): void {\n        this.cleanups.forEach((fn) => fn());\n    }\n\n    private scheduleCalc() {\n        if (this.rafPending) return;\n        this.rafPending = true;\n        requestAnimationFrame(() => {\n            this.rafPending = false;\n            this.calcPosition();\n        });\n    }\n\n    private calcPosition(): void {\n        const slider = this.el.nativeElement; // .js-slider_fix-arrows\n        if (!slider) return;\n\n        // Buscamos el contenedor donde aplicar la variable\n        const arrowsContainer = this.closest(\n            slider,\n            '.js-active-slider'\n        ) as HTMLElement | null;\n        if (!arrowsContainer) return;\n\n        // Resolver \"zona\" según mobile/desktop\n        const zone = this.pickZone(slider);\n        if (!zone) return;\n\n        // Necesitamos el ancestro .relative para medir relativo a él\n        const relative = this.closest(zone, '.relative') as HTMLElement | null;\n        if (!relative) return;\n\n        const zoneRect = zone.getBoundingClientRect();\n        const relRect = relative.getBoundingClientRect();\n\n        // Distancia relativa top + mitad de la altura de la zona\n        const height = zoneRect.top - relRect.top + zoneRect.height / 2;\n\n        // Seteamos la CSS var\n        this.r2.setStyle(\n            arrowsContainer,\n            '--sliderNav__position',\n            `${height}px`\n        );\n    }\n\n    /** Lógica mobile/desktop como en tu código original */\n    private pickZone(root: HTMLElement): HTMLElement | null {\n        const all = root.querySelectorAll<HTMLElement>(\n            '.js-slider_fix-arrows-zone'\n        );\n        if (!all.length) return null;\n\n        const w = window.innerWidth || 0;\n\n        // ¿existe .mobile y estamos <= 1279?\n        const mobile = root.querySelector<HTMLElement>(\n            '.js-slider_fix-arrows-zone.mobile'\n        );\n        if (mobile && w <= 1279) return mobile;\n\n        // ¿existe .desktop y estamos >= 1280?\n        const desktop = root.querySelector<HTMLElement>(\n            '.js-slider_fix-arrows-zone.desktop'\n        );\n        if (desktop && w >= 1280) return desktop;\n\n        // fallback: el primero que exista\n        return all[0];\n    }\n\n    /** closest sin jQuery, con fallback para navegadores raros */\n    private closest(el: Element, selector: string): Element | null {\n        if (el.closest) return el.closest(selector);\n        let current: Element | null = el;\n        while (current) {\n            if (this.matches(current, selector)) return current;\n            current = current.parentElement;\n        }\n        return null;\n    }\n\n    private matches(el: Element, selector: string): boolean {\n        const p = Element.prototype as any;\n        const f = p.matches || p.msMatchesSelector || p.webkitMatchesSelector;\n        return f.call(el, selector);\n    }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport { SlickInitDirective } from '../../../directives/sliders/slick-init.directive';\nimport { SliderFixArrowsDirective } from '../../../directives/sliders/slider-fix-arrows.directive';\nimport { BabylonMultimediaI, BabylonTextInfoI } from '../../../interfaces';\n\n@Component({\n    selector: 'lib-babylon-info-zigzag-v4',\n    standalone: true,\n    imports: [\n        CommonModule,\n        SlickInitDirective,\n        SliderFixArrowsDirective,\n        BabylonLinkTypeDirective,\n    ],\n    templateUrl: './babylon-info-zigzag-v4.component.html',\n    styleUrl: './babylon-info-zigzag-v4.component.scss',\n})\nexport class BabylonInfoZigzagV4Component {\n    @Input() rightSide?: boolean = false;\n    @Input() leftSide?: boolean = false;\n    @Input() texts?: BabylonTextInfoI;\n    @Input() multimedia?: BabylonMultimediaI;\n}\n","<section\n    class=\"zigzag-v4 zigzag-v4--right-img js-active-slider\"\n    [ngClass]=\"{ 'zigzag-v4--right-img': rightSide }\"\n    data-slides_infinite=\"true\"\n    data-slider_name=\"js-zigzag-v4-slider\"\n    data-slider_showbtns=\"true\"\n    data-slider_btns=\"icon-small\"\n    data-slider_showdots=\"false\"\n    data-slider_fade=\"true\"\n    data-slider_autoplay=\"true\"\n    data-slides_pc=\"1\"\n>\n    <div class=\"container\">\n        <div class=\"zigzag-v4__inner\">\n            @if (texts?.title) {\n                <span class=\"zigzag-v4__title\">{{ texts?.title }}</span>\n            }\n            @if (multimedia?.imagenes?.length) {\n                <div class=\"relative\">\n                    <div\n                        class=\"zigzag-v4__slider js-zigzag-v4-slider js-slider_fix-arrows\"\n                        sliderFixArrows\n                    >\n                        @for (imagen of multimedia?.imagenes; track $index) {\n                            <div>\n                                <div class=\"zigzag-v4__item\">\n                                    <div class=\"zigzag-v4__image\">\n                                        @if (imagen?.img?.src) {\n                                            <figure\n                                                class=\"js-slider_fix-arrows-zone\"\n                                            >\n                                                <svg\n                                                    aria-hidden=\"true\"\n                                                    focusable=\"false\"\n                                                    class=\"zigzag-v4__image--graphic\"\n                                                >\n                                                    <use\n                                                        href=\"/assets/babylon/svg/icon-graphic.svg#icon-graphic\"\n                                                    ></use>\n                                                </svg>\n                                                <img\n                                                    [src]=\"\n                                                        imagen?.img?.src ||\n                                                        'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                                    \"\n                                                    [alt]=\"imagen?.img?.alt\"\n                                                />\n                                            </figure>\n                                        }\n                                        @if (imagen.buttons?.length) {\n                                            <div class=\"btn__group\">\n                                                @for (\n                                                    button of imagen?.buttons;\n                                                    track $index\n                                                ) {\n                                                    <a\n                                                        role=\"button\"\n                                                        [href]=\"button?.url\"\n                                                        [linkType]=\"\n                                                            button?.linkType\n                                                        \"\n                                                        class=\"btn btn__primary\"\n                                                    >\n                                                        <span>{{\n                                                            button?.label\n                                                        }}</span>\n                                                    </a>\n                                                }\n                                            </div>\n                                        }\n                                    </div>\n                                    <div class=\"zigzag-v4__content\">\n                                        @if (imagen?.title) {\n                                            <h2>\n                                                <span\n                                                    class=\"maxWidth\"\n                                                    [innerHTML]=\"imagen?.title\"\n                                                ></span>\n                                            </h2>\n                                        }\n                                        @if (\n                                            imagen?.subtitle || imagen?.pretitle\n                                        ) {\n                                            <span\n                                                class=\"zigzag-v4__sub-heading\"\n                                                >{{\n                                                    imagen?.subtitle ||\n                                                        imagen?.pretitle\n                                                }}</span\n                                            >\n                                        }\n                                        @if (imagen?.description) {\n                                            <p\n                                                [innerHTML]=\"\n                                                    imagen?.description\n                                                \"\n                                            ></p>\n                                        }\n                                        @if (imagen.buttons?.length) {\n                                            <div class=\"btn__group\">\n                                                @for (\n                                                    button of imagen?.buttons;\n                                                    track $index\n                                                ) {\n                                                    <a\n                                                        role=\"button\"\n                                                        [href]=\"button?.url\"\n                                                        [linkType]=\"\n                                                            button?.linkType\n                                                        \"\n                                                        class=\"btn btn__primary\"\n                                                        ><span>{{\n                                                            button?.label\n                                                        }}</span>\n                                                    </a>\n                                                }\n                                            </div>\n                                        }\n                                    </div>\n                                </div>\n                            </div>\n                        }\n                    </div>\n                    <div\n                        class=\"js-slider-arrows arrows--absolute arrows--full\"\n                    ></div>\n                </div>\n            }\n        </div>\n    </div>\n</section>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport { SlickInitDirective } from '../../../directives/sliders/slick-init.directive';\nimport { SliderFixArrowsDirective } from '../../../directives/sliders/slider-fix-arrows.directive';\nimport {\n    BabylonButtonI,\n    BabylonMultimediaI,\n    BabylonTextInfoI,\n} from '../../../interfaces';\n\n@Component({\n    selector: 'lib-babylon-info-zigzag-v5',\n    standalone: true,\n    imports: [\n        CommonModule,\n        SlickInitDirective,\n        SliderFixArrowsDirective,\n        BabylonLinkTypeDirective,\n    ],\n    templateUrl: './babylon-info-zigzag-v5.component.html',\n    styleUrl: './babylon-info-zigzag-v5.component.scss',\n})\nexport class BabylonInfoZigzagV5Component {\n    @Input() rightSide?: boolean = false;\n    @Input() leftSide?: boolean = false;\n    @Input() texts?: BabylonTextInfoI;\n    @Input() multimedia?: BabylonMultimediaI;\n    @Input() buttons?: BabylonButtonI[];\n    @Input() hasBackground?: boolean = false;\n}\n","<section\n    class=\"zigzag-v4 zigzag-v4--right-img js-active-slider\"\n    [ngClass]=\"{\n        'zigzag-v4--right-img': rightSide || leftSide,\n        background: hasBackground,\n    }\"\n    data-slides_infinite=\"true\"\n    data-slider_name=\"js-zigzag-v4-slider\"\n    data-slider_showbtns=\"true\"\n    data-slider_btns=\"icon-small\"\n    data-slider_showdots=\"false\"\n    data-slider_fade=\"true\"\n    data-slider_autoplay=\"true\"\n    data-slides_pc=\"1\"\n>\n    <div class=\"container\">\n        <div class=\"zigzag-v4__inner\">\n            <!--  @if (texts?.title) {\n                <span class=\"zigzag-v4__title\">{{ texts?.title }}</span>\n            }\n -->\n            <div class=\"relative\">\n                <div\n                    class=\"zigzag-v4__slider js-zigzag-v4-slider js-slider_fix-arrows\"\n                    sliderFixArrows\n                >\n                    @for (imagen of multimedia?.imagenes; track $index) {\n                        <div>\n                            <div class=\"zigzag-v4__item\">\n                                <div class=\"zigzag-v4__image\">\n                                    @if (imagen?.img?.src) {\n                                        <figure\n                                            class=\"js-slider_fix-arrows-zone\"\n                                        >\n                                            <svg\n                                                aria-hidden=\"true\"\n                                                focusable=\"false\"\n                                                class=\"zigzag-v4__image--graphic\"\n                                            >\n                                                <use\n                                                    href=\"/assets/babylon/svg/icon-graphic.svg#icon-graphic\"\n                                                ></use>\n                                            </svg>\n                                            <img\n                                                [src]=\"\n                                                    imagen?.img?.src ||\n                                                    'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                                \"\n                                                [alt]=\"imagen?.img?.alt\"\n                                            />\n                                        </figure>\n                                    }\n                                    @if (\n                                        imagen.buttons?.length ??\n                                        buttons?.length\n                                    ) {\n                                        <div class=\"btn__group\">\n                                            @for (\n                                                button of imagen?.buttons ??\n                                                    buttons;\n                                                track $index\n                                            ) {\n                                                <a\n                                                    role=\"button\"\n                                                    [href]=\"button?.url\"\n                                                    [linkType]=\"\n                                                        button?.linkType\n                                                    \"\n                                                    class=\"btn btn__primary\"\n                                                >\n                                                    <span>{{\n                                                        button?.label\n                                                    }}</span>\n                                                </a>\n                                            }\n                                        </div>\n                                    }\n                                </div>\n\n                                <div class=\"zigzag-v4__content\">\n                                    @if (texts?.title) {\n                                        <h2>\n                                            <span\n                                                class=\"maxWidth\"\n                                                [innerHTML]=\"texts?.title\"\n                                            ></span>\n                                        </h2>\n                                    }\n                                    @if (texts?.additional) {\n                                        <h2>\n                                            <span\n                                                [innerHTML]=\"texts?.additional\"\n                                            ></span>\n                                        </h2>\n                                    }\n                                    @if (texts?.subtitle) {\n                                        <span class=\"zigzag-v4__sub-heading\">{{\n                                            texts?.subtitle\n                                        }}</span>\n                                    }\n                                    @if (texts?.description) {\n                                        <p [innerHTML]=\"texts?.description\"></p>\n                                    }\n                                    @if (\n                                        imagen.buttons?.length ??\n                                        buttons?.length\n                                    ) {\n                                        <div class=\"btn__group\">\n                                            @for (\n                                                button of imagen.buttons ??\n                                                    buttons;\n                                                track $index\n                                            ) {\n                                                <a\n                                                    role=\"button\"\n                                                    [href]=\"button?.url\"\n                                                    [linkType]=\"\n                                                        button?.linkType\n                                                    \"\n                                                    class=\"btn btn__primary\"\n                                                >\n                                                    <span>{{\n                                                        button?.label\n                                                    }}</span>\n                                                </a>\n                                            }\n                                        </div>\n                                    }\n                                </div>\n                            </div>\n                        </div>\n                    }\n                </div>\n                <div\n                    class=\"js-slider-arrows arrows--absolute arrows--full\"\n                ></div>\n            </div>\n        </div>\n    </div>\n</section>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport { BabylonButtonI, BabylonImageI } from '../../../interfaces';\n\n@Component({\n    selector: 'lib-babylon-info2col-img',\n    standalone: true,\n    imports: [CommonModule, BabylonLinkTypeDirective],\n    templateUrl: './babylon-info2col-img.component.html',\n    styleUrl: './babylon-info2col-img.component.scss',\n})\nexport class BabylonInfo2ColImgComponent implements OnInit {\n    @Input() rightmodule: boolean = false;\n    @Input() title?: string;\n    @Input() text?: string;\n    @Input() buttons?: BabylonButtonI[];\n    @Input() items?: Items2ColImgI[];\n    @Input() smallimage?: BabylonImageI;\n    @Input() pretitle?: string;\n    @Input() subtitle?: string;\n    @Input() showArrows: boolean = false;\n\n    ngOnInit(): void {\n        if (this.smallimage && Array.isArray(this.smallimage)) {\n            this.smallimage = this.smallimage[0];\n        }\n    }\n}\n\nexport interface Items2ColImgI {\n    img?: BabylonImageI;\n    title?: string;\n    description?: string;\n    buttons?: BabylonButtonI[];\n}\n","<section class=\"babylon__info-zigzag-v3 margin-main\">\n    <div class=\"cs_feature_box cs_style_2\">\n        <div class=\"container\">\n            <div class=\"row cs_gap_y_50\">\n                <div\n                    class=\"item-container babylon-column-1 col-lg-6\"\n                    [ngClass]=\"{ cs_mobile_reverse_sp: rightmodule }\"\n                >\n                    <div class=\"img-container cs_mb_55 cs_mb_lg_40\">\n                        @if (items?.length) {\n                            <img\n                                [src]=\"\n                                    items?.[0]?.img?.src ||\n                                    'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                \"\n                                [alt]=\"items?.[0]?.img?.alt\"\n                                class=\"cs_feature_thumb_1 cs--radius\"\n                                loading=\"lazy\"\n                            />\n                        }\n                    </div>\n                    <div class=\"intro_info_container\">\n                        <div class=\"intro_info no-align\">\n                            @if (showArrows) {\n                                <svg\n                                    class=\"arrow-point\"\n                                    viewBox=\"0 0 100 50\"\n                                    xmlns=\"http://www.w3.org/2000/svg\"\n                                >\n                                    <path\n                                        class=\"arrow-fill\"\n                                        d=\"M100 50C72.3857 50 50 27.6143 50 4.37114e-06C50 27.6143 27.6143 50 0 50L100 50Z\"\n                                    />\n                                </svg>\n                            }\n\n                            @if (items?.[0]?.title) {\n                                <h3 class=\"title mb--10\">\n                                    {{ items?.[0]?.title }}\n                                </h3>\n                            }\n\n                            @if (items?.[0]?.description) {\n                                <p class=\"text\">\n                                    {{ items?.[0]?.description }}\n                                </p>\n                            }\n\n                            @if (items?.[0]?.buttons?.length) {\n                                <div class=\"btns__box\">\n                                    @for (\n                                        button of items?.[0]?.buttons;\n                                        track $index;\n                                        let odd = $odd\n                                    ) {\n                                        @if (button) {\n                                            <a\n                                                [attr.aria-label]=\"button.label\"\n                                                [href]=\"button?.url\"\n                                                [linkType]=\"button.linkType\"\n                                                class=\"btn btn_primary\"\n                                            >\n                                                <b>{{ button.label }}</b>\n                                                <span\n                                                    class=\"babylon-arrow-right-big\"\n                                                ></span>\n                                            </a>\n                                        }\n                                    }\n                                </div>\n                            }\n                        </div>\n                        <div class=\"diamond\">\n                            @if (smallimage) {\n                                <img\n                                    [src]=\"\n                                        smallimage.src ||\n                                        'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                    \"\n                                    [alt]=\"\n                                        smallimage.alt ??\n                                        smallimage.title ??\n                                        'title'\n                                    \"\n                                    class=\"cs_feature_thumb_1 cs--radius\"\n                                    loading=\"lazy\"\n                                />\n                            }\n                        </div>\n                    </div>\n                </div>\n                <div class=\"item-container col-lg-6\">\n                    <div class=\"cs_height_100 cs_height_lg_0\"></div>\n                    <div class=\"intro_info no-align\">\n                        @if (pretitle) {\n                            <div class=\"pretitle-container\">\n                                <p class=\"pretitle\">{{ pretitle }}</p>\n                            </div>\n                        }\n                        <div class=\"intro_info container_2 no-align\">\n                            <div class=\"data-container\">\n                                @if (items?.length) {\n                                    <h3 class=\"title mb--10 mt--20\">\n                                        {{ items?.[1]?.title }}\n                                    </h3>\n                                    <p class=\"text\">\n                                        {{ items?.[1]?.description }}\n                                    </p>\n                                    @if (items?.[1]?.buttons?.length) {\n                                        <div class=\"btns__box\">\n                                            @for (\n                                                button of items?.[1]?.buttons;\n                                                track $index;\n                                                let odd = $odd\n                                            ) {\n                                                @if (button) {\n                                                    <a\n                                                        [attr.aria-label]=\"\n                                                            button.label\n                                                        \"\n                                                        [href]=\"button?.url\"\n                                                        [linkType]=\"\n                                                            button.linkType\n                                                        \"\n                                                        class=\"btn btn_primary\"\n                                                    >\n                                                        <b>{{\n                                                            button.label\n                                                        }}</b>\n                                                        <span\n                                                            class=\"babylon-arrow-right-big\"\n                                                        ></span>\n                                                    </a>\n                                                }\n                                            }\n                                        </div>\n                                    }\n                                    @if (showArrows) {\n                                        <svg\n                                            class=\"arrow-point arrow-down\"\n                                            viewBox=\"0 0 100 50\"\n                                            xmlns=\"http://www.w3.org/2000/svg\"\n                                        >\n                                            <path\n                                                class=\"arrow-fill\"\n                                                d=\"M100 50C72.3857 50 50 27.6143 50 4.37114e-06C50 27.6143 27.6143 50 0 50L100 50Z\"\n                                            />\n                                        </svg>\n                                    }\n                                }\n                            </div>\n                            <div class=\"img-container-2 cs_mb_lg_40\">\n                                @if (items?.length) {\n                                    <img\n                                        [src]=\"\n                                            items?.[1]?.img?.src ||\n                                            'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                        \"\n                                        [alt]=\"items?.[1]?.img?.alt\"\n                                        class=\"cs_feature_thumb_1 cs--radius\"\n                                        loading=\"lazy\"\n                                    />\n                                }\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n</section>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { BabylonImageI } from '../../../interfaces/babylon-image.interface';\nimport { BabylonButtonI } from '../../../interfaces/babylon-button.interface';\nimport { BabylonTextInfoI } from '../../../interfaces/babylon-text-info.interface';\nimport { CommonModule } from '@angular/common';\nimport { BabylonSlidersDirective } from '../../../directives/babylon-sliders/babylon-sliders.directive';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport { BabylonAdvInfoI } from '../babylon-advantages/babylon-advantages-info.interface';\nimport { BabylonDynamicHeadingComponent } from '../../shared';\nimport { BabylonTagsI } from '../../../interfaces';\n\n@Component({\n    selector: 'lib-babylon-info2img',\n    standalone: true,\n    imports: [CommonModule, BabylonSlidersDirective, BabylonLinkTypeDirective, BabylonDynamicHeadingComponent],\n    templateUrl: './babylon-info2img.component.html',\n    styleUrl: './babylon-info2img.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonInfo2imgComponent {\n    @Input() rightSide: boolean = false;\n    @Input() texts?: BabylonTextInfoI;\n    @Input() advantages?: BabylonAdvInfoI[];\n    @Input() button?: BabylonButtonI;\n    @Input() images?: BabylonImageI[];\n    @Input() imagesSmall?: BabylonImageI[];\n    @Input() tags?: BabylonTagsI;\n\n    btnClick(e: Event): void {\n        e.preventDefault();\n    }\n}\n","<section class=\"babylon__info2img margin-main\">\n    <div class=\"container\">\n        <div\n            class=\"row align-items-center cs_gap_y_45\"\n            [ngClass]=\"{ 'column-reverse': rightSide }\"\n        >\n            @if (rightSide) {\n                <div class=\"col-lg-5\">\n                    <div class=\"intro_info\">\n                        @if (texts?.pretitle) {\n                            <lib-babylon-dynamic-heading\n                                [tag]=\"tags?.pretitle || 'h3'\"\n                                cssClass=\"pretitle\"\n                                [content]=\"texts?.pretitle\"\n                            ></lib-babylon-dynamic-heading>\n                        }\n                        @if (texts?.title) {\n                            <lib-babylon-dynamic-heading\n                                [tag]=\"tags?.title || 'h2'\"\n                                cssClass=\"title\"\n                                [content]=\"texts?.title\"\n                            ></lib-babylon-dynamic-heading>\n                        }\n                        @if (texts?.text) {\n                            <lib-babylon-dynamic-heading\n                                [tag]=\"tags?.text || 'p'\"\n                                cssClass=\"text\"\n                                [content]=\"texts?.text\"\n                            ></lib-babylon-dynamic-heading>\n                        }\n                        <ul class=\"cs_list cs_style_1 cs_mp_0\">\n                            @if (advantages) {\n                                @for (adv of advantages; track $index) {\n                                    <li>\n                                        <div class=\"info--icon icon--40\">\n                                            @if (adv?.icon) {\n                                                <i\n                                                    class=\"icon--svg\"\n                                                    [class]=\"adv?.icon\"\n                                                ></i>\n                                            }\n                                        </div>\n                                        @if (adv?.text) {\n                                            <p class=\"text mb--0\">\n                                                {{ adv?.text }}\n                                                @if (adv?.icon) {\n                                                    <span class=\"text--small\">{{\n                                                        adv?.icon\n                                                    }}</span>\n                                                }\n                                            </p>\n                                        }\n                                    </li>\n                                }\n                            }\n                        </ul>\n                        @if (button?.label) {\n                            <div class=\"btns__box\">\n                                <a\n                                    [href]=\"button?.url\"\n                                    [linkType]=\"button?.linkType\"\n                                    class=\"btn btn_primary\"\n                                >\n                                    <b>{{ button?.label }}</b>\n                                    <span\n                                        class=\"babylon-arrow-right-big\"\n                                    ></span>\n                                </a>\n                            </div>\n                        }\n                    </div>\n                </div>\n                <div\n                    class=\"col-lg-7 wow fadeIn\"\n                    data-wow-duration=\"0.8s\"\n                    data-wow-delay=\"0.2s\"\n                >\n                    <div class=\"cs_pl_110\">\n                        <div class=\"cs_slider cs_style_1 cs_slider_gap_24\">\n                            <div\n                                class=\"cs_slider_container\"\n                                sliders=\"cs_slider_container\"\n                                data-autoplay=\"0\"\n                                data-loop=\"1\"\n                                data-speed=\"600\"\n                                data-center=\"0\"\n                                data-variable-width=\"0\"\n                                data-slides-per-view=\"responsive\"\n                                data-xs-slides=\"1\"\n                                data-sm-slides=\"1\"\n                                data-md-slides=\"1\"\n                                data-mlg-slides=\"1\"\n                                data-lg-slides=\"1\"\n                                data-add-slides=\"1\"\n                            >\n                                <div class=\"cs_slider_wrapper\">\n                                    @if (images) {\n                                        @for (image of images; track $index) {\n                                            <div class=\"cs_slide\">\n                                                <div\n                                                    class=\"cs_image_layer cs_style_1 position-relative no-border\"\n                                                >\n                                                    <div\n                                                        class=\"cs_image_layer_1_wrap\"\n                                                    >\n                                                        <div\n                                                            class=\"cs_image_layer_1\"\n                                                        >\n                                                            <img\n                                                                [src]=\"\n                                                                    image?.src\n                                                                \"\n                                                                [alt]=\"\n                                                                    image?.alt\n                                                                \"\n                                                                class=\"cs--radius\"\n                                                                loading=\"lazy\"\n                                                            />\n                                                        </div>\n                                                    </div>\n                                                    @if (\n                                                        imagesSmall &&\n                                                        imagesSmall[$index].src\n                                                    ) {\n                                                        <div\n                                                            class=\"cs_image_layer_2_wrap\"\n                                                        >\n                                                            <div\n                                                                class=\"cs_image_layer_2\"\n                                                            >\n                                                                <img\n                                                                    [src]=\"\n                                                                        imagesSmall[\n                                                                            $index\n                                                                        ].src\n                                                                    \"\n                                                                    [alt]=\"\n                                                                        imagesSmall[\n                                                                            $index\n                                                                        ].alt\n                                                                    \"\n                                                                    class=\"cs--radius\"\n                                                                    loading=\"lazy\"\n                                                                />\n                                                            </div>\n                                                        </div>\n                                                    }\n                                                </div>\n                                            </div>\n                                        }\n                                    }\n                                </div>\n                                @if (images && images.length > 1) {\n                                    <div\n                                        class=\"cs_pagination cs_style_1 cs_type_3 cs_type_3\"\n                                    ></div>\n                                }\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            } @else {\n                <div\n                    class=\"col-lg-7 wow fadeIn\"\n                    data-wow-duration=\"0.8s\"\n                    data-wow-delay=\"0.2s\"\n                >\n                    <div class=\"cs_pr_110\">\n                        <div class=\"cs_slider cs_style_1 cs_slider_gap_24\">\n                            <div\n                                class=\"cs_slider_container\"\n                                sliders=\"cs_slider_container\"\n                                data-autoplay=\"0\"\n                                data-loop=\"1\"\n                                data-speed=\"600\"\n                                data-center=\"0\"\n                                data-variable-width=\"0\"\n                                data-slides-per-view=\"responsive\"\n                                data-xs-slides=\"1\"\n                                data-sm-slides=\"1\"\n                                data-md-slides=\"1\"\n                                data-mlg-slides=\"1\"\n                                data-lg-slides=\"1\"\n                                data-add-slides=\"1\"\n                            >\n                                <div class=\"cs_slider_wrapper\">\n                                    @if (images?.length) {\n                                        @for (image of images; track $index) {\n                                            <div class=\"cs_slide\">\n                                                <div\n                                                    class=\"cs_image_layer cs_style_1 position-relative no-border\"\n                                                >\n                                                    <div\n                                                        class=\"cs_image_layer_1_wrap\"\n                                                    >\n                                                        <div\n                                                            class=\"cs_image_layer_1\"\n                                                        >\n                                                            <img\n                                                                [src]=\"\n                                                                    image?.src\n                                                                \"\n                                                                [alt]=\"\n                                                                    image?.alt\n                                                                \"\n                                                                class=\"cs--radius\"\n                                                                loading=\"lazy\"\n                                                            />\n                                                        </div>\n                                                    </div>\n                                                    @if (\n                                                        imagesSmall &&\n                                                        imagesSmall[$index].src\n                                                    ) {\n                                                        <div\n                                                            class=\"cs_image_layer_2_wrap\"\n                                                        >\n                                                            <div\n                                                                class=\"cs_image_layer_2\"\n                                                            >\n                                                                <img\n                                                                    [src]=\"\n                                                                        imagesSmall[\n                                                                            $index\n                                                                        ].src\n                                                                    \"\n                                                                    [alt]=\"\n                                                                        imagesSmall[\n                                                                            $index\n                                                                        ].alt\n                                                                    \"\n                                                                    class=\"cs--radius\"\n                                                                    loading=\"lazy\"\n                                                                />\n                                                            </div>\n                                                        </div>\n                                                    }\n                                                </div>\n                                            </div>\n                                        }\n                                    }\n                                </div>\n                                @if (images && images.length > 1) {\n                                    <div\n                                        class=\"cs_pagination cs_style_1 cs_type_3 cs_type_3--left\"\n                                    ></div>\n                                }\n                            </div>\n                        </div>\n                    </div>\n                </div>\n                <div class=\"col-lg-5\">\n                    <div class=\"intro_info\">\n                        @if (texts?.pretitle) {\n                            <h3 class=\"pretitle\">{{ texts?.pretitle }}</h3>\n                        }\n                        @if (texts?.title) {\n                            <h2 class=\"title\">{{ texts?.title }}</h2>\n                        }\n                        @if (texts?.text) {\n                            <p class=\"text\">{{ texts?.text }}</p>\n                        }\n                        <ul class=\"cs_list cs_style_1 cs_mp_0\">\n                            @if (advantages?.length) {\n                                @for (adv of advantages; track $index) {\n                                    <li>\n                                        <div class=\"info--icon icon--40\">\n                                            @if (adv?.icon) {\n                                                <i\n                                                    class=\"icon--svg\"\n                                                    [class]=\"adv?.icon\"\n                                                ></i>\n                                            }\n                                        </div>\n                                        @if (adv?.text) {\n                                            <p class=\"text mb--0\">\n                                                {{ adv?.text }}\n                                                @if (adv?.icon) {\n                                                    <span class=\"text--small\">{{\n                                                        adv?.icon\n                                                    }}</span>\n                                                }\n                                            </p>\n                                        }\n                                    </li>\n                                }\n                            }\n                        </ul>\n                        @if (button?.label) {\n                            <div class=\"btns__box\">\n                                <a\n                                    [attr.aria-label]=\"button?.label\"\n                                    [href]=\"button?.url\"\n                                    [linkType]=\"button?.linkType\"\n                                    class=\"btn btn_primary\"\n                                >\n                                    <b>{{ button?.label }}</b>\n                                    <span\n                                        class=\"babylon-arrow-right-big\"\n                                    ></span>\n                                </a>\n                            </div>\n                        }\n                    </div>\n                </div>\n            }\n        </div>\n    </div>\n</section>\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { BabylonDataBackgroundDirective } from '../../../directives/data-background/data-background.directive';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport { BabylonTagsI, BabylonTextsColorsI } from '../../../interfaces';\nimport { BabylonButtonI } from '../../../interfaces/babylon-button.interface';\nimport { BabylonImageI } from '../../../interfaces/babylon-image.interface';\nimport { BabylonDynamicHeadingComponent } from '../../shared';\n\n@Component({\n    selector: 'lib-babylon-info2img-big',\n    standalone: true,\n    imports: [\n        CommonModule,\n        BabylonLinkTypeDirective,\n        BabylonDataBackgroundDirective,\n        BabylonDynamicHeadingComponent,\n    ],\n    templateUrl: './babylon-info2img-big.component.html',\n    styleUrl: './babylon-info2img-big.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonInfo2imgBigComponent {\n    @Input() pretitle?: string;\n    @Input() title?: string;\n    @Input() text?: string;\n    @Input() button?: BabylonButtonI;\n    @Input() img?: BabylonImageI;\n    @Input() imgSmall?: BabylonImageI;\n    @Input() pretitle2?: string;\n    @Input() title2?: string;\n    @Input() text2?: string;\n    @Input() button2?: BabylonButtonI;\n    @Input() tags?: BabylonTagsI;\n    @Input() textColors?: BabylonTextsColorsI;\n}\n","<section class=\"babylon__infoImgBig\">\n    <div class=\"babylon__infoImgBig--content margin-main\">\n        <div class=\"babylon__infoImgBig--boxImg\">\n            @if (img) {\n                <figure\n                    class=\"\"\n                    role=\"img\"\n                    dataBackground=\"url('{{ img.src }}')\"\n                ></figure>\n            }\n        </div>\n\n        <div class=\"babylon__infoImgBig--boxInfo\">\n            <div class=\"row justify-content-center align-items-center\">\n                <div class=\"col-lg-8\">\n                    <div class=\"intro_info align--center no-align\">\n                        @if (pretitle) {\n                            <lib-babylon-dynamic-heading\n                                [tag]=\"tags?.pretitle || 'h4'\"\n                                cssClass=\"pretitle-top mb--0\"\n                                [content]=\"pretitle\"\n                                [color]=\"textColors?.pretitle\"\n                            ></lib-babylon-dynamic-heading>\n                        }\n                        @if (title) {\n                            <lib-babylon-dynamic-heading\n                                [tag]=\"tags?.title || 'h1'\"\n                                cssClass=\"title\"\n                                [content]=\"title\"\n                                [color]=\"textColors?.title\"\n                            ></lib-babylon-dynamic-heading>\n                        }\n                        @if (text) {\n                            <p class=\"text\">{{ text }}</p>\n                        }\n                        @if (button) {\n                            <div class=\"btns__box align--center\">\n                                <a\n                                    [attr.aria-label]=\"button.label\"\n                                    [href]=\"button.url\"\n                                    [linkType]=\"button.linkType\"\n                                    class=\"btn btn_primary btn--light\"\n                                    >{{ button.label }}</a\n                                >\n                            </div>\n                        }\n                    </div>\n                </div>\n            </div>\n        </div>\n\n        <div class=\"babylon__infoImgBig--boxDes\">\n            <div class=\"container\">\n                <div class=\"row\">\n                    <div class=\"col-lg-7 boxDes--text\">\n                        <div class=\"intro_info align--left\">\n                            @if (title2) {\n                                <h2 class=\"title mb--0\">{{ title2 }}</h2>\n                            }\n                            @if (pretitle2) {\n                                <h4 class=\"subtitle\">{{ pretitle2 }}</h4>\n                            }\n                            @if (text2) {\n                                <p class=\"text\">{{ text2 }}</p>\n                            }\n                            @if (button2) {\n                                <div class=\"btns__box align--center\">\n                                    <a\n                                        [attr.aria-label]=\"button2.label\"\n                                        [href]=\"button2.url\"\n                                        [linkType]=\"button2.linkType\"\n                                        class=\"btn btn_primary\"\n                                        >{{ button2.label }}</a\n                                    >\n                                </div>\n                            }\n                        </div>\n                    </div>\n                    <div class=\"col-lg-4 pl--60 boxDes--img\">\n                        <div class=\"cs_image_layer boxDes_img\">\n                            @if (imgSmall) {\n                                <figure>\n                                    <img\n                                        [src]=\"imgSmall.src\"\n                                        [alt]=\"imgSmall.alt\"\n                                        class=\"cs--radius\"\n                                        loading=\"lazy\"\n                                    />\n                                </figure>\n                                <!-- <figure class=\"cs_video_block_bg1 h-100 w-100 position-absolute1 start-01 top-01 cs_bg_filed\" role=\"img\"   style=\"background-image:url('https://dummyimage.com/400x600/CCCCCC/ffffff');\"></figure> -->\n                            }\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n</section>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { BabylonButtonI } from '../../../interfaces/babylon-button.interface';\nimport { BabylonImageI } from '../../../interfaces/babylon-image.interface';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n    selector: 'lib-babylon-info3img',\n    standalone: true,\n    imports: [CommonModule],\n    templateUrl: './babylon-info3img.component.html',\n    styleUrl: './babylon-info3img.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonInfo3imgComponent {\n    @Input() title?: string;\n    @Input() pretitle?: string;\n    @Input() ndtitle?: string;\n    @Input() button?: BabylonButtonI;\n    @Input() images?: BabylonImageI[];\n\n    btnClick(e: Event): void {\n        e.preventDefault();\n    }\n}\n","<section class=\"babylon__info3ing margin-main\">\n    <div class=\"container-fluid p-0\">\n        <div class=\"container\">\n            <div class=\"intro_info align--center no-align\">\n                @if (pretitle) {\n                    <h3 class=\"pretitle\">{{ pretitle }}</h3>\n                }\n                @if (title) {\n                    <h2 class=\"title\">{{ title }}</h2>\n                }\n            </div>\n        </div>\n\n        <div class=\"cs_image_layer cs_style_5 position-relative\">\n            @if (ndtitle) {\n                <div\n                    class=\"cs_moving_text_wrap cs_style_1 cs_fs_89 cs_accent_color cs_primary_font text-uppercase\"\n                >\n                    <div class=\"cs_moving_text_in\">\n                        <div class=\"cs_moving_text title--big\">\n                            {{ ndtitle }}\n                        </div>\n                        <div class=\"cs_moving_text title--big\">\n                            {{ ndtitle }}\n                        </div>\n                    </div>\n                </div>\n            }\n            <div class=\"cs_image_layer_in\">\n                @if (images?.length) {\n                    @for (image of images?.slice(0, 3); track $index) {\n                        <div class=\"cs_image_layer_item\">\n                            <img\n                                [src]=\"\n                                    image?.src ||\n                                    'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                \"\n                                alt=\"Dine\"\n                                class=\"cs--radius\"\n                                loading=\"lazy\"\n                            />\n                        </div>\n                    }\n                }\n            </div>\n        </div>\n        @if (button?.label) {\n            <div class=\"btns__box align--center\">\n                <a\n                    [attr.aria-label]=\"button?.label\"\n                    [href]=\"button?.url\"\n                    class=\"btn btn_primary\"\n                    (click)=\"btnClick($event)\"\n                >\n                    <b>{{ button?.label }}</b>\n                    <span class=\"babylon-arrow-right-big\"></span>\n                </a>\n            </div>\n        }\n    </div>\n</section>\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { BabylonButtonI } from '../../../interfaces/babylon-button.interface';\nimport { BabylonImageI } from '../../../interfaces/babylon-image.interface';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\n\n@Component({\n    selector: 'lib-babylon-info4img',\n    standalone: true,\n    imports: [CommonModule, BabylonLinkTypeDirective],\n    templateUrl: './babylon-info4img.component.html',\n    styleUrl: './babylon-info4img.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonInfo4imgComponent {\n    @Input() pretitle?: string;\n    @Input() title?: string;\n    @Input() text?: string;\n    @Input() button?: BabylonButtonI;\n    @Input() image1?: BabylonImageI;\n    @Input() image2?: BabylonImageI;\n    @Input() image3?: BabylonImageI;\n    @Input() image4?: BabylonImageI;\n}\n","<section class=\"babylon__info4img margin-main\">\n    <div class=\"owl-carousel owl-theme carousel_item_11 carousel_item_arrow\">\n        <div class=\"babylon__gallery-slider--content\">\n            @if (image1) {\n                <div class=\"babylon__gallery-slider--col col-1\">\n                    <div class=\"babylon__gallery-slider--item\">\n                        <img\n                            [src]=\"image1.src\"\n                            [alt]=\"image1.alt\"\n                            loading=\"lazy\"\n                        />\n                    </div>\n                </div>\n            }\n            @if (image2) {\n                <div class=\"babylon__gallery-slider--col col-4\">\n                    <div class=\"babylon__gallery-slider--item\">\n                        <img\n                            [src]=\"image2.src\"\n                            [alt]=\"image2.alt\"\n                            loading=\"lazy\"\n                        />\n                    </div>\n                </div>\n            }\n            <div class=\"babylon__gallery-slider--col col-3\">\n                <div class=\"babylon__gallery-slider--item\">\n                    <div class=\"intro_info align--center no-align\">\n                        @if (pretitle) {\n                            <h4 class=\"pretitle--small\">{{ pretitle }}</h4>\n                        }\n                        @if (title) {\n                            <h2 class=\"title--small\">{{ title }}</h2>\n                        }\n                        @if (text) {\n                            <p class=\"text\">{{ text }}</p>\n                        }\n                        @if (button) {\n                            <div class=\"btns__box align--center\">\n                                <a\n                                    [attr.aria-label]=\"button.label\"\n                                    [href]=\"button.url\"\n                                    [linkType]=\"button.linkType\"\n                                    class=\"btn btn-primary\"\n                                >\n                                    {{ button.label }}\n                                </a>\n                            </div>\n                        }\n                    </div>\n                </div>\n            </div>\n            @if (image3) {\n                <div class=\"babylon__gallery-slider--col col-4\">\n                    <div class=\"babylon__gallery-slider--item\">\n                        <img\n                            [src]=\"image3.src\"\n                            [alt]=\"image3.alt\"\n                            loading=\"lazy\"\n                        />\n                    </div>\n                </div>\n            }\n            @if (image4) {\n                <div class=\"babylon__gallery-slider--col col-5\">\n                    <div class=\"babylon__gallery-slider--item\">\n                        <img\n                            [src]=\"image4.src\"\n                            [alt]=\"image4.alt\"\n                            loading=\"lazy\"\n                        />\n                    </div>\n                </div>\n            }\n        </div>\n    </div>\n</section>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { BabylonImageI } from '../../../interfaces/babylon-image.interface';\nimport { BabylonButtonI } from '../../../interfaces/babylon-button.interface';\nimport { CommonModule } from '@angular/common';\nimport { BabylonLightGalleryDirective } from '../../../directives/babylon-galleries/babylon-light-gallery.directive';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\n\n@Component({\n    selector: 'lib-babylon-items-grid',\n    standalone: true,\n    imports: [\n        CommonModule,\n        BabylonLightGalleryDirective,\n        BabylonLinkTypeDirective,\n    ],\n    templateUrl: './babylon-items-grid.component.html',\n    styleUrl: './babylon-items-grid.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonItemsGridComponent {\n    @Input() labels?: BabylonItemGridItem;\n    @Input() images?: BabylonImageI[];\n    @Input() buttons?: BabylonButtonI[];\n\n    btnClick(e: Event): void {\n        e.preventDefault();\n    }\n}\n\nexport interface BabylonItemGridItem {\n    title?: string;\n    subtitle?: string;\n    pretitle?: string;\n    text?: string;\n    description?: string;\n}\n","<section class=\"babylon__items-grid margin-main\">\n    <div class=\"container\">\n        <div class=\"intro_info align--center no-align\">\n            @if (labels?.pretitle) {\n                <h3 class=\"pretitle\">{{ labels?.pretitle }}</h3>\n            }\n            @if (labels?.title) {\n                <h2\n                    class=\"title wow fadeInUp\"\n                    data-wow-duration=\"0.8s\"\n                    data-wow-delay=\"0.2s\"\n                >\n                    {{ labels?.title }}\n                </h2>\n            }\n        </div>\n    </div>\n    <div class=\"cs_grid_style_1 cs_lightgallery\" BabylonLightGallery>\n        @if (images?.length) {\n            @for (image of images; track $index) {\n                <div class=\"cs_grid_item\">\n                    <a\n                        [attr.aria-label]=\"image?.title\"\n                        [href]=\"\n                            image?.src ||\n                            'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                        \"\n                        class=\"cs_gallery_item cs_lightbox_item cs_style_1 d-block cs_bg_filed position-relative cs__not_touch-mobile\"\n                        [style.background-image]=\"\n                            'url(' +\n                            (image?.src ||\n                                'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7') +\n                            ')'\n                        \"\n                    >\n                        @if (image?.title) {\n                            <div\n                                class=\"cs_gallery_item_hover cs_center title--small title--small--light cs--radius\"\n                            >\n                                {{ image?.title }}\n                            </div>\n                        }\n                        <img\n                            [src]=\"\n                                image?.src ||\n                                'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                            \"\n                            [alt]=\"image?.alt ?? image?.title ?? 'title'\"\n                            class=\"d-none\"\n                            loading=\"lazy\"\n                        />\n                    </a>\n                </div>\n            }\n        }\n    </div>\n\n    @if (buttons?.[0]?.label) {\n        <div class=\"btns__box align--center\">\n            <a\n                [attr.aria-label]=\"buttons?.[0]?.label\"\n                [href]=\"buttons?.[0]?.url\"\n                [linkType]=\"buttons?.[0]?.linkType\"\n                class=\"btn btn_primary\"\n            >\n                <b>{{ buttons?.[0]?.label }}</b>\n                <span class=\"babylon-arrow-right-big\"></span>\n            </a>\n        </div>\n    }\n</section>\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, inject, Input, Output } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { BabylonImageI } from '../../../interfaces';\n\n@Component({\n    selector: 'lib-babylon-language-modal',\n    standalone: true,\n    imports: [CommonModule],\n    templateUrl: './babylon-language-modal.component.html',\n    styleUrl: './babylon-language-modal.component.scss',\n})\nexport class BabylonLanguageModalComponent {\n    @Input() title?: string;\n    @Input() subtitle?: string;\n    @Input() items?: BabylonLanguageModalItem[];\n    @Input() selected?: BabylonLanguageModalItem;\n    @Input() image?: BabylonImageI;\n\n    @Output() languageSelect = new EventEmitter<BabylonLanguageModalItem>();\n\n    private readonly dialogRef: MatDialogRef<BabylonLanguageModalComponent> =\n        inject(MatDialogRef);\n\n    selectLanguage(language: BabylonLanguageModalItem): void {\n        this.selected = language;\n        this.languageSelect.emit(language);\n    }\n\n    close(): void {\n        this.dialogRef.close();\n    }\n}\n\nexport interface BabylonLanguageModalItem {\n    code?: string;\n    id?: number;\n    name?: string;\n}\n","<div class=\"babylon-languages__close\">\n    <button\n        name=\"close\"\n        class=\"btn btn_primary btn--light babylon-plus btn-responsive\"\n        (click)=\"close()\"\n    >\n        <svg aria-hidden=\"true\" focusable=\"false\">\n            <use href=\"/assets/babylon/svg/close-icon.svg#close-icon\"></use>\n        </svg>\n    </button>\n</div>\n<div class=\"babylon-languages__wrapper\">\n    <div class=\"babylon-languages\">\n        @if (title || subtitle) {\n            <div\n                class=\"babylon-languages__header d-flex flex-column align-itemns-center\"\n            >\n                @if (title) {\n                    <h4 class=\"title--small\">{{ title }}</h4>\n                }\n                @if (subtitle) {\n                    <span class=\"subtitle\">{{ subtitle }}</span>\n                }\n            </div>\n        }\n        @if (items?.length) {\n            <div\n                class=\"babylon-languages__content d-flex flex-column align-items-center\"\n            >\n                @for (item of items; track $index) {\n                    <a\n                        [attr.aria-label]=\"item.name\"\n                        [ngClass]=\"{\n                            'babylon-languages__selected':\n                                item.id == selected?.id,\n                        }\"\n                        class=\"d-flex align-items-center\"\n                        (click)=\"selectLanguage(item)\"\n                        ><span class=\"line\"></span>{{ item.name\n                        }}<span class=\"icon babylon-arrow-right\"></span\n                    ></a>\n                }\n            </div>\n        }\n    </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, inject, Input, Output } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { BabylonLanguageModalItem } from '../babylon-language-modal/babylon-language-modal.component';\nimport { BabylonImageI } from '../../../interfaces';\n\n@Component({\n    selector: 'lib-babylon-language-modal-v2',\n    standalone: true,\n    imports: [CommonModule],\n    templateUrl: './babylon-language-modal-v2.component.html',\n    styleUrl: './babylon-language-modal-v2.component.scss',\n})\nexport class BabylonLanguageModalV2Component {\n    @Input() title?: string;\n    @Input() subtitle?: string;\n    @Input() items?: BabylonLanguageModalItem[];\n    @Input() selected?: BabylonLanguageModalItem;\n    @Input() image?: BabylonImageI;\n\n    @Output() languageSelect = new EventEmitter<BabylonLanguageModalItem>();\n\n    private readonly dialogRef: MatDialogRef<BabylonLanguageModalV2Component> =\n        inject(MatDialogRef);\n\n    selectLanguage(language: BabylonLanguageModalItem): void {\n        this.selected = language;\n        this.languageSelect.emit(language);\n    }\n\n    close(): void {\n        this.dialogRef.close();\n    }\n}\n","<div class=\"modal modal__language\">\n    <div class=\"modal__inner\">\n        <div\n            class=\"modal__close js-close\"\n            data-modal_name=\"language\"\n            role=\"button\"\n            (click)=\"close()\"\n        >\n            <svg aria-hidden=\"true\" focusable=\"false\">\n                <use href=\"/assets/babylon/svg/icon-close.svg#icon-close\"></use>\n            </svg>\n        </div>\n        <div class=\"modal__box\">\n            <div class=\"modal__check-list--outer\">\n                @if (title) {\n                    <h2 class=\"modal__title\">{{ title }}</h2>\n                }\n                @if (items?.length) {\n                    <div class=\"modal__check-list\">\n                        @for (item of items; track $index) {\n                            <div>\n                                <label\n                                    class=\"switch\"\n                                    role=\"button\"\n                                    (btnClick)=\"close()\"\n                                >\n                                    <input\n                                        type=\"radio\"\n                                        checked=\"\"\n                                        name=\"lang\"\n                                    />\n                                    <div\n                                        class=\"btn btn__primary\"\n                                        (click)=\"selectLanguage(item)\"\n                                    >\n                                        <span>{{ item.name }}</span>\n                                    </div>\n                                </label>\n                            </div>\n                        }\n                    </div>\n                }\n            </div>\n        </div>\n        @if (image) {\n            <figure class=\"modal__language--graphic\">\n                <img [src]=\"image\" />\n            </figure>\n        }\n    </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, inject, Input, Output } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { BabylonLanguageModalItem } from '../babylon-language-modal/babylon-language-modal.component';\nimport { BabylonImageI } from '../../../interfaces';\n\n@Component({\n    selector: 'lib-babylon-language-modal-v3',\n    standalone: true,\n    imports: [CommonModule],\n    templateUrl: './babylon-language-modal-v3.component.html',\n    styleUrl: './babylon-language-modal-v3.component.scss',\n})\nexport class BabylonLanguageModalV3Component {\n    @Input() title?: string;\n    @Input() subtitle?: string;\n    @Input() items?: BabylonLanguageModalItem[];\n    @Input() selected?: BabylonLanguageModalItem;\n    @Input() image?: BabylonImageI;\n\n    @Output() languageSelect = new EventEmitter<BabylonLanguageModalItem>();\n\n    private readonly dialogRef: MatDialogRef<BabylonLanguageModalV3Component> =\n        inject(MatDialogRef);\n\n    selectLanguage(language: BabylonLanguageModalItem): void {\n        this.selected = language;\n        this.languageSelect.emit(language);\n    }\n\n    close(): void {\n        this.dialogRef.close();\n    }\n}\n","<section id=\"idiomas-form\" class=\"mdl-idiomas\">\n    <div class=\"mod-close\">\n        <button\n            class=\"carousel__button is-close mdl-idiomas__close\"\n            title=\"Close\"\n            (click)=\"close()\"\n        >\n            <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n                <path d=\"M20 20L4 4m16 0L4 20\"></path>\n            </svg>\n        </button>\n    </div>\n    <div class=\"mod-body\">\n        @if (title) {\n            <div class=\"m-title\">{{ title }}</div>\n        }\n        @if (items) {\n            <div class=\"mdl-container\">\n                <div class=\"m-buttons\">\n                    @for (item of items; track $index) {\n                        <button\n                            [ngClass]=\"{\n                                selected: selected?.code === item.code,\n                            }\"\n                            class=\"m-button-sm underline\"\n                            (click)=\"selectLanguage(item)\"\n                        >\n                            {{ item.name }}\n                        </button>\n                    }\n                </div>\n            </div>\n        }\n    </div>\n</section>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport { BabylonImageI } from '../../../interfaces/babylon-image.interface';\nimport { BabylonTagsI, BabylonTextsColorsI } from '../../../interfaces';\nimport { BabylonDynamicHeadingComponent } from '../../shared';\n\n@Component({\n    selector: 'lib-babylon-legal',\n    standalone: true,\n    imports: [RouterModule, BabylonDynamicHeadingComponent],\n    templateUrl: './babylon-legal.component.html',\n    styleUrl: './babylon-legal.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonLegalComponent {\n    @Input() pretitle?: string;\n    @Input() title?: string;\n    @Input() description?: string;\n    @Input() img?: BabylonImageI;\n    @Input() tags?: BabylonTagsI;\n    @Input() textColors?: BabylonTextsColorsI;\n}\n","<section class=\"babylon__legal margin-main\">\n    <div class=\"container\">\n        <div class=\"row align-items-start cs_gap_y_30\">\n            <div class=\"col-lg-6 cs_pr_110\">\n                <div class=\"intro_info no-align\">\n                    @if (pretitle) {\n                        <lib-babylon-dynamic-heading\n                            [tag]=\"tags?.pretitle || 'h2'\"\n                            cssClass=\"pretitle mb--10\"\n                            [color]=\"textColors?.pretitle\"\n                            [content]=\"pretitle\"\n                        ></lib-babylon-dynamic-heading>\n                    }\n                    @if (title) {\n                        <lib-babylon-dynamic-heading\n                            [tag]=\"tags?.title || 'h1'\"\n                            cssClass=\"title\"\n                            [color]=\"textColors?.title\"\n                            [content]=\"title\"\n                        ></lib-babylon-dynamic-heading>\n                    }\n                    @if (description) {\n                        <lib-babylon-dynamic-heading\n                            [tag]=\"tags?.description || 'p'\"\n                            cssClass=\"text\"\n                            [color]=\"textColors?.description\"\n                            [content]=\"description\"\n                        ></lib-babylon-dynamic-heading>\n                    }\n                </div>\n            </div>\n            @if (img) {\n                <div class=\"col-lg-6 sticky-image\">\n                    <div\n                        class=\"cs_pr_1101 cs_image_layer cs_style_3\"\n                    >\n                        <img\n                            [src]=\"img.src\"\n                            [alt]=\"img.alt\"\n                            class=\"cs--radius\"\n                            loading=\"lazy\"\n                        />\n                    </div>\n                </div>\n            }\n        </div>\n    </div>\n</section>\n","import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    computed,\n    ElementRef,\n    EventEmitter,\n    Inject,\n    Input,\n    OnDestroy,\n    OnInit,\n    PLATFORM_ID,\n    signal,\n    ViewChild,\n} from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { Subject, takeUntil, tap } from 'rxjs';\nimport { SlickInitDirective } from '../../../directives/sliders/slick-init.directive';\nimport { BabylonTextInfoI } from '../../../interfaces';\nimport { BabylonFilterModalComponent } from '../babylon-filter-modal/babylon-filter-modal.component';\nimport { BabylonGalleryFilter, BabylonGalleryItem } from '../babylon-gallery';\n\n@Component({\n    selector: 'lib-babylon-lis-c2-img-vid',\n    standalone: true,\n    imports: [CommonModule, SlickInitDirective],\n    templateUrl: './babylon-lis-c2-img-vid.component.html',\n    styleUrl: './babylon-lis-c2-img-vid.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonLisC2ImgVidComponent implements OnInit, OnDestroy {\n    @Input() texts?: BabylonTextInfoI;\n    @Input() title?: string;\n    @Input() roomTitle?: string;\n    @Input() filterTitle?: string;\n\n    imagesData = signal<BabylonGalleryItem[]>([]);\n\n    private _filters?: BabylonGalleryFilter[];\n\n    get filters(): BabylonGalleryFilter[] | undefined {\n        return this._filters;\n    }\n\n    @Input() set filters(val: any) {\n        if (\n            val &&\n            typeof val === 'object' &&\n            !Array.isArray(val) &&\n            val.filters\n        ) {\n            this._filters = val.filters;\n\n            if (val.images) {\n                this.imagesData.set(val.images);\n            }\n        } else {\n            this._filters = val;\n        }\n\n        if (this._filters?.length) {\n            this.selectAllItems();\n        }\n    }\n\n    @Input() set images(val: BabylonGalleryItem[]) {\n        if (val) {\n            this.imagesData.set(val);\n        }\n    }\n\n    @Input() filtersBtn?: string;\n    @Input() roomsBtn?: string;\n\n    filterSelected = signal<BabylonGalleryFilter | undefined>(undefined);\n\n    destroy$ = new Subject<boolean>();\n\n    imagesDisplayed = computed(() => {\n        const currentFilter = this.filterSelected();\n        const allImgs = this.imagesData();\n\n        if (!currentFilter || currentFilter.all) {\n            return allImgs;\n        }\n\n        return allImgs.filter((item) => item.filter === currentFilter.id);\n    });\n\n    selected = 0;\n    @ViewChild('roomsModal', { static: true })\n    roomsModal!: ElementRef<HTMLElement>;\n    @ViewChild('imagesModal', { static: true })\n    imagesModal!: ElementRef<HTMLElement>;\n\n    activeModal: string | null = null;\n\n    constructor(\n        private readonly dialog: MatDialog,\n        @Inject(PLATFORM_ID) private platformId: object\n    ) {}\n\n    selectFilter(num: number, filter: BabylonGalleryFilter): void {\n        this.selected = num;\n        if (filter.all) {\n            this.selectAllItems();\n        } else {\n            this.filterItems(filter);\n        }\n    }\n\n    openFiltersModal(rooms?: boolean): void {\n        const dialogRef = this.dialog.open(BabylonFilterModalComponent, {\n            width: '100vw',\n            height: '100vh',\n            maxWidth: '100vw',\n            hasBackdrop: true,\n        });\n\n        const event = new EventEmitter<BabylonGalleryFilter>();\n\n        event\n            .pipe(\n                takeUntil(this.destroy$),\n                tap((filter?: BabylonGalleryFilter) => {\n                    this.filterItems(filter);\n                })\n            )\n            .subscribe();\n\n        dialogRef.componentInstance.filters = this.filters?.filter(\n            (filter: any) => (!rooms && !filter.room) || (rooms && filter.room)\n        );\n\n        dialogRef.componentInstance.filterSelect = event;\n        dialogRef.componentInstance.title = rooms\n            ? this.roomTitle || this.texts?.roomTitle\n            : this.filterTitle;\n        dialogRef.componentInstance.filterSelect = event;\n    }\n\n    ngOnInit(): void {}\n\n    ngOnDestroy(): void {\n        this.destroy$.next(true);\n        this.destroy$.complete();\n    }\n\n    filterItems(filter?: BabylonGalleryFilter): void {\n        if (filter) {\n            !filter.rooms\n                ? this.filterSelected.set(filter)\n                : this.openFiltersModal(true);\n        }\n    }\n\n    selectAllItems(): void {\n        let todosLosFiltros =\n            this.filters?.find((f: any) => f.all) ||\n            (this.filters?.length ? this.filters[0] : undefined);\n        if (todosLosFiltros) {\n            this.filterSelected.set(todosLosFiltros);\n        }\n    }\n\n    clickedIndex = 0;\n\n    openModal(name: string, index?: number): void {\n        if (index !== undefined) {\n            this.clickedIndex = index;\n        }\n\n        this.activeModal = name;\n        this.syncBodyClasses();\n\n        setTimeout(() => {\n            this.goToSlide(this.clickedIndex);\n        }, 50);\n    }\n\n    get flatImages(): BabylonGalleryItem[] {\n        return this.filters?.flatMap((f: any) => f.multimedia ?? []) ?? [];\n    }\n\n    goToSlide(index: number) {\n        const sliderElement = document.querySelector(\n            '.babylon_lisc2imgvid__slider'\n        );\n        if (sliderElement && (window as any).$) {\n            (window as any)\n                .$('.babylon_lisc2imgvid__slider')\n                .slick('slickGoTo', index);\n        }\n    }\n\n    closeModal(name: string): void {\n        if (this.activeModal === name) {\n            this.activeModal = null;\n            this.syncBodyClasses();\n        }\n    }\n\n    private syncBodyClasses(): void {\n        if (!isPlatformBrowser(this.platformId)) return;\n\n        const body = document.body;\n\n        const roomsModalElement = this.roomsModal?.nativeElement;\n        const imagesModalElement = this.imagesModal?.nativeElement;\n\n        body.classList.remove('modal--open', 'rooms', 'images');\n        if (roomsModalElement) {\n            roomsModalElement.classList.remove('modal--open', 'rooms');\n        }\n        if (imagesModalElement) {\n            imagesModalElement.classList.remove('modal--open', 'images');\n        }\n\n        if (this.activeModal) {\n            body.classList.add('modal--open', this.activeModal);\n\n            let activeModalElement: HTMLElement | undefined;\n            if (this.activeModal === 'rooms' && roomsModalElement) {\n                activeModalElement = roomsModalElement;\n            } else if (this.activeModal === 'images' && imagesModalElement) {\n                activeModalElement = imagesModalElement;\n            }\n\n            if (activeModalElement) {\n                activeModalElement.classList.add(\n                    'modal--open',\n                    this.activeModal\n                );\n            }\n        }\n    }\n}\n","<section class=\"babylon_lisc2imgvid margin-main\">\n    <div class=\"container\">\n        <div class=\"babylon_lisc2imgvid--header\">\n            @if (title || texts?.title) {\n                <h2 class=\"babylon_lisc2imgvid--header-title title\">\n                    {{ title || texts?.title }}\n                </h2>\n                <hr />\n            }\n\n            @if (filters?.length) {\n                <div class=\"babylon_lisc2imgvid--navbar-desktop\">\n                    <ul>\n                        @for (filter of filters; track $index) {\n                            @if (filter && !filter.room && !filter.rooms) {\n                                <li\n                                    class=\"subtitle babylon_lisc2imgvid__filter\"\n                                    (click)=\"selectFilter($index, filter)\"\n                                    [ngClass]=\"{\n                                        'babylon_lisc2imgvid__filter--selected':\n                                            selected === $index,\n                                    }\"\n                                >\n                                    {{ filter.text }}\n                                </li>\n                            }\n                            @if (filter && filter.rooms) {\n                                <li\n                                    class=\"subtitle babylon_lisc2imgvid__filter\"\n                                    (click)=\"openFiltersModal(true)\"\n                                    [ngClass]=\"{\n                                        'babylon_lisc2imgvid__filter--selected':\n                                            selected === $index,\n                                    }\"\n                                >\n                                    {{ filter.text }}\n                                </li>\n                            }\n                        }\n                    </ul>\n                </div>\n            }\n\n            <div class=\"babylon_lisc2imgvid--navbar-mobile\">\n                <div\n                    class=\"babylon_lisc2imgvid--filter-buttons d-flex justify-content-center\"\n                >\n                    @if (filtersBtn) {\n                        <button\n                            class=\"d-flex justify-content-between align-items-center\"\n                            (click)=\"openFiltersModal(false)\"\n                        >\n                            {{ filtersBtn }} <span>=</span>\n                        </button>\n                    }\n\n                    <hr />\n\n                    @if (roomsBtn) {\n                        <button\n                            class=\"d-flex justify-content-between align-items-center\"\n                            (click)=\"openFiltersModal(true)\"\n                        >\n                            {{ roomsBtn }} <span>=</span>\n                        </button>\n                    }\n                </div>\n            </div>\n        </div>\n        <div class=\"babylon_lisc2imgvid--gallery cs_lightgallery\">\n            @if (imagesDisplayed().length) {\n                @for (image of imagesDisplayed(); track $index) {\n                    <div class=\"babylon_lisc2imgvid--gallery-item\">\n                        <a\n                            (click)=\"openModal('images', $index)\"\n                            class=\"cs_style_3 d-block cs_bg_filed position-relative cs_type_1 cs--radius\"\n                        >\n                            <img\n                                src=\"{{\n                                    image?.path?.original ??\n                                        image?.img?.src ??\n                                        'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                }}\"\n                                alt=\"{{ image?.title ?? 'Image' }}\"\n                            />\n\n                            <div class=\"babylon_lisc2imgvid--gallery-itemName\">\n                                {{ image?.title }}\n                                <span class=\"\">\n                                    <span class=\"babylon-fullscreen\"></span>\n                                </span>\n                            </div>\n                        </a>\n                    </div>\n                }\n            }\n        </div>\n    </div>\n</section>\n\n<div class=\"modal modal__images images\" #imagesModal>\n    <div class=\"modal__inner\">\n        <div\n            class=\"modal__close js-close\"\n            role=\"button\"\n            (click)=\"closeModal('images')\"\n        >\n            <svg aria-hidden=\"true\" focusable=\"false\">\n                <use href=\"/assets/babylon/svg/close-icon.svg#close-icon\"></use>\n            </svg>\n        </div>\n        <div class=\"babylon_lisc2imgvid--modal\">\n            <div\n                class=\"babylon_lisc2imgvid-slider js-active-slider\"\n                data-slides_infinite=\"true\"\n                data-slider_name=\"babylon_lisc2imgvid__slider\"\n                data-slider_showbtns=\"true\"\n                data-slider_btns=\"icon-small\"\n                data-slider_showdots=\"false\"\n                data-slider_fade=\"false\"\n                data-slides_pc=\"1\"\n            >\n                <div>\n                    <div class=\"babylon_lisc2imgvid__inner\">\n                        <div class=\"slick-slider-outer\">\n                            <div class=\"babylon_lisc2imgvid__slider\">\n                                @if (imagesDisplayed().length) {\n                                    @for (\n                                        image of imagesDisplayed();\n                                        track $index\n                                    ) {\n                                        <div class=\"slick-slide\">\n                                            <div\n                                                class=\"babylon_lisc2imgvid__slider-item\"\n                                            >\n                                                <p>{{ image?.title }}</p>\n\n                                                <img\n                                                    [src]=\"\n                                                        image?.path?.original ??\n                                                        image?.img?.src ??\n                                                        'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                                    \"\n                                                    [alt]=\"\n                                                        image?.title ?? 'Image'\n                                                    \"\n                                                />\n                                            </div>\n                                        </div>\n                                    }\n                                }\n                            </div>\n                            <div class=\"js-slider-arrows\"></div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport {\n    AfterViewInit,\n    Component,\n    ElementRef,\n    Input,\n    QueryList,\n    ViewChildren,\n} from '@angular/core';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport { BabylonItemI, BabylonTextInfoI } from '../../../interfaces';\nimport { BabylonDestinationI } from '../../../interfaces/babylon-destination.interface';\nimport { BabylonHotelGlobalItem } from '../../../interfaces/babylon-hotel.interface';\nimport { Utils } from '../../../utils';\n\ninterface FaqHotelLink {\n    label: string;\n    href: string;\n    ariaLabel?: string;\n    showBigIcons?: boolean; // para los 2 SVG grandes\n    showSmallIcons?: boolean; // para los 3 SVG pequeños\n}\n\ninterface FaqItem {\n    title: string;\n    colorClass?: 'green' | 'blue' | 'red' | '';\n    hotels: FaqHotelLink[];\n}\n\ntype NormalizedFaq =\n    | {\n          kind: 'destination';\n          title: string;\n          hotels: BabylonHotelGlobalItem[];\n      }\n    | {\n          kind: 'item';\n          title: string;\n          text: string;\n      };\n\n@Component({\n    selector: 'lib-babylon-lis-c2-txt',\n    standalone: true,\n    imports: [CommonModule, BabylonLinkTypeDirective],\n    templateUrl: './babylon-lis-c2-txt.component.html',\n    styleUrl: './babylon-lis-c2-txt.component.scss',\n})\nexport class BabylonLisC2TxtComponent implements AfterViewInit {\n    activeIndex: number | null = null;\n\n    @Input() texts?: BabylonTextInfoI;\n    @Input() destinations?: BabylonDestinationI[];\n    @Input() hotels?: BabylonHotelGlobalItem[];\n    @Input() items?: BabylonItemI[];\n\n    @ViewChildren('faqAnswer') answers!: QueryList<ElementRef<HTMLDivElement>>;\n\n    getNumber(text: string): number[] {\n        return Utils.extractNumberRange(text);\n    }\n\n    showIfSup(value?: string | null): string {\n        const regex = /\\b(SUP|superior)\\b/i;\n\n        return regex.test(value ?? '') ? 'SUP' : '';\n    }\n\n    get faqsNormalized(): NormalizedFaq[] {\n        if (this.items?.length) {\n            return this.items\n                .filter((it: any) => !!it?.label && !!it?.description)\n                .map((it: any) => ({\n                    kind: 'item' as const,\n                    title: String(it.label ?? ''),\n                    text: String(it.description ?? ''),\n                }));\n        }\n\n        if (this.destinations?.length) {\n            return this.destinations\n                .filter((d) => !!d?.name)\n                .map((d) => ({\n                    kind: 'destination' as const,\n                    title: String(d.name ?? ''),\n                    hotels: (d as any).hotels ?? [],\n                }));\n        }\n\n        return [];\n    }\n\n    ngAfterViewInit(): void {}\n\n    onToggleFaq(index: number): void {\n        const answersArr = this.answers.toArray();\n\n        // cerrar todos\n        answersArr.forEach((ref) => {\n            const el = ref.nativeElement;\n            el.style.maxHeight = '';\n            el.classList.remove('open');\n        });\n\n        if (this.activeIndex === index) {\n            this.activeIndex = null;\n            return;\n        }\n\n        const target = answersArr[index]?.nativeElement;\n        if (target) {\n            target.style.maxHeight = target.scrollHeight + 'px';\n            target.classList.add('open');\n        }\n\n        this.activeIndex = index;\n    }\n\n    isActive(index: number): boolean {\n        return this.activeIndex === index;\n    }\n\n    getHotelById(id: number | undefined): BabylonHotelGlobalItem | undefined {\n        if (!this.hotels?.length) return undefined;\n\n        const idNum = typeof id === 'string' ? Number(id) : id;\n        if (!Number.isFinite(idNum)) return undefined;\n\n        return this.hotels.find((h) => Number(h?.id) === idNum);\n    }\n}\n","<section class=\"mdl-f03\">\n    <div class=\"mdl-container\">\n        @if (texts) {\n            <div class=\"m-content\">\n                <div class=\"m-top\">\n                    <h2 class=\"m-titulo\">\n                        {{ texts.title }}\n                    </h2>\n                    <p class=\"m-texto\">\n                        {{ texts.description }}\n                    </p>\n                </div>\n            </div>\n        }\n\n        @if (faqsNormalized?.length) {\n            <div class=\"m-listadofaqs\">\n                @for (item of faqsNormalized; track $index) {\n                    <div class=\"faq-item\" [class.active]=\"isActive($index)\">\n                        <button\n                            class=\"faq-hoteles\"\n                            [attr.aria-expanded]=\"isActive($index)\"\n                            (click)=\"onToggleFaq($index)\"\n                        >\n                            {{ item?.title }}\n                            <span\n                                class=\"faq-icon\"\n                                [class.rotate]=\"isActive($index)\"\n                            ></span>\n                        </button>\n\n                        <div\n                            class=\"faq-answer\"\n                            #faqAnswer\n                            [class.open]=\"isActive($index)\"\n                        >\n                            @if (item.kind === 'item') {\n                                <div class=\"faq-text\">\n                                    {{ item.text }}\n                                </div>\n                            } @else {\n                                @if (item?.hotels?.length) {\n                                    @for (el of item?.hotels; track $index) {\n                                        @if (getHotelById(el.id); as hotel) {\n                                            <a\n                                                class=\"item\"\n                                                [href]=\"hotel.buttons?.[0]?.url\"\n                                                [linkType]=\"\n                                                    hotel.buttons?.[0]?.linkType\n                                                \"\n                                                [attr.aria-label]=\"\n                                                    hotel.buttons?.[0]?.label\n                                                \"\n                                                [style.--hover-color]=\"\n                                                    hotel?.styles?.primary\n                                                \"\n                                            >\n                                                {{ hotel.texts?.name }}\n\n                                                @if (\n                                                    hotel.hoteltype ===\n                                                        'Hotel' &&\n                                                    hotel?.hotelcategory\n                                                ) {\n                                                    <div class=\"category\">\n                                                        @for (\n                                                            item of getNumber(\n                                                                hotel.hotelcategory ??\n                                                                    ''\n                                                            );\n                                                            track $index\n                                                        ) {\n                                                            <svg\n                                                                xmlns=\"http://www.w3.org/2000/svg\"\n                                                                width=\"20\"\n                                                                height=\"20\"\n                                                                viewBox=\"0 0 20 20\"\n                                                            >\n                                                                <g\n                                                                    fill=\"none\"\n                                                                    fill-rule=\"evenodd\"\n                                                                >\n                                                                    <g>\n                                                                        <g>\n                                                                            <g\n                                                                                transform=\"translate(-1404.000000, -5922.000000) translate(191.000000, 5865.000000) translate(1109.000000, 57.000000)\"\n                                                                            >\n                                                                                <g>\n                                                                                    <path\n                                                                                        fill=\"#515050\"\n                                                                                        fill-opacity=\"0.3\"\n                                                                                        fill-rule=\"nonzero\"\n                                                                                        d=\"M10 0l2.294 7.104c.034.106.133.178.245.178L20 7.267l-6.046 4.374v.001c-.09.066-.128.182-.093.289l2.322 7.095-6.032-4.4c-.09-.065-.213-.065-.303 0l-6.029 4.4 2.322-7.095H6.14c.035-.107-.003-.223-.094-.289L0 7.268l7.461.015.001-.001c.112 0 .211-.072.245-.178L10 0z\"\n                                                                                        transform=\"translate(104.000000, 0.000000)\"\n                                                                                    />\n                                                                                </g>\n                                                                            </g>\n                                                                        </g>\n                                                                    </g>\n                                                                </g>\n                                                            </svg>\n                                                        }\n                                                    </div>\n                                                }\n\n                                                @if (\n                                                    hotel.hoteltype ===\n                                                        'Apartamento' &&\n                                                    hotel?.hotelcategory\n                                                ) {\n                                                    <div class=\"category\">\n                                                        @for (\n                                                            item of getNumber(\n                                                                hotel.hotelcategory ??\n                                                                    ''\n                                                            );\n                                                            track $index\n                                                        ) {\n                                                            <svg\n                                                                width=\"13\"\n                                                                height=\"13\"\n                                                                viewBox=\"0 0 13 13\"\n                                                                fill=\"none\"\n                                                                xmlns=\"http://www.w3.org/2000/svg\"\n                                                            >\n                                                                <path\n                                                                    d=\"M0.146296 4.26479L1.14015 2.01692C1.31289 1.62559 1.62559 1.31289 2.01692 1.14015L4.26479 0.146297C4.58174 0.00641826 4.93356 -0.0343944 5.27412 0.0292127C5.61467 0.0928198 5.92805 0.257876 6.17314 0.50273L7.9475 2.27839C8.1606 2.49155 8.31388 2.75701 8.39197 3.04813C8.47006 3.33925 8.4702 3.64578 8.39239 3.93698L7.93579 5.64109L12.866 10.5713C12.9085 10.6136 12.9422 10.6639 12.9652 10.7193C12.9882 10.7746 13 10.834 13 10.8939V12.5447C12.9993 12.6652 12.9511 12.7807 12.8659 12.8659C12.7807 12.9511 12.6652 12.9993 12.5447 13H10.8939C10.7926 12.9998 10.6942 12.9659 10.6142 12.9038C10.5341 12.8416 10.477 12.7547 10.4516 12.6566L10.2045 11.6796L9.3303 11.5131C9.24322 11.4968 9.16282 11.4553 9.09903 11.3938C9.03523 11.3323 8.99082 11.2535 8.97127 11.1671L8.73321 10.1173L7.89026 10.0367C7.78479 10.0274 7.68608 9.9808 7.61188 9.90528L5.64109 7.93579L3.93697 8.39239C3.6458 8.47047 3.33919 8.47046 3.04802 8.39236C2.75685 8.31426 2.4914 8.16082 2.27839 7.9475L0.502729 6.17314C0.257875 5.92805 0.0928202 5.61467 0.029213 5.27412C-0.0343943 4.93357 0.00641727 4.58174 0.146296 4.26479ZM3.6703 5.08953C3.81061 5.22968 3.98932 5.32508 4.18385 5.36369C4.37837 5.40229 4.57997 5.38236 4.76317 5.30641C4.94636 5.23047 5.10294 5.10191 5.21309 4.937C5.32324 4.7721 5.38203 4.57823 5.38203 4.37991C5.38203 4.1816 5.32324 3.98773 5.21309 3.82283C5.10294 3.65792 4.94636 3.52936 4.76317 3.45342C4.57997 3.37747 4.37837 3.35754 4.18385 3.39614C3.98932 3.43475 3.81061 3.53015 3.6703 3.6703C3.57689 3.76336 3.50277 3.87395 3.45219 3.99572C3.40162 4.1175 3.37558 4.24806 3.37558 4.37991C3.37558 4.51177 3.40162 4.64233 3.45219 4.76411C3.50277 4.88588 3.57689 4.99647 3.6703 5.08953Z\"\n                                                                    fill=\"#515050\"\n                                                                    fill-opacity=\"0.3\"\n                                                                />\n                                                            </svg>\n                                                        }\n                                                    </div>\n                                                }\n\n                                                {{\n                                                    showIfSup(\n                                                        hotel.hotelcategory\n                                                    )\n                                                }}\n\n                                                <!-- SVG grandes del primer link de Costa Brava -->\n                                                <!--   <ng-container\n                                                *ngIf=\"hotel.showBigIcons\"\n                                            > -->\n                                                <!-- tus 2 SVG grandes tal cual -->\n                                                <!-- (copiados de tu HTML original) -->\n                                                <!-- ... -->\n                                                <!--  </ng-container> -->\n\n                                                <!-- SVG pequeños del link que los lleva -->\n                                                <!--  <ng-container\n                                                *ngIf=\"hotel.showSmallIcons\"\n                                            > -->\n                                                <!-- tus 3 SVG pequeños tal cual -->\n                                                <!-- ... -->\n                                                <!--    </ng-container> -->\n                                            </a>\n                                        }\n                                    }\n                                }\n                            }\n                        </div>\n                    </div>\n                }\n            </div>\n        }\n    </div>\n</section>\n","import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    Input,\n    OnInit,\n    inject,\n    ChangeDetectorRef,\n    PLATFORM_ID,\n} from '@angular/core';\nimport { Router } from '@angular/router';\n\n@Component({\n    selector: 'lib-babylon-lis-c4-txt-ico',\n    standalone: true,\n    imports: [CommonModule],\n    templateUrl: './babylon-lis-c4-txt-ico.component.html',\n    styleUrl: './babylon-lis-c4-txt-ico.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonLisC4TxtIcoComponent implements OnInit {\n    @Input() show?: boolean = false;\n\n    private router = inject(Router);\n    private cdr = inject(ChangeDetectorRef); \n    private platformId = inject(PLATFORM_ID);\n\n    translates: Record<string, any> = {\n        es: {\n            row1: {\n                one: 'Beneficio / Categoría',\n                two: 'Lofter <br>(0-9 reservas)',\n                three: 'SuperLofter <br />(10-25 reservas)',\n                four: 'MegaLofter <br />(+25 reservas o influencers)',\n            },\n            row2: {\n                one: 'Descuento',\n                two: '8%',\n                three: '10%',\n                four: '12%',\n            },\n            row3: {\n                one: 'Litera inferior (sujeto a disponibilidad)',\n            },\n            row4: {\n                one: 'Habitación privada superior (sujeto a disponibilidad)',\n            },\n            row5: {\n                one: 'Early check-in (desde las 13 h)',\n                two: 'Sujeto a disponibilidad',\n                three: 'Sujeto a disponibilidad',\n                four: 'Sujeto a disponibilidad',\n            },\n            row6: {\n                one: 'Late check-out',\n                two: 'Sujeto a disponibilidad',\n                three: 'Garantizado hasta las 13 h',\n                four: 'Garantizado hasta las 13 h',\n            },\n            row7: {\n                one: 'Tarjeta personalizada de bienvenida con detalle',\n            },\n            row8: {\n                one: 'Cancelación gratuita',\n            },\n            row9: {\n                one: 'Toalla incluida',\n            },\n        },\n        en: {\n            row1: {\n                one: 'Benefit / Category',\n                two: 'Lofter <br>(0-9 bookings)',\n                three: 'SuperLofter <br />(10-25 bookings)',\n                four: 'MegaLofter <br />(+25 bookings or influencers)',\n            },\n            row2: {\n                one: 'Discount',\n                two: '8%',\n                three: '10%',\n                four: '12%',\n            },\n            row3: {\n                one: 'Lower bunk bed (subject to availability)',\n            },\n            row4: {\n                one: 'Private upper room (subject to availability)',\n            },\n            row5: {\n                one: 'Early check-in (from 1:00 PM)',\n                two: 'Subject to availability',\n                three: 'Subject to availability',\n                four: 'Subject to availability',\n            },\n            row6: {\n                one: 'Late check-out',\n                two: 'Subject to availability',\n                three: 'Guaranteed until 1:00 PM',\n                four: 'Guaranteed until 1:00 PM',\n            },\n            row7: {\n                one: 'Personalized welcome card with a small gift',\n            },\n            row8: {\n                one: 'Free cancellation',\n            },\n            row9: {\n                one: 'Towel included',\n            },\n        },\n    };\n    texts = this.translates['es'];\n\n    ngOnInit(): void {\n        this.setLanguageByUrl();\n    }\n\n    private setLanguageByUrl(): void {\n        if (isPlatformBrowser(this.platformId)) {\n            const urlPath = this.router.url;\n            const lang = urlPath.split('/')[1];\n\n            if (this.translates[lang]) {\n                this.texts = this.translates[lang];\n            } else {\n                this.texts = this.translates['es'];\n            }\n\n            this.cdr.markForCheck();\n        }\n    }\n}\n","@if (show) {\n    <section class=\"babylon_lisC4TxtIco margin-main\">\n        <div class=\"container\">\n            <table class=\"babylon_lisC4TxtIco--table\">\n                <thead>\n                    <tr>\n                        <th>{{ texts.row1.one }}</th>\n                        <th [innerHTML]=\"texts.row1.two\"></th>\n                        <th [innerHTML]=\"texts.row1.three\"></th>\n                        <th [innerHTML]=\"texts.row1.four\"></th>\n                    </tr>\n                </thead>\n                <tbody>\n                    <tr>\n                        <td>{{ texts.row2.one }}</td>\n                        <td class=\"babylon_lisC4TxtIco--bolder\">{{ texts.row2.two }}</td>\n                        <td class=\"babylon_lisC4TxtIco--bolder\">{{ texts.row2.three }}</td>\n                        <td class=\"babylon_lisC4TxtIco--bolder\">{{ texts.row2.four }}</td>\n                    </tr>\n                    <tr>\n                        <td>{{ texts.row3.one }}</td>\n                        <td class=\"babylon_lisC4TxtIco--bolder\">\n                            <span class=\"check-icon\"></span>\n                        </td>\n                        <td class=\"babylon_lisC4TxtIco--bolder\">\n                            <span class=\"check-icon\"></span>\n                        </td>\n                        <td class=\"babylon_lisC4TxtIco--bolder\">\n                            <span class=\"check-icon\"></span>\n                        </td>\n                    </tr>\n                    <tr>\n                        <td>\n                            {{ texts.row4.one }}\n                        </td>\n                        <td class=\"babylon_lisC4TxtIco--bolder\">\n                            <span class=\"check-icon\"></span>\n                        </td>\n                        <td class=\"babylon_lisC4TxtIco--bolder\">\n                            <span class=\"check-icon\"></span>\n                        </td>\n                        <td class=\"babylon_lisC4TxtIco--bolder\">\n                            <span class=\"check-icon\"></span>\n                        </td>\n                    </tr>\n                    <tr>\n                        <td>\n                            {{ texts.row5.one }}\n                        </td>\n                        <td>{{ texts.row5.two }}</td>\n                        <td>{{ texts.row5.three }}</td>\n                        <td>{{ texts.row5.four }}</td>\n                    </tr>\n                    <tr>\n                        <td>{{ texts.row6.one }}</td>\n                        <td>{{ texts.row6.two }}</td>\n                        <td>{{ texts.row6.three }}</td>\n                        <td>{{ texts.row6.four }}</td>\n                    </tr>\n                    <tr>\n                        <td>\n                            {{ texts.row7.one }}\n                        </td>\n                        <td class=\"babylon_lisC4TxtIco--bolder\">\n                            <span class=\"minus-icon\"></span>\n                        </td>\n                        <td class=\"babylon_lisC4TxtIco--bolder\">\n                            <span class=\"minus-icon\"></span>\n                        </td>\n                        <td class=\"babylon_lisC4TxtIco--bolder\">\n                            <span class=\"check-icon\"></span>\n                        </td>\n                    </tr>\n                    <tr>\n                        <td>{{ texts.row8.one }}</td>\n                        <td class=\"babylon_lisC4TxtIco--bolder\">\n                            <span class=\"minus-icon\"></span>\n                        </td>\n                        <td class=\"babylon_lisC4TxtIco--bolder\">\n                            <span class=\"minus-icon\"></span>\n                        </td>\n                        <td class=\"babylon_lisC4TxtIco--bolder\">\n                            <span class=\"check-icon\"></span>\n                        </td>\n                    </tr>\n                    <tr>\n                        <td>{{ texts.row9.one }}</td>\n                        <td class=\"babylon_lisC4TxtIco--bolder\">\n                            <span class=\"minus-icon\"></span>\n                        </td>\n                        <td class=\"babylon_lisC4TxtIco--bolder\">\n                            <span class=\"minus-icon\"></span>\n                        </td>\n                        <td class=\"babylon_lisC4TxtIco--bolder\">\n                            <span class=\"check-icon\"></span>\n                        </td>\n                    </tr>\n                </tbody>\n            </table>\n        </div>\n    </section>\n}\n","import {\n    Component,\n    OnInit,\n    ChangeDetectionStrategy,\n    Input,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { BabylonDynamicHeadingComponent } from '../../shared/babylon-dynamic-heading/babylon-dynamic-heading.component';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport { BabylonButtonI, BabylonImageI } from '../../../interfaces';\n\n@Component({\n    selector: 'lib-babylon-lis-c4-txt-img-pdf',\n    standalone: true,\n    imports: [\n        CommonModule,\n        BabylonDynamicHeadingComponent,\n        BabylonLinkTypeDirective,\n    ],\n    templateUrl: './babylon-lis-c4-txt-img-pdf.component.html',\n    styleUrl: './babylon-lis-c4-txt-img-pdf.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonLisC4TxtImgPdfComponent implements OnInit {\n    @Input() title?: string;\n    @Input() subtitle?: string;\n    @Input() prev?: string;\n    @Input() next?: string;\n    @Input() download?: string;\n    @Input() items?: BabylonLisC4ImgPdfI[];\n\n    private readonly itemsPerPage = 12;\n    public currentPage = 0;\n    public totalPages = 0;\n    public currentPress: BabylonLisC4ImgPdfI[] | undefined = [];\n\n    ngOnInit(): void {\n        this.totalPages = Math.ceil(\n            (this.items?.length ?? 0) / this.itemsPerPage\n        );\n\n        this.updatecurrentPress();\n    }\n    private updatecurrentPress(): void {\n        const startIndex = this.currentPage * this.itemsPerPage;\n        const endIndex = startIndex + this.itemsPerPage;\n        this.currentPress = this.items?.slice(startIndex, endIndex);\n    }\n\n    public changePage(newPage: number): void {\n        if (newPage >= 0 && newPage < this.totalPages) {\n            this.currentPage = newPage;\n            this.updatecurrentPress();\n        }\n    }\n\n    public prevPage(): void {\n        this.changePage(this.currentPage - 1);\n    }\n\n    public nextPage(): void {\n        this.changePage(this.currentPage + 1);\n    }\n\n    public get pageNumbers(): number[] {\n        return Array(this.totalPages)\n            .fill(0)\n            .map((x, i) => i);\n    }\n}\n\nexport interface BabylonLisC4ImgPdfI {\n    link?: BabylonButtonI;\n    text?: string;\n    title?: string;\n    magazine?: string;\n    year?: string;\n    image?: BabylonImageI;\n}\n","<section class=\"babylon__press margin-main\">\n    <div class=\"container\">\n        @if (title || subtitle) {\n            <div class=\"babylon__press--header\">\n                @if (title) {\n                    <lib-babylon-dynamic-heading\n                        [tag]=\"title || 'h2'\"\n                        cssClass=\"babylon__press--header-title title\"\n                        [content]=\"title\"\n                        [color]=\"title\"\n                    ></lib-babylon-dynamic-heading>\n                }\n                @if (subtitle) {\n                    <lib-babylon-dynamic-heading\n                        [tag]=\"subtitle || 'p'\"\n                        cssClass=\"babylon__press--header--subtitle\"\n                        [content]=\"subtitle\"\n                        [color]=\"subtitle\"\n                    ></lib-babylon-dynamic-heading>\n                }\n            </div>\n        }\n\n        <div class=\"babylon__press--gallery\">\n            @if (items?.length) {\n                @for (item of items; track $index) {\n                    <a\n                        [href]=\"item.link?.url\"\n                        [linkType]=\"item.link?.linkType\"\n                        [attr.arial-label]=\"item.link?.label\"\n                        target=\"_blank\"\n                        class=\"babylon__press--gallery-item\"\n                    >\n                        <div class=\"babylon__press--gallery-image\">\n                            @if (item.image) {\n                                <img\n                                    [src]=\"\n                                        item.image.src ||\n                                        'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                    \"\n                                    [alt]=\"\n                                        item.image.alt ??\n                                        item.image.title ??\n                                        'title'\n                                    \"\n                                />\n                            }\n\n                            <div class=\"babylon__press--gallery-imageDownload\">\n                                {{ download }}\n                                <span class=\"babylon-arrow-right-big\"></span>\n                            </div>\n                        </div>\n                        <div class=\"babylon__press--gallery-itemContent\">\n                            <div>\n                                <h4 class=\"babylon__press--gallery-itemTitle\">\n                                    {{ item.title }}\n                                </h4>\n                                <span\n                                    class=\"babylon__press--gallery-itemDescription\"\n                                    >{{ item.magazine\n                                    }}<span\n                                        class=\"babylon__press--gallery-itemYear\"\n                                        >{{ item.year }}</span\n                                    ></span\n                                >\n                                <button\n                                    class=\"babylon__press--gallery-itemButton\"\n                                >\n                                    <span class=\"babylon-arrow-bottom\"></span>\n                                </button>\n                            </div>\n                        </div>\n                    </a>\n                }\n            }\n        </div>\n        <div class=\"babylon__press--pagination\">\n            <button\n                class=\"babylon__press--pagination-back btn\"\n                (click)=\"prevPage()\"\n                [disabled]=\"currentPage === 0\"\n            >\n                {{ prev }}\n            </button>\n            <button\n                class=\"babylon__press--pagination-next btn\"\n                (click)=\"nextPage()\"\n                [disabled]=\"currentPage === totalPages - 1\"\n            >\n                {{ next }}\n            </button>\n        </div>\n    </div>\n</section>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, OnInit } from '@angular/core';\nimport { BabylonImageI, BabylonTextInfoI } from '../../../interfaces';\nimport { BabylonDynamicHeadingComponent } from '../../shared/babylon-dynamic-heading/babylon-dynamic-heading.component';\n\n@Component({\n    selector: 'lib-babylon-lis-c5-txt-img-svg',\n    standalone: true,\n    imports: [CommonModule, BabylonDynamicHeadingComponent],\n    templateUrl: './babylon-lis-c5-txt-img-svg.component.html',\n    styleUrls: ['./babylon-lis-c5-txt-img-svg.component.scss'],\n})\nexport class BabylonLisC5TxtImgSvgComponent implements OnInit {\n    @Input() title?: string;\n    @Input() subtitle?: string;\n    @Input() prev?: string;\n    @Input() next?: string;\n    @Input() items?: BabylonLisC5TxtImgSvgI[];\n    @Input() texts?: BabylonTextInfoI;\n\n    private readonly itemsPerPage = 10;\n    public currentPage = 0;\n    public totalPages = 0;\n\n    public currentAwards: BabylonLisC5TxtImgSvgI[] = [];\n\n    ngOnInit(): void {\n        this.totalPages = Math.ceil(\n            (this.items?.length ?? 0) / this.itemsPerPage\n        );\n\n        this.updateCurrentAwards();\n    }\n    private updateCurrentAwards(): void {\n        const startIndex = this.currentPage * this.itemsPerPage;\n        const endIndex = startIndex + this.itemsPerPage;\n        this.currentAwards = (this.items ?? []).slice(startIndex, endIndex);\n    }\n\n    public changePage(newPage: number): void {\n        if (newPage >= 0 && newPage < this.totalPages) {\n            this.currentPage = newPage;\n            this.updateCurrentAwards();\n        }\n    }\n\n    public prevPage(): void {\n        this.changePage(this.currentPage - 1);\n    }\n\n    public nextPage(): void {\n        this.changePage(this.currentPage + 1);\n    }\n\n    public get pageNumbers(): number[] {\n        return Array(this.totalPages)\n            .fill(0)\n            .map((x, i) => i);\n    }\n}\n\nexport interface BabylonLisC5TxtImgSvgI {\n    title?: string;\n    event?: string;\n    year?: string;\n    image?: BabylonImageI;\n    img?: BabylonImageI;\n}\n","<section class=\"babylon__awards margin-main\">\n    @if (title || subtitle) {\n        <div class=\"babylon__awards--header\">\n            @if (title) {\n                <lib-babylon-dynamic-heading\n                    [tag]=\"title || 'h2'\"\n                    cssClass=\"babylon__awards--title title\"\n                    [content]=\"title\"\n                    [color]=\"title\"\n                ></lib-babylon-dynamic-heading>\n            }\n            @if (subtitle) {\n                <lib-babylon-dynamic-heading\n                    [tag]=\"subtitle || 'p'\"\n                    cssClass=\"babylon__awards--subtitle\"\n                    [content]=\"subtitle\"\n                    [color]=\"subtitle\"\n                ></lib-babylon-dynamic-heading>\n            }\n        </div>\n    }\n    <div class=\"container-fluid\">\n        <div class=\"babylon__awards--gallery\">\n            @for (item of currentAwards; track $index) {\n                <div class=\"babylon__awards--item\">\n                    <img\n                        [src]=\"\n                            item.image?.src ||\n                            item.img?.src ||\n                            'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                        \"\n                        [alt]=\"item.image?.alt ?? item.image?.title ?? 'title'\"\n                        class=\"babylon__awards--item-image\"\n                    />\n                    <div class=\"babylon__awards--item-content\">\n                        <h4 class=\"babylon__awards--item-title\">\n                            {{ item.title }}\n                        </h4>\n                        <span class=\"babylon__awards--item-year\">{{\n                            item.year\n                        }}</span>\n                        <span class=\"babylon__awards--item-event\">{{\n                            item.event\n                        }}</span>\n                    </div>\n                </div>\n            }\n        </div>\n        <div class=\"babylon__awards--pagination\">\n            <button\n                class=\"babylon__awards--pagination-back btn\"\n                (click)=\"prevPage()\"\n                [disabled]=\"currentPage === 0\"\n            >\n                {{ prev }}\n            </button>\n            <button\n                class=\"babylon__awards--pagination-next btn\"\n                (click)=\"nextPage()\"\n                [disabled]=\"currentPage === totalPages - 1\"\n            >\n                {{ next }}\n            </button>\n        </div>\n    </div>\n</section>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport { BabylonButtonI } from '../../../interfaces';\n\n@Component({\n    selector: 'lib-babylon-lis-link-cleans',\n    standalone: true,\n    imports: [CommonModule, BabylonLinkTypeDirective],\n    templateUrl: './babylon-lis-link-cleans.component.html',\n    styleUrl: './babylon-lis-link-cleans.component.scss',\n})\nexport class BabylonLisLinkCleansComponent {\n    @Input() links?: BabylonButtonI[];\n\n    get items(): BabylonButtonI[] {\n        return this.links && this.links.length > 0 ? this.links : [];\n    }\n\n    getFormattedUrl(link: any): string {\n        if (!link?.url) return '';\n\n        if (link.vars) {\n            const cleanUrl = link.url.endsWith('/')\n                ? link.url.slice(0, -1)\n                : link.url;\n            return cleanUrl + link.vars;\n        }\n\n        return link.url + (link.vars || '');\n    }\n}\n","@if (items.length > 0) {\n    <nav class=\"link-container\">\n        <ul class=\"link-list\">\n            @for (item of items; track $index) {\n              @if (item.url) {\n                <li class=\"link-item\">\n                    <a\n                        [href]=\"getFormattedUrl(item)\"\n                        [linkType]=\"item.linkType\"\n                        class=\"link-anchor\"\n                    >\n                        <span class=\"prefix\">></span>\n                        <span class=\"label\">{{ item.label }}</span>\n                    </a>\n                </li>\n              }\n            }\n        </ul>\n    </nav>\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport {\n    BabylonButtonI,\n    BabylonGlobalIconI,\n    BabylonTextInfoI,\n} from '../../../interfaces';\nimport { BabylonHotelStylesItem } from '../../../interfaces/babylon-hotel-styles.interface';\n\n@Component({\n    selector: 'lib-babylon-lis-svg-txt-cta',\n    standalone: true,\n    imports: [CommonModule, BabylonLinkTypeDirective],\n    templateUrl: './babylon-lis-svg-txt-cta.component.html',\n    styleUrl: './babylon-lis-svg-txt-cta.component.scss',\n})\nexport class BabylonLisSvgTxtCtaComponent {\n    @Input() texts?: BabylonTextInfoI;\n    @Input() services?: BabylonGlobalIconI[];\n    @Input() styles?: BabylonHotelStylesItem;\n    @Input() buttons?: BabylonButtonI[];\n}\n","@if (services) {\n    <section class=\"mdl-mdh019\">\n        <div\n            class=\"mdl-container\"\n            [ngClass]=\"{ 'no-padding-botton': services.length < 11 }\"\n        >\n            @if (texts) {\n                <div class=\"m-header\">\n                    @if (texts.title) {\n                        <div class=\"m-title\">{{ texts.title }}</div>\n                    }\n                    @if (texts.description) {\n                        <div\n                            class=\"m-text\"\n                            [innerHTML]=\"texts.description\"\n                        ></div>\n                    }\n                </div>\n            }\n\n            <!-- Grid -->\n            @if (services?.length) {\n                <div class=\"m-grid-container\">\n                    <div class=\"m-grid\">\n                        @for (item of services; track $index) {\n                            <div class=\"m-item\">\n                                <div class=\"content\">\n                                    @if (item.icon) {\n                                        <!-- <img\n                                        src=\"/assets/babylon/svg/icons/wifi.svg\"\n                                        alt=\"\"\n                                    /> -->\n                                        <i\n                                            class=\"icon--svg\"\n                                            [ngClass]=\"item.icon\"\n                                            [style.backgroundColor]=\"\n                                                styles?.primary ?? '#000000'\n                                            \"\n                                        ></i>\n                                    }\n                                    @if (item.name) {\n                                        <div class=\"m-title\">\n                                            {{ item.name }}\n                                        </div>\n                                    }\n                                    @if (item.description) {\n                                        <div class=\"m-subtitle\">\n                                            {{ item.description }}\n                                        </div>\n                                    }\n                                </div>\n                            </div>\n                        }\n                    </div>\n\n                    <input type=\"checkbox\" id=\"m-load-more\" hidden />\n\n                    @if (buttons?.length) {\n                        <label\n                            for=\"m-load-more\"\n                            class=\"m-button-sm\"\n                            role=\"button\"\n                        >\n                            <a\n                                [href]=\"buttons?.[0]?.url\"\n                                [linkType]=\"buttons?.[0]?.linkType\"\n                                [attr.aria-label]=\"buttons?.[0]?.label\"\n                            >\n                                <span>{{ buttons?.[0]?.label }}</span>\n                            </a>\n                        </label>\n                    }\n                </div>\n            }\n        </div>\n    </section>\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nconst CURRENCY_SYMBOLS: { [key: string]: string } = {\n    USD: '$',\n    EUR: '€',\n    GBP: '£',\n    JPY: '¥',\n    AUD: 'A$',\n    CAD: 'C$',\n    CHF: 'CHF',\n    CNY: '¥',\n    SEK: 'kr',\n    NZD: 'NZ$',\n};\n\n@Pipe({\n    name: 'currencySymbol',\n    standalone: true,\n})\nexport class BabylonCurrencyPipe implements PipeTransform {\n    transform(value: string): string {\n        return CURRENCY_SYMBOLS[value] || value;\n    }\n}\n","import { Component, Input } from '@angular/core';\nimport { BabylonOfferItemI, BabylonTextInfoI } from '../../../interfaces';\nimport { BabylonCurrencyPipe } from '../../../pipes/babylon-currency.pipe';\n\n@Component({\n    selector: 'lib-babylon-list-box-info',\n    standalone: true,\n    imports: [BabylonCurrencyPipe],\n    templateUrl: './babylon-list-box-info.component.html',\n    styleUrl: './babylon-list-box-info.component.scss',\n})\nexport class BabylonListBoxInfoComponent {\n  @Input() texts?: BabylonTextInfoI;\n  @Input() items?: BabylonOfferItemI[]; //TODO optional for hotel,rooms etc\n}\n","<section class=\"list-box\">\n    <div class=\"container\">\n        <div class=\"list-box__inner\">\n          @if(texts?.title) {\n            <span class=\"list-box__title\">{{ texts?.title }}</span>\n          }\n          @if (items?.length) {\n            <div class=\"list-box__items\">\n              @for (item of items; track $index) {\n                <div class=\"promo__item\">\n                  @if (item?.images?.src) {\n                    <div>\n                        <div class=\"promo__image js-slider_fix-arrows-zone\">\n                            <svg\n                                aria-hidden=\"true\"\n                                focusable=\"false\"\n                                class=\"promo__image--graphic-top\"\n                            >\n                                <use\n                                    href=\"/assets/babylon/svg/icon-graphic.svg#icon-graphic\"\n                                ></use>\n                            </svg>\n                            <svg\n                                aria-hidden=\"true\"\n                                focusable=\"false\"\n                                class=\"promo__image--graphic-bottom\"\n                            >\n                                <use\n                                    href=\"/assets/babylon/svg/icon-graphic.svg#icon-graphic\"\n                                ></use>\n                            </svg>\n                            <figure>\n                                <img [src]=\"item?.images?.src\" [alt]=\"item?.images?.alt || 'image'\"/>\n                            </figure>\n                            @if (item?.texts?.additional3) {\n                              <span class=\"promo__label\">{{ item?.texts?.additional3 }}</span>\n                            }\n                        </div>\n                    </div>\n                  }\n                    <div class=\"promo__content\">\n                        <div class=\"promo__heading\">\n                          @if (item?.texts?.title) {\n                            <h3>{{ item?.texts?.title }}</h3>\n                          }\n                          @if (item?.texts?.subtitle) {\n                            <p [innerHTML]=\"item?.texts?.subtitle\"></p>\n                          }\n                        </div>\n                         @if (item?.discount) {\n                          <div class=\"promo__price-discount\">\n                            @if (item?.texts?.additional2) {\n                              <span class=\"promo__price-discount--label\"\n                                  >{{ item?.texts?.additional2 }}</span\n                              >\n                            }\n                            @if (item?.price) {\n                              <span class=\"promo__price-discount--price\"\n                                  >{{ item?.price }}{{ (item?.currency || 'EUR') | currencySymbol }}</span\n                              >\n                            }\n                          </div>\n                         }\n                    </div>\n                    <div class=\"btn__group\">\n                        <svg\n                            aria-hidden=\"true\"\n                            focusable=\"false\"\n                            class=\"promo__image--graphic-bottom\"\n                        >\n                            <use\n                                href=\"/assets/babylon/svg/icon-graphic.svg#icon-graphic\"\n                            ></use>\n                        </svg>\n                        @if (item?.texts?.additional3) {\n                          <span class=\"promo__label\">{{ item?.texts?.additional3 }}</span>\n                        }\n                        @if (item?.links?.length) {\n                          @if (item?.links?.[0]?.label && item?.links?.[0]?.url) {\n                            <a [href]=\"item?.links?.[0]?.url\" class=\"btn btn__primary\"\n                              ><span>{{ item?.links?.[0]?.label }}</span></a\n                          >\n                          }\n                          @if (item?.buttons?.[0]?.label) {\n                            <a\n                                [href]=\"item?.buttons?.[0]?.url\"\n                                [attr.data-link-type]=\"item?.buttons?.[0]?.linkType\"\n                                class=\"btn btn__primary\"\n                            >\n                              <span>{{ item?.buttons?.[0]?.label }}</span>\n                            </a>\n                          }\n                        }\n                    </div>\n                </div>\n              }\n            </div>\n          }\n        </div>\n    </div>\n</section>\n\n\n<!--<section class=\"list-box\">\n    <div class=\"container\">\n        <div class=\"list-box__inner\">\n            <span class=\"list-box__title\">promociones BLANCAS</span>\n            <div class=\"list-box__items\">\n                <div class=\"promo__item\">\n                    <a href=\"/\">\n                        <div class=\"promo__image js-slider_fix-arrows-zone\">\n                            <svg\n                                aria-hidden=\"true\"\n                                focusable=\"false\"\n                                class=\"promo__image--graphic-top\"\n                            >\n                                <use\n                                    href=\"/assets/babylon/svg/icon-graphic.svg#icon-graphic\"\n                                ></use>\n                            </svg>\n                            <svg\n                                aria-hidden=\"true\"\n                                focusable=\"false\"\n                                class=\"promo__image--graphic-bottom\"\n                            >\n                                <use\n                                    href=\"/assets/babylon/svg/icon-graphic.svg#icon-graphic\"\n                                ></use>\n                            </svg>\n                            <figure>\n                                <img src=\"/assets/babylon/images/img-17.webp\" />\n                            </figure>\n                            <span class=\"promo__label\">OFerta</span>\n                        </div>\n                    </a>\n                    <div class=\"promo__content\">\n                        <div class=\"promo__heading\">\n                            <h3>Reservar por la web tiene muchas ventajas</h3>\n                            <p>Blanco Hotel Formentera</p>\n                        </div>\n                        <div class=\"promo__price-discount\">\n                            <span class=\"promo__price-discount--label\"\n                                >Desde</span\n                            >\n                            <span class=\"promo__price-discount--price\"\n                                >485€</span\n                            >\n                        </div>\n                    </div>\n                    <div class=\"btn__group\">\n                        <svg\n                            aria-hidden=\"true\"\n                            focusable=\"false\"\n                            class=\"promo__image--graphic-bottom\"\n                        >\n                            <use\n                                href=\"/assets/babylon/svg/icon-graphic.svg#icon-graphic\"\n                            ></use>\n                        </svg>\n                        <span class=\"promo__label\">OFerta</span>\n                        <a href=\"/\" class=\"btn btn__primary\"\n                            ><span>Más Información</span></a\n                        >\n                        <button\n                            class=\"btn btn__primary js-active-modal\"\n                            data-modal_name=\"offers\"\n                        >\n                            <span>Book Now</span>\n                        </button>\n                    </div>\n                </div>\n                <div class=\"promo__item\">\n                    <a href=\"/\">\n                        <div class=\"promo__image js-slider_fix-arrows-zone\">\n                            <svg\n                                aria-hidden=\"true\"\n                                focusable=\"false\"\n                                class=\"promo__image--graphic-top\"\n                            >\n                                <use\n                                    href=\"/assets/babylon/svg/icon-graphic.svg#icon-graphic\"\n                                ></use>\n                            </svg>\n                            <svg\n                                aria-hidden=\"true\"\n                                focusable=\"false\"\n                                class=\"promo__image--graphic-bottom\"\n                            >\n                                <use\n                                    href=\"/assets/babylon/svg/icon-graphic.svg#icon-graphic\"\n                                ></use>\n                            </svg>\n                            <figure>\n                                <img src=\"/assets/babylon/images/img-18.webp\" />\n                            </figure>\n                            <span class=\"promo__label\">OFerta</span>\n                        </div>\n                    </a>\n                    <div class=\"promo__content\">\n                        <div class=\"promo__heading\">\n                            <h3>Reservar por la web tiene muchas ventajas</h3>\n                            <p>Blanco Hotel Formentera</p>\n                        </div>\n                        <div class=\"promo__price-discount\">\n                            <span class=\"promo__price-discount--label\"\n                                >Descuento</span\n                            >\n                            <span class=\"promo__price-discount--discount\"\n                                >12%</span\n                            >\n                        </div>\n                    </div>\n                    <div class=\"btn__group\">\n                        <svg\n                            aria-hidden=\"true\"\n                            focusable=\"false\"\n                            class=\"promo__image--graphic-bottom\"\n                        >\n                            <use\n                                href=\"/assets/babylon/svg/icon-graphic.svg#icon-graphic\"\n                            ></use>\n                        </svg>\n                        <span class=\"promo__label\">OFerta</span>\n                        <a href=\"/\" class=\"btn btn__primary\"\n                            ><span>Más Información</span></a\n                        >\n                        <button\n                            class=\"btn btn__primary js-active-modal\"\n                            data-modal_name=\"offers\"\n                        >\n                            <span>Book Now</span>\n                        </button>\n                    </div>\n                </div>\n                <div class=\"promo__item\">\n                    <a href=\"/\">\n                        <div class=\"promo__image js-slider_fix-arrows-zone\">\n                            <svg\n                                aria-hidden=\"true\"\n                                focusable=\"false\"\n                                class=\"promo__image--graphic-top\"\n                            >\n                                <use\n                                    href=\"/assets/babylon/svg/icon-graphic.svg#icon-graphic\"\n                                ></use>\n                            </svg>\n                            <svg\n                                aria-hidden=\"true\"\n                                focusable=\"false\"\n                                class=\"promo__image--graphic-bottom\"\n                            >\n                                <use\n                                    href=\"/assets/babylon/svg/icon-graphic.svg#icon-graphic\"\n                                ></use>\n                            </svg>\n                            <figure>\n                                <img src=\"/assets/babylon/images/img-89.webp\" />\n                            </figure>\n                            <span class=\"promo__label\">OFerta</span>\n                        </div>\n                    </a>\n                    <div class=\"promo__content\">\n                        <div class=\"promo__heading\">\n                            <h3>Reservar por la web tiene muchas ventajas</h3>\n                            <p>Blanco Hotel Formentera</p>\n                        </div>\n                        <div class=\"promo__price-discount\">\n                            <span class=\"promo__price-discount--label\"\n                                >Descuento</span\n                            >\n                            <span class=\"promo__price-discount--discount\"\n                                >8%</span\n                            >\n                        </div>\n                    </div>\n                    <div class=\"btn__group\">\n                        <svg\n                            aria-hidden=\"true\"\n                            focusable=\"false\"\n                            class=\"promo__image--graphic-bottom\"\n                        >\n                            <use\n                                href=\"/assets/babylon/svg/icon-graphic.svg#icon-graphic\"\n                            ></use>\n                        </svg>\n                        <span class=\"promo__label\">OFerta</span>\n                        <a href=\"/\" class=\"btn btn__primary\"\n                            ><span>Más Información</span></a\n                        >\n                        <button\n                            class=\"btn btn__primary js-active-modal\"\n                            data-modal_name=\"offers\"\n                        >\n                            <span>Book Now</span>\n                        </button>\n                    </div>\n                </div>\n                <div class=\"promo__item\">\n                    <a href=\"/\">\n                        <div class=\"promo__image js-slider_fix-arrows-zone\">\n                            <svg\n                                aria-hidden=\"true\"\n                                focusable=\"false\"\n                                class=\"promo__image--graphic-top\"\n                            >\n                                <use\n                                    href=\"/assets/babylon/svg/icon-graphic.svg#icon-graphic\"\n                                ></use>\n                            </svg>\n                            <svg\n                                aria-hidden=\"true\"\n                                focusable=\"false\"\n                                class=\"promo__image--graphic-bottom\"\n                            >\n                                <use\n                                    href=\"/assets/babylon/svg/icon-graphic.svg#icon-graphic\"\n                                ></use>\n                            </svg>\n                            <figure>\n                                <img src=\"/assets/babylon/images/img-90.webp\" />\n                            </figure>\n                            <span class=\"promo__label\">OFerta</span>\n                        </div>\n                    </a>\n                    <div class=\"promo__content\">\n                        <div class=\"promo__heading\">\n                            <h3>Reservar por la web tiene muchas ventajas</h3>\n                            <p>Blanco Hotel Formentera</p>\n                        </div>\n                        <div class=\"promo__price-discount\">\n                            <span class=\"promo__price-discount--label\"\n                                >Desde</span\n                            >\n                            <span class=\"promo__price-discount--price\"\n                                >135€</span\n                            >\n                        </div>\n                    </div>\n                    <div class=\"btn__group\">\n                        <svg\n                            aria-hidden=\"true\"\n                            focusable=\"false\"\n                            class=\"promo__image--graphic-bottom\"\n                        >\n                            <use\n                                href=\"/assets/babylon/svg/icon-graphic.svg#icon-graphic\"\n                            ></use>\n                        </svg>\n                        <span class=\"promo__label\">OFerta</span>\n                        <a href=\"/\" class=\"btn btn__primary\"\n                            ><span>Más Información</span></a\n                        >\n                        <button\n                            class=\"btn btn__primary js-active-modal\"\n                            data-modal_name=\"offers\"\n                        >\n                            <span>Book Now</span>\n                        </button>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n</section>\n-->\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport { BabylonButtonI, BabylonTextInfoI } from '../../../interfaces';\nimport { BabylonItemI } from '../../../interfaces/babylon-item.interface';\nimport { Utils } from '../../../utils';\n\n@Component({\n    selector: 'lib-babylon-list-c3-img-txt',\n    standalone: true,\n    imports: [CommonModule, BabylonLinkTypeDirective],\n    templateUrl: './babylon-list-c3-img-txt.component.html',\n    styleUrl: './babylon-list-c3-img-txt.component.scss',\n})\nexport class BabylonListC3ImgTxtComponent {\n    @Input() texts?: BabylonTextInfoI;\n    @Input() items?: BabylonItemI[];\n\n    buildMenuUrl(item: BabylonButtonI | undefined): string {\n        if (!item?.url) return '';\n\n        const baseUrl = item.url.replace(/\\/+$/, '');\n        const brand = (item.vars ?? '').toString().trim();\n\n        if (!brand) return baseUrl;\n\n        const slug = Utils.toSlug(brand);\n        if (!slug) return baseUrl;\n\n        return `${baseUrl}?brand=${slug}`;\n    }\n}\n","<section class=\"mdl-h03 list-c3-img-txt\">\n    <div class=\"mdl-container\">\n        @if (texts?.title) {\n            <h2 class=\"m-title\" [innerHTML]=\"texts?.title\"></h2>\n        }\n\n        @if (items?.length) {\n            <div class=\"m-cards-container\">\n                @for (item of items; track $index) {\n                    @if (item) {\n                        <div class=\"m-card\">\n                            <a\n                                class=\"img-container-link\"\n                                [href]=\"buildMenuUrl(item.buttons?.[0])\"\n                                [linkType]=\"item.buttons?.[0]?.linkType\"\n                                type=\"button\"\n                                [attr.aria-label]=\"item.buttons?.[0]?.label\"\n                            >\n                                <div\n                                    class=\"m-card-top\"\n                                    [ngStyle]=\"{\n                                        'background-image': item.img?.src\n                                            ? 'url(' + item.img?.src + ')'\n                                            : 'none',\n                                    }\"\n                                ></div>\n                            </a>\n\n                            <div class=\"m-content\">\n                                <!-- @if (item.texts?.pretitle) { -->\n                                <!-- TODO: Hacerlo dinamico -->\n                                @if ($index === 0) {\n                                    <a\n                                        class=\"img-container-link-v2\"\n                                        [href]=\"buildMenuUrl(item.buttons?.[0])\"\n                                        [linkType]=\"item.buttons?.[0]?.linkType\"\n                                        type=\"button\"\n                                        [attr.aria-label]=\"\n                                            item.buttons?.[0]?.label\n                                        \"\n                                    >\n                                        <img\n                                            [src]=\"\n                                                '/assets/babylon/svg/branding/alegriahotels_white.svg'\n                                            \"\n                                            alt=\"logo\"\n                                            class=\"m-logo\"\n                                        />\n                                    </a>\n                                }\n                                @if ($index === 1) {\n                                    <a\n                                        class=\"img-container-link-v2\"\n                                        [href]=\"buildMenuUrl(item.buttons?.[0])\"\n                                        [linkType]=\"item.buttons?.[0]?.linkType\"\n                                        type=\"button\"\n                                        [attr.aria-label]=\"\n                                            item.buttons?.[0]?.label\n                                        \"\n                                    >\n                                        <img\n                                            [src]=\"\n                                                '/assets/babylon/svg/branding/the_place_hotels_white.svg'\n                                            \"\n                                            alt=\"logo\"\n                                            class=\"m-logo\"\n                                        />\n                                    </a>\n                                }\n                                @if ($index === 2) {\n                                    <a\n                                        class=\"img-container-link-v2\"\n                                        [href]=\"buildMenuUrl(item.buttons?.[0])\"\n                                        [linkType]=\"item.buttons?.[0]?.linkType\"\n                                        type=\"button\"\n                                        [attr.aria-label]=\"\n                                            item.buttons?.[0]?.label\n                                        \"\n                                    >\n                                        <img\n                                            [src]=\"\n                                                '/assets/babylon/svg/branding/chic_apartaments.svg'\n                                            \"\n                                            alt=\"logo\"\n                                            class=\"m-logo\"\n                                        />\n                                    </a>\n                                }\n                                <!-- } -->\n                                @if (item.texts?.title) {\n                                    <h3 class=\"m-title\">\n                                        {{ item.texts?.title }}\n                                    </h3>\n                                }\n                                @if (item.texts?.subtitle) {\n                                    <h4 class=\"m-subtitle\">\n                                        {{ item.texts?.subtitle }}\n                                    </h4>\n                                }\n\n                                @if (item.buttons?.length) {\n                                    <a\n                                        [href]=\"buildMenuUrl(item.buttons?.[0])\"\n                                        [linkType]=\"item.buttons?.[0]?.linkType\"\n                                        type=\"button\"\n                                        class=\"m-button-sm\"\n                                        [ngClass]=\"{\n                                            red: $index % 3 === 0,\n                                            blue: $index % 3 === 1,\n                                            green: $index % 3 === 2,\n                                        }\"\n                                        [attr.aria-label]=\"\n                                            item.buttons?.[0]?.label\n                                        \"\n                                    >\n                                        <span>{{\n                                            item.buttons?.[0]?.label\n                                        }}</span>\n                                    </a>\n                                }\n                            </div>\n                        </div>\n                    }\n                }\n            </div>\n        }\n    </div>\n</section>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport { BabylonMultimediaI, BabylonTextInfoI } from '../../../interfaces';\n\nexport interface BabylonListC6TxtI {\n    texts?: BabylonTextInfoI;\n    multimedia?: BabylonMultimediaI;\n}\n\n@Component({\n    selector: 'lib-babylon-list-c6-txt',\n    standalone: true,\n    imports: [CommonModule, BabylonLinkTypeDirective],\n    templateUrl: './babylon-list-c6-txt.component.html',\n    styleUrl: './babylon-list-c6-txt.component.scss',\n})\nexport class BabylonListC6TxtComponent {\n    @Input() texts?: BabylonTextInfoI;\n    @Input() multimedia?: BabylonMultimediaI;\n\n    trackByIndex = (i: number) => i;\n\n    get columnCount(): number {\n        const total = this.multimedia?.imagenes?.length || 0;\n\n        // Si son 6 o menos, usamos 6 columnas (se centrarán automáticamente)\n        if (total <= 6) return 6;\n\n        // Si son más de 6 (ej. 7, 8, 9, 10), dividimos entre 2 y redondeamos hacia arriba\n        // 7 imgs -> 4 cols (fila 1: 4, fila 2: 3)\n        // 8 imgs -> 4 cols (fila 1: 4, fila 2: 4)\n        // 9 imgs -> 5 cols (fila 1: 5, fila 2: 4)\n        if (total <= 12) return Math.ceil(total / 2);\n\n        return 6; // Fallback por si hay muchísimas imágenes\n    }\n}\n","<section class=\"lg\">\n    <div class=\"lg__container\">\n        @if (\n            texts?.title ||\n            texts?.description ||\n            texts?.additional1 ||\n            texts?.additional2 ||\n            texts?.additional3\n        ) {\n            <header class=\"lg__header\">\n                @if (texts?.title) {\n                    <h2 class=\"lg__title\">{{ texts?.title }}</h2>\n                }\n\n                @if (texts?.description) {\n                    <div\n                        class=\"lg__desc\"\n                        [innerHTML]=\"texts?.description\"\n                    ></div>\n                }\n\n                @if (\n                    texts?.additional ||\n                    texts?.additional1 ||\n                    texts?.additional2 ||\n                    texts?.additional3\n                ) {\n                    <div class=\"lg__adds\">\n                        @if (texts?.additional) {\n                            <div\n                                class=\"lg__add\"\n                                [innerHTML]=\"texts?.additional\"\n                            ></div>\n                        }\n                        @if (texts?.additional1) {\n                            <div\n                                class=\"lg__add\"\n                                [innerHTML]=\"texts?.additional1\"\n                            ></div>\n                        }\n                        @if (texts?.additional2) {\n                            <div\n                                class=\"lg__add\"\n                                [innerHTML]=\"texts?.additional2\"\n                            ></div>\n                        }\n                        @if (texts?.additional3) {\n                            <div\n                                class=\"lg__add\"\n                                [innerHTML]=\"texts?.additional3\"\n                            ></div>\n                        }\n                    </div>\n                }\n            </header>\n        }\n\n        @if (multimedia?.imagenes; as imgs) {\n            <div class=\"lg__grid\" role=\"list\" [style.--cols]=\"columnCount\">\n                @for (img of imgs; track trackByIndex($index)) {\n                    <div class=\"lg__cell\" role=\"listitem\">\n                        <a\n                            class=\"lg__link\"\n                            [href]=\"img.links?.[0]?.url\"\n                            [linkType]=\"img.links?.[0]?.linkType\"\n                            [attr.aria-label]=\"img.links?.[0]?.label\"\n                        >\n                            <img\n                                class=\"lg__img\"\n                                [src]=\"\n                                    img.img?.src ||\n                                    'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                \"\n                                [alt]=\"img.img?.alt || ''\"\n                                loading=\"lazy\"\n                            />\n                        </a>\n                    </div>\n                }\n            </div>\n        }\n\n        @if (texts?.additional4) {\n            <div class=\"lg__add\" [innerHTML]=\"texts?.additional4\"></div>\n        }\n    </div>\n</section>\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { BabylonButtonI } from '../../../interfaces/babylon-button.interface';\nimport { BabylonGlobalIconI } from '../../../interfaces/babylon-global-icon.interface';\nimport { BabylonImageI } from '../../../interfaces/babylon-image.interface';\nimport { BabylonTextInfoI } from '../../../interfaces/babylon-text-info.interface';\n\n@Component({\n    selector: 'lib-babylon-list-grid',\n    standalone: true,\n    imports: [CommonModule],\n    templateUrl: './babylon-list-grid.component.html',\n    styleUrl: './babylon-list-grid.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonListGridComponent {\n    @Input() labels?: BabylonTextInfoI;\n    @Input() items?: BabylonItemGridI[];\n    @Input() button?: BabylonButtonI;\n\n    btnClick(e: Event): void {\n        e.preventDefault();\n    }\n}\n\nexport interface BabylonItemGridI {\n    buttons?: BabylonButtonI[];\n    links?: BabylonButtonI[];\n    image?: BabylonImageI;\n    title?: string;\n    subtitle?: string;\n    services?: BabylonGlobalIconI[];\n}\n","<section class=\"babylon__list-grid margin-main\">\n    <div class=\"container-fluid cs_plr_100\">\n        <div class=\"intro_info align--center no-align\">\n            @if (labels?.pretitle) {\n                <h3 class=\"pretitle\">{{ labels?.pretitle }}</h3>\n            }\n            @if (labels?.title) {\n                <h2\n                    class=\"title wow fadeInUp\"\n                    data-wow-duration=\"0.8s\"\n                    data-wow-delay=\"0.2s\"\n                >\n                    {{ labels?.title }}\n                </h2>\n            }\n        </div>\n        <div class=\"cs_grid_style_4\">\n            @if (items?.length) {\n                @for (item of items; track $index) {\n                    <div class=\"cs_grid_item\">\n                        <div\n                            class=\"cs_card cs_style_4 cs_type_1 d-block position-relative cs--radius\"\n                        >\n                            @if (item?.image) {\n                                <img\n                                    class=\"cs_card_thumb w-100 h-100\"\n                                    [src]=\"item.image\"\n                                    alt=\"Room\"\n                                    loading=\"lazy\"\n                                />\n                            }\n                            <div\n                                class=\"cs_card_info position-absolute start-0 top-0 h-100 w-100\"\n                            >\n                                <div class=\"intro_info intro_info--light\">\n                                    @if (item?.title) {\n                                        <h2 class=\"title--small mb--0\">\n                                            {{ item?.title }}\n                                        </h2>\n                                    }\n                                    @if (item?.subtitle) {\n                                        <h3 class=\"subtitle--small mb--20\">\n                                            {{ item?.subtitle }}\n                                        </h3>\n                                    }\n                                    @if (item?.services?.length) {\n                                        <ul class=\"cs_card_list cs_mp_0\">\n                                            @for (\n                                                service of item?.services;\n                                                track $index\n                                            ) {\n                                                <li>\n                                                    @if (service.icon) {\n                                                        <div class=\"info--icon\">\n                                                            <i\n                                                                class=\"icon--svg icon-nuevo_pax_ico_small\"\n                                                                [ngClass]=\"\n                                                                    service.icon\n                                                                \"\n                                                            ></i>\n                                                        </div>\n                                                    }\n                                                    @if (service.name) {\n                                                        <p class=\"text--small\">\n                                                            {{ service.name }}\n                                                        </p>\n                                                    }\n                                                </li>\n                                            }\n                                        </ul>\n                                    }\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                }\n            }\n        </div>\n        @if (button?.label) {\n            <div class=\"btns__box align--center\">\n                <a\n                    [href]=\"button?.url\"\n                    class=\"btn btn_primary\"\n                    [attr.aria-label]=\"button?.label\"\n                >\n                    <b>{{ button?.label }}</b>\n                    <span class=\"babylon-arrow-right-big\"></span>\n                </a>\n            </div>\n        }\n    </div>\n</section>\n","import { BabylonItemGridI } from './babylon-list-grid.component';\nimport { BabylonButtonI } from '../../../interfaces/babylon-button.interface';\nimport { BabylonTextInfoI } from '../../../interfaces/babylon-text-info.interface';\n\nexport class BabylonListGridI {\n    labels?: BabylonTextInfoI;\n    items?: BabylonItemGridI[];\n    button?: BabylonButtonI;\n}\n","export enum TagType {\n    ListImg = 'ListImg',\n    SliderImgVideo = 'SliderImgVideo',\n    SliderImgVideoSmall = 'SliderImgVideoSmall',\n}\n","import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n    AfterViewInit,\n    booleanAttribute,\n    Component,\n    ElementRef,\n    HostListener,\n    inject,\n    Input,\n    PLATFORM_ID,\n    ViewChild,\n} from '@angular/core';\nimport { SlickInitDirective } from '../../../directives/sliders/slick-init.directive';\nimport { TagType } from '../../../Enum/tags.enums';\nimport {\n    BabylonIconInfoI,\n    BabylonMultimediaI,\n    BabylonTextInfoI,\n} from '../../../interfaces';\nimport { BabylonEquipmentItem } from '../../../interfaces/babylon-equipments-item.interface';\nimport { BabylonRoomDetailI } from '../../../interfaces/babylon-room-detail.interface';\nimport {\n    getFirstImageByTagFromMultimedia,\n    getImagesByTagFromMultimedia,\n} from '../../../utils/mutimedia.utils';\n\n@Component({\n    selector: 'lib-babylon-list-img',\n    standalone: true,\n    imports: [CommonModule, SlickInitDirective],\n    templateUrl: './babylon-list-img.component.html',\n    styleUrls: ['./babylon-list-img.component.scss'],\n})\nexport class BabylonListImgComponent implements AfterViewInit {\n    @Input({ transform: booleanAttribute }) rightSide = false;\n    @Input({ transform: booleanAttribute }) leftSide = false;\n    @Input() texts?: BabylonTextInfoI;\n    @Input() items?: BabylonIconInfoI[];\n    @Input() multimedia?: BabylonMultimediaI;\n    @Input() equipment?: BabylonEquipmentItem[];\n    @Input() room?: BabylonRoomDetailI;\n    @Input() visibleLimit = 3;\n    @Input() iconsLikeImages?: boolean = false;\n\n    tag: TagType = TagType.ListImg;\n\n    /** Offset para cabeceras sticky (desktop), modifícalo si necesitas */\n    @Input() scrollOffset = 96;\n\n    /** Texto del botón (traducible) */\n    @Input() moreText = 'Mostrar más';\n    @Input() lessText = 'Mostrar menos';\n\n    /** Controla el estado del desplegable */\n    open = false;\n\n    /** Referencias a DOM del propio template */\n    @ViewChild('moreContent', { static: true })\n    moreContentRef!: ElementRef<HTMLElement>;\n    @ViewChild('btnMoreLess', { static: true })\n    btnRef!: ElementRef<HTMLButtonElement>;\n    @ViewChild('rootSection', { static: true })\n    rootSectionRef!: ElementRef<HTMLElement>;\n    @ViewChild('headingRef', { static: false })\n    headingRef?: ElementRef<HTMLElement>;\n\n    private platformId = inject(PLATFORM_ID);\n\n    /** id único para aria-controls */\n    contentId = `more-content-${Math.random().toString(36).slice(2)}`;\n\n\n    listItems: Array<BabylonEquipmentItem | BabylonIconInfoI> = [];\n    visibleItems: Array<BabylonEquipmentItem | BabylonIconInfoI> = [];\n    hiddenItems: Array<BabylonEquipmentItem | BabylonIconInfoI> = [];\n    showMoreButton = false;\n\n    ngOnInit(): void {\n        this.listItems = this.equipment?.length ? this.equipment : this.items || [];\n        this.visibleItems = this.listItems.slice(0, this.visibleLimit);\n        this.hiddenItems = this.listItems.slice(this.visibleLimit);\n        this.showMoreButton = this.listItems.length > this.visibleLimit;\n    }\n\n    get vm() {\n        let currentTexts: any = {};\n        let currentList: any[] = [];\n        let currentMultimedia: any = null;\n\n        if (this.room) {\n            // Caso Room\n            currentTexts = {\n                title: this.room.texts?.name,\n                subtitle:\n                    this.room.texts?.additional1 ||\n                    this.room.texts?.additional2,\n            };\n            currentList = this.room.equipments || [];\n            currentMultimedia = this.room.multimedia || null;\n        } else {\n            // Caso sin Room\n            currentList = this.equipment?.length\n                ? this.equipment\n                : this.items || [];\n\n            currentMultimedia = this.multimedia?.imagenes || null;\n\n            // Fallback inteligente de textos\n            if (this.texts && Object.keys(this.texts).length) {\n                currentTexts = this.texts;\n            } else {\n                const firstMedia = Array.isArray(currentMultimedia)\n                    ? currentMultimedia[0]\n                    : currentMultimedia;\n\n                currentTexts = {\n                    title: firstMedia?.title || firstMedia?.name || '',\n                    subtitle: firstMedia?.description || firstMedia?.alt || '',\n                };\n            }\n        }\n\n        return {\n            texts: currentTexts,\n            multimedia: currentMultimedia,\n            visibleItems: currentList.slice(0, this.visibleLimit),\n            hiddenItems: currentList.slice(this.visibleLimit),\n            showMoreButton: currentList.length > this.visibleLimit,\n        };\n    }\n\n    getItemTitle(item: BabylonEquipmentItem | BabylonIconInfoI): string {\n        return (item as BabylonIconInfoI).title ?? item.name ?? '';\n    }\n\n    getItemSubtitle(item: BabylonEquipmentItem | BabylonIconInfoI): string {\n        return (item as BabylonIconInfoI).subtitle ?? item.description ?? '';\n    }\n\n    isIconClass(icon?: string): boolean {\n        if (!icon) return false;\n        // Si es URL (contiene /, .svg, o #) es href, no class\n        return (\n            !icon.includes('/') && !icon.includes('.svg') && !icon.includes('#')\n        );\n    }\n\n    getIconHref(icon?: string): string {\n        if (!icon) return '';\n        if (this.isIconClass(icon)) return '';\n        if (icon.startsWith('#')) return icon;\n        if (icon.includes('.svg#')) return icon;\n        if (icon.startsWith('/')) return icon;\n        return `#${icon}`;\n    }\n\n    getIconClass(icon?: string): string {\n        return icon && this.isIconClass(icon) ? icon : '';\n    }\n\n    ngAfterViewInit(): void {\n        if (!isPlatformBrowser(this.platformId)) return;\n        setTimeout(() => this.updateBGHeight(), 100);\n    }\n\n    @HostListener('window:resize')\n    onResize() {\n        if (isPlatformBrowser(this.platformId)) {\n            this.updateBGHeight();\n        }\n    }\n\n    updateBGHeight(): void {\n        if (!isPlatformBrowser(this.platformId)) return;\n        // Aseguramos que los elementos existen (puede no haber textos)\n        if (\n            !this.headingRef?.nativeElement ||\n            !this.rootSectionRef?.nativeElement\n        )\n            return;\n\n        const heading = this.headingRef.nativeElement;\n        const rootSection = this.rootSectionRef.nativeElement;\n\n        const totalPx = (heading.offsetTop || 0) + (heading.offsetHeight || 0);\n\n        // Aplicamos la variable CSS a la sección principal\n        rootSection.style.setProperty(\n            '--bg-height',\n            `${this.toRem(totalPx)}rem`\n        );\n    }\n\n    // Helper para convertir PX a REM (Ajusta el divisor si tu base font-size no es 10px)\n    private toRem(px: number): number {\n        return px / 10; // Cambia a \"px / 16\" si tu html no tiene font-size: 62.5%\n    }\n\n    toggleDisplay(): void {\n        if (!isPlatformBrowser(this.platformId)) return;\n        this.open = !this.open;\n\n        // Actualiza aria-expanded\n        this.btnRef?.nativeElement?.setAttribute(\n            'aria-expanded',\n            String(this.open)\n        );\n\n        // Clase de estado en la sección (para estilos)\n        const section = this.rootSectionRef?.nativeElement;\n        section.classList.toggle('moreLess--active', this.open);\n\n        // Si se cierra, hacemos scroll al inicio del componente con offset\n        if (!this.open) {\n            setTimeout(() => {\n                this.scrollToComponentTop();\n            }, 100);\n        }\n    }\n\n    private scrollToComponentTop(): void {\n        if (!isPlatformBrowser(this.platformId)) return;\n\n        const section = this.rootSectionRef.nativeElement;\n\n        // 1. Asignamos tu offset dinámicamente usando CSS moderno\n        // Esto le dice al navegador: \"Cuando hagas scroll hacia aquí, deja este espacio arriba\"\n        section.style.scrollMarginTop = `${this.getOffsetForViewport()}px`;\n\n        // 2. Usamos scrollIntoView: Esta función no falla, da igual qué div controle el scroll\n        section.scrollIntoView({\n            behavior: 'smooth',\n            block: 'start',\n        });\n    }\n\n    /** Puedes ajustar offset según viewport (ej: solo >500px) */\n    private getOffsetForViewport(): number {\n        if (!isPlatformBrowser(this.platformId)) return 0;\n        return window.innerWidth > 1024 ? this.scrollOffset : 60;\n    }\n\n    getImagesByTag(tagName: string) {\n        // En tu JSON veo que room.multimedia es un array directo de imágenes,\n        // si getImagesByTagFromMultimedia falla con arrays directos, podemos añadir un fallback\n        const taggedImgs = getImagesByTagFromMultimedia(\n            this.vm.multimedia,\n            tagName\n        );\n\n        // Fallback: Si no saca nada por tag pero tenemos imágenes, devuelve las primeras\n        if (!taggedImgs || taggedImgs.length === 0) {\n            if (Array.isArray(this.vm.multimedia)) return this.vm.multimedia;\n            if (this.vm.multimedia?.imagenes)\n                return this.vm.multimedia.imagenes;\n        }\n\n        return taggedImgs;\n    }\n\n    getFirstImageByTag(tagName: string) {\n        return getFirstImageByTagFromMultimedia(this.multimedia, tagName);\n    }\n}\n","<section\n    #rootSection\n    class=\"list-img js-bgHeight-section\"\n    [class.list-img--right]=\"rightSide || leftSide\"\n    [class.list-img--left]=\"!rightSide || !leftSide\"\n>\n    <div class=\"container\">\n        <div class=\"list-img__inner\">\n            @if (getImagesByTag(tag); as imgs) {\n                <div\n                    class=\"list-img__image js-active-slider\"\n                    data-slider_pause=\"false\"\n                    data-slider_speed=\"100\"\n                    data-slider_name=\"js-list-img__image-slider\"\n                    data-slider_showbtns=\"false\"\n                    data-slider_showdots=\"false\"\n                    data-slider_fade=\"true\"\n                    data-slider_autoplay=\"true\"\n                    data-slider_autoplay_speed=\"1000\"\n                    data-slides_pc=\"1\"\n                >\n                    <div class=\"list-img__image--inner\">\n                        <svg\n                            aria-hidden=\"true\"\n                            focusable=\"false\"\n                            class=\"list-img__image--graphic-top\"\n                        >\n                            <use\n                                href=\"/assets/babylon/svg/icon-graphic.svg#icon-graphic\"\n                            ></use>\n                        </svg>\n                        <svg\n                            aria-hidden=\"true\"\n                            focusable=\"false\"\n                            class=\"list-img__image--graphic-bottom\"\n                        >\n                            <use\n                                href=\"/assets/babylon/svg/icon-graphic.svg#icon-graphic\"\n                            ></use>\n                        </svg>\n\n                        <div class=\"js-list-img__image-slider\">\n                            @for (img of imgs; track $index) {\n                                <div>\n                                    <figure>\n                                        <img\n                                            [src]=\"\n                                                img?.img?.src ||\n                                                img?.path?.original\n                                            \"\n                                            [alt]=\"\n                                                img?.img?.alt || img?.alt || ''\n                                            \"\n                                        />\n                                    </figure>\n                                </div>\n                            }\n                        </div>\n                    </div>\n                </div>\n            }\n\n            <div class=\"list-img__content\">\n                @if (vm.texts?.title || vm.texts?.subtitle) {\n                    <div\n                        class=\"list-img__heading js-bgHeight-heading\"\n                        #headingRef\n                    >\n                        @if (vm.texts.title) {\n                            <h2 [innerHTML]=\"vm.texts.title\"></h2>\n                        }\n                        @if (vm.texts.subtitle) {\n                            <p [innerHTML]=\"vm.texts.subtitle\"></p>\n                        }\n                    </div>\n                }\n\n                @if (visibleItems?.length) {\n                    <div class=\"list-img__list\">\n                        @for (item of visibleItems; track $index) {\n                            <div class=\"list-img__list-item\">\n                                <div class=\"list-img__list-item--text\">\n                                    <h3 [innerHTML]=\"getItemTitle(item)\"></h3>\n                                    <p [innerHTML]=\"getItemSubtitle(item)\"></p>\n                                </div>\n                                <div class=\"list-img__list-item--icon\">\n                                    @if (isIconClass(item.icon)) {\n                                        <i\n                                            [class]=\"getIconClass(item.icon)\"\n                                            aria-hidden=\"true\"\n                                            [class.mono]=\"!iconsLikeImages\"\n                                        ></i>\n                                    } @else {\n                                        <svg aria-hidden=\"true\" focusable=\"false\">\n                                            <use [attr.href]=\"getIconHref(item.icon)\"></use>\n                                        </svg>\n                                    }\n                                </div>\n                            </div>\n                        }\n\n                        @if (hiddenItems?.length) {\n                            <div class=\"more-content\" [hidden]=\"!open\">\n                                @for (item of hiddenItems; track $index) {\n                                    <div class=\"list-img__list-item\">\n                                        <div class=\"list-img__list-item--text\">\n                                            <h3 [innerHTML]=\"getItemTitle(item)\"></h3>\n                                            <p [innerHTML]=\"getItemSubtitle(item)\"></p>\n                                        </div>\n                                        <div class=\"list-img__list-item--icon\">\n                                            @if (isIconClass(item.icon)) {\n                                                <i\n                                                    [class]=\"getIconClass(item.icon)\"\n                                                    aria-hidden=\"true\"\n                                                    [class.mono]=\"!iconsLikeImages\"\n                                                ></i>\n                                            } @else {\n                                                <svg aria-hidden=\"true\" focusable=\"false\">\n                                                    <use [attr.href]=\"getIconHref(item.icon)\"></use>\n                                                </svg>\n                                            }\n                                        </div>\n                                    </div>\n                                }\n                            </div>\n                        }\n\n                        @if (showMoreButton) {\n                            <div class=\"btn__group\">\n                                <button\n                                    class=\"btn__moreLess\"\n                                    type=\"button\"\n                                    (click)=\"toggleDisplay()\"\n                                    [attr.aria-expanded]=\"open ? 'true' : 'false'\"\n                                    [attr.aria-controls]=\"contentId\"\n                                >\n                                    <span>{{ open ? lessText : moreText }}</span>\n                                    <span class=\"btn__moreLess--icon\" [class.is-open]=\"open\"></span>\n                                </button>\n                            </div>\n                        }\n                    </div>\n                }\n            </div>\n        </div>\n    </div>\n</section>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport { BabylonItemI, BabylonTextInfoI } from '../../../interfaces';\nimport { BabylonOfferI } from '../babylon-offer-slider';\n\n@Component({\n    selector: 'lib-babylon-list-img-info',\n    standalone: true,\n    imports: [CommonModule, BabylonLinkTypeDirective],\n    templateUrl: './babylon-list-img-info.component.html',\n    styleUrl: './babylon-list-img-info.component.scss',\n})\nexport class BabylonListImgInfoComponent {\n    @Input() texts?: BabylonTextInfoI;\n    @Input() items?: BabylonItemI; //TODO\n    @Input() offers?: BabylonOfferI[];\n}\n","<section class=\"list-img-info__list\">\n    <div class=\"container\">\n        @if (texts?.title) {\n            <span\n                class=\"list-img-info__title\"\n                [innerHTML]=\"texts?.title\"\n            ></span>\n        }\n        @if (offers?.length) {\n            @for (item of offers; track $index) {\n                <div\n                    class=\"list-img-info__item bg-cream\"\n                    [ngClass]=\"{\n                        'list-img-info__item--right': $index % 2 != 0,\n                    }\"\n                >\n                    <div\n                        class=\"list-img-info__item--inner\"\n                        [ngClass]=\"{\n                            'bg-white': $index % 2 != 0,\n                        }\"\n                    >\n                        @if (item?.images?.src) {\n                            <div class=\"list-img-info__item--image\">\n                                <figure>\n                                    <img\n                                        [src]=\"item?.images?.src\"\n                                        [alt]=\"item?.images?.alt\"\n                                    />\n                                </figure>\n                            </div>\n                        }\n                        <div class=\"list-img-info__item--content\">\n                            <svg\n                                aria-hidden=\"true\"\n                                focusable=\"false\"\n                                class=\"list-img-info__item--graphic\"\n                            >\n                                <use\n                                    href=\"/assets/babylon/svg/icon-graphic.svg#icon-graphic\"\n                                ></use>\n                            </svg>\n                            <div class=\"list-img-info__item--content-text\">\n                                @if (item?.name) {\n                                    <h2>{{ item?.name }}</h2>\n                                }\n                                @if (item?.texts?.description) {\n                                    <p\n                                        [innerHTML]=\"item?.texts?.description\"\n                                    ></p>\n                                }\n                            </div>\n                            @if (item?.buttons?.length) {\n                                @for (btn of item?.buttons; track $index) {\n                                    <div class=\"btn__group\">\n                                        <a\n                                            [href]=\"btn.url\"\n                                            [linkType]=\"btn.linkType\"\n                                            class=\"btn btn__primary\"\n                                            ><span>{{ btn.label }}</span></a\n                                        >\n                                    </div>\n                                }\n                            }\n                        </div>\n                    </div>\n                </div>\n            }\n        }\n    </div>\n</section>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport {\n    BabylonButtonI,\n    BabylonItemI,\n    BabylonMultimediaI,\n    BabylonTexts\n} from '../../../interfaces';\nimport { BabylonOfferDetailI } from '../../../interfaces/babylon-offer-detail.interface';\n\n@Component({\n    selector: 'lib-babylon-list-img-v2',\n    standalone: true,\n    imports: [CommonModule, BabylonLinkTypeDirective],\n    templateUrl: './babylon-list-img-v2.component.html',\n    styleUrl: './babylon-list-img-v2.component.scss',\n})\nexport class BabylonListImgV2Component {\n    @Input() rightSide?: boolean = false;\n    @Input() texts?: BabylonTexts;\n    @Input() items?: BabylonItemI[];\n    @Input() buttons?: BabylonButtonI[];\n    @Input() links?: BabylonButtonI[];\n    @Input() offer?: BabylonOfferDetailI;\n}\n","<section class=\"oferta-condiciones\">\n    <div class=\"container\">\n        <div class=\"oferta-condiciones__inner\">\n            @if (offer?.image?.src) {\n                <div class=\"oferta-condiciones__image\">\n                    <svg\n                        aria-hidden=\"true\"\n                        focusable=\"false\"\n                        class=\"oferta-condiciones__graphic--top\"\n                    >\n                        <use\n                            href=\"/assets/babylon/svg/icon-graphic.svg#icon-graphic\"\n                        ></use>\n                    </svg>\n                    <svg\n                        aria-hidden=\"true\"\n                        focusable=\"false\"\n                        class=\"oferta-condiciones__graphic--bottom\"\n                    >\n                        <use\n                            href=\"/assets/babylon/svg/icon-graphic.svg#icon-graphic\"\n                        ></use>\n                    </svg>\n                    <figure>\n                        <img\n                            [src]=\"\n                                offer?.image?.src ||\n                                'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                            \"\n                            [alt]=\"\n                                offer?.image?.alt ??\n                                offer?.image?.title ??\n                                'title'\n                            \"\n                        />\n                    </figure>\n                </div>\n            }\n            @if (offer?.title) {\n                <div class=\"oferta-condiciones__content\">\n                    <div class=\"oferta-condiciones__content--inner\">\n                        @if (offer?.title) {\n                            <div class=\"oferta-condiciones__heading\">\n                                <h2>{{ offer?.title }}</h2>\n                            </div>\n                        }\n                        @if (offer?.conditions) {\n                            <ul class=\"oferta-condiciones__list\">\n                                <li [innerHTML]=\"offer?.conditions\"></li>\n                            </ul>\n                        }\n                        @if (offer?.button?.url) {\n                            <div class=\"btn__group\">\n                                <a\n                                    class=\"btn btn__primary\"\n                                    [href]=\"offer?.button?.url\"\n                                    [linkType]=\"offer?.button?.linkType\"\n                                >\n                                    <span>{{ offer?.button?.label }}</span>\n                                </a>\n                            </div>\n                        }\n                        @if (links?.length) {\n                            <div class=\"btn__link-group\">\n                                <a\n                                    role=\"button\"\n                                    [href]=\"links?.[0]?.url\"\n                                    [linkType]=\"offer?.link?.linkType\"\n                                    class=\"btn__link--withIcon\"\n                                >\n                                    <span class=\"btn__link--icon\">\n                                        <svg\n                                            aria-hidden=\"true\"\n                                            focusable=\"false\"\n                                            class=\"line\"\n                                        >\n                                            <use\n                                                href=\"/assets/babylon/svg/arrow-line.svg#arrow-line\"\n                                            ></use>\n                                        </svg>\n                                        <svg\n                                            aria-hidden=\"true\"\n                                            focusable=\"false\"\n                                        >\n                                            <use\n                                                href=\"/assets/babylon/svg/icon-arrow.svg#icon-arrow\"\n                                            ></use>\n                                        </svg>\n                                    </span>\n                                    <span>{{ links?.[0]?.label }}</span>\n                                </a>\n                            </div>\n                        }\n                    </div>\n                </div>\n            }\n        </div>\n    </div>\n</section>\n","import {\n    AfterViewInit,\n    Component,\n    ElementRef,\n    Input,\n    ViewChild,\n} from '@angular/core';\nimport { BabylonTextInfoI } from '../../../interfaces';\nimport { BabylonAdvantageItemI } from '../../../interfaces/babylon-advantages-item.interface';\n\ninterface LoyaltyTableCell {\n    value?: string;\n    iconHref?: string;\n    iconClass?: 'tick' | 'dash';\n}\n\ninterface LoyaltyTableLevel {\n    tone: 'silver' | 'gold' | 'platinum';\n    label?: string;\n}\n\ninterface LoyaltyTableRow {\n    title: string;\n    cells: [LoyaltyTableCell, LoyaltyTableCell, LoyaltyTableCell];\n}\n\n@Component({\n    selector: 'lib-babylon-loyalty-table',\n    standalone: true,\n    imports: [],\n    templateUrl: './babylon-loyalty-table.component.html',\n    styleUrl: './babylon-loyalty-table.component.scss',\n})\nexport class BabylonLoyaltyTableComponent implements AfterViewInit {\n    private _texts?: BabylonTextInfoI;\n    private _advantages?: BabylonAdvantageItemI[];\n    private viewInitialized = false;\n\n    @Input() identifier?: string = 'loyalty';\n\n    @Input()\n    set advantages(value: BabylonAdvantageItemI[] | undefined) {\n        this._advantages = value;\n        this.rebuildRows();\n    }\n\n    get advantages(): BabylonAdvantageItemI[] | undefined {\n        return this._advantages;\n    }\n\n    @Input()\n    set texts(value: BabylonTextInfoI | undefined) {\n        this._texts = value;\n        this.rebuildRows();\n    }\n\n    get texts(): BabylonTextInfoI | undefined {\n        return this._texts;\n    }\n\n    readonly levels: LoyaltyTableLevel[] = [\n        { tone: 'silver' },\n        { tone: 'gold' },\n        { tone: 'platinum' },\n    ];\n    rows: LoyaltyTableRow[] = [];\n\n    @ViewChild('tabsRoot') tabsRoot?: ElementRef<HTMLElement>;\n\n    ngAfterViewInit(): void {\n        this.viewInitialized = true;\n        this.syncTabsHeight();\n    }\n\n    get levelLabels(): [string | undefined, string | undefined, string | undefined] {\n        return [\n            this.texts?.level1 ?? this.texts?.leve1,\n            this.texts?.level2 ?? this.texts?.leve2,\n            this.texts?.level3 ?? this.texts?.leve3,\n        ];\n    }\n\n    onTabsClick(event: MouseEvent): void {\n        const target = event.target as HTMLElement;\n        const heading = target.closest('.heading');\n        if (!heading) return;\n\n        const parentItem = heading.closest(\n            '.fidelizacion-ficha__table-tabs--item'\n        ) as HTMLElement | null;\n        if (!parentItem) return;\n\n        const content = parentItem.querySelector<HTMLElement>('.content');\n        if (!content) return;\n\n        const isActive = parentItem.classList.contains('active');\n\n        if (isActive) {\n            parentItem.classList.remove('active');\n            this.setMaxHeight(content, 0);\n            return;\n        }\n\n        parentItem.classList.add('active');\n        this.setMaxHeight(content, content.scrollHeight);\n    }\n\n    getCell(row: LoyaltyTableRow, levelIndex: number): LoyaltyTableCell {\n        return row.cells[levelIndex];\n    }\n\n    formatText(value?: string): string | undefined {\n        return value?.replace(/\\n/g, '<br />');\n    }\n\n    private rebuildRows(): void {\n        this.rows = this.buildRows(this._texts, this._advantages);\n        this.syncTabsHeight();\n    }\n\n    private buildRows(\n        texts?: BabylonTextInfoI,\n        advantages?: BabylonAdvantageItemI[]\n    ): LoyaltyTableRow[] {\n        if (!texts && !advantages?.length) {\n            return [];\n        }\n\n        const textEntries = Object.entries((texts ?? {}) as Record<string, unknown>);\n        const textRowIndexes = textEntries\n            .map(([key]) => key.match(/^tablafidelizacin_titulo(\\d+)$/)?.[1])\n            .filter((value): value is string => Boolean(value))\n            .map((value) => Number(value))\n            .sort((a, b) => a - b);\n        const advantageRowIndexes = Array.from(\n            { length: advantages?.length ?? 0 },\n            (_, index) => index + 1\n        );\n        const rowIndexes = Array.from(\n            new Set([...textRowIndexes, ...advantageRowIndexes])\n        ).sort((a, b) => a - b);\n\n        const rows = rowIndexes\n            .map((index) => {\n                const advantage = advantages?.[index - 1];\n                const title = this.resolveRowTitle(index, texts, advantage);\n                if (!title) {\n                    return undefined;\n                }\n\n                const row = {\n                    title,\n                    cells: [\n                        this.buildCell(\n                            this.resolveCellValue(\n                                texts?.[`tablafidelizacin_subtitulo${index}`],\n                                advantage?.subtitle,\n                                advantage?.additional1,\n                                advantage?.texts?.subtitle,\n                                advantage?.texts?.additional1\n                            )\n                        ),\n                        this.buildCell(\n                            this.resolveCellValue(\n                                texts?.[`tablafidelizacin_texto${index}`],\n                                advantage?.text,\n                                advantage?.texts?.text,\n                                advantage?.texts?.description\n                            )\n                        ),\n                        this.buildCell(\n                            this.resolveCellValue(\n                                texts?.[\n                                    `tablafidelizacin_descripcion${index}`\n                                ],\n                                advantage?.description,\n                                advantage?.additional2,\n                                advantage?.texts?.description,\n                                advantage?.texts?.additional2\n                            )\n                        ),\n                    ],\n                } satisfies LoyaltyTableRow;\n\n                return row;\n            })\n            .filter((row): row is LoyaltyTableRow => Boolean(row));\n\n        return rows;\n    }\n\n    private resolveRowTitle(\n        index: number,\n        texts?: BabylonTextInfoI,\n        advantage?: BabylonAdvantageItemI\n    ): string | undefined {\n        return this.readText(\n            texts?.[`tablafidelizacin_titulo${index}`] ??\n                advantage?.title ??\n                advantage?.texts?.title\n        );\n    }\n\n    private resolveCellValue(...values: unknown[]): string | undefined {\n        for (const value of values) {\n            const normalizedValue = this.readText(value);\n            if (normalizedValue) {\n                return normalizedValue;\n            }\n        }\n\n        return undefined;\n    }\n\n    private buildCell(value?: string): LoyaltyTableCell {\n        const normalizedValue = this.readText(value);\n\n        if (normalizedValue === 'x') {\n            return {\n                iconHref: '/assets/babylon/svg/icon-tick-1.svg#icon-tick-1',\n                iconClass: 'tick',\n            };\n        }\n\n        if (normalizedValue === '-') {\n            return {\n                iconHref: '/assets/babylon/svg/icon-dash.svg#icon-dash',\n                iconClass: 'dash',\n            };\n        }\n\n        return { value: normalizedValue };\n    }\n\n    private readText(value: unknown): string | undefined {\n        if (value === null || value === undefined) return undefined;\n\n        const normalizedValue =\n            typeof value === 'string' ? value.trim() : String(value).trim();\n\n        return normalizedValue || undefined;\n    }\n\n    private syncTabsHeight(): void {\n        if (!this.viewInitialized || !this.tabsRoot) return;\n\n        requestAnimationFrame(() => {\n            const items =\n                this.tabsRoot?.nativeElement.querySelectorAll<HTMLElement>(\n                    '.fidelizacion-ficha__table-tabs--item'\n                ) ?? [];\n\n            items.forEach((item) => {\n                const content = item.querySelector<HTMLElement>('.content');\n                if (!content) return;\n\n                if (item.classList.contains('active')) {\n                    this.setMaxHeight(content, content.scrollHeight);\n                    return;\n                }\n\n                this.setMaxHeight(content, 0);\n            });\n        });\n    }\n\n    private setMaxHeight(element: HTMLElement, height: number): void {\n        if (height > 0) {\n            element.style.maxHeight = '0px';\n            requestAnimationFrame(() => {\n                element.style.maxHeight = `${height}px`;\n            });\n            return;\n        }\n\n        element.style.maxHeight = '0px';\n    }\n}\n","@if (texts) {\n    <section class=\"fidelizacion-ficha__table bg-cream\" [id]=\"identifier\">\n        <div class=\"container\">\n            <div class=\"fidelizacion-ficha__table-heading\">\n                @if (texts.title) {\n                    <h2 [innerHTML]=\"formatText(texts.title)\"></h2>\n                }\n                @if (texts.subtitle) {\n                    <p [innerHTML]=\"formatText(texts.subtitle)\"></p>\n                }\n            </div>\n\n            @if (rows.length) {\n                <div class=\"fidelizacion-ficha__table-box\">\n                    <svg\n                        aria-hidden=\"true\"\n                        focusable=\"false\"\n                        class=\"fidelizacion-ficha__table-box--graphic\"\n                    >\n                        <use\n                            href=\"/assets/babylon/svg/icon-graphic.svg#icon-graphic\"\n                        ></use>\n                    </svg>\n                    <div class=\"fidelizacion-ficha__table-box--mobile\">\n                        <div\n                            class=\"fidelizacion-ficha__table-tabs\"\n                            (click)=\"onTabsClick($event)\"\n                            #tabsRoot\n                        >\n                            @for (\n                                level of levels;\n                                track level.tone;\n                                let levelIndex = $index\n                            ) {\n                                <div\n                                    class=\"fidelizacion-ficha__table-tabs--item\"\n                                    [class.silver]=\"level.tone === 'silver'\"\n                                    [class.gold]=\"level.tone === 'gold'\"\n                                    [class.platinum]=\"\n                                        level.tone === 'platinum'\n                                    \"\n                                >\n                                    <div class=\"heading\">\n                                        <span\n                                            [innerHTML]=\"\n                                                formatText(\n                                                    levelLabels[levelIndex]\n                                                ) ?? ''\n                                            \"\n                                        ></span>\n                                        <span class=\"heading__icon\">\n                                            <svg\n                                                aria-hidden=\"true\"\n                                                focusable=\"false\"\n                                            >\n                                                <use\n                                                    href=\"/assets/babylon/svg/icon-close.svg#icon-close\"\n                                                ></use>\n                                            </svg>\n                                        </span>\n                                    </div>\n                                    <div class=\"content\">\n                                        <div class=\"content__heading\">\n                                            @if (texts.advantagestitle) {\n                                                <h3\n                                                    [innerHTML]=\"\n                                                        formatText(\n                                                            texts.advantagestitle\n                                                        )\n                                                    \"\n                                                ></h3>\n                                            }\n                                            @if (texts.advantagessubtitle) {\n                                                <p\n                                                    [innerHTML]=\"\n                                                        formatText(\n                                                            texts.advantagessubtitle\n                                                        )\n                                                    \"\n                                                ></p>\n                                            }\n                                        </div>\n                                        <div class=\"content__list\">\n                                            @for (\n                                                row of rows;\n                                                track row.title\n                                            ) {\n                                                <div class=\"content__list-item\">\n                                                    <div\n                                                        class=\"content__list-item--text\"\n                                                    >\n                                                        <p\n                                                            [innerHTML]=\"\n                                                                formatText(\n                                                                    row.title\n                                                                )\n                                                            \"\n                                                        ></p>\n                                                    </div>\n                                                    @if (\n                                                        getCell(\n                                                            row,\n                                                            levelIndex\n                                                        );\n                                                        as cell\n                                                    ) {\n                                                        <div\n                                                            class=\"content__list-item--value\"\n                                                        >\n                                                            @if (\n                                                                cell.iconHref\n                                                            ) {\n                                                                <svg\n                                                                    aria-hidden=\"true\"\n                                                                    focusable=\"false\"\n                                                                    [class]=\"\n                                                                        cell.iconClass\n                                                                    \"\n                                                                >\n                                                                    <use\n                                                                        [attr.href]=\"\n                                                                            cell.iconHref\n                                                                        \"\n                                                                    ></use>\n                                                                </svg>\n                                                            } @else if (\n                                                                cell.value\n                                                            ) {\n                                                                <span>{{\n                                                                    cell.value\n                                                                }}</span>\n                                                            }\n                                                        </div>\n                                                    }\n                                                </div>\n                                            }\n                                        </div>\n                                    </div>\n                                </div>\n                            }\n                        </div>\n                    </div>\n                    <div class=\"fidelizacion-ficha__table-box--desktop\">\n                        <div class=\"fidelizacion-ficha__table-box--table\">\n                            <div class=\"fidelizacion-ficha__table-box--th\">\n                                <div\n                                    class=\"fidelizacion-ficha__table-box--column heading\"\n                                >\n                                    @if (texts.advantagestitle) {\n                                        <h3\n                                            [innerHTML]=\"\n                                                formatText(\n                                                    texts.advantagestitle\n                                                )\n                                            \"\n                                        ></h3>\n                                    }\n                                    @if (texts.advantagessubtitle) {\n                                        <p\n                                            [innerHTML]=\"\n                                                formatText(\n                                                    texts.advantagessubtitle\n                                                )\n                                            \"\n                                        ></p>\n                                    }\n                                </div>\n                                @for (\n                                    label of levelLabels;\n                                    track label;\n                                    let levelIndex = $index\n                                ) {\n                                    <div\n                                        class=\"fidelizacion-ficha__table-box--column\"\n                                        [class.silver]=\"levelIndex === 0\"\n                                        [class.gold]=\"levelIndex === 1\"\n                                        [class.platinum]=\"levelIndex === 2\"\n                                    >\n                                        <span\n                                            [innerHTML]=\"\n                                                formatText(label) ?? ''\n                                            \"\n                                        ></span>\n                                    </div>\n                                }\n                            </div>\n                            @for (row of rows; track row.title) {\n                                <div class=\"fidelizacion-ficha__table-box--td\">\n                                    <div\n                                        class=\"fidelizacion-ficha__table-box--column heading\"\n                                    >\n                                        <p\n                                            [innerHTML]=\"formatText(row.title)\"\n                                        ></p>\n                                    </div>\n                                    @for (\n                                        cell of row.cells;\n                                        track $index\n                                    ) {\n                                        <div\n                                            class=\"fidelizacion-ficha__table-box--column\"\n                                        >\n                                            @if (cell.iconHref) {\n                                                <svg\n                                                    aria-hidden=\"true\"\n                                                    focusable=\"false\"\n                                                    [class]=\"cell.iconClass\"\n                                                >\n                                                    <use\n                                                        [attr.href]=\"\n                                                            cell.iconHref\n                                                        \"\n                                                    ></use>\n                                                </svg>\n                                            } @else if (cell.value) {\n                                                <span>{{ cell.value }}</span>\n                                            }\n                                        </div>\n                                    }\n                                </div>\n                            }\n                        </div>\n                    </div>\n                </div>\n            }\n\n            @if (texts.description) {\n                <div class=\"fidelizacion-ficha__table-footer\">\n                    <p [innerHTML]=\"formatText(texts.description)\"></p>\n                </div>\n            }\n        </div>\n    </section>\n}\n","import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n    Component,\n    ElementRef,\n    Inject,\n    PLATFORM_ID,\n    ViewChild,\n} from '@angular/core';\n\n@Component({\n    selector: 'lib-babylon-map-txt',\n    standalone: true,\n    imports: [CommonModule],\n    templateUrl: './babylon-map-txt.component.html',\n    styleUrl: './babylon-map-txt.component.scss',\n})\nexport class BabylonMapTxtComponent {\n    // desplegable \"more/less\"\n    isExpanded = false;\n\n    @ViewChild('mapModal', { static: true })\n    mapModal!: ElementRef<HTMLElement>;\n\n    // nombre del modal activo (por si más adelante hay varios)\n    activeModal: string | null = null;\n\n    constructor(@Inject(PLATFORM_ID) private platformId: object) {}\n\n    // ====== MORE / LESS ======\n    toggleMoreLess(): void {\n        this.isExpanded = !this.isExpanded;\n    }\n\n    // ====== MODALES ======\n    openModal(name: string): void {\n        this.activeModal = name;\n        this.syncBodyClasses();\n    }\n\n    closeModal(name: string): void {\n        if (this.activeModal === name) {\n            this.activeModal = null;\n            this.syncBodyClasses();\n        }\n    }\n\n    private syncBodyClasses(): void {\n        if (!isPlatformBrowser(this.platformId)) return;\n\n        const body = document.body;\n        const mapModal = this.mapModal?.nativeElement;\n\n        // limpia clases conocidas (si luego tienes más modales añade aquí)\n        body.classList.remove('modal--open', 'mapInfo-1');\n        mapModal.classList.remove('modal--open', 'mapInfo-1');\n\n        if (this.activeModal) {\n            body.classList.add('modal--open', this.activeModal);\n            mapModal.classList.add('modal--open', this.activeModal);\n        }\n    }\n}\n","<section class=\"CanBordoy-Map\" [class.moreLess--active]=\"isExpanded\">\n    <div class=\"CanBordoy-Map__heading\">\n        <h2>Located in Palma’s Old Town</h2>\n        <p>palma around Can Bordoy</p>\n        <span class=\"CanBordoy-Map__icon-btn\">\n            <svg\n                aria-hidden=\"true\"\n                class=\"CanBordoy-Map__icon-btn--graphic\"\n                focusable=\"false\"\n            >\n                <use\n                    href=\"/assets/babylon/svg/heading_graphic.svg#heading_graphic\"\n                ></use>\n            </svg>\n            <span\n                class=\"CanBordoy-Map__icon-btn--plus btn__moreLess\"\n                role=\"button\"\n                (click)=\"toggleMoreLess()\"\n            >\n                <svg aria-hidden=\"true\" focusable=\"false\">\n                    <use\n                        href=\"/assets/babylon/svg/plus-icon.svg#plus-icon\"\n                    ></use>\n                </svg>\n            </span>\n        </span>\n    </div>\n\n    <div class=\"more-content\">\n        <div>\n            <div class=\"CanBordoy-Map__dropDown\">\n                <div class=\"CanBordoy-Map__dropDown--list\">\n                    <div class=\"CanBordoy-Map__dropDown--item\">\n                        <h3>\n                            Luxury Accommodation\n                            <span>Can Bordoy</span>\n                        </h3>\n                        <p>\n                            Many desktop publishing packages and web page\n                            editors now use Lorem Ipsum as their default model\n                            text, and a search for lorem ipsum will uncover many\n                            web sites still in their infancy. It is a long\n                            established fact that a reader will be distracted by\n                            the readable content of a page when looking at its\n                            layout the point of using Lorem Ipsum is that it has\n                            a more orless normal distribution.\n                        </p>\n                    </div>\n                    <div class=\"CanBordoy-Map__dropDown--item\">\n                        <h3>\n                            Palma's Old Town\n                            <span>Can Bordoy</span>\n                        </h3>\n                        <p>\n                            Many desktop publishing packages and web page\n                            editors now use Lorem Ipsum as their default model\n                            text, and a search for lorem ipsum will uncover many\n                            web sites still in their infancy. It is a long\n                            established fact that a reader will be distracted by\n                            the readable content of a page when looking at its\n                            layout the point of using Lorem Ipsum is that it has\n                            a more orless normal distribution.\n                        </p>\n                    </div>\n                    <div class=\"CanBordoy-Map__dropDown--item\">\n                        <h3>\n                            Monuments\n                            <span>Can Bordoy</span>\n                        </h3>\n                        <p>\n                            Many desktop publishing packages and web page\n                            editors now use Lorem Ipsum as their default model\n                            text, and a search for lorem ipsum will uncover many\n                            web sites still in their infancy. It is a long\n                            established fact that a reader will be distracted by\n                            the readable content of a page when looking at its\n                            layout the point of using Lorem Ipsum is that it has\n                            a more orless normal distribution.\n                        </p>\n                    </div>\n                    <div class=\"CanBordoy-Map__dropDown--item\">\n                        <h3>\n                            Shopping\n                            <span>Can Bordoy</span>\n                        </h3>\n                        <p>\n                            Many desktop publishing packages and web page\n                            editors now use Lorem Ipsum as their default model\n                            text, and a search for lorem ipsum will uncover many\n                            web sites still in their infancy. It is a long\n                            established fact that a reader will be distracted by\n                            the readable content of a page when looking at its\n                            layout the point of using Lorem Ipsum is that it has\n                            a more orless normal distribution.\n                        </p>\n                    </div>\n                </div>\n                <span class=\"CanBordoy-Map__btn\">\n                    <a\n                        role=\"button\"\n                        class=\"btn__link btn__link--reverse btn__moreLess\"\n                        (click)=\"toggleMoreLess()\"\n                    >\n                        <span>hide</span>\n                    </a>\n                    <svg\n                        aria-hidden=\"true\"\n                        class=\"CanBordoy-Map__btn--graphic\"\n                        focusable=\"false\"\n                    >\n                        <use\n                            href=\"/assets/babylon/svg/heading_graphic.svg#heading_graphic\"\n                        ></use>\n                    </svg>\n                </span>\n            </div>\n        </div>\n    </div>\n\n    <div class=\"CanBordoy-Map__map-box\">\n        <figure>\n            <img\n                src=\"/assets/babylon/images/map_desktop.svg\"\n                class=\"CanBordoy-Map__img--desktop\"\n            />\n            <img\n                src=\"/assets/babylon/images/map_mobile.svg\"\n                class=\"CanBordoy-Map__img--mobile\"\n            />\n        </figure>\n        <ul class=\"CanBordoy-Map__map-pinList\">\n            <li class=\"CanBordoy-Map__map-pinList--logo\">\n                <svg aria-hidden=\"true\" focusable=\"false\">\n                    <use\n                        href=\"/assets/babylon/svg/canbordoy-icon-logo.svg#canbordoy-icon-logo\"\n                    ></use>\n                </svg>\n            </li>\n\n            <li\n                class=\"CanBordoy-Map__map-pinList--1 js-active-modal\"\n                data-modal_name=\"mapInfo-1\"\n                (click)=\"openModal('mapInfo-1')\"\n            >\n                <figure>\n                    <img src=\"/assets/babylon/images/map-pin-1.png\" />\n                </figure>\n                <span\n                    class=\"CanBordoy-Map__map-pinList--plus CanBordoy-Map__map-pinList--1-plus\"\n                >\n                    <svg aria-hidden=\"true\" focusable=\"false\">\n                        <use\n                            href=\"/assets/babylon/svg/plus-icon.svg#plus-icon\"\n                        ></use>\n                    </svg>\n                </span>\n            </li>\n\n            <li\n                class=\"CanBordoy-Map__map-pinList--2 js-active-modal\"\n                data-modal_name=\"mapInfo-1\"\n                (click)=\"openModal('mapInfo-1')\"\n            >\n                <figure>\n                    <img src=\"/assets/babylon/images/map-pin-2.png\" />\n                </figure>\n                <span\n                    class=\"CanBordoy-Map__map-pinList--plus CanBordoy-Map__map-pinList--2-plus\"\n                >\n                    <svg aria-hidden=\"true\" focusable=\"false\">\n                        <use\n                            href=\"/assets/babylon/svg/plus-icon.svg#plus-icon\"\n                        ></use>\n                    </svg>\n                </span>\n            </li>\n\n            <li\n                class=\"CanBordoy-Map__map-pinList--3 js-active-modal\"\n                data-modal_name=\"mapInfo-1\"\n                (click)=\"openModal('mapInfo-1')\"\n            >\n                <figure>\n                    <img src=\"/assets/babylon/images/map-pin-3.png\" />\n                </figure>\n                <span\n                    class=\"CanBordoy-Map__map-pinList--plus CanBordoy-Map__map-pinList--3-plus\"\n                >\n                    <svg aria-hidden=\"true\" focusable=\"false\">\n                        <use\n                            href=\"/assets/babylon/svg/plus-icon.svg#plus-icon\"\n                        ></use>\n                    </svg>\n                </span>\n            </li>\n\n            <li\n                class=\"CanBordoy-Map__map-pinList--4 js-active-modal\"\n                data-modal_name=\"mapInfo-1\"\n                (click)=\"openModal('mapInfo-1')\"\n            >\n                <figure>\n                    <img src=\"/assets/babylon/images/map-pin-4.png\" />\n                </figure>\n                <span\n                    class=\"CanBordoy-Map__map-pinList--plus CanBordoy-Map__map-pinList--4-plus\"\n                >\n                    <svg aria-hidden=\"true\" focusable=\"false\">\n                        <use\n                            href=\"/assets/babylon/svg/plus-icon.svg#plus-icon\"\n                        ></use>\n                    </svg>\n                </span>\n            </li>\n\n            <li\n                class=\"CanBordoy-Map__map-pinList--5 js-active-modal\"\n                data-modal_name=\"mapInfo-1\"\n                (click)=\"openModal('mapInfo-1')\"\n            >\n                <figure>\n                    <img src=\"/assets/babylon/images/map-pin-5.png\" />\n                </figure>\n                <span\n                    class=\"CanBordoy-Map__map-pinList--plus CanBordoy-Map__map-pinList--5-plus\"\n                >\n                    <svg aria-hidden=\"true\" focusable=\"false\">\n                        <use\n                            href=\"/assets/babylon/svg/plus-icon.svg#plus-icon\"\n                        ></use>\n                    </svg>\n                </span>\n            </li>\n\n            <li\n                class=\"CanBordoy-Map__map-pinList--6 js-active-modal\"\n                data-modal_name=\"mapInfo-1\"\n                (click)=\"openModal('mapInfo-1')\"\n            >\n                <figure>\n                    <img src=\"/assets/babylon/images/map-pin-6.png\" />\n                </figure>\n                <span\n                    class=\"CanBordoy-Map__map-pinList--plus CanBordoy-Map__map-pinList--6-plus\"\n                >\n                    <svg aria-hidden=\"true\" focusable=\"false\">\n                        <use\n                            href=\"/assets/babylon/svg/plus-icon.svg#plus-icon\"\n                        ></use>\n                    </svg>\n                </span>\n            </li>\n\n            <li\n                class=\"CanBordoy-Map__map-pinList--7 js-active-modal\"\n                data-modal_name=\"mapInfo-1\"\n                (click)=\"openModal('mapInfo-1')\"\n            >\n                <figure>\n                    <img src=\"/assets/babylon/images/map-pin-7.png\" />\n                </figure>\n                <span\n                    class=\"CanBordoy-Map__map-pinList--plus CanBordoy-Map__map-pinList--7-plus\"\n                >\n                    <svg aria-hidden=\"true\" focusable=\"false\">\n                        <use\n                            href=\"/assets/babylon/svg/plus-icon.svg#plus-icon\"\n                        ></use>\n                    </svg>\n                </span>\n            </li>\n        </ul>\n    </div>\n\n    <span class=\"CanBordoy-Map__btn\">\n        <a role=\"button\" class=\"btn__link btn__link--reverse\">\n            <span>How to get there</span>\n        </a>\n    </span>\n</section>\n\n<!-- MODAL controlado por Angular -->\n<div class=\"modal modal__mapInfo modal__mapInfo-1\" #mapModal>\n    <div class=\"modal__inner\">\n        <div\n            class=\"modal__close js-close\"\n            role=\"button\"\n            (click)=\"closeModal('mapInfo-1')\"\n        >\n            <svg aria-hidden=\"true\" focusable=\"false\">\n                <use href=\"/assets/babylon/svg/close-icon.svg#close-icon\"></use>\n            </svg>\n        </div>\n        <div class=\"modal__mapInfo--graphic\">\n            <figure>\n                <img src=\"/assets/babylon/images/modal-img-1.png\" />\n            </figure>\n        </div>\n        <div class=\"modal__mapInfo--content\">\n            <h2>\n                Catedral de Palma\n                <span>around Can Bordoy</span>\n            </h2>\n            <p>\n                Many desktop publishing packages and web page editors now use\n                Lorem Ipsum as their default model text, and a search for lorem\n                ipsum will uncover many web sites still in their infancy. It is\n                a long established fact that a reader will be distracted by the\n                readable content of a page when looking at its layout the point\n                of using Lorem Ipsum is that it has a more orless normal\n                distribution.\n            </p>\n        </div>\n    </div>\n</div>\n","import {\n    ChangeDetectionStrategy,\n    Component,\n    EventEmitter,\n    inject,\n    Input,\n    Output,\n} from '@angular/core';\nimport { BabylonImageI } from '../../../interfaces/babylon-image.interface';\nimport { BabylonButtonI } from '../../../interfaces/babylon-button.interface';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport { CommonModule } from '@angular/common';\nimport { BabylonEngineStateService } from '../../../services/engine-state.service';\n\n@Component({\n    selector: 'lib-babylon-modal-multiple-motors',\n    standalone: true,\n    imports: [CommonModule, BabylonLinkTypeDirective],\n    templateUrl: './babylon-modal-multiple-motors.component.html',\n    styleUrl: './babylon-modal-multiple-motors.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonModalMultipleMotorsComponent {\n    @Input() logo?: BabylonImageI;\n    @Input() pretitle?: string;\n    @Input() title?: string;\n    @Input() buttons?: BabylonButtonI[];\n\n    @Output() openEngine = new EventEmitter();\n\n    private engineState = inject(BabylonEngineStateService);\n    private readonly dialogRef: MatDialogRef<BabylonModalMultipleMotorsComponent> =\n        inject(MatDialogRef);\n\n    close(): void {\n        this.dialogRef.close();\n    }\n    openEngineModal(): void {\n        this.openEngine.emit();\n    }\n\n    getUrlWithParams(baseUrl?: string): string {\n        if (!baseUrl) return '';\n        const currentParams = this.engineState.getQueryParamsValue();\n\n        if (!currentParams) return baseUrl;\n\n        const separator = baseUrl.includes('?') ? '&' : '?';\n        return `${baseUrl}${separator}${currentParams}`;\n    }\n}\n","<div class=\"babylon-multiple-motors__close\">\n    <button\n        name=\"close\"\n        class=\"btn btn_primary btn--light babylon-plus btn-responsive\"\n        (click)=\"close()\"\n    ></button>\n</div>\n<div class=\"babylon-multiple-motors__wrapper\">\n    <div class=\"babylon-multiple-motors\">\n        <div\n            class=\"babylon-multiple-motors__header d-flex flex-column align-itemns-center\"\n        >\n            <h4 class=\"title--small\">{{ title }}</h4>\n        </div>\n\n        @if (buttons && buttons.length) {\n            <div\n                class=\"babylon-multiple-motors__content d-flex flex-row align-items-center justify-content-center\"\n            >\n                @for (button of buttons; track $index) {\n                    <a\n                        [attr.aria-label]=\"button.label\"\n                        class=\"d-flex align-items-center\"\n                        [linkType]=\"button.linkType\"\n                        [href]=\"\n                            button.linkType === 'external'\n                                ? getUrlWithParams(button.url)\n                                : button.url\n                        \"\n                        (click)=\"close()\"\n                    >\n                        @if (button.icon) {\n                            <span class=\"info--icon\">\n                                <i\n                                    class=\"icon--svg\"\n                                    [ngClass]=\"button.icon\"\n                                ></i>\n                            </span>\n                        }\n                        @if (button.label) {\n                            <b class=\"text\">{{ button.label }}</b>\n                        }\n                    </a>\n                }\n            </div>\n        }\n        @if (logo) {\n            <div\n                class=\"babylon-multiple-motors__footer d-flex align-items-center\"\n            >\n                <img [src]=\"logo.src\" [alt]=\"logo.alt\" />\n            </div>\n        }\n    </div>\n</div>\n","import {\n    BabylonInputI,\n    BabylonButtonI,\n    BabylonImageI,\n} from '../../../interfaces';\n\nexport class BabylonNewsletterI {\n    title?: string;\n    subtitle?: string;\n    conditions?: string;\n    input?: BabylonInputI;\n    button?: BabylonButtonI;\n    img?: BabylonImageI;\n}\n","import { Component, EventEmitter, Input, inject } from '@angular/core';\nimport { FormBuilder, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport {\n    BabylonButtonI,\n    BabylonImageI,\n    BabylonInputI,\n    BabylonMultimediaI,\n    BabylonTextInfoI,\n} from '../../../interfaces';\nimport { getFirstImageByTagFromMultimedia } from '../../../utils/mutimedia.utils';\n\n@Component({\n    selector: 'lib-babylon-newsletter-modal-v2',\n    standalone: true,\n    imports: [ReactiveFormsModule, BabylonLinkTypeDirective],\n    templateUrl: './babylon-newsletter-modal-v2.component.html',\n    styleUrl: './babylon-newsletter-modal-v2.component.scss',\n})\nexport class BabylonNewsletterModalV2Component {\n    @Input() title?: string;\n    @Input() subtitle?: string;\n    @Input() conditions?: string;\n    @Input() input?: BabylonInputI;\n    @Input() button?: BabylonButtonI;\n    @Input() img?: BabylonImageI;\n\n    @Input() texts?: BabylonTextInfoI;\n    @Input() multimedia?: BabylonMultimediaI;\n    @Input() buttons?: BabylonButtonI[];\n\n    @Input() submitForm!: EventEmitter<string>;\n\n    tagName: string = 'NewsletterModalV2';\n\n    private readonly dialogRef = inject(\n        MatDialogRef<BabylonNewsletterModalV2Component>\n    );\n    private readonly fb = inject(FormBuilder);\n\n    form = this.fb.nonNullable.group({\n        email: ['', [Validators.required, Validators.email]],\n        conditions: [false],\n    });\n\n    get emailCtrl() {\n        return this.form.controls.email;\n    }\n\n    get conditionsCtrl() {\n        return this.form.controls.conditions;\n    }\n\n    ngOnInit(): void {\n        const initial = (this.input as any)?.value;\n        if (typeof initial === 'string' && initial.trim()) {\n            this.form.patchValue({ email: initial.trim() });\n        }\n\n        if (!this.texts?.conditions) {\n            this.conditionsCtrl.clearValidators();\n            this.conditionsCtrl.updateValueAndValidity({ emitEvent: false });\n        } else {\n            this.conditionsCtrl.setValidators([Validators.requiredTrue]);\n            this.conditionsCtrl.updateValueAndValidity({ emitEvent: false });\n        }\n    }\n\n    close(): void {\n        sessionStorage.setItem('newsletterV2', '1');\n        this.dialogRef.close();\n    }\n\n    submit(): void {\n        this.form.markAllAsTouched();\n        if (this.form.invalid) return;\n\n        const email = this.emailCtrl.value.trim().toLowerCase();\n        this.submitForm?.emit(email);\n\n        sessionStorage.setItem('newsletterV2', '1');\n\n        this.close();\n    }\n\n    getFirstImageByTag(tagName: string) {\n        return getFirstImageByTagFromMultimedia(this.multimedia, tagName);\n    }\n}\n","<section id=\"newsletter-form\" class=\"mdl-newsletter\">\n    <div class=\"mod-close\">\n        <button\n            class=\"carousel__button is-close mdl-idiomas__close\"\n            title=\"Close\"\n            (click)=\"close()\"\n        >\n            <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n                <path d=\"M20 20L4 4m16 0L4 20\"></path>\n            </svg>\n        </button>\n    </div>\n    <div class=\"mdl-container\">\n        @if (multimedia?.imagenes?.[0]; as img) {\n            <div class=\"m-left\">\n                <img\n                    [src]=\"\n                        img.img?.src ||\n                        'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                    \"\n                    [alt]=\"img.img?.alt\"\n                />\n            </div>\n        }\n        <div class=\"m-right\">\n            <div class=\"m-content\">\n                @if (texts?.subtitle) {\n                    <div class=\"m-text\">\n                        {{ texts?.subtitle }}\n                    </div>\n                }\n                <form [formGroup]=\"form\" (ngSubmit)=\"submit()\">\n                    <div class=\"m-input\">\n                        <input\n                            class=\"m-mail\"\n                            id=\"name\"\n                            type=\"text\"\n                            formControlName=\"email\"\n                            [placeholder]=\"texts?.inputPlaceholder ?? ''\"\n                            autocomplete=\"email\"\n                        />\n                        @if (texts?.inputLabel) {\n                            <label for=\"name\">{{ texts?.inputLabel }}</label>\n                        }\n                        <input\n                            class=\"m-button\"\n                            type=\"submit\"\n                            [value]=\"buttons?.[0]?.label ?? '>'\"\n                            [disabled]=\"form.invalid\"\n                            [attr.aria-disabled]=\"form.invalid\"\n                        />\n                    </div>\n\n                    @if (emailCtrl.touched && emailCtrl.invalid) {\n                        <div class=\"m-error\">\n                            @if (emailCtrl.errors?.['required']) {\n                                <span>{{ texts?.errorsubscriber }}</span>\n                            }\n                            @if (emailCtrl.errors?.['email']) {\n                                <span>{{ texts?.newsErrorEmail }}</span>\n                            }\n                        </div>\n                    }\n\n                    @if (texts?.conditions) {\n                        <div class=\"m-conficiones\">\n                            <input\n                                type=\"checkbox\"\n                                name=\"condiciones\"\n                                formControlName=\"conditions\"\n                            />\n                            @if (buttons?.[0]; as btn) {\n                                <a\n                                    [href]=\"btn.url\"\n                                    [linkType]=\"btn.linkType\"\n                                    [attr.aria-label]=\"btn.label\"\n                                    target=\"_blank\"\n                                    rel=\"noopener\"\n                                >\n                                    <label for=\"condiciones\">{{\n                                        texts?.conditions\n                                    }}</label>\n                                </a>\n                            } @else {\n                                <label for=\"condiciones\">{{\n                                    texts?.conditions\n                                }}</label>\n                            }\n                        </div>\n\n                        @if (conditionsCtrl.touched && conditionsCtrl.invalid) {\n                            <div class=\"m-error\">\n                                <span>{{ texts?.errorsubscriber }}</span>\n                            </div>\n                        }\n                    }\n                </form>\n                <div class=\"m-footer\">\n                    @if (texts?.title) {\n                        <div class=\"m-text\">{{ texts?.title }}</div>\n                    }\n                    @if (getFirstImageByTag(tagName); as img) {\n                        <img\n                            [src]=\"\n                                img.img?.src ||\n                                'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                            \"\n                            [alt]=\"img.img?.alt\"\n                        />\n                    }\n                </div>\n            </div>\n        </div>\n    </div>\n</section>\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport { BabylonMultimediaI } from '../../../interfaces';\nimport { BabylonButtonI } from '../../../interfaces/babylon-button.interface';\nimport { BabylonImageI } from '../../../interfaces/babylon-image.interface';\nimport { BabylonCurrencyPipe } from '../../../pipes/babylon-currency.pipe';\n\n@Component({\n    selector: 'lib-babylon-offer-detail',\n    standalone: true,\n    imports: [CommonModule, BabylonLinkTypeDirective, BabylonCurrencyPipe],\n    templateUrl: './babylon-offer-detail.component.html',\n    styleUrl: './babylon-offer-detail.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonOfferDetailComponent {\n    @Input() pretitle?: string;\n    @Input() title?: string;\n    @Input() description?: string;\n    @Input() ndTitle?: string;\n    @Input() labelFrom?: string;\n    @Input() labelDiscount?: string;\n    @Input() currency: string = '';\n    @Input() price?: number;\n    @Input() discount?: number;\n    @Input() image?: BabylonImageI;\n    @Input() multimedia?: BabylonMultimediaI;\n    @Input() button?: BabylonButtonI;\n    @Input() link?: BabylonButtonI;\n    @Input() conditions?: string;\n}\n","<section class=\"babylon__offer-details margin-main\">\n    <div class=\"container-fluid cs_plr_100\">\n        <div class=\"row justify-content-center\">\n            <div class=\"col-lg-8\">\n                <div class=\"box_contents_in\">\n                    <div class=\"intro_info no-align box-price\">\n                        @if (pretitle) {\n                            <h3 class=\"pretitle mb--0\">{{ pretitle }}</h3>\n                        }\n                        @if (title) {\n                            <h1 class=\"title mb--0\">{{ title }}</h1>\n                        }\n                        <div class=\"price\">\n                            @if (price && labelFrom) {\n                                {{ labelFrom }}\n                            }\n                            @if (discount && labelDiscount) {\n                                {{ labelDiscount }}\n                            }\n                            <span>\n                                @if (price) {\n                                    {{ price }}\n                                    @if (currency) {\n                                        {{ currency | currencySymbol }}\n                                    }\n                                }\n                                @if (discount) {\n                                    {{ discount }}%\n                                }\n                            </span>\n                        </div>\n                        @if (button) {\n                            <div class=\"btns__box\">\n                                <a\n                                    [attr.aria-label]=\"button.label\"\n                                    [href]=\"button.url\"\n                                    [linkType]=\"button.linkType\"\n                                    class=\"btn btn_primary btn_call\"\n                                >\n                                    <b>{{ button.label }}</b>\n                                    <span\n                                        class=\"babylon-arrow-right-big\"\n                                    ></span>\n                                </a>\n                            </div>\n                        }\n                    </div>\n                    @if (description) {\n                        <div class=\"intro_info no-align\">\n                            <p class=\"text\" [innerHTML]=\"description\"></p>\n                        </div>\n                    }\n                </div>\n            </div>\n            @if (image) {\n                <div class=\"col-lg-10 my-4\">\n                    <div class=\"cs_image_layer cs_about_img\">\n                        <img\n                            [src]=\"\n                                image?.src ||\n                                'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                            \"\n                            [alt]=\"image?.alt ?? image?.title ?? 'title'\"\n                            class=\"cs--radius\"\n                            loading=\"lazy\"\n                        />\n                    </div>\n                </div>\n            }\n            @if (ndTitle || conditions) {\n                <div class=\"col-lg-8\">\n                    <div class=\"box_contents_in\">\n                        <div class=\"intro_info no-align\">\n                            @if (ndTitle) {\n                                <h3 class=\"title--small\">{{ ndTitle }}</h3>\n                            }\n                            @if (conditions) {\n                                <p class=\"text\" [innerHTML]=\"conditions\"></p>\n                            }\n                        </div>\n                    </div>\n                    @if (link) {\n                        <div class=\"btns__box\">\n                            <a\n                                [attr.aria-label]=\"link.label\"\n                                [href]=\"link.url\"\n                                [linkType]=\"link.linkType\"\n                                class=\"btn-link\"\n                            >\n                                <span class=\"babylon-arrow-left-big\"></span>\n                                <b>{{ link.label }}</b>\n                            </a>\n                        </div>\n                    }\n                </div>\n            }\n        </div>\n    </div>\n</section>\n","import { Component, Input } from '@angular/core';\nimport { BabylonButtonI, BabylonOfferItemI, BabylonTextInfoI } from '../../../interfaces';\nimport { BabylonCurrencyPipe } from '../../../pipes/babylon-currency.pipe';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\n\n@Component({\n    selector: 'lib-babylon-offer-detail-v2',\n    standalone: true,\n    imports: [BabylonCurrencyPipe, BabylonLinkTypeDirective],\n    templateUrl: './babylon-offer-detail-v2.component.html',\n    styleUrl: './babylon-offer-detail-v2.component.scss',\n})\nexport class BabylonOfferDetailV2Component {\n  @Input() texts?: BabylonTextInfoI;\n  @Input() offer?: BabylonOfferItemI[];\n  @Input() links?: BabylonButtonI[];\n\n}\n","<section class=\"oferta-ficha oferta-ficha--right js-bgHeight-section\">\n    <div class=\"container\">\n      @if (offer?.length) {\n        <div class=\"oferta-ficha__inner\">\n            <div class=\"oferta-ficha__content\">\n                <div class=\"oferta-ficha__content--inner\">\n                    <div class=\"oferta-ficha__heading js-bgHeight-heading\">\n                      @if(offer?.[0]?.name) {\n                        <span class=\"oferta-ficha__heading--badge\">{{ offer?.[0]?.name }}</span>\n                      }\n                      @if (offer?.[0]?.texts?.title) {\n                        <h2>{{ offer?.[0]?.texts?.title}}</h2>\n                      }\n                      @if (offer?.[0]?.texts?.subtitle) {\n                        <p [innerHTML]=\"offer?.[0]?.texts?.subtitle\"></p>\n                      }\n                    </div>\n                    @if (offer?.[0]?.images?.src) {\n                      <div\n                          class=\"oferta-ficha__image oferta-ficha__image--mobile\"\n                      >\n                          <svg\n                              aria-hidden=\"true\"\n                              focusable=\"false\"\n                              class=\"oferta-ficha__graphic--top\"\n                          >\n                              <use\n                                  href=\"/assets/babylon/svg/icon-graphic.svg#icon-graphic\"\n                              ></use>\n                          </svg>\n                          <svg\n                              aria-hidden=\"true\"\n                              focusable=\"false\"\n                              class=\"oferta-ficha__graphic--bottom\"\n                          >\n                              <use\n                                  href=\"/assets/babylon/svg/icon-graphic.svg#icon-graphic\"\n                              ></use>\n                          </svg>\n                          <figure>\n                              <img\n                                [src]=\"offer?.[0]?.images?.src\"\n                                [alt]=\"offer?.[0]?.images?.alt\"\n                                />\n                          </figure>\n                      </div>\n                    }\n                    <div class=\"oferta-ficha__text\">\n                        <div class=\"oferta-ficha__price-discount\">\n                            <div>\n                                @if (offer?.[0]?.texts?.additional2) {\n                                  <span\n                                      class=\"oferta-ficha__price-discount--label\"\n                                  >\n                                    {{ offer?.[0]?.texts?.additional2 }}\n                                  </span>\n                                }\n                                @if (offer?.[0]?.price && offer?.[0]?.currency) {\n                                  <span\n                                      class=\"oferta-ficha__price-discount--oldPrice\"\n                                  >\n                                    {{ offer?.[0]?.price }} {{ offer?.[0]?.currency ?? 'EUR' | currencySymbol }}\n                                  </span>\n                                }\n\n                            </div>\n                            @if (offer?.[0]?.buttons?.[0]?.label && offer?.[0]?.buttons?.[0]?.url) {\n                              <div class=\"btn__group\">\n                                  <button\n                                   class=\"btn btn__primary\"\n                                      [attr.aria-label]=\"offer?.[0]?.buttons?.[0]?.label\"\n                                      [href]=\"offer?.[0]?.buttons?.[0]?.url\"\n                                      [linkType]=\"offer?.[0]?.buttons?.[0]?.linkType\"\n                                    >\n                                      <span>{{ offer?.[0]?.buttons?.[0]?.label}}</span>\n                                </button>\n                              </div>\n                          }\n                        </div>\n                        <div class=\"oferta-ficha__text--box\">\n                          @if (offer?.[0]?.texts?.description) {\n                            <p [innerHTML]=\"offer?.[0]?.texts?.description\">\n                            </p>\n                          }\n                        </div>\n                        @if (links?.length && links?.[0]?.url && links?.[0]?.label) {\n                          <div class=\"btn__link-group\">\n                              <a\n                                role=\"button\"\n                                class=\"btn__link--withIcon\"\n                                [href]=\"links?.[0]?.url\"\n                                [linkType]=\"links?.[0]?.linkType\"\n                                >\n                                  <span class=\"btn__link--icon\">\n                                      <svg\n                                          aria-hidden=\"true\"\n                                          focusable=\"false\"\n                                          class=\"line\"\n                                      >\n                                          <use\n                                              href=\"/assets/babylon/svg/arrow-line.svg#arrow-line\"\n                                          ></use>\n                                      </svg>\n                                      <svg aria-hidden=\"true\" focusable=\"false\">\n                                          <use\n                                              href=\"/assets/babylon/svg/icon-arrow.svg#icon-arrow\"\n                                          ></use>\n                                      </svg>\n                                  </span>\n                                  <span>{{links?.[0]?.label}}</span>\n                              </a>\n                          </div>\n                        }\n                    </div>\n                </div>\n            </div>\n            @if (offer?.[0]?.images?.src) {\n              <div class=\"oferta-ficha__image oferta-ficha__image--desktop\">\n                  <svg\n                      aria-hidden=\"true\"\n                      focusable=\"false\"\n                      class=\"oferta-ficha__graphic--top\"\n                  >\n                      <use\n                          href=\"/assets/babylon/svg/icon-graphic.svg#icon-graphic\"\n                      ></use>\n                  </svg>\n                  <svg\n                      aria-hidden=\"true\"\n                      focusable=\"false\"\n                      class=\"oferta-ficha__graphic--bottom\"\n                  >\n                      <use\n                          href=\"/assets/babylon/svg/icon-graphic.svg#icon-graphic\"\n                      ></use>\n                  </svg>\n                  <figure>\n                    <img\n                      [src]=\"offer?.[0]?.images?.src\"\n                      [alt]=\"offer?.[0]?.images?.alt\"\n                    />\n                  </figure>\n              </div>\n            }\n        </div>\n      }\n    </div>\n</section>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport {\n    BabylonImageI,\n    BabylonMultimediaI,\n    BabylonTextInfoI,\n} from '../../../interfaces';\nimport { BabylonOfferDetailI } from '../../../interfaces/babylon-offer-detail.interface';\nimport { BabylonCurrencyPipe } from '../../../pipes/babylon-currency.pipe';\nimport { getFirstImageByTagFromImages } from '../../../utils/mutimedia.utils';\n\n@Component({\n    selector: 'lib-babylon-offer-popup-v3',\n    standalone: true,\n    imports: [CommonModule, BabylonLinkTypeDirective, BabylonCurrencyPipe],\n    templateUrl: './babylon-offer-popup-v3.component.html',\n    styleUrl: './babylon-offer-popup-v3.component.scss',\n})\nexport class BabylonOfferPopupV3Component {\n    @Input() offers?: BabylonOfferDetailI[];\n    @Input() texts?: BabylonTextInfoI;\n    @Input() multimedia?: BabylonMultimediaI;\n\n    tagName: string = 'OfferPopupV3';\n    tagNamePNG: string = 'OfferPopupV3PNG';\n\n    constructor(\n        private readonly dialogRef: MatDialogRef<BabylonOfferPopupV3Component>\n    ) {}\n    close(): void {\n        this.dialogRef.close();\n    }\n\n    getFirstImageByTag(\n        tagName: string,\n        images: BabylonImageI[] = []\n    ): BabylonImageI | undefined {\n        let img = getFirstImageByTagFromImages(images, tagName);\n        if (img?.img?.src) {\n            return img;\n        } else if (tagName == this.tagName) {\n            img = getFirstImageByTagFromImages(\n                this.multimedia?.imagenes ?? [],\n                tagName\n            );\n            if (img?.img?.src) {\n                return img;\n            } else {\n                return this.multimedia?.imagenes?.[0];\n            }\n        } else {\n            return;\n        }\n    }\n}\n","@if (offers?.[0]; as offer) {\n    <section id=\"ofertabanner-form\" class=\"mdl-ofertabanner\">\n        <div class=\"mod-close\">\n            <button\n                class=\"carousel__button is-close mdl-idiomas__close\"\n                title=\"Close\"\n                (click)=\"close()\"\n            >\n                <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n                    <path d=\"M20 20L4 4m16 0L4 20\"></path>\n                </svg>\n            </button>\n        </div>\n        @if (texts?.title) {\n            <div class=\"m-pretitulo\">{{ texts?.title }}</div>\n        }\n        <div class=\"mdl-container\">\n            <div class=\"m-left\">\n                <div class=\"m-content\">\n                    @if (offer?.texts?.title) {\n                        <div class=\"m-top\">\n                            <div class=\"m-title\">\n                                {{ offer?.texts?.title }}\n                            </div>\n                            @if (offer.texts?.subtitle) {\n                                <div class=\"m-texto\">\n                                    {{ offer.texts?.subtitle }}\n                                </div>\n                            }\n                        </div>\n                    }\n                    <div class=\"m-bottom\">\n                        <div class=\"m-left\">\n                            @if (offer?.texts?.additional2) {\n                                <div class=\"m-texto\">\n                                    {{ offer.texts?.additional2 }}\n                                </div>\n                            }\n                            @if (offer?.price && offer?.currency) {\n                                <div class=\"m-precio\">\n                                    {{ offer?.price }}\n                                    {{\n                                        offer?.currency ?? 'EUR'\n                                            | currencySymbol\n                                    }}\n                                </div>\n                            }\n                            @if (offer?.discount) {\n                                <div class=\"m-precio\">\n                                    {{ offer?.discount }}%\n                                </div>\n                            }\n                        </div>\n                        @if (offer.buttons) {\n                            <div class=\"m-right\">\n                                @for (btn of offer.buttons; track $index) {\n                                    <a\n                                        class=\"m-button-sm\"\n                                        [href]=\"btn?.url\"\n                                        [linkType]=\"btn?.linkType\"\n                                        [ngClass]=\"{\n                                            'm-button-sm': $index % 2 === 0,\n                                            'm-underline': $index % 2 !== 0,\n                                        }\"\n                                    >\n                                        {{ btn?.label }}\n                                    </a>\n                                }\n                            </div>\n                        }\n                    </div>\n                </div>\n            </div>\n            <div class=\"m-right\">\n                @if (offer.name) {\n                    <div class=\"m-tag\">{{ offer.name }}</div>\n                }\n                @if (\n                    getFirstImageByTag(tagName, offer.multimedia?.imagenes);\n                    as img\n                ) {\n                    <img\n                        [src]=\"\n                            img.img?.src ||\n                            'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                        \"\n                        [alt]=\"img.img?.alt\"\n                    />\n                }\n                @if (\n                    getFirstImageByTag(tagNamePNG, offer.multimedia?.imagenes);\n                    as img\n                ) {\n                    <img\n                        class=\"m-floatimg\"\n                        [src]=\"\n                            img.img?.src ||\n                            'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                        \"\n                        [alt]=\"img.img?.alt\"\n                    />\n                }\n            </div>\n        </div>\n\n        @if (\n            getFirstImageByTag(tagNamePNG, offer.multimedia?.imagenes);\n            as img\n        ) {\n            <img\n                class=\"m-floatimg\"\n                [src]=\"\n                    img.img?.src ||\n                    'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                \"\n                [alt]=\"img.img?.alt\"\n            />\n        }\n        <!--   <img\n            class=\"m-floatimg\"\n            src=\"/assets/babylon/svg/icons/specialoffer.svg\"\n            alt=\"\"\n        /> -->\n    </section>\n}\n","import { CommonModule } from '@angular/common';\nimport {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    EventEmitter,\n    Input,\n    OnInit,\n    Output,\n} from '@angular/core';\nimport { BabylonDataBackgroundDirective } from '../../../directives/data-background/data-background.directive';\nimport {\n    BabylonButtonI,\n    BabylonImageI,\n    BabylonTextInfoI,\n} from '../../../interfaces';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport { BabylonModalService } from '../../../services';\nimport { BabylonCurrencyPipe } from '../../../pipes/babylon-currency.pipe';\n@Component({\n    selector: 'lib-babylon-offer-popup-v2',\n    standalone: true,\n    imports: [\n        CommonModule,\n        BabylonDataBackgroundDirective,\n        BabylonLinkTypeDirective,\n        BabylonCurrencyPipe,\n    ],\n    templateUrl: './babylon-offer-popup-v2.component.html',\n    styleUrl: './babylon-offer-popup-v2.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonOfferPopupComponentV2 implements AfterViewInit {\n    @Input() image?: BabylonImageI;\n    @Input() button?: BabylonButtonI;\n    @Input() texts?: BabylonTextInfoI;\n    @Input() discount?: string;\n    @Input() price?: string;\n    @Input() currency?: string;\n\n    popupOfferOpen: boolean = false;\n    hasAnyValue: boolean = false;\n    constructor(\n        private readonly modalService: BabylonModalService,\n        private cdr: ChangeDetectorRef\n    ) {}\n\n    ngAfterViewInit(): void {\n        if (this.image || this.button || this.texts) this.hasAnyValue = true;\n        this.popupOfferOpen = !this.modalService.getBannerOfferV2Control();\n        this.cdr.detectChanges();\n    }\n\n    togglePopup(): void {\n        this.popupOfferOpen = !this.modalService.updateBannerOfferV2Control();\n    }\n}\n","@if (hasAnyValue) {\n    <div class=\"offer-popup\" [ngClass]=\"{ 'popup-open': popupOfferOpen }\">\n        <div class=\"btn-close--modal pb--100\">\n            <button\n                class=\"btn btn_simple_box ml--20\"\n                (click)=\"togglePopup()\"\n                name=\"close\"\n            >\n                <span class=\"babylon-plus\"></span>\n            </button>\n        </div>\n        <div class=\"offer-popup__container w-100 h-100\">\n            @if (image) {\n                <div class=\"offer-popup__image\">\n                    <figure>\n                        <img\n                            class=\"background-image\"\n                            [src]=\"\n                                image?.src ||\n                                'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                            \"\n                            [alt]=\"image?.alt ?? image?.title ?? 'title'\"\n                            loading=\"lazy\"\n                        />\n                    </figure>\n                </div>\n            }\n            <div class=\"offer-popup__wrapper px-2\">\n                <div class=\"intro_info align--center\">\n                    @if (texts?.additional2) {\n                        <p\n                            class=\"pretitle pretitle_small-text\"\n                            [innerHTML]=\"texts?.additional2\"\n                        ></p>\n                    }\n                    @if (texts?.title) {\n                        <p\n                            class=\"pretitle--small cs-line__small\"\n                            [innerHTML]=\"texts?.title\"\n                        ></p>\n                    }\n                    @if (texts?.subtitle) {\n                        <p\n                            class=\"text--small\"\n                            [innerHTML]=\"texts?.subtitle\"\n                        ></p>\n                    }\n                    @if (discount) {\n                        <h2\n                            class=\"title pb-0\"\n                            [innerHTML]=\"discount + '%'\"\n                        ></h2>\n                    } @else {\n                        @if (price && currency) {\n                            <h2 class=\"title pb-0\">\n                                {{ price }} {{ currency | currencySymbol }}\n                            </h2>\n                        }\n                    }\n                    @if (button) {\n                        <div class=\"btns__box justify-between1\">\n                            <a\n                                [attr.aria-label]=\"button.label\"\n                                class=\"btn btn_call\"\n                                [href]=\"button.url\"\n                                [linkType]=\"button.linkType\"\n                                [attr.aria-label]=\"button.label\"\n                            >\n                                {{ button.label }}\n                            </a>\n                        </div>\n                    }\n                </div>\n            </div>\n        </div>\n    </div>\n\n    <div\n        class=\"offer-popup__button-controller\"\n        [ngClass]=\"{ 'popup-open': !popupOfferOpen }\"\n    >\n        @if (texts?.additional1) {\n            <button\n                class=\"btn btn_big-circle\"\n                (click)=\"togglePopup()\"\n                [innerText]=\"texts?.additional1\"\n                [name]=\"texts?.additional1\"\n            ></button>\n        }\n    </div>\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport {\n    AfterViewInit,\n    Directive,\n    ElementRef,\n    OnDestroy,\n    PLATFORM_ID,\n    inject,\n} from '@angular/core';\nimport { tap } from 'rxjs';\nimport Swiper, { Navigation, SwiperOptions } from 'swiper';\nimport { Utils } from '../../utils';\n\n@Directive({\n    selector: '[babylonSwiperSlider]',\n    standalone: true,\n})\nexport class BabylonSwiperSliderDirective implements AfterViewInit, OnDestroy {\n    private readonly platform = inject(PLATFORM_ID);\n    private observer?: MutationObserver;\n\n    constructor(private el: ElementRef) {\n        Swiper.use([Navigation]);\n    }\n\n    ngAfterViewInit(): void {\n        if (!isPlatformBrowser(this.platform)) return;\n        Utils.loadStyle$('assets/babylon/css/swiper-bundle.min.css')\n            .pipe(\n                tap(() => {\n                    this.initSwiperSlider();\n                })\n            )\n            .subscribe();\n        this.observeSlides();\n    }\n\n    ngOnDestroy(): void {\n        this.observer?.disconnect();\n    }\n\n    initSwiperSlider(): void {\n        const parallaxSliderSelector = '.cs_parallax_slider';\n        const interleaveOffset = 0.5;\n\n        const parallaxSliderElement = this.el.nativeElement.querySelector(\n            parallaxSliderSelector\n        );\n        if (parallaxSliderElement) {\n            const slides =\n                parallaxSliderElement.querySelectorAll('.swiper-slide');\n            const slideCount = slides.length;\n\n            const mainSliderOptions: SwiperOptions = {\n                loop: false,\n                speed: 1000,\n                autoplay: slideCount > 1 ? { delay: 3000 } : false,\n                loopAdditionalSlides: 10,\n                grabCursor: slideCount > 1,\n                watchSlidesProgress: true,\n                navigation: {\n                    nextEl: '.cs_swiper_button_next',\n                    prevEl: '.cs_swiper_button_prev',\n                },\n                pagination: false,\n                on: {\n                    init: (swp: Swiper) => {\n                        swp?.autoplay?.stop();\n                    },\n                    imagesReady: (swp: Swiper) => {\n                        parallaxSliderElement.classList.remove('loading');\n                        swp?.autoplay?.start();\n                    },\n                    progress: (swp: Swiper) => {\n                        swp.slides.forEach((slide) => {\n                            const slideProgress = (slide as any).progress || 0;\n                            const innerOffset = swp.width * interleaveOffset;\n                            const innerTranslate = slideProgress * innerOffset;\n\n                            const parallaxBg = slide.querySelector<HTMLElement>(\n                                '.cs_swiper_parallax_bg'\n                            );\n                            if (parallaxBg) {\n                                parallaxBg.style.transform = `translateX(${innerTranslate}px)`;\n                            }\n                        });\n                    },\n                    touchStart: function (this: Swiper) {\n                        this.slides.forEach((slide) => {\n                            (slide as HTMLElement).style.transition = '';\n                        });\n                    },\n                    setTransition: (swp: Swiper, transition: number) => {\n                        swp.slides.forEach((slide) => {\n                            (slide as HTMLElement).style.transition =\n                                `${transition}ms`;\n                            const parallaxBg = slide.querySelector<HTMLElement>(\n                                '.cs_swiper_parallax_bg'\n                            );\n                            if (parallaxBg) {\n                                parallaxBg.style.transition = `${transition}ms`;\n                            }\n                        });\n                    },\n                },\n            };\n\n            new Swiper(parallaxSliderSelector, mainSliderOptions);\n        }\n    }\n\n    observeSlides() {\n        if (!isPlatformBrowser(this.platform)) return;\n        const wrapper = this.el.nativeElement.querySelector('.swiper-wrapper');\n        if (!wrapper) {\n            return;\n        }\n        this.observer = new MutationObserver(() => {\n            // Destruye e inicializa Swiper de nuevo\n            this.initSwiperSlider();\n        });\n        this.observer.observe(\n            this.el.nativeElement.querySelector('.swiper-wrapper'),\n            {\n                childList: true,\n            }\n        );\n    }\n}\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { BabylonOfferI } from './babylon-offer.interface';\nimport { BabylonImageI } from '../../../interfaces/babylon-image.interface';\nimport { BabylonDataBackgroundDirective } from '../../../directives/data-background/data-background.directive';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport { BabylonSwiperSliderDirective } from '../../../directives/babylon-sliders/babylon-swiper-slider.directive';\n@Component({\n    selector: 'lib-babylon-offer-slider',\n    standalone: true,\n    imports: [\n        CommonModule,\n        BabylonDataBackgroundDirective,\n        BabylonLinkTypeDirective,\n        BabylonSwiperSliderDirective\n    ],\n    templateUrl: './babylon-offer-slider.component.html',\n    styleUrl: './babylon-offer-slider.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonOfferSliderComponent {\n    @Input() offers?: BabylonOfferI[];\n    @Input() backgroundImage?: BabylonImageI;\n    @Input() title?: string;\n}\n","<section class=\"babylon__offerslider margin-main-botom\" babylonSwiperSlider>\n    @if (backgroundImage) {\n        <div class=\"cs_hero cs_style_1 cs_center text-center position-relative\">\n            <figure\n                class=\"cs_swiper_parallax_bg cs_hero_bg cs_bg_filed h-100 w-100 position-absolute top-0 start-0 mb-0\"\n                dataBackground=\"url('{{ backgroundImage.src }}')\"\n            ></figure>\n        </div>\n    }\n    @if (offers) {\n        <div class=\"cs_parallax_slider loading overflow-hidden content-offers\">\n            <div class=\"swiper-wrapper\">\n                @for (offer of offers; track $index) {\n                    <div class=\"swiper-slide\">\n                        <a\n                            [attr.aria-label]=\"offer.links?.[0]?.url || '#'\"\n                            [href]=\"offer.links?.[0]?.url || '#'\"\n                            [linkType]=\"offer.links?.[0]?.linkType\"\n                        >\n                            <div\n                                class=\"intro_info align--center intro_info--light no-align\"\n                            >\n                                @if (title) {\n                                    <h3 class=\"subtitle\">\n                                        {{ title }}\n                                    </h3>\n                                }\n                            </div>\n                            <div class=\"content-offer\">\n                                <div class=\"offer-item\">\n                                    @if (offer.images) {\n                                        <figure\n                                            dataBackground=\"url('{{\n                                                offer.images.src\n                                            }}')\"\n                                        ></figure>\n                                    }\n                                    <div class=\"intro_info offer_text\">\n                                        @if (offer.texts) {\n                                            @if (offer.texts.title) {\n                                                <h2 class=\"title--small mb--10\">\n                                                    {{ offer.texts.title }}\n                                                </h2>\n                                            }\n                                            <div class=\"offer_cat\">\n                                                @if (offer.texts.additional1) {\n                                                    <div class=\"offer_bagget\">\n                                                        {{\n                                                            offer.texts\n                                                                .additional1\n                                                        }}\n                                                    </div>\n                                                }\n                                                @if (offer.texts.subtitle) {\n                                                    <span\n                                                        class=\"offer-subtitle pretitle--small\"\n                                                    >\n                                                        {{\n                                                            offer.texts.subtitle\n                                                        }}\n                                                    </span>\n                                                }\n                                            </div>\n                                        }\n                                        <div class=\"offer_prices\">\n                                            @if (offer.discount) {\n                                                <div\n                                                    class=\"offer_desde pretitle--small\"\n                                                >\n                                                    {{\n                                                        offer.texts?.additional2\n                                                    }}\n                                                </div>\n                                                <span class=\"offer-num\"\n                                                    >{{ offer.discount }}%</span\n                                                >\n                                            }\n                                            @if (offer.price) {\n                                                <div\n                                                    class=\"offer_desde pretitle\"\n                                                >\n                                                    {{\n                                                        offer.texts?.additional3\n                                                    }}\n                                                </div>\n                                                <span class=\"offer-num\"\n                                                    >{{ offer.price\n                                                    }}{{ offer.currency }}</span\n                                                >\n                                            }\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                        </a>\n                    </div>\n                }\n            </div>\n        </div>\n        @if (offers.length > 1) {\n            <div class=\"cs_slider_navigation cs_white_color\">\n                <div class=\"cs_swiper_button_prev\">\n                    <span class=\"babylon-arrow-left-big\"></span>\n                </div>\n                <div class=\"cs_swiper_button_next\">\n                    <span class=\"babylon-arrow-right-big\"></span>\n                </div>\n            </div>\n        }\n    }\n</section>\n","import {\n    ChangeDetectionStrategy,\n    Component,\n    EventEmitter,\n    Input,\n    OnInit,\n    Output,\n} from '@angular/core';\nimport { BabylonImageI } from '../../../interfaces/babylon-image.interface';\nimport { BabylonButtonI } from '../../../interfaces/babylon-button.interface';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\nimport { BabylonCurrencyPipe } from '../../../pipes/babylon-currency.pipe';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport { BabylonTagsI } from '../../../interfaces/babylon-tags.interface';\nimport { BabylonTextsColorsI } from '../../../interfaces/babylon-texts-colors.interface';\nimport { BabylonDynamicHeadingComponent } from '../../shared';\n\n@Component({\n    selector: 'lib-babylon-offers-list',\n    standalone: true,\n    imports: [\n        CommonModule,\n        RouterModule,\n        BabylonCurrencyPipe,\n        BabylonLinkTypeDirective,\n        BabylonDynamicHeadingComponent,\n    ],\n    templateUrl: './babylon-offers-list.component.html',\n    styleUrl: './babylon-offers-list.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonOffersListComponent implements OnInit {\n    @Input() pretitle?: string;\n    @Input() title?: string;\n    @Input() items?: BabylonOffersListItem[];\n    @Input() placeholderImg?: BabylonImageI;\n    @Input() button?: BabylonButtonI;\n    @Input() tags?: BabylonTagsI;\n    @Input() textColors?: BabylonTextsColorsI;\n    @Input() isHome?: boolean;\n\n    @Output() offerClick = new EventEmitter<number>();\n\n    groupedItems: any[][] = [];\n\n    ngOnInit() {\n        // If is home page show offers checked as home\n        if (this.isHome) {\n            this.filterHomeOffers();\n        }\n        if (!this.items || this.items.length === 0) return;\n\n        if (this.items.length === 1) {\n            this.groupedItems = [[this.items[0], this.placeholderImg]];\n        } else {\n            this.groupedItems = [];\n        }\n    }\n    filterHomeOffers() {\n        if (this.items && this.items?.length > 2){\n            this.items = this.items.filter(item => item.home === 1);\n        }\n    }\n}\n\nexport interface BabylonOffersListItem {\n    id?: number;\n    title?: string;\n    pretitle?: string;\n    labelFrom?: string;\n    labelDiscount?: string;\n    price?: string;\n    currency: string;\n    img?: BabylonImageI;\n    offerUrl?: string;\n    seeOfferButton?: BabylonButtonI;\n    reserveButton?: BabylonButtonI;\n    discount?: number;\n    home?: number;\n    popup?: number;\n}\n","<section class=\"babylon__offers-list margin-main\">\n    <div class=\"container\">\n        <div class=\"intro_info align--center\">\n            @if (pretitle) {\n                <lib-babylon-dynamic-heading\n                    [tag]=\"tags?.pretitle || 'h3'\"\n                    cssClass=\"pretitle mb--10\"\n                    [content]=\"pretitle\"\n                    [color]=\"textColors?.pretitle\"\n                ></lib-babylon-dynamic-heading>\n            }\n            @if (title) {\n                <lib-babylon-dynamic-heading\n                    [tag]=\"tags?.title || 'h2'\"\n                    cssClass=\"title\"\n                    [content]=\"title\"\n                    [color]=\"textColors?.title\"\n                ></lib-babylon-dynamic-heading>\n            }\n        </div>\n    </div>\n    @if (items?.length === 1) {\n        @if (groupedItems.length) {\n            <div class=\"container\">\n                <div class=\"row cs_gap_y_80\">\n                    @for (pair of groupedItems; track $index) {\n                        <!-- Columna izquierda -->\n                        <div class=\"col-12 col-xl-6\">\n                            @if (pair[0]) {\n                                <div class=\"cs_card cs_style_2 text-center\">\n                                    @if (pair[0].img) {\n                                        <div\n                                            class=\"cs_card_thumb position-relative cs_primary_bg cs--radius\"\n                                        >\n                                            <img\n                                                [src]=\"\n                                                    pair[0].img?.src ||\n                                                    'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                                \"\n                                                [alt]=\"pair[0].img?.alt\"\n                                                class=\"cs--radius\"\n                                                loading=\"lazy\"\n                                            />\n                                            @if (pair[0].seeOfferButton) {\n                                                <div\n                                                    class=\"cs_card_hover cs_center position-absolute\"\n                                                >\n                                                    <div\n                                                        class=\"cs_card_btn position-relative cs_zindex_2\"\n                                                    >\n                                                        <div\n                                                            class=\"btns__box align--center\"\n                                                        >\n                                                            <a\n                                                                [attr.aria-label]=\"\n                                                                    pair[0]\n                                                                        .seeOfferButton\n                                                                        ?.url\n                                                                \"\n                                                                [href]=\"\n                                                                    pair[0]\n                                                                        .seeOfferButton\n                                                                        ?.url\n                                                                \"\n                                                                [linkType]=\"\n                                                                    pair[0]\n                                                                        .seeOfferButton\n                                                                        ?.linkType\n                                                                \"\n                                                                [routerLink]=\"\n                                                                    pair[0]\n                                                                        .seeOfferButton\n                                                                        ?.url\n                                                                \"\n                                                                (click)=\"\n                                                                    offerClick.emit(\n                                                                        pair[0]\n                                                                            .id\n                                                                    )\n                                                                \"\n                                                                class=\"btn btn_primary btn--light\"\n                                                            >\n                                                                <b>{{\n                                                                    pair[0]\n                                                                        .seeOfferButton\n                                                                        ?.label\n                                                                }}</b>\n                                                                <span\n                                                                    class=\"babylon-arrow-right-big\"\n                                                                ></span>\n                                                            </a>\n                                                        </div>\n                                                    </div>\n                                                </div>\n                                            }\n                                            <div\n                                                class=\"cs_card_hover_overlay position-absolute h-100 w-100 start-0 top-0\"\n                                            ></div>\n                                        </div>\n                                    }\n                                    <div\n                                        class=\"cs_card_info position-relative row\"\n                                    >\n                                        <div class=\"col-xl-8 col-lg-7\">\n                                            <div class=\"intro_info no-align\">\n                                                @if (pair[0].title) {\n                                                    <lib-babylon-dynamic-heading\n                                                        [tag]=\"\n                                                            tags?.title || 'h2'\n                                                        \"\n                                                        cssClass=\"title--small mb--10\"\n                                                        [content]=\"\n                                                            pair[0].title\n                                                        \"\n                                                        [color]=\"\n                                                            textColors?.title\n                                                        \"\n                                                    ></lib-babylon-dynamic-heading>\n                                                }\n                                                @if (pair[0].pretitle) {\n                                                    <h4 class=\"pretitle mb--10\">\n                                                        {{ pair[0].pretitle }}\n                                                    </h4>\n                                                }\n                                            </div>\n                                        </div>\n                                        <div\n                                            class=\"col-xl-4 col-lg-5 card-btns\"\n                                        >\n                                            @if (pair[0].price) {\n                                                <h4 class=\"price mb--10\">\n                                                    <span class=\"text\">{{\n                                                        pair[0].labelFrom\n                                                    }}</span>\n                                                    {{ pair[0].price\n                                                    }}{{\n                                                        pair[0].currency\n                                                            | currencySymbol\n                                                    }}\n                                                </h4>\n                                            }\n                                            @if (pair[0].discount) {\n                                                <h4 class=\"subtitle mb--10\">\n                                                    <span class=\"text\">{{\n                                                        pair[0].labelDiscount\n                                                    }}</span>\n                                                    {{ pair[0].discount }}%\n                                                </h4>\n                                            }\n                                            @if (pair[0].reserveButton?.url) {\n                                                <a\n                                                    [attr.aria-label]=\"\n                                                        pair[0].reserveButton\n                                                            ?.label\n                                                    \"\n                                                    [href]=\"\n                                                        pair[0].reserveButton\n                                                            ?.url\n                                                    \"\n                                                    linkType=\"external\"\n                                                    (click)=\"\n                                                        offerClick.emit(\n                                                            pair[0].id\n                                                        )\n                                                    \"\n                                                    class=\"btn btn_call\"\n                                                >\n                                                    <b>{{\n                                                        pair[0].reserveButton\n                                                            ?.label\n                                                    }}</b>\n                                                    <span\n                                                        class=\"babylon-arrow-right-big\"\n                                                    ></span>\n                                                </a>\n                                            }\n                                        </div>\n                                    </div>\n                                </div>\n                            }\n                        </div>\n\n                        <!-- Columna derecha o placeholder -->\n                        <div class=\"col-12 col-xl-6\">\n                            <div class=\"cs_card cs_style_2 text-center\">\n                                @if (pair[1]) {\n                                    <div\n                                        class=\"position-relative cs_primary_bg cs--radius\"\n                                    >\n                                        <img\n                                            [src]=\"pair[1].src\"\n                                            [alt]=\"pair[1].alt\"\n                                            class=\"cs--radius\"\n                                            loading=\"lazy\"\n                                        />\n                                    </div>\n                                }\n                            </div>\n                        </div>\n                    }\n                </div>\n            </div>\n        }\n    } @else {\n        <div class=\"container\">\n            <div class=\"row cs_gap_y_80\">\n                @for (item of items; track $index) {\n                    <div class=\"col-12 col-xl-6\">\n                        <div class=\"cs_card cs_style_2 text-center\">\n                            @if (item.img) {\n                                <div\n                                    class=\"cs_card_thumb position-relative cs_primary_bg cs--radius\"\n                                >\n                                    <img\n                                        [src]=\"\n                                            item?.img?.src ||\n                                            'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                        \"\n                                        [alt]=\"item?.img?.alt\"\n                                        class=\"cs--radius\"\n                                        loading=\"lazy\"\n                                    />\n                                    @if (item.seeOfferButton) {\n                                        <div\n                                            class=\"cs_card_hover cs_center position-absolute\"\n                                        >\n                                            <div\n                                                class=\"cs_card_btn position-relative cs_zindex_2\"\n                                            >\n                                                <div\n                                                    class=\"btns__box align--center\"\n                                                >\n                                                    <a\n                                                        [attr.aria-label]=\"\n                                                            item.seeOfferButton\n                                                                ?.url\n                                                        \"\n                                                        [href]=\"\n                                                            item.seeOfferButton\n                                                                ?.url\n                                                        \"\n                                                        [linkType]=\"\n                                                            item.seeOfferButton\n                                                                ?.linkType\n                                                        \"\n                                                        [routerLink]=\"\n                                                            item.seeOfferButton\n                                                                ?.url\n                                                        \"\n                                                        (click)=\"\n                                                            offerClick.emit(\n                                                                item.id\n                                                            )\n                                                        \"\n                                                        class=\"btn btn_primary btn--light\"\n                                                    >\n                                                        <b>{{\n                                                            item?.seeOfferButton\n                                                                ?.label\n                                                        }}</b>\n                                                        <span\n                                                            class=\"babylon-arrow-right-big\"\n                                                        ></span>\n                                                    </a>\n                                                </div>\n                                            </div>\n                                        </div>\n                                    }\n                                    <div\n                                        class=\"cs_card_hover_overlay position-absolute h-100 w-100 start-0 top-0\"\n                                    ></div>\n                                </div>\n                            }\n                            <div class=\"cs_card_info position-relative row\">\n                                <div class=\"col-xl-8 col-lg-7\">\n                                    <div class=\"intro_info no-align\">\n                                        @if (item.title) {\n                                            <lib-babylon-dynamic-heading\n                                                [tag]=\"tags?.title || 'h2'\"\n                                                cssClass=\"title--small mb--10\"\n                                                [content]=\"item.title\"\n                                                [color]=\"textColors?.title\"\n                                            ></lib-babylon-dynamic-heading>\n                                        }\n                                        @if (item.pretitle) {\n                                            <h4 class=\"pretitle mb--10\">\n                                                {{ item?.pretitle }}\n                                            </h4>\n                                        }\n                                    </div>\n                                </div>\n                                <div class=\"col-xl-4 col-lg-5 card-btns\">\n                                    @if (item.price) {\n                                        <h4 class=\"price mb--10\">\n                                            <span class=\"text\">{{\n                                                item?.labelFrom\n                                            }}</span>\n                                            {{ item?.price\n                                            }}{{\n                                                item.currency | currencySymbol\n                                            }}\n                                        </h4>\n                                    }\n                                    @if (item.discount) {\n                                        <h4 class=\"subtitle mb--10\">\n                                            <span class=\"text\">{{\n                                                item?.labelDiscount\n                                            }}</span>\n                                            {{ item?.discount }}%\n                                        </h4>\n                                    }\n                                    @if (item.reserveButton) {\n                                        <a\n                                            [attr.aria-label]=\"\n                                                item.reserveButton?.label\n                                            \"\n                                            [href]=\"item.reserveButton?.url\"\n                                            linkType=\"external\"\n                                            (click)=\"offerClick.emit(item.id)\"\n                                            class=\"btn btn_call\"\n                                        >\n                                            <b>{{\n                                                item?.reserveButton?.label\n                                            }}</b>\n                                            <span\n                                                class=\"babylon-arrow-right-big\"\n                                            ></span>\n                                        </a>\n                                    }\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                }\n            </div>\n        </div>\n        @if (button) {\n            <div class=\"row mt--20 row-button\">\n                <div class=\"col-12 d-flex justify-content-center\">\n                    <a\n                        [href]=\"button.url\"\n                        [linkType]=\"button.linkType\"\n                        class=\"btn btn_primary\"\n                    >\n                        {{ button.label }}\n                    </a>\n                </div>\n            </div>\n        }\n    }\n</section>\n","import { Directive, ElementRef, HostListener, Renderer2 } from '@angular/core';\n\n@Directive({\n    selector: '[hobbleEffect]',\n    standalone: true,\n})\nexport class BabylonHobbleEffectDirective {\n    private hoverLayer1: HTMLElement | null = null;\n    private hoverLayer2: HTMLElement | null = null;\n\n    constructor(\n        private el: ElementRef,\n        private renderer: Renderer2\n    ) {}\n\n    ngOnDestroy(): void {\n        this.resetTransform();\n    }\n\n    @HostListener('mousemove', ['$event'])\n    onMouseMove(event: MouseEvent): void {\n        const target = this.el.nativeElement as HTMLElement;\n        const rect = target.getBoundingClientRect();\n        const halfW = target.clientWidth / 2;\n        const halfH = target.clientHeight / 2;\n        const coorX = halfW - (event.clientX - rect.left);\n        const coorY = halfH - (event.clientY - rect.top);\n        const degX1 = (coorY / halfH) * 8;\n        const degY1 = (coorX / halfW) * -8;\n        const degX3 = (coorY / halfH) * -15;\n        const degY3 = (coorX / halfW) * 15;\n\n        this.hoverLayer1 = target.querySelector('.cs_hover_layer_1');\n        this.hoverLayer2 = target.querySelector('.cs_hover_layer_2');\n\n        if (this.hoverLayer1) {\n            this.renderer.setStyle(\n                this.hoverLayer1,\n                'transform',\n                `perspective(800px) translate3d(0, 0, 0) rotateX(${degX1}deg) rotateY(${degY1}deg)`\n            );\n        }\n\n        if (this.hoverLayer2) {\n            this.renderer.setStyle(\n                this.hoverLayer2,\n                'transform',\n                `perspective(800px) translateX(${degX3}px) translateY(${degY3}px) scale(1.04)`\n            );\n        }\n    }\n\n    @HostListener('mouseleave')\n    onMouseLeave(): void {\n        this.resetTransform();\n    }\n\n    private resetTransform(): void {\n        if (this.hoverLayer1) {\n            this.renderer.removeStyle(this.hoverLayer1, 'transform');\n        }\n        if (this.hoverLayer2) {\n            this.renderer.removeStyle(this.hoverLayer2, 'transform');\n        }\n    }\n}\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { BabylonHobbleEffectDirective } from '../../../directives/babylon-hobble-effect/babylon-hobble-effect.directive';\nimport { BabylonSlidersDirective } from '../../../directives/babylon-sliders/babylon-sliders.directive';\nimport { BabylonCurrencyPipe } from '../../../pipes/babylon-currency.pipe';\nimport { BabylonOfferI } from '../babylon-offer-slider/babylon-offer.interface';\n\n@Component({\n    selector: 'lib-babylon-offers-slider',\n    standalone: true,\n    imports: [\n        CommonModule,\n        BabylonCurrencyPipe,\n        BabylonSlidersDirective,\n        BabylonHobbleEffectDirective,\n    ],\n    templateUrl: './babylon-offers-slider.component.html',\n    styleUrl: './babylon-offers-slider.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonOffersSliderComponent {\n    @Input() pretitle?: string;\n    @Input() title?: string;\n    @Input() offers?: BabylonOfferI[];\n}\n","<section class=\"babylon__offer-slider margin-main\">\n    <div class=\"container\">\n        <div class=\"intro_info align--center\">\n            @if (pretitle) {\n                <h3 class=\"pretitle\">{{ pretitle }}</h3>\n            }\n            @if (title) {\n                <h2\n                    class=\"title wow fadeInUp\"\n                    data-wow-duration=\"0.8s\"\n                    data-wow-delay=\"0.2s\"\n                >\n                    {{ title }}\n                </h2>\n            }\n        </div>\n    </div>\n    <div class=\"container-fluid p-0\">\n        <div class=\"cs_slider cs_style_1 cs_slider_gap_24 cs_hover_show_arrows\">\n            <div\n                class=\"cs_slider_container\"\n                sliders=\"cs_slider_container\"\n                data-autoplay=\"0\"\n                data-loop=\"1\"\n                data-speed=\"600\"\n                data-center=\"0\"\n                data-variable-width=\"0\"\n                data-slides-per-view=\"responsive\"\n                data-xs-slides=\"1\"\n                data-sm-slides=\"2\"\n                data-md-slides=\"2\"\n                data-mlg-slides=\"3\"\n                data-lg-slides=\"3\"\n                data-add-slides=\"4\"\n            >\n                <div class=\"cs_slider_wrapper\">\n                    @if (offers?.length) {\n                        @for (offer of offers; track $index) {\n                            <div class=\"cs_slide\">\n                                <a\n                                    [attr.aria-label]=\"\n                                        offer.links?.length\n                                            ? offer.links?.[0]?.url\n                                            : '#'\n                                    \"\n                                    [href]=\"\n                                        offer.links?.length\n                                            ? offer.links?.[0]?.url\n                                            : '#'\n                                    \"\n                                    class=\"cs_feature_box cs_style_3 position-relative text-center cs_center cs_hobble cs_primary_bg cs_type_1 cs--radius\"\n                                    hobbleEffect\n                                >\n                                    <div\n                                        class=\"cs_feature_box_bg cs_bg_filed cs_hover_layer_2\"\n                                    >\n                                        <img\n                                            [src]=\"offer.images?.src\"\n                                            [alt]=\"offer.images?.alt\"\n                                            loading=\"lazy\"\n                                        />\n                                    </div>\n                                    <div\n                                        class=\"cs_feature_box_text position-relative cs_zindex_3 cs_hover_layer_2\"\n                                    >\n                                        <div\n                                            class=\"intro_info align--center intro_info--light\"\n                                        >\n                                            @if (offer.texts?.title) {\n                                                <h3 class=\"title--small\">\n                                                    {{ offer.texts?.title }}\n                                                </h3>\n                                            }\n                                            @if (offer.texts?.additional1) {\n                                                <p class=\"text\">\n                                                    {{\n                                                        offer.texts?.additional1\n                                                    }}\n                                                </p>\n                                            }\n                                            <h4 class=\"subtitle mb--10\">\n                                                @if (offer.texts?.description) {\n                                                    <span class=\"text\" [innerHTML]=\"offer.texts?.description\"></span>\n                                                    <br />\n                                                }\n                                                @if (offer.texts?.additional2) {\n                                                    <span class=\"text\">{{\n                                                        offer.texts?.additional2\n                                                    }}</span>\n                                                }\n                                                @if (offer.discount) {\n                                                    {{ offer.discount }}\n                                                }\n                                                @if (offer.currency) {\n                                                    {{\n                                                        offer.currency\n                                                            | currencySymbol\n                                                    }}\n                                                }\n                                            </h4>\n                                        </div>\n                                    </div>\n                                </a>\n                            </div>\n                        }\n                    }\n                </div>\n            </div>\n            <div class=\"cs_pagination cs_style_1 cs_type_2\"></div>\n        </div>\n    </div>\n</section>\n","import {\n    animate,\n    state,\n    style,\n    transition,\n    trigger,\n} from '@angular/animations';\nimport { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\n\n@Component({\n    selector: 'lib-babylon-preload',\n    standalone: true,\n    imports: [CommonModule],\n    templateUrl: './babylon-preload.component.html',\n    styleUrl: './babylon-preload.component.scss',\n    animations: [\n        trigger('fadeOutIn', [\n            state('visible', style({ opacity: 1 })),\n            state('hidden', style({ opacity: 0, display: 'none' })),\n            transition('visible => hidden', [animate('300ms ease')]),\n        ]),\n    ],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonPreloadComponent implements OnInit {\n    preloaderState = 'visible';\n    preloaderInState = 'visible';\n\n    ngOnInit(): void {\n        this.preloaderInState = 'hidden';\n        setTimeout(() => {\n            this.preloaderState = 'hidden';\n        }, 150);\n    }\n}\n","<div\n    class=\"cs_preloader cs_accent_color cs_primary_font\"\n    [@fadeOutIn]=\"preloaderState\"\n>\n    <div class=\"cs_preloader_in\" [@fadeOutIn]=\"preloaderInState\">B</div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { BabylonButtonI, BabylonImageI } from '../../../interfaces';\nimport { BabylonPaginationDirective } from '../../../directives/babylon-pagination/babylon-pagination.directive';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\n\n@Component({\n  selector: 'lib-babylon-press-list',\n  standalone: true,\n  imports: [CommonModule, BabylonPaginationDirective, BabylonLinkTypeDirective],\n  templateUrl: './babylon-press-list.component.html',\n  styleUrl: './babylon-press-list.component.scss',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonPressListComponent {\n  @Input() title?: string;\n  @Input() description?: string;\n  @Input() items?: BabylonPressListItemI[];\n  @Input() buttons?: BabylonButtonI[];\n  @Input() pageSize: number = 8;\n}\n\nexport interface BabylonPressListItemI {\n  title?: string;\n  subtitle?: string;\n  image?: BabylonImageI;\n  link?: BabylonButtonI;\n}\n","<section class=\"babylon__press-list margin-main\">\n    <div class=\"container\">\n        <div class=\"intro_info align--center no-align\">\n            @if (title) {\n                <h1 class=\"title\">{{ title }}</h1>\n            }\n            @if (description) {\n                <p class=\"text\">\n                    {{ description }}\n                </p>\n            }\n        </div>\n        @if (items && items.length > 0) {\n            <div\n                class=\"list-press-module mt--30\"\n                *libPaginate=\"\n                    items;\n                    pageSize: pageSize;\n                    let paged = pagedItems;\n                    let page = currentPage;\n                    let total = totalPages;\n                    let next = next;\n                    let prev = prev\n                \"\n            >\n                <div class=\"row align-items-start cs_gap_y_40\">\n                    @for (item of paged; track $index) {\n                        <div\n                            class=\"col-12 col-md-6 col-lg-4 col-xl-3 list-press-item\"\n                        >\n                            <a\n                                [href]=\"item?.link?.url\"\n                                [linkType]=\"item?.link?.linkType\"\n                            >\n                                <div\n                                    class=\"cs_card_thumb d-block position-relative cs_primary_bg cs--radius\"\n                                >\n                                    <img\n                                        [src]=\"\n                                            item?.image?.src ||\n                                            'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                        \"\n                                        [alt]=\"\n                                            item?.image?.alt ??\n                                            item?.image?.title ??\n                                            'title'\n                                        \"\n                                        class=\"cs--radius\"\n                                    />\n                                </div>\n                                <div class=\"intro_info\">\n                                    @if (item?.title) {\n                                        <h2 class=\"title--smaller mb--10\">\n                                            {{ item?.title }}\n                                        </h2>\n                                    }\n                                    @if (item?.subtitle) {\n                                        <p class=\"text text-uppercase\">\n                                            {{ item?.subtitle }}\n                                        </p>\n                                    }\n                                </div>\n                            </a>\n                        </div>\n                    }\n                </div>\n                @if (total > 1 && buttons && buttons.length > 0) {\n                    <div class=\"pagination__controls align--center mt--20\">\n                        <div class=\"btns__box align--center\">\n                            <button\n                                class=\"btn btn_primary\"\n                                [disabled]=\"page === 1\"\n                                (click)=\"prev()\"\n                                [attr.aria-label]=\"buttons[0].label\"\n                            >\n                                <b>{{ buttons[0].label }}</b>\n                            </button>\n                            <span class=\"mx--10\">{{ page }} / {{ total }}</span>\n                            <button\n                                class=\"btn btn_secondary\"\n                                [disabled]=\"page === total\"\n                                (click)=\"next()\"\n                                [attr.aria-label]=\"buttons[1].label\"\n                            >\n                                <b>{{ buttons[1].label }}</b>\n                            </button>\n                        </div>\n                    </div>\n                }\n            </div>\n        }\n    </div>\n</section>\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { BabylonTextInfoI } from '../../../interfaces';\nimport { BabylonButtonI } from '../../../interfaces/babylon-button.interface';\nimport { BabylonTagsI } from '../../../interfaces/babylon-tags.interface';\nimport { BabylonDynamicHeadingComponent } from '../../shared/babylon-dynamic-heading/babylon-dynamic-heading.component';\n\n@Component({\n    selector: 'lib-babylon-room-details',\n    standalone: true,\n    imports: [CommonModule, BabylonDynamicHeadingComponent],\n    templateUrl: './babylon-room-details.component.html',\n    styleUrl: './babylon-room-details.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonRoomDetailsComponent {\n    @Input() pretitle?: string;\n    @Input() title?: string;\n    @Input() description?: string;\n    @Input() button?: BabylonButtonI;\n    @Input() equipmentTitle?: string;\n    @Input() items?: BabylonEquipmentItem[];\n    @Input() showLess?: string;\n    @Input() showMore?: string;\n    @Input() showAll?: boolean = true;\n    @Input() tags?: BabylonTagsI;\n    @Input() roomTexts?: any;\n    @Input() texts?: BabylonTextInfoI;\n\n    showAllItems = false;\n\n    get showBtn(): string {\n        return this.showAllItems\n            ? (this.showLess ?? '')\n            : (this.showMore ?? '');\n    }\n    toggleView() {\n        if (!this.showAll) {\n            this.showAllItems = !this.showAllItems;\n        }\n    }\n}\n\nexport interface BabylonEquipmentItem {\n    title?: string;\n    icon?: string;\n    description?: string;\n}\n","<section class=\"babylon__room-details margin-main\">\n    <div class=\"container\">\n        <div class=\"row cs_gap_y_40\">\n            <div class=\"col-lg-6\">\n                <div class=\"cs_room_details\">\n                    <div class=\"intro_info no-align\">\n                        @if (pretitle) {\n                            <lib-babylon-dynamic-heading\n                                [tag]=\"tags?.pretitle || 'h3'\"\n                                cssClass=\"pretitle\"\n                                [content]=\"pretitle\"\n                            ></lib-babylon-dynamic-heading>\n                        }\n                        @if (title) {\n                            <lib-babylon-dynamic-heading\n                                [tag]=\"tags?.title || 'h2'\"\n                                cssClass=\"title wow fadeInUp\"\n                                [content]=\"title\"\n                                data-wow-duration=\"0.8s\"\n                                data-wow-delay=\"0.2s\"\n                            ></lib-babylon-dynamic-heading>\n                        }\n                        @if (description) {\n                            <p [innerHTML]=\"description\" class=\"text\"></p>\n                        }\n                        @if (button) {\n                            <div class=\"btns__box\">\n                                <a\n                                    [attr.aria-label]=\"button.label\"\n                                    [href]=\"button.url\"\n                                    class=\"btn btn_primary btn_call\"\n                                    target=\"_blank\"\n                                    rel=\"noopener noreferrer\"\n                                >\n                                    <b>{{ button.label }}</b>\n                                    <span\n                                        class=\"babylon-arrow-right-big\"\n                                    ></span>\n                                </a>\n                            </div>\n                        }\n                    </div>\n                </div>\n            </div>\n            <div class=\"col-lg-6\">\n                <div class=\"cs_pl_110\">\n                    @if (equipmentTitle) {\n                        <h3 class=\"pretitle mb--20\">{{ equipmentTitle }}</h3>\n                    }\n                    @if (items?.length) {\n                        <ul\n                            class=\"cs_list cs_style_1 cs_mp_0\"\n                            [ngClass]=\"{\n                                'room-details-adv-list': !showAll,\n                                'view-minus': !showAll && !showAllItems,\n                            }\"\n                        >\n                            @for (item of items; track $index) {\n                                <li\n                                    [ngClass]=\"\n                                        $index !== (items?.length ?? 0) - 1\n                                            ? 'cs_border-bottom'\n                                            : ''\n                                    \"\n                                >\n                                    <div class=\"info--icon\">\n                                        <i\n                                            class=\"icon--svg\"\n                                            [ngClass]=\"item.icon\"\n                                        ></i>\n                                    </div>\n                                    @if (item?.title) {\n                                        <div class=\"text--small\">\n                                            <p style=\"margin-bottom: 0\">\n                                                {{ item.title }}\n                                            </p>\n                                            @if (item?.description) {\n                                                <span\n                                                    class=\"description--small\"\n                                                    style=\"display: block\"\n                                                >\n                                                    {{ item.description }}\n                                                </span>\n                                            }\n                                        </div>\n                                    }\n                                </li>\n                            }\n                        </ul>\n                        @if (items!.length > 6 && !showAll) {\n                            <div class=\"btns__box align--center\">\n                                <a\n                                    class=\"btn-link\"\n                                    (click)=\"toggleView()\"\n                                    [attr.aria-label]=\"showBtn\"\n                                >\n                                    {{ showBtn }}\n                                </a>\n                            </div>\n                        }\n                    }\n                </div>\n            </div>\n        </div>\n    </div>\n</section>\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { DropdownModule } from 'primeng/dropdown';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport { BabylonTagsI, BabylonTextsColorsI } from '../../../interfaces';\nimport { BabylonButtonI } from '../../../interfaces/babylon-button.interface';\nimport { BabylonDropdownI } from '../../../interfaces/babylon-dropdown.interface';\nimport { BabylonImageI } from '../../../interfaces/babylon-image.interface';\nimport { BabylonDynamicHeadingComponent } from '../../shared';\n\n@Component({\n    selector: 'lib-babylon-rooms-cols',\n    standalone: true,\n    imports: [\n        CommonModule,\n        BabylonLinkTypeDirective,\n        DropdownModule,\n        FormsModule,\n        BabylonDynamicHeadingComponent,\n    ],\n    templateUrl: './babylon-rooms-cols.component.html',\n    styleUrl: './babylon-rooms-cols.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonRoomsColsComponent {\n    @Input() pretitle?: string;\n    @Input() title?: string;\n    @Input() items?: BabylonRoomsColsItem[];\n    @Input() stFilters?: BabylonDropdownI;\n    @Input() ndFilters?: BabylonDropdownI;\n    @Input() filters?: BabylonDropdownI[];\n    @Input() tags?: BabylonTagsI;\n    @Input() textColors?: BabylonTextsColorsI;\n\n    itemsfiltered?: BabylonRoomsColsItem[] = [];\n\n    ngOnInit(): void {\n        // Add the \"All\" option to the options of each filter if we want the option\n        if (this.filters?.length) {\n            if (this.filters?.find((option) => option.filterId === 1)) {\n                const allOptions = this.filters?.find(\n                    (option) => option.filterId === 1\n                );\n                this.filters.forEach((filter) => {\n                    filter.options = filter.options || []; // Initialize options if undefined\n                    filter.options = [\n                        { code: allOptions?.filterId, name: allOptions?.title },\n                        ...filter.options,\n                    ];\n                    filter.options = filter.options.sort((a, b) => {\n                        // Left All option on first position\n                        if (a.code === 1) return -1;\n                        if (b.code === 1) return 1;\n\n                        // Alphabetical sort for the rest of the options\n                        return a.name!.localeCompare(b.name ?? '', undefined, {\n                            sensitivity: 'base',\n                        });\n                    });\n                });\n            }\n        }\n        this.itemsfiltered = this.items || [];\n        this.fixFilters(2);\n    }\n\n    // Filter Fix Function: Removes and separates double filters received with the + character and removes duplicates\n    fixFilters(id: number) {\n        if (this.filters?.length) {\n            const newOptions: any[] = [];\n            if (this.filters?.find((filter) => filter.filterId === id)) {\n                this.filters.forEach((filter) => {\n                    if (filter.filterId === id) {\n                        filter.options?.map((option) => {\n                            if (option.name?.includes(' + ')) {\n                                const splitOptions = option.name\n                                    .split(' + ')\n                                    .map((name) => name.trim());\n\n                                splitOptions.forEach((singleTitle) => {\n                                    if (\n                                        !filter.options?.some(\n                                            (opt) =>\n                                                opt.name\n                                                    ?.replace(/\\s+/g, '')\n                                                    .toLowerCase() ===\n                                                singleTitle\n                                                    .replace(/\\s+/g, '')\n                                                    .toLowerCase()\n                                        )\n                                    ) {\n                                        newOptions.push({\n                                            code: singleTitle,\n                                            name: singleTitle,\n                                        });\n                                    }\n                                });\n                            } else {\n                                if (\n                                    !newOptions.some(\n                                        (newOpt) =>\n                                            newOpt.name\n                                                ?.replace(/\\s+/g, '')\n                                                .toLowerCase() ===\n                                            option.name\n                                                ?.replace(/\\s+/g, '')\n                                                .toLowerCase()\n                                    )\n                                )\n                                    newOptions.push(option);\n                            }\n                        });\n                        filter.options = newOptions.filter(\n                            (opt, index, self) =>\n                                index ===\n                                self.findIndex(\n                                    (o) =>\n                                        o.name\n                                            ?.replace(/\\s+/g, '')\n                                            .toLowerCase() ===\n                                        opt.name\n                                            ?.replace(/\\s+/g, '')\n                                            .toLowerCase()\n                                )\n                        );\n                    }\n                });\n            }\n        }\n    }\n\n    dropdownChange($event: any, filter: BabylonDropdownI): void {\n        if (!this.items || this.items.length === 0) {\n            this.itemsfiltered = [];\n            return;\n        }\n\n        this.itemsfiltered = [];\n        this.items.map((room: any) => {\n            let flag: boolean = true;\n            this.filters?.map((filter: any) => {\n                if (filter.title?.code) {\n                    switch (filter.filterId) {\n                        case 2: //bed\n                            if (\n                                isNaN(filter.title?.code) &&\n                                room.bedroomFilterId !== filter.title.code &&\n                                filter.title.code !== 1 &&\n                                !room?.bedroomFilterId\n                                    ?.replace(/\\s+/g, '')\n                                    .toLowerCase()\n                                    .includes(\n                                        $event?.name\n                                            ?.replace(/\\s+/g, '')\n                                            ?.toLowerCase()\n                                    )\n                            ) {\n                                flag = false;\n                            }\n                            break;\n                        case 14: // caracteruisticas\n                            if (\n                                isNaN(filter.title?.code) &&\n                                !room.characteristicsFilterId\n                                    ?.replace(/\\s+/g, '')\n                                    .toLowerCase()\n                                    .includes(\n                                        filter.title?.code\n                                            ?.replace(/\\s+/g, '')\n                                            ?.toLowerCase()\n                                    ) &&\n                                filter.title.code !== 1\n                            ) {\n                                flag = false;\n                            }\n                            break;\n\n                        default:\n                            break;\n                    }\n                }\n            });\n            if (flag) {\n                this.itemsfiltered?.push(room);\n            }\n        });\n    }\n}\n\nexport interface BabylonRoomsColsItem {\n    buttons?: BabylonButtonI[];\n    links?: BabylonButtonI[];\n    img?: BabylonImageI;\n    title?: string;\n    pretitle?: string;\n    description?: string;\n    equipment?: BabylonRoomsColsEquipment[];\n    bedroomFilterId?: number;\n    characteristicsFilterId?: number;\n    price?: number;\n    priceText?: string;\n}\n\nexport interface BabylonRoomsColsEquipment {\n    icon?: string;\n    label?: string;\n}\n\nexport interface DropdownOption {\n    id?: number;\n    code?: number;\n    name?: string;\n    ages?: DropdownOption[];\n}\n","<section class=\"babylon__rooms-cols margin-main\">\n    <div class=\"container\">\n        @if (title || pretitle) {\n            <div class=\"d-flex flex-column align-items-center pb-4\">\n                @if (pretitle) {\n                    <span class=\"pretitle\"> {{ pretitle }} </span>\n                }\n                @if (title) {\n                    <lib-babylon-dynamic-heading\n                        [tag]=\"tags?.title || 'h1'\"\n                        cssClass=\"title\"\n                        [content]=\"title\"\n                        [color]=\"textColors?.title\"\n                        data-wow-duration=\"0.8s\"\n                        data-wow-delay=\"0.2s\"\n                    ></lib-babylon-dynamic-heading>\n                }\n            </div>\n        }\n        <div class=\"row justify-content-center filters\">\n            @if (filters?.length) {\n                @for (filter of filters; track $index) {\n                    @if (filter.filterId !== 1) {\n                        <div class=\"dropdown__wrapper\">\n                            <p-dropdown\n                                class=\"dropdown\"\n                                [options]=\"filter.options\"\n                                optionLabel=\"name\"\n                                [placeholder]=\"filter.placeholder\"\n                                [(ngModel)]=\"filter.title\"\n                                (ngModelChange)=\"dropdownChange($event, filter)\"\n                            >\n                            </p-dropdown>\n                        </div>\n                    }\n                }\n            }\n        </div>\n    </div>\n    <div class=\"container-fluid cs_plr_100\">\n        <div class=\"row cs_gap_y_80\">\n            @if (itemsfiltered?.length) {\n                @for (item of itemsfiltered; track $index) {\n                    <div class=\"col-xl-4 col-md-6\">\n                        <div\n                            class=\"cs_card cs_style_7 cs--radius overflow-hidden\"\n                        >\n                            <a\n                                [href]=\"\n                                    item.buttons?.[1]?.url ??\n                                    item.buttons?.[0]?.url\n                                \"\n                                [attr.aria-label]=\"\n                                    item.buttons?.length\n                                        ? item.buttons?.[0]?.url\n                                        : '#'\n                                \"\n                                [linkType]=\"\n                                    item.buttons?.[1]?.linkType ??\n                                    item.buttons?.[0]?.linkType\n                                \"\n                                class=\"cs_card_thumb d-block overflow-hidden position-relative cs_primary_bg\"\n                            >\n                                @if (item.img) {\n                                    <img\n                                        [src]=\"item.img.src\"\n                                        [alt]=\"item.img.alt\"\n                                        loading=\"lazy\"\n                                    />\n                                }\n                                <span\n                                    class=\"cs_card_btn position-absolute cs_zindex_2\"\n                                >\n                                    <div\n                                        class=\"btns__box align--center cs__mode-no_mobile\"\n                                    >\n                                        @if (item.buttons?.length) {\n                                            @for (\n                                                button of item.buttons;\n                                                track $index\n                                            ) {\n                                                <a\n                                                    [href]=\"button.url\"\n                                                    [linkType]=\"button.linkType\"\n                                                    class=\"btn btn--light\"\n                                                    [ngClass]=\"{\n                                                        btn_primary: !$odd,\n                                                        btn_call: $odd,\n                                                    }\"\n                                                >\n                                                    <b> {{ button.label }}</b>\n                                                    <span\n                                                        class=\"babylon-arrow-right-big\"\n                                                    ></span>\n                                                </a>\n                                            }\n                                        }\n                                    </div>\n                                </span>\n                            </a>\n\n                            <a\n                                [href]=\"\n                                    item.buttons?.[1]?.url ??\n                                    item.buttons?.[0]?.url\n                                \"\n                                [attr.aria-label]=\"\n                                    item.buttons?.length\n                                        ? item.buttons?.[0]?.url\n                                        : '#'\n                                \"\n                                [linkType]=\"\n                                    item.buttons?.[1]?.linkType ??\n                                    item.buttons?.[0]?.linkType\n                                \"\n                            >\n                                <div class=\"cs_card_info position-relative\">\n                                    <div class=\"intro_info\">\n                                        @if (item.title) {\n                                            <h2 class=\"title--small mb--10\">\n                                                {{ item.title }}\n                                            </h2>\n                                        }\n                                        @if (item.price) {\n                                            <h3 class=\"subtitle\">\n                                                <span class=\"text\">{{\n                                                    item.priceText\n                                                }}</span>\n                                                {{ item.price }}€\n                                            </h3>\n                                        }\n                                        @if (item.equipment?.length) {\n                                            <div class=\"list-equipament\">\n                                                <ul\n                                                    class=\"cs_card_list cs_mp_0\"\n                                                >\n                                                    @for (\n                                                        equipment of item.equipment;\n                                                        track $index\n                                                    ) {\n                                                        <li>\n                                                            <div\n                                                                class=\"info--icon\"\n                                                            >\n                                                                @if (\n                                                                    equipment.icon\n                                                                ) {\n                                                                    <i\n                                                                        class=\"icon--svg\"\n                                                                        [ngClass]=\"\n                                                                            equipment.icon\n                                                                        \"\n                                                                    ></i>\n                                                                }\n                                                            </div>\n                                                            @if (\n                                                                equipment.label\n                                                            ) {\n                                                                <p\n                                                                    class=\"text--small\"\n                                                                >\n                                                                    {{\n                                                                        equipment.label\n                                                                    }}\n                                                                </p>\n                                                            }\n                                                        </li>\n                                                    }\n                                                </ul>\n                                            </div>\n                                        }\n                                    </div>\n                                </div>\n                            </a>\n\n                            <div\n                                class=\"btns__box align--center cs__mode-only_mobile\"\n                            >\n                                @if (item.buttons?.length) {\n                                    @for (\n                                        button of item.buttons;\n                                        track $index\n                                    ) {\n                                        <a\n                                            [href]=\"button.url\"\n                                            [linkType]=\"button.linkType\"\n                                            class=\"btn\"\n                                            [ngClass]=\"{\n                                                btn_primary: $odd,\n                                                btn_call: !$odd,\n                                            }\"\n                                        >\n                                            <b> {{ button.label }}</b>\n                                            <span\n                                                class=\"babylon-arrow-right-big\"\n                                            ></span>\n                                        </a>\n                                    }\n                                }\n                            </div>\n                        </div>\n                    </div>\n                }\n            }\n        </div>\n    </div>\n</section>\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport { BabylonButtonI } from '../../../interfaces/babylon-button.interface';\nimport { BabylonTextInfoI } from '../../../interfaces/babylon-text-info.interface';\nimport { BabylonRoomInfoI } from '../babylon-rooms-slider/babylon-room.interface';\nimport { BabylonDynamicHeadingComponent } from '../../shared';\nimport { BabylonTagsI } from '../../../interfaces';\n\n@Component({\n    selector: 'lib-babylon-rooms-grid',\n    standalone: true,\n    imports: [CommonModule, BabylonLinkTypeDirective, BabylonDynamicHeadingComponent],\n    templateUrl: './babylon-rooms-grid.component.html',\n    styleUrl: './babylon-rooms-grid.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonRoomsGridComponent {\n    @Input() labels?: BabylonTextInfoI;\n    @Input() rooms?: BabylonRoomInfoI[];\n    @Input() button?: BabylonButtonI;\n    @Input() tags?: BabylonTagsI;\n\n    btnClick(e: Event): void {\n        e.preventDefault();\n    }\n}\n","<section class=\"babylon__rooms-grid margin-main\">\n    <div class=\"container-fluid cs_plr_100\">\n        <div class=\"intro_info align--center no-align\">\n            @if (labels?.pretitle) {\n                <lib-babylon-dynamic-heading\n                    [tag]=\"tags?.pretitle || 'h3'\"\n                    cssClass=\"pretitle\"\n                    [content]=\"labels?.pretitle\"\n                ></lib-babylon-dynamic-heading>\n            }\n            @if (labels?.title) {\n                <lib-babylon-dynamic-heading\n                    [tag]=\"tags?.title || 'h2'\"\n                    cssClass=\"title wow fadeInUp\"\n                    [content]=\"labels?.title\"\n                    data-wow-duration=\"0.8s\"\n                    data-wow-delay=\"0.2s\"\n                ></lib-babylon-dynamic-heading>\n            }\n        </div>\n        <div class=\"cs_grid_style_4\">\n            @if (rooms?.length) {\n                @for (room of rooms; track $index) {\n                    <div class=\"cs_grid_item\">\n                        <a\n                            [attr.aria-label]=\"room?.buttons?.[0]?.url\"\n                            [href]=\"room.buttons?.[0]?.url\"\n                            [linkType]=\"room.buttons?.[0]?.linkType\"\n                            class=\"cs_card cs_style_4 cs_type_1 d-block position-relative cs--radius\"\n                        >\n                            @if (room?.images?.length) {\n                                @for (roomImage of room.images; track $index) {\n                                    <img\n                                        class=\"cs_card_thumb w-100 h-100\"\n                                        [src]=\"roomImage.src\"\n                                        alt=\"Room\"\n                                        loading=\"lazy\"\n                                    />\n                                    @if (roomImage.tag) {\n                                        <span\n                                            class=\"cs_card_price text bg--white position-absolute\"\n                                        >\n                                            {{ roomImage.tag }}\n                                        </span>\n                                    }\n                                }\n                            }\n                            @if (room?.price) {\n                                <span\n                                    class=\"cs_card_price text bg--white position-absolute cs--radius\"\n                                    >{{ room?.price }}</span\n                                >\n                            }\n                            <div\n                                class=\"cs_card_info position-absolute start-0 top-0 h-100 w-100\"\n                            >\n                                <div class=\"intro_info intro_info--light\">\n                                    @if (room?.texts?.name) {\n                                        <h2 class=\"title--small mb--0\">\n                                            {{ room?.texts?.name }}\n                                        </h2>\n                                    }\n                                    @if (room?.services?.length) {\n                                        <ul class=\"cs_card_list cs_mp_0\">\n                                            @for (\n                                                service of room?.services;\n                                                track $index\n                                            ) {\n                                                <li>\n                                                    @if (service.icon) {\n                                                        <div class=\"info--icon\">\n                                                            <i\n                                                                class=\"icon--svg icon-nuevo_pax_ico_small\"\n                                                                [ngClass]=\"\n                                                                    service.icon\n                                                                \"\n                                                            ></i>\n                                                        </div>\n                                                    }\n                                                    @if (service.name) {\n                                                        <p class=\"text--small\">\n                                                            {{ service.name }}\n                                                        </p>\n                                                    }\n                                                </li>\n                                            }\n                                        </ul>\n                                    }\n                                </div>\n                            </div>\n                        </a>\n                    </div>\n                }\n            }\n        </div>\n        @if (button?.label) {\n            <div class=\"btns__box align--center\">\n                <a\n                    [href]=\"button?.url\"\n                    class=\"btn btn_primary\"\n                    [attr.aria-label]=\"button?.label\"\n                >\n                    <b>{{ button?.label }}</b>\n                    <span class=\"babylon-arrow-right-big\"></span>\n                </a>\n            </div>\n        }\n    </div>\n</section>\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { BabylonSlidersDirective } from '../../../directives/babylon-sliders/babylon-sliders.directive';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport { BabylonButtonI } from '../../../interfaces/babylon-button.interface';\nimport { BabylonImageI } from '../../../interfaces/babylon-image.interface';\nimport {\n    BabylonDynamicHeadingComponent,\n    BabylonDynamicHeadingI,\n} from '../../shared';\nimport { BabylonTagsI } from '../../../interfaces/babylon-tags.interface';\n\n@Component({\n    selector: 'lib-babylon-rooms-list',\n    standalone: true,\n    imports: [\n        CommonModule,\n        BabylonLinkTypeDirective,\n        BabylonSlidersDirective,\n        BabylonDynamicHeadingComponent,\n    ],\n    templateUrl: './babylon-rooms-list.component.html',\n    styleUrl: './babylon-rooms-list.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonRoomsListComponent {\n    @Input() pretitle?: string;\n    @Input() title?: string;\n    @Input() items?: BabylonRoomsListItem[];\n    @Input() tags?: BabylonTagsI;\n\n    get sortedItems(): BabylonRoomsListItem[] | undefined {\n        return this.items\n            ?.slice()\n            .sort((a, b) => (a.order ?? 0) - (b.order ?? 0));\n    }\n}\n\nexport interface BabylonRoomsListItem {\n    buttons?: BabylonButtonI[];\n    links?: BabylonButtonI[];\n    img?: BabylonImageI;\n    title?: string;\n    pretitle?: string;\n    description?: string;\n    equipment?: BabylonRoomsListEquipment[];\n    bedroomFilterId?: number;\n    characteristicsFilterId?: number;\n    price?: number;\n    priceText?: string;\n    order?: number;\n}\n\nexport interface BabylonRoomsListEquipment {\n    icon?: string;\n    label?: string;\n}\n","<section class=\"babylon__rooms-list margin-main\">\n    <div class=\"container\">\n        <div class=\"intro_info align--center no-align\">\n            @if (pretitle) {\n                <lib-babylon-dynamic-heading\n                    [tag]=\"tags?.pretitle || 'h2'\"\n                    cssClass=\"'pretitle mb--10\"\n                    [content]=\"pretitle\"\n                >\n                </lib-babylon-dynamic-heading>\n            }\n\n            @if (title) {\n                <lib-babylon-dynamic-heading\n                    [tag]=\"tags?.title || 'h1'\"\n                    cssClass=\"title\"\n                    [content]=\"title\"\n                >\n                </lib-babylon-dynamic-heading>\n            }\n        </div>\n    </div>\n    <div class=\"container-fluid cs_plr_100\">\n        <div class=\"row room-item\">\n            @if (sortedItems?.length) {\n                @for (item of sortedItems; track $index) {\n                    <ng-container\n                        [ngTemplateOutlet]=\"$odd ? right : left\"\n                        [ngTemplateOutletContext]=\"{ item }\"\n                    ></ng-container>\n\n                    <ng-template #left let-item=\"item\">\n                        <div class=\"col-lg-12\">\n                            <div\n                                class=\"cs_card cs_style_7 cs_type_1 cs--radius overflow-hidden cs_card-left\"\n                            >\n                                <div\n                                    class=\"cs_card_thumb d-block overflow-hidden position-relative cs_primary_bg no-border cs--radius cs_pl_20\"\n                                >\n                                    <div\n                                        class=\"cs_slider cs_style_1 cs_slider_gap_24\"\n                                    >\n                                        <div\n                                            class=\"cs_slider_container\"\n                                            data-autoplay=\"0\"\n                                            data-loop=\"1\"\n                                            data-speed=\"600\"\n                                            data-center=\"0\"\n                                            data-variable-width=\"0\"\n                                            data-slides-per-view=\"responsive\"\n                                            data-xs-slides=\"1\"\n                                            data-sm-slides=\"1\"\n                                            data-md-slides=\"1\"\n                                            data-mlg-slides=\"1\"\n                                            data-lg-slides=\"1\"\n                                            data-add-slides=\"1\"\n                                        >\n                                            <div class=\"cs_slider_wrapper\">\n                                                @if (item.img) {\n                                                    <div\n                                                        class=\"cs_slide cs--radius\"\n                                                    >\n                                                        <img\n                                                            [src]=\"item.img.src\"\n                                                            [alt]=\"item.img.alt\"\n                                                            class=\"cs--radius\"\n                                                            loading=\"lazy\"\n                                                        />\n                                                    </div>\n                                                }\n                                            </div>\n                                        </div>\n                                        <div\n                                            class=\"cs_pagination cs_style_1 cs_type_3 cs_type_3 cs_type_3--left\"\n                                        ></div>\n                                    </div>\n                                </div>\n                                <div class=\"cs_card_info position-relative\">\n                                    <div class=\"intro_info\">\n                                        @if (item.title) {\n                                            <h2 class=\"title--small mb--10\">\n                                                {{ item.title }}\n                                            </h2>\n                                        }\n                                        @if (item.price) {\n                                            <h3 class=\"subtitle\">\n                                                <span class=\"text\">{{\n                                                    item.priceText\n                                                }}</span>\n                                                {{ item.price }}€\n                                            </h3>\n                                        }\n                                        @if (item.description) {\n                                            <div\n                                                [innerHTML]=\"item.description\"\n                                                class=\"text\"\n                                            ></div>\n                                        }\n                                        @if (item.equipment?.length) {\n                                            <div class=\"cs_mb_20\">\n                                                <ul\n                                                    class=\"cs_card_list cs_mp_0\"\n                                                >\n                                                    @for (\n                                                        equipment of item.equipment;\n                                                        track $index\n                                                    ) {\n                                                        <li>\n                                                            @if (\n                                                                equipment.icon\n                                                            ) {\n                                                                <div\n                                                                    class=\"info--icon\"\n                                                                >\n                                                                    <i\n                                                                        class=\"icon--svg\"\n                                                                        [ngClass]=\"\n                                                                            equipment.icon\n                                                                        \"\n                                                                    ></i>\n                                                                </div>\n                                                            }\n                                                            @if (\n                                                                equipment.label\n                                                            ) {\n                                                                <p\n                                                                    class=\"text--small\"\n                                                                >\n                                                                    {{\n                                                                        equipment.label\n                                                                    }}\n                                                                </p>\n                                                            }\n                                                        </li>\n                                                    }\n                                                </ul>\n                                            </div>\n                                        }\n                                        <div class=\"btns__box\">\n                                            @if (item?.buttons?.length) {\n                                                @for (\n                                                    button of item?.buttons;\n                                                    track $index\n                                                ) {\n                                                    <a\n                                                        [attr.aria-label]=\"\n                                                            button?.label\n                                                        \"\n                                                        [href]=\"button?.url\"\n                                                        [linkType]=\"\n                                                            button?.linkType\n                                                        \"\n                                                        class=\"btn\"\n                                                        [ngClass]=\"{\n                                                            'btn_primary ':\n                                                                !$odd,\n                                                            'btn_call ': $odd,\n                                                        }\"\n                                                    >\n                                                        <b>{{\n                                                            button?.label\n                                                        }}</b>\n                                                        <span\n                                                            class=\"babylon-arrow-right-big\"\n                                                        ></span>\n                                                    </a>\n                                                }\n                                            }\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                    </ng-template>\n                    <ng-template #right let-item=\"item\">\n                        <div class=\"col-lg-12\">\n                            <div\n                                class=\"cs_card cs_style_7 cs_type_1 cs--radius overflow-hidden cs_card-right\"\n                            >\n                                <div class=\"cs_card_info position-relative\">\n                                    <div class=\"intro_info\">\n                                        @if (item.title) {\n                                            <h2 class=\"title--small mb--10\">\n                                                {{ item.title }}\n                                            </h2>\n                                        }\n                                        @if (item.price) {\n                                            <h3 class=\"subtitle\">\n                                                <span class=\"text\">{{\n                                                    item.priceText\n                                                }}</span>\n                                                {{ item.price }}€\n                                            </h3>\n                                        }\n                                        @if (item.description) {\n                                            <div\n                                                [innerHTML]=\"item.description\"\n                                                class=\"text\"\n                                            ></div>\n                                        }\n                                        @if (item.equipment?.length) {\n                                            <div class=\"cs_mb_20\">\n                                                <ul\n                                                    class=\"cs_card_list cs_mp_0\"\n                                                >\n                                                    @for (\n                                                        equipment of item.equipment;\n                                                        track $index\n                                                    ) {\n                                                        <li>\n                                                            @if (\n                                                                equipment.icon\n                                                            ) {\n                                                                <div\n                                                                    class=\"info--icon\"\n                                                                >\n                                                                    <i\n                                                                        class=\"icon--svg\"\n                                                                        [ngClass]=\"\n                                                                            equipment.icon\n                                                                        \"\n                                                                    ></i>\n                                                                </div>\n                                                            }\n                                                            @if (\n                                                                equipment.label\n                                                            ) {\n                                                                <p\n                                                                    class=\"text--small\"\n                                                                >\n                                                                    {{\n                                                                        equipment.label\n                                                                    }}\n                                                                </p>\n                                                            }\n                                                        </li>\n                                                    }\n                                                </ul>\n                                            </div>\n                                        }\n                                        <div class=\"btns__box\">\n                                            @if (item?.buttons?.length) {\n                                                @for (\n                                                    button of item?.buttons;\n                                                    track $index\n                                                ) {\n                                                    <a\n                                                        [attr.aria-label]=\"\n                                                            button?.label\n                                                        \"\n                                                        [href]=\"button?.url\"\n                                                        [linkType]=\"\n                                                            button?.linkType\n                                                        \"\n                                                        class=\"btn\"\n                                                        [ngClass]=\"{\n                                                            'btn_primary ':\n                                                                !$odd,\n                                                            'btn_call ': $odd,\n                                                        }\"\n                                                    >\n                                                        <b>{{\n                                                            button?.label\n                                                        }}</b>\n                                                        <span\n                                                            class=\"babylon-arrow-right-big\"\n                                                        ></span>\n                                                    </a>\n                                                }\n                                            }\n                                        </div>\n                                    </div>\n                                </div>\n                                <div\n                                    class=\"cs_card_thumb d-block overflow-hidden position-relative cs_primary_bg no-border cs--radius cs_pl_20\"\n                                >\n                                    <div\n                                        class=\"cs_slider cs_style_1 cs_slider_gap_24\"\n                                    >\n                                        <div\n                                            class=\"cs_slider_container\"\n                                            data-autoplay=\"0\"\n                                            data-loop=\"1\"\n                                            data-speed=\"600\"\n                                            data-center=\"0\"\n                                            data-variable-width=\"0\"\n                                            data-slides-per-view=\"responsive\"\n                                            data-xs-slides=\"1\"\n                                            data-sm-slides=\"1\"\n                                            data-md-slides=\"1\"\n                                            data-mlg-slides=\"1\"\n                                            data-lg-slides=\"1\"\n                                            data-add-slides=\"1\"\n                                        >\n                                            <div class=\"cs_slider_wrapper\">\n                                                @if (item.img) {\n                                                    <div\n                                                        class=\"cs_slide cs--radius\"\n                                                    >\n                                                        <img\n                                                            [src]=\"item.img.src\"\n                                                            [alt]=\"item.img.alt\"\n                                                            class=\"cs--radius\"\n                                                            loading=\"lazy\"\n                                                        />\n                                                    </div>\n                                                }\n                                            </div>\n                                        </div>\n                                        <div\n                                            class=\"cs_pagination cs_style_1 cs_type_3 cs_type_3 cs_type_3--left\"\n                                        ></div>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                    </ng-template>\n                }\n            }\n        </div>\n    </div>\n</section>\n","import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n    AfterViewInit,\n    Component,\n    ElementRef,\n    Inject,\n    Input,\n    OnDestroy,\n    PLATFORM_ID,\n} from '@angular/core';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport { BabylonRoomDetailI } from '../../../interfaces';\nimport { BabylonTexts } from '../../../interfaces/babylon-texts.interface';\n\n@Component({\n    selector: 'lib-babylon-rooms-list-v2',\n    standalone: true,\n    imports: [CommonModule, BabylonLinkTypeDirective],\n    templateUrl: './babylon-rooms-list-v2.component.html',\n    styleUrl: './babylon-rooms-list-v2.component.scss',\n})\nexport class BabylonRoomsListV2Component implements AfterViewInit, OnDestroy {\n    @Input() texts?: BabylonTexts;\n    @Input() items?: BabylonRoomDetailI[]; //TODO dynamic type for hotel, room, etc...\n    @Input() maxItems?: 0 | 1 | 2 | 3 | 4 | 5 = 3;\n\n    private observer?: IntersectionObserver;\n\n    constructor(\n        private el: ElementRef,\n        @Inject(PLATFORM_ID) private platformId: Object\n    ) {}\n\n    ngAfterViewInit(): void {\n        if (isPlatformBrowser(this.platformId)) {\n            // Solo activamos esto en dispositivos que no tienen hover (Móviles/Tablets)\n            // o en pantallas menores a 1024px\n            if (\n                window.matchMedia('(hover: none)').matches ||\n                window.innerWidth < 1024\n            ) {\n                this.setupIntersectionObserver();\n            }\n        }\n    }\n\n    private setupIntersectionObserver(): void {\n        const options = {\n            root: null,\n            rootMargin: '0px',\n            threshold: 0.5, // Se activa cuando al menos el 50% de la tarjeta es visible en pantalla\n        };\n\n        this.observer = new IntersectionObserver((entries) => {\n            entries.forEach((entry) => {\n                if (entry.isIntersecting) {\n                    // Si entra en pantalla, añadimos la clase\n                    entry.target.classList.add('is-visible');\n                } else {\n                    // Si sale de pantalla, la quitamos\n                    entry.target.classList.remove('is-visible');\n                }\n            });\n        }, options);\n\n        // Retrasamos un poco la selección para asegurarnos de que Angular ya dibujó el @for\n        setTimeout(() => {\n            const cards = this.el.nativeElement.querySelectorAll(\n                '.list-rooms-zigzag__item'\n            );\n            cards.forEach((card: Element) => this.observer?.observe(card));\n        }, 100);\n    }\n\n    ngOnDestroy(): void {\n        // Limpiamos el observador al destruir el componente para evitar fugas de memoria\n        this.observer?.disconnect();\n    }\n}\n","<section class=\"list-rooms-zigzag\">\n    @if (items?.length) {\n        <div class=\"container\">\n            @for (item of items; track $index) {\n                <div\n                    class=\"list-rooms-zigzag__item relative\"\n                    [ngClass]=\"{\n                        'list-rooms-zigzag--right bg-cream': $index % 2 != 0,\n                    }\"\n                >\n                    <div class=\"list-rooms-zigzag__image\">\n                        <svg\n                            aria-hidden=\"true\"\n                            focusable=\"false\"\n                            class=\"list-rooms-zigzag__image--graphic\"\n                        >\n                            <use\n                                href=\"/assets/babylon/svg/icon-graphic.svg#icon-graphic\"\n                            ></use>\n                        </svg>\n                        @if (item?.images?.[0]?.src) {\n                            <figure>\n                                <img\n                                    [src]=\"item?.images?.[0]?.src\"\n                                    [alt]=\"item?.images?.[0]?.alt\"\n                                />\n                            </figure>\n                        }\n                        <div class=\"list-rooms-zigzag__info-wrapper\">\n                            <ul class=\"list-rooms-zigzag__info\">\n                                @if (item?.equipments?.length) {\n                                    @for (\n                                        equipment of item?.equipments;\n                                        track $index\n                                    ) {\n                                        <li class=\"li-element\">\n                                            <i\n                                                class=\"icon--svg\"\n                                                [ngClass]=\"equipment?.icon\"\n                                            ></i>\n                                            {{ equipment?.name }}\n                                        </li>\n                                    }\n\n                                    @for (\n                                        equipment of item?.equipments;\n                                        track $index + '-dup'\n                                    ) {\n                                        <li class=\"li-element\">\n                                            <i\n                                                class=\"icon--svg\"\n                                                [ngClass]=\"equipment?.icon\"\n                                            ></i>\n                                            {{ equipment?.name }}\n                                        </li>\n                                    }\n                                }\n                            </ul>\n                        </div>\n                        @if (item?.buttons?.length) {\n                            <div class=\"btn__group\">\n                                @for (btn of item?.buttons; track $index) {\n                                    <a\n                                        role=\"button\"\n                                        [href]=\"btn?.url\"\n                                        [linkType]=\"btn?.linkType\"\n                                        class=\"btn btn__primary\"\n                                    >\n                                        <span>{{ btn?.label }}</span>\n                                    </a>\n                                }\n                            </div>\n                        }\n                    </div>\n                    <div class=\"list-rooms-zigzag__content\">\n                        @if (item?.texts?.name) {\n                            <h2 [innerHTML]=\"item?.texts?.name\"></h2>\n                        }\n                        @if (item?.texts?.description) {\n                            <p [innerHTML]=\"item?.texts?.description\"></p>\n                        }\n                        @if (item?.buttons?.length) {\n                            <div class=\"btn__group\">\n                                @for (btn of item?.buttons; track $index) {\n                                    <a\n                                        [href]=\"btn?.url\"\n                                        class=\"btn btn__primary\"\n                                    >\n                                        <span>{{ btn?.label }}</span>\n                                    </a>\n                                }\n                            </div>\n                        }\n                    </div>\n                </div>\n            }\n        </div>\n    }\n</section>\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { BabylonSlidersDirective } from '../../../directives/babylon-sliders/babylon-sliders.directive';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport { BabylonTextInfoI } from '../../../interfaces/babylon-text-info.interface';\nimport { BabylonDynamicHeadingComponent } from '../../shared';\nimport { BabylonRoomInfoI } from './babylon-room.interface';\nimport { BabylonTagsI } from '../../../interfaces/babylon-tags.interface';\nimport { BabylonTextsColorsI } from '../../../interfaces/babylon-texts-colors.interface';\n\n@Component({\n    selector: 'lib-babylon-rooms-slider',\n    standalone: true,\n    imports: [\n        CommonModule,\n        BabylonSlidersDirective,\n        BabylonLinkTypeDirective,\n        BabylonDynamicHeadingComponent,\n    ],\n    templateUrl: './babylon-rooms-slider.component.html',\n    styleUrl: './babylon-rooms-slider.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonRoomsSliderComponent {\n    @Input() labels?: BabylonTextInfoI;\n    @Input() title?: string;\n    @Input() pretitle?: string;\n    @Input() tags?: BabylonTagsI;\n    @Input() textColors?: BabylonTextsColorsI;\n    @Input() set rooms(items: BabylonRoomInfoI[] | undefined) {\n        this.totalRooms = items;\n    }\n\n    totalRooms?: BabylonRoomInfoI[] = [];\n}\n","<section class=\"babylon__rooms-slider margin-main\">\n    <div class=\"container\">\n        <div class=\"intro_info align--center\">\n            @if (labels?.titleContain?.content || labels?.pretitleContain?.content) {\n                @if (labels?.pretitleContain?.content) {\n                    <lib-babylon-dynamic-heading\n                        [tag]=\"labels?.pretitleContain?.tag || 'h3'\"\n                        [cssClass]=\"\n                            labels?.pretitleContain?.cssClass || 'pretitle'\n                        \"\n                        [content]=\"labels?.pretitleContain?.content\"\n                    >\n                    </lib-babylon-dynamic-heading>\n                }\n                @if (labels?.titleContain?.content) {\n                    <lib-babylon-dynamic-heading\n                        [tag]=\"labels?.titleContain?.tag || 'h2'\"\n                        [cssClass]=\"\n                            labels?.titleContain?.cssClass ||\n                            'title wow fadeInUp'\n                        \"\n                        [content]=\"labels?.titleContain?.content\"\n                        data-wow-duration=\"0.8s\"\n                        data-wow-delay=\"0.2s\"\n                    >\n                    </lib-babylon-dynamic-heading>\n                }\n            } @else {\n                @if (pretitle) {\n                    <lib-babylon-dynamic-heading\n                        [tag]=\"tags?.pretitle || 'h3'\"\n                        [cssClass]=\"'pretitle'\"\n                        [content]=\"pretitle\"\n                        [color]=\"textColors?.title\"\n                    >\n                    </lib-babylon-dynamic-heading>\n                }\n                @if (title) {\n                    <lib-babylon-dynamic-heading\n                        [tag]=\"tags?.title || 'h2'\"\n                        [cssClass]=\"'title wow fadeInUp'\"\n                        [content]=\"title\"\n                        [color]=\"textColors?.title\"\n                        data-wow-duration=\"0.8s\"\n                        data-wow-delay=\"0.2s\"\n                    >\n                    </lib-babylon-dynamic-heading>\n                }\n            }\n        </div>\n    </div>\n    <div class=\"container-fluid pb--50\">\n        <div class=\"cs_slider cs_style_1 cs_slider_gap_40 cs_show_arrows\">\n            <div\n                class=\"cs_slider_container\"\n                sliders=\"cs_slider_container\"\n                data-autoplay=\"0\"\n                data-loop=\"1\"\n                data-speed=\"600\"\n                data-center=\"0\"\n                data-variable-width=\"0\"\n                data-slides-per-view=\"responsive\"\n                data-xs-slides=\"1\"\n                data-sm-slides=\"1\"\n                data-md-slides=\"2\"\n                data-mlg-slides=\"2\"\n                data-lg-slides=\"3\"\n                data-add-slides=\"3\"\n            >\n                <div class=\"cs_slider_wrapper\">\n                    @if (totalRooms?.length) {\n                        @for (room of totalRooms; track $index) {\n                            <div class=\"cs_slide\">\n                                <div class=\"cs_card cs_style_1\">\n                                    @if (room.images?.[0]) {\n                                        <div class=\"img-container\">\n                                            <a\n                                                [attr.aria-label]=\"\n                                                    room.links?.[0]?.url\n                                                \"\n                                                [href]=\"room.links?.[0]?.url\"\n                                                [linkType]=\"\n                                                    room.links?.[0]?.linkType\n                                                \"\n                                                class=\"cs_card_thumb d-block cs--radius overflow-hidden position-relative cs_primary_bg\"\n                                            >\n                                                <img\n                                                    [src]=\"\n                                                        room.images?.[0]?.src\n                                                    \"\n                                                    alt=\"Room\"\n                                                    loading=\"lazy\"\n                                                />\n                                                <img\n                                                    [src]=\"\n                                                        room.images?.[0]?.src\n                                                    \"\n                                                    alt=\"Room\"\n                                                    loading=\"lazy\"\n                                                />\n                                            </a>\n                                        </div>\n                                    }\n                                    <div\n                                        class=\"cs_card_info intro_info no-align\"\n                                    >\n                                        @if (room?.texts?.name) {\n                                            <h3 class=\"title--small mb--0\">\n                                                {{ room?.texts?.name }}\n                                            </h3>\n                                        }\n                                        @if (room?.texts?.additional1) {\n                                            <h3 class=\"subtitle--small\">\n                                                {{ room?.texts?.additional1 }}\n                                            </h3>\n                                        }\n                                        @if (room?.equipments?.length) {\n                                            <ul class=\"cs_card_list cs_mp_0\">\n                                                @for (\n                                                    equipment of room.equipments;\n                                                    track $index\n                                                ) {\n                                                    <li>\n                                                        @if (equipment.icon) {\n                                                            <div\n                                                                class=\"info--icon\"\n                                                            >\n                                                                <i\n                                                                    class=\"icon--svg icon-nuevo_pax_ico_small\"\n                                                                    [ngClass]=\"\n                                                                        equipment.icon\n                                                                    \"\n                                                                ></i>\n                                                            </div>\n                                                        }\n                                                        @if (equipment.name) {\n                                                            <p\n                                                                class=\"text--small\"\n                                                            >\n                                                                {{\n                                                                    equipment.name\n                                                                }}\n                                                            </p>\n                                                        }\n                                                    </li>\n                                                }\n                                            </ul>\n                                        }\n                                        @if (room?.buttons) {\n                                            <div class=\"btns__box\">\n                                                @for (\n                                                    button of room.buttons;\n                                                    track $index\n                                                ) {\n                                                    <a\n                                                        [attr.aria-label]=\"\n                                                            button.label\n                                                        \"\n                                                        class=\"btn\"\n                                                        [href]=\"button.url\"\n                                                        [linkType]=\"\n                                                            button.linkType\n                                                        \"\n                                                        [ngClass]=\"{\n                                                            btn__primary: $even,\n                                                            btn__call: $odd,\n                                                        }\"\n                                                    >\n                                                        <b>\n                                                            {{ button.label }}\n                                                        </b>\n                                                    </a>\n                                                }\n                                            </div>\n                                        }\n                                    </div>\n                                </div>\n                            </div>\n                        }\n                    }\n                </div>\n            </div>\n            <div class=\"cs_slider_arrows cs_style_1 cs_mobile_hide\">\n                <div class=\"cs_left_arrow cs_center cs_primary_color\">\n                    <span class=\"babylon-arrow-left-big\"></span>\n                </div>\n                <div class=\"cs_right_arrow cs_center cs_primary_color\">\n                    <span class=\"babylon-arrow-right-big\"></span>\n                </div>\n            </div>\n            <div class=\"cs_pagination cs_style_1 cs_mobile_show\"></div>\n        </div>\n    </div>\n</section>\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { BabylonSlidersDirective } from '../../../directives/babylon-sliders/babylon-sliders.directive';\nimport { BabylonAdvInfoI } from '../babylon-advantages/babylon-advantages-info.interface';\nimport { BabylonTagsI } from '../../../interfaces';\nimport { BabylonDynamicHeadingComponent } from '../../shared';\n\n@Component({\n    selector: 'lib-babylon-services-slider',\n    standalone: true,\n    imports: [CommonModule, BabylonSlidersDirective, BabylonDynamicHeadingComponent],\n    templateUrl: './babylon-services-slider.component.html',\n    styleUrl: './babylon-services-slider.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonServicesSliderComponent {\n    @Input() pretitle?: string;\n    @Input() title?: string;\n    @Input() advantages?: BabylonAdvInfoI[];\n    @Input() tags?: BabylonTagsI;\n}\n","<section class=\"babylon__services-slider margin-main bg--white\">\n    <div class=\"container\">\n        <div class=\"intro_info align--center no-align\">\n            @if (title) {\n                <lib-babylon-dynamic-heading\n                    [tag]=\"tags?.title || 'h2'\"\n                    cssClass=\"title\"\n                    [content]=\"title\"\n                ></lib-babylon-dynamic-heading>\n            }\n            @if (pretitle) {\n                <lib-babylon-dynamic-heading\n                    [tag]=\"tags?.pretitle || 'h3'\"\n                    cssClass=\"pretitle\"\n                    [content]=\"pretitle\"\n                ></lib-babylon-dynamic-heading>\n            }\n        </div>\n    </div>\n    @if (advantages?.length) {\n        <div class=\"cs_slider cs_style_1 cs_hover_show_arrows\">\n            <div class=\"container\">\n                <div\n                    class=\"cs_slider_container\"\n                    sliders=\"cs_slider_container3\"\n                    data-autoplay=\"0\"\n                    data-loop=\"1\"\n                    data-speed=\"600\"\n                    data-center=\"0\"\n                    data-variable-width=\"0\"\n                    data-slides-per-view=\"responsive\"\n                    data-xs-slides=\"1\"\n                    data-sm-slides=\"2\"\n                    data-md-slides=\"2\"\n                    data-mlg-slides=\"3\"\n                    data-lg-slides=\"3\"\n                    data-add-slides=\"4\"\n                >\n                    <div class=\"cs_slider_wrapper\">\n                        @for (advantage of advantages; track $index) {\n                            <div class=\"cs_slide\">\n                                <div class=\"services-item\">\n                                    @if (advantage.icon) {\n                                        <div class=\"services-item--icon\">\n                                            <div\n                                                class=\"info--icon icon--medium\"\n                                            >\n                                                <i\n                                                    class=\"icon--svg\"\n                                                    [ngClass]=\"advantage.icon\"\n                                                ></i>\n                                                @if (\n                                                    advantage.title ||\n                                                    advantage.text\n                                                ) {\n                                                    <div class=\"txt-container\">\n                                                        @if (advantage.title) {\n                                                            <lib-babylon-dynamic-heading\n                                                                [tag]=\"tags?.title || 'h4'\"\n                                                                cssClass=\"subtitle\"\n                                                                [content]=\"advantage.title\"\n                                                            ></lib-babylon-dynamic-heading>\n                                                        }\n                                                        @if (advantage.text) {\n                                                            <p\n                                                                class=\"text\"\n                                                                [innerHTML]=\"\n                                                                    advantage.text\n                                                                \"\n                                                            ></p>\n                                                        }\n                                                    </div>\n                                                }\n                                            </div>\n                                        </div>\n                                    }\n                                </div>\n                            </div>\n                        }\n                    </div>\n                </div>\n\n                <div class=\"cs_slider_arrows cs_style_2 cs_mobile_hide\">\n                    <div class=\"cs_left_arrow slick-arrow\">\n                        <span class=\"babylon-arrow-left-big\"></span>\n                    </div>\n                    <div class=\"cs_right_arrow slick-arrow\">\n                        <span class=\"babylon-arrow-right-big\"></span>\n                    </div>\n                </div>\n                <div\n                    class=\"cs_pagination cs_style_1 cs_mobile_show cs_pagination_services\"\n                ></div>\n            </div>\n        </div>\n    }\n</section>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { BabylonButtonI, BabylonMultimediaI, BabylonTextInfoI } from '../../../interfaces';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\n\n@Component({\n    selector: 'lib-babylon-simple-img-info',\n    standalone: true,\n    imports: [CommonModule, BabylonLinkTypeDirective],\n    templateUrl: './babylon-simple-img-info.component.html',\n    styleUrl: './babylon-simple-img-info.component.scss',\n})\nexport class BabylonSimpleImgInfoComponent {\n  @Input() rightSide?: boolean = false;\n  @Input() texts?: BabylonTextInfoI;\n  @Input() buttons?: BabylonButtonI[];\n  @Input() multimedia?: BabylonMultimediaI;\n\n}\n","<section class=\"simple-img\" [ngClass]=\"{ 'simple-img--right': rightSide }\">\n    <div class=\"container\">\n        <div class=\"simple-img__inner\">\n            @if (\n                multimedia?.imagenes?.length &&\n                multimedia?.imagenes?.[0]?.img?.src\n            ) {\n                <div class=\"simple-img__image\">\n                    <figure>\n                        <img\n                            [src]=\"\n                                multimedia?.imagenes?.[0]?.img?.src ||\n                                'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                            \"\n                        />\n                    </figure>\n                </div>\n            }\n            <div class=\"simple-img__content\">\n                <svg\n                    aria-hidden=\"true\"\n                    focusable=\"false\"\n                    class=\"simple-img__content--graphic\"\n                >\n                    <use\n                        href=\"/assets/babylon/svg/icon-graphic.svg#icon-graphic\"\n                    ></use>\n                </svg>\n                <div class=\"simple-img__heading\">\n                    @if (texts?.title) {\n                        <h2>{{ texts?.title }}</h2>\n                    }\n                    @if (texts?.subtitle) {\n                        <span class=\"simple-img__heading--sub\">{{\n                            texts?.subtitle\n                        }}</span>\n                    }\n                </div>\n                @if (texts?.description) {\n                    <p [innerHTML]=\"texts?.description\"></p>\n                }\n            </div>\n            @if (buttons?.length) {\n                <div class=\"btn__group\">\n                    @for (btn of buttons; track $index) {\n                        @if (btn?.label && btn?.url) {\n                            <a\n                                [attr.aria-label]=\"btn?.label\"\n                                [href]=\"btn?.url\"\n                                [linkType]=\"btn?.linkType\"\n                                class=\"btn btn__primary\"\n                                ><span>{{ btn?.label }}</span></a\n                            >\n                        }\n                    }\n                </div>\n            }\n        </div>\n    </div>\n</section>\n\n<!-- <section class=\"simple-img\">\n    <div class=\"container\">\n        <div class=\"simple-img__inner\">\n            <div class=\"simple-img__image\">\n                <figure>\n                    <img src=\"/assets/babylon/images/img-35.webp\" />\n                </figure>\n            </div>\n            <div class=\"simple-img__content\">\n                <svg\n                    aria-hidden=\"true\"\n                    focusable=\"false\"\n                    class=\"simple-img__content--graphic\"\n                >\n                    <use\n                        href=\"/assets/babylon/svg/icon-graphic.svg#icon-graphic\"\n                    ></use>\n                </svg>\n                <div class=\"simple-img__heading\">\n                    <h2>Entra a nuestro exclusivo programa de fidelización</h2>\n                    <span class=\"simple-img__heading--sub\"\n                        >yclub by blanco</span\n                    >\n                </div>\n                <p>\n                    Nuestro programa tiene como objetivo principal valorar a sus\n                    clientes, ofreciéndoles unas ventajas y servicios exclusivos\n                    para que su estancia sea única.\n                </p>\n            </div>\n            <div class=\"btn__group\">\n                <a href=\"/\" class=\"btn btn__primary\"\n                    ><span>Más información</span></a\n                >\n                <a href=\"/\" class=\"btn btn__primary\"\n                    ><span>Regístrate Gratis</span></a\n                >\n            </div>\n        </div>\n    </div>\n</section>\n-->\n","import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n    AfterViewInit,\n    Component,\n    ElementRef,\n    inject,\n    Input,\n    OnChanges,\n    OnDestroy,\n    PLATFORM_ID,\n    SimpleChanges,\n    ViewChild,\n} from '@angular/core';\n\nimport Swiper, { Autoplay, Navigation } from 'swiper';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport {\n    BabylonButtonI,\n    BabylonMultimediaI,\n    BabylonTextInfoI,\n} from '../../../interfaces';\n\nSwiper.use([Navigation, Autoplay]);\n\n@Component({\n    selector: 'lib-babylon-sli-c1-img-text',\n    standalone: true,\n    imports: [CommonModule, BabylonLinkTypeDirective],\n    templateUrl: './babylon-sli-c1-img-text.component.html',\n    styleUrl: './babylon-sli-c1-img-text.component.scss',\n    /* encapsulation: ViewEncapsulation.None, */\n})\nexport class BabylonSliC1ImgTextComponent\n    implements AfterViewInit, OnChanges, OnDestroy\n{\n    @Input() rigthSide?: boolean = false;\n    @Input() texts?: BabylonTextInfoI;\n    @Input() multimedia?: BabylonMultimediaI;\n    @Input() buttons?: BabylonButtonI[];\n    @Input() identifier?: string;\n\n    @ViewChild('swiperEl') private swiperEl?: ElementRef<HTMLElement>;\n    @ViewChild('nextBtn') private nextBtn?: ElementRef<HTMLElement>;\n    @ViewChild('prevBtn') private prevBtn?: ElementRef<HTMLElement>;\n\n    private swiper?: Swiper;\n    private readonly platformId = inject(PLATFORM_ID);\n\n    ngAfterViewInit(): void {\n        if (!isPlatformBrowser(this.platformId)) return;\n        this.initSwiper();\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if (!isPlatformBrowser(this.platformId)) return;\n\n        if (changes['multimedia'] && !changes['multimedia'].firstChange) {\n            this.initSwiper();\n        }\n    }\n\n    ngOnDestroy(): void {\n        if (!isPlatformBrowser(this.platformId)) return;\n        this.destroySwiper();\n    }\n\n    private initSwiper(): void {\n        queueMicrotask(() => {\n            requestAnimationFrame(() => {\n                const host = this.swiperEl?.nativeElement;\n                if (!host) return;\n\n                const slidesCount =\n                    host.querySelectorAll('.swiper-slide').length;\n                if (!slidesCount) return;\n\n                this.destroySwiper();\n\n                const wrapper = host.closest(\n                    '.js-active-slider'\n                ) as HTMLElement | null;\n\n                const getAttr = (name: string): string | null =>\n                    wrapper ? wrapper.getAttribute(name) : null;\n\n                const getBool = (name: string, def = false) => {\n                    const v = getAttr(name);\n                    if (v === null) return def;\n                    return v === 'true' || v === '1' || v === '';\n                };\n\n                const getNum = (name: string, def = 0) => {\n                    const v = getAttr(name);\n                    const n = Number(v);\n                    return Number.isFinite(n) ? n : def;\n                };\n\n                const autoplayEnabled = getBool('data-slider_autoplay', false);\n                const speed = getNum('data-slider_speed', 600);\n                const infinite = getBool('data-slides_infinite', false);\n                const draggable = getBool('data-slider_draggable', true);\n                const showBtns = getBool('data-slider_showbtns', false);\n\n                // ✅ Swiper: loop SOLO si hay más de 1 slide\n                const loop = infinite && slidesCount > 1;\n\n                const navigationOpt =\n                    showBtns &&\n                    this.nextBtn?.nativeElement &&\n                    this.prevBtn?.nativeElement\n                        ? {\n                              nextEl: this.nextBtn.nativeElement,\n                              prevEl: this.prevBtn.nativeElement,\n                          }\n                        : false;\n\n                this.swiper = new Swiper(host, {\n                    slidesPerView: 1,\n                    spaceBetween: 0,\n                    speed,\n                    loop,\n                    allowTouchMove: draggable,\n                    navigation: navigationOpt,\n\n                    // ✅ autoplay solo si está activo y hay +1 slide (si no, es absurdo y a veces buguea)\n                    autoplay:\n                        autoplayEnabled && slidesCount > 1\n                            ? {\n                                  delay: 5000,\n                                  disableOnInteraction: false,\n                                  pauseOnMouseEnter: false,\n                              }\n                            : false,\n\n                    // ✅ para cuando el layout cambia / imágenes cargan\n                    observer: true,\n                    observeParents: true,\n                    watchOverflow: true,\n                });\n\n                // ✅ cuando carguen imágenes, fuerza update (clave cuando el alto depende de la imagen)\n                const imgs = Array.from(host.querySelectorAll('img'));\n                imgs.forEach((img) => {\n                    if (img.complete) return;\n                    img.addEventListener('load', () => this.swiper?.update(), {\n                        once: true,\n                    });\n                });\n\n                // oculta botones si no se usan\n                if (this.nextBtn?.nativeElement) {\n                    this.nextBtn.nativeElement.style.display = showBtns\n                        ? ''\n                        : 'none';\n                }\n                if (this.prevBtn?.nativeElement) {\n                    this.prevBtn.nativeElement.style.display = showBtns\n                        ? ''\n                        : 'none';\n                }\n            });\n        });\n    }\n\n    private destroySwiper(): void {\n        if (this.swiper) {\n            this.swiper.destroy(true, true);\n            this.swiper = undefined;\n        }\n    }\n}\n","<section\n    class=\"mdl-seoimagen\"\n    [ngClass]=\"{\n        'full-slider':\n            (multimedia?.imagenes?.length ?? 0) > 1 || texts?.oneElement,\n    }\"\n    [id]=\"identifier ?? 'SliC1ImgText'\"\n>\n    <div class=\"mdl-container\" [ngClass]=\"{ 'seo-right': rigthSide }\">\n        <!-- Añadir seo-right si la imagen debe ir a la derecha -->\n        @if (texts?.subtitle) {\n            <h2 class=\"m-pretitulo-mobile\">{{ texts?.subtitle }}</h2>\n        }\n\n        @if (multimedia?.imagenes?.length) {\n            <div\n                class=\"m-content-left\"\n                [ngClass]=\"{\n                    'full-slider':\n                        (multimedia?.imagenes?.length ?? 0) > 1 ||\n                        texts?.oneElement,\n                }\"\n            >\n                <!-- Contenedor principal: HOST de la directiva -->\n                <div\n                    class=\"js-active-slider\"\n                    data-slider_autoplay=\"true\"\n                    data-slider_speed=\"600\"\n                    data-slides_infinite=\"true\"\n                    data-slider_draggable=\"true\"\n                    data-slider_showbtns=\"true\"\n                    data-slider_showdots=\"false\"\n                >\n                    <div #swiperEl class=\"swiper\">\n                        <div class=\"swiper-wrapper\">\n                            @for (item of multimedia?.imagenes; track $index) {\n                                <div class=\"swiper-slide\">\n                                    <img\n                                        [src]=\"\n                                            item.img?.src ||\n                                            'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                        \"\n                                        [alt]=\"item.img?.alt\"\n                                    />\n                                </div>\n                            }\n                        </div>\n                        <button\n                            #prevBtn\n                            type=\"button\"\n                            class=\"swiper-button-prev\"\n                            aria-label=\"Previous\"\n                        ></button>\n\n                        <button\n                            #nextBtn\n                            type=\"button\"\n                            class=\"swiper-button-next\"\n                            aria-label=\"Next\"\n                        ></button>\n                    </div>\n                    @if (\n                        (multimedia?.imagenes?.length ?? 0) > 1 ||\n                        texts?.oneElement\n                    ) {\n                        <div class=\"slide-overlay\">\n                            <div class=\"m-content\">\n                                @if (multimedia?.imagenes?.[0]?.pretitle) {\n                                    <div\n                                        class=\"m-pretitulo\"\n                                        [innerHTML]=\"texts?.pretitle\"\n                                    ></div>\n                                }\n                                @if (multimedia?.imagenes?.[0]?.title) {\n                                    <h2\n                                        class=\"m-titulo\"\n                                        [ngClass]=\"{\n                                            'no-pad':\n                                                !multimedia?.imagenes?.[0]\n                                                    ?.pretitle,\n                                        }\"\n                                        [innerHTML]=\"\n                                            multimedia?.imagenes?.[0]?.title\n                                        \"\n                                    ></h2>\n                                }\n                                @if (multimedia?.imagenes?.[0]?.description) {\n                                    <div\n                                        class=\"m-texto\"\n                                        [innerHTML]=\"\n                                            multimedia?.imagenes?.[0]\n                                                ?.description\n                                        \"\n                                    ></div>\n                                }\n                                @if (multimedia?.imagenes?.[0]?.subtitle) {\n                                    <h3\n                                        class=\"m-subtitle\"\n                                        [innerHTML]=\"\n                                            multimedia?.imagenes?.[0]?.subtitle\n                                        \"\n                                    ></h3>\n                                }\n                                @if (multimedia?.imagenes?.[0]?.alt) {\n                                    <div\n                                        class=\"m-alt\"\n                                        [innerHTML]=\"\n                                            multimedia?.imagenes?.[0]?.alt\n                                        \"\n                                    ></div>\n                                }\n\n                                @if (buttons?.length) {\n                                    <div class=\"btns__box\">\n                                        @for (\n                                            item of buttons;\n                                            track $index;\n                                            let odd = $odd\n                                        ) {\n                                            <a\n                                                [href]=\"item.url\"\n                                                [linkType]=\"item.linkType\"\n                                                [attr.aria-label]=\"item.label\"\n                                                class=\"m-button-big-babylon\"\n                                                [ngClass]=\"{\n                                                    'm-button':\n                                                        $index % 2 === 0,\n                                                    'm-underline':\n                                                        $index % 2 !== 0,\n                                                }\"\n                                                >{{ item.label }}</a\n                                            >\n                                        }\n                                    </div>\n                                }\n                            </div>\n                        </div>\n                    }\n                </div>\n                <!-- \n                <img\n                    class=\"svgBack\"\n                    src=\"/assets/babylon/svg/holidays.svg\"\n                    alt=\"\"\n                /> -->\n            </div>\n        }\n\n        @if (\n            texts &&\n            (multimedia?.imagenes?.length ?? 0) < 2 &&\n            !texts.oneElement\n        ) {\n            <div class=\"m-content-right\">\n                <div class=\"m-content\">\n                    @if (texts.pretitle) {\n                        <div\n                            class=\"m-pretitulo\"\n                            [innerHTML]=\"texts.pretitle\"\n                        ></div>\n                    }\n                    @if (texts.title) {\n                        <h2 class=\"m-titulo\" [innerHTML]=\"texts.title\"></h2>\n                    }\n                    @if (texts.description) {\n                        <div\n                            class=\"m-texto\"\n                            [innerHTML]=\"texts.description\"\n                        ></div>\n                    }\n                    @if (buttons?.length) {\n                        @for (item of buttons; track $index) {\n                            <a\n                                [href]=\"item.url\"\n                                [linkType]=\"item.linkType\"\n                                [attr.aria-label]=\"item.label\"\n                                class=\"m-button-big-babylon\"\n                                >{{ item.label }}</a\n                            >\n                        }\n                    }\n                </div>\n            </div>\n        }\n    </div>\n</section>\n","import { isPlatformBrowser } from '@angular/common';\nimport {\n    AfterViewInit,\n    Directive,\n    ElementRef,\n    Inject,\n    OnDestroy,\n    PLATFORM_ID,\n} from '@angular/core';\n\n// Swiper global (viene del angular.json -> scripts)\ndeclare const Swiper: any;\n\n@Directive({\n    selector: '.js-active-slider,[appSwiperInit]',\n    standalone: true,\n})\nexport class SwiperInitDirective implements AfterViewInit, OnDestroy {\n    private swiperInstance?: any;\n    private arrowCleanupFns: Array<() => void> = [];\n\n    constructor(\n        private host: ElementRef<HTMLElement>,\n        @Inject(PLATFORM_ID) private platformId: object\n    ) {}\n\n    async ngAfterViewInit(): Promise<void> {\n        if (!isPlatformBrowser(this.platformId)) {\n            return;\n        }\n\n        const parent = this.host.nativeElement;\n        const dataset = parent.dataset as DOMStringMap;\n\n        // Helpers para leer data-*\n        const get = (key: string): string | undefined => dataset[key];\n        const getBool = (key: string): boolean => get(key) === 'true';\n        const getNum = (key: string, fallback = 0): number => {\n            const v = Number(get(key));\n            return Number.isFinite(v) ? v : fallback;\n        };\n\n        const sliderName = get('slider_name');\n        if (!sliderName) {\n            console.warn(\n                '[SwiperInitDirective] Sin data-slider_name en el parent',\n                parent\n            );\n            return;\n        }\n\n        const sliderSelector = parent.querySelector<HTMLElement>(\n            '.' + sliderName\n        );\n        if (!sliderSelector) {\n            console.warn(\n                '[SwiperInitDirective] No encuentro el contenedor .',\n                sliderName,\n                ' dentro de ',\n                parent\n            );\n            return;\n        }\n\n        // Swiper ya inicializado → salir\n        if (sliderSelector.classList.contains('swiper-initialized')) {\n            return;\n        }\n\n        // ====== LECTURA DE DATA-ATTRIBUTES ======\n        const showDots = getBool('slider_showdots');\n        const showButtons = getBool('slider_showbtns');\n        const fade = getBool('slider_fade');\n        const center = getBool('slider_centermode');\n        const autoplay = getBool('slider_autoplay');\n        const vertical = getBool('slider_vertical');\n        const rtl = getBool('slider_rtl');\n        const draggable = get('slider_draggable') !== 'false';\n        const adaptiveHeight = getBool('slider_adaptive_height');\n\n        const variableWidth = getBool('slider_variable_width');\n        const freeMode = getBool('slider_freemode');\n\n        const speed = getNum('slider_speed', 750);\n        const infinite = getBool('slides_infinite');\n\n        // contenedores\n        const navContainer =\n            parent.querySelector<HTMLElement>('.js-slider-arrows');\n        const dotsContainer =\n            parent.querySelector<HTMLElement>('.js-slider-dots');\n\n        // ====== SVG FLECHAS ======\n        const arrowSVG = `\n<svg width=\"35\" height=\"70\" viewBox=\"0 0 35 70\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M35 70C30.4037 70 25.8525 69.0947 21.6061 67.3358C17.3597 65.5769 13.5013 62.9988 10.2513 59.7487C7.00121 56.4987 4.42313 52.6403 2.66421 48.3939C0.9053 44.1475 -4.0182e-07 39.5963 0 35C4.0182e-07 30.4037 0.905303 25.8525 2.66422 21.6061C4.42313 17.3597 7.00121 13.5013 10.2513 10.2513C13.5013 7.00121 17.3597 4.42313 21.6061 2.66421C25.8525 0.9053 30.4037 -6.0273e-07 35 0V35V70Z\" fill=\"#D0A67B\"/>\n<path d=\"M16.7368 28.126C16.5683 27.9578 16.2949 27.9577 16.1265 28.126C15.958 28.2944 15.9582 28.5678 16.1265 28.7363L22.6821 35.292L16.1265 41.8477C15.9579 42.0162 15.9579 42.2895 16.1265 42.458C16.295 42.6265 16.5683 42.6265 16.7368 42.458L23.5972 35.5977C23.6816 35.5133 23.7242 35.4026 23.7241 35.292C23.7241 35.1816 23.6814 35.0715 23.5972 34.9873L16.7368 28.126Z\" fill=\"white\"/>\n</svg>`.trim();\n\n        if (showButtons && navContainer) {\n            if (!navContainer.querySelector('.swiper-button-prev')) {\n                const prev = document.createElement('div');\n                prev.className = 'swiper-button-prev';\n                prev.innerHTML = arrowSVG;\n                prev.style.transform = 'rotate(180deg)'; // Prev girada\n                navContainer.appendChild(prev);\n            }\n\n            if (!navContainer.querySelector('.swiper-button-next')) {\n                const next = document.createElement('div');\n                next.className = 'swiper-button-next';\n                next.innerHTML = arrowSVG;\n                navContainer.appendChild(next);\n            }\n        }\n\n        // ====== BREAKPOINTS ======\n        const slides_pc = getNum('slides_pc', 1);\n        const slides_laptop = getNum('slides_laptop', slides_pc);\n        const slides_tablet = getNum('slides_tablet', slides_laptop);\n        const slides_mobile = getNum('slides_mobile', slides_tablet);\n        const slides_mobile_small = getNum(\n            'slides_mobile_small',\n            slides_mobile\n        );\n        const slides_mobile_xsmall = getNum(\n            'slides_mobile_xsmall',\n            slides_mobile_small\n        );\n\n        // ====== OPCIONES SWIPER ======\n        const swiperOptions: any = {\n            direction: vertical ? 'vertical' : 'horizontal',\n            speed,\n            loop: infinite,\n            centeredSlides: center,\n            effect: fade ? 'fade' : 'slide',\n            autoplay: autoplay ? { delay: 5000 } : false,\n            allowTouchMove: draggable,\n            autoHeight: adaptiveHeight,\n\n            freeMode: freeMode ? { enabled: true, momentum: true } : false,\n\n            slidesPerView: variableWidth ? 'auto' : slides_mobile_xsmall,\n            spaceBetween: variableWidth ? 16 : 0,\n\n            observer: true,\n            observeParents: true,\n\n            navigation:\n                showButtons && navContainer\n                    ? {\n                          nextEl: '.swiper-button-next',\n                          prevEl: '.swiper-button-prev',\n                      }\n                    : false,\n\n            pagination:\n                showDots && dotsContainer\n                    ? {\n                          el: '.js-slider-dots',\n                          clickable: true,\n                      }\n                    : false,\n\n            breakpoints: {\n                540: {\n                    slidesPerView: variableWidth ? 'auto' : slides_mobile_small,\n                    freeMode: freeMode ? { enabled: true } : false,\n                },\n                768: {\n                    slidesPerView: variableWidth ? 'auto' : slides_mobile,\n                    freeMode: freeMode ? { enabled: true } : false,\n                },\n                1024: {\n                    slidesPerView: variableWidth ? 'auto' : slides_tablet,\n                    freeMode: freeMode ? { enabled: true } : false,\n                },\n                1280: {\n                    slidesPerView: variableWidth ? 'auto' : slides_laptop,\n                    freeMode: freeMode ? { enabled: true } : false,\n                },\n                1366: {\n                    slidesPerView: variableWidth ? 'auto' : slides_pc,\n                    freeMode: freeMode ? { enabled: true } : false,\n                },\n            },\n        };\n\n        // ====== INIT SWIPER ======\n        if (!Swiper) {\n            console.error(\n                '[SwiperInitDirective] Swiper global no encontrado (window.Swiper es falsy)'\n            );\n            return;\n        }\n\n        this.swiperInstance = new Swiper(sliderSelector, swiperOptions);\n\n        // Posición flechas tipo --sliderNav__position\n        this.initArrowPositioning(parent);\n    }\n\n    ngOnDestroy(): void {\n        if (!isPlatformBrowser(this.platformId)) return;\n\n        if (this.swiperInstance?.destroy) {\n            this.swiperInstance.destroy(true, true);\n        }\n\n        this.arrowCleanupFns.forEach((fn) => fn());\n        this.arrowCleanupFns = [];\n    }\n\n    // ======== POSICIÓN DE FLECHAS (equivalente js-slider_fix-arrows) ========\n    private initArrowPositioning(parent: HTMLElement): void {\n        const sliders = parent.querySelectorAll<HTMLElement>(\n            '.js-slider_fix-arrows'\n        );\n        if (!sliders.length) return;\n\n        sliders.forEach((slider) => {\n            const section =\n                slider.closest<HTMLElement>('.js-active-slider') || parent;\n            if (!section) return;\n\n            const calcPosition = () => {\n                let heightSelector: HTMLElement | null = null;\n\n                const mobileSel = slider.querySelector<HTMLElement>(\n                    '.js-slider_fix-arrows-zone.mobile'\n                );\n                const desktopSel = slider.querySelector<HTMLElement>(\n                    '.js-slider_fix-arrows-zone.desktop'\n                );\n                const genericSel = slider.querySelector<HTMLElement>(\n                    '.js-slider_fix-arrows-zone'\n                );\n\n                if (mobileSel && window.innerWidth <= 1279) {\n                    heightSelector = mobileSel;\n                } else if (desktopSel && window.innerWidth >= 1280) {\n                    heightSelector = desktopSel;\n                } else {\n                    heightSelector = genericSel;\n                }\n\n                if (!heightSelector) return;\n\n                const relative =\n                    heightSelector.closest<HTMLElement>('.relative');\n                if (!relative) return;\n\n                const rect = heightSelector.getBoundingClientRect();\n                const parentRect = relative.getBoundingClientRect();\n                const height = rect.top - parentRect.top + rect.height / 2;\n\n                section.style.setProperty(\n                    '--sliderNav__position',\n                    `${height}px`\n                );\n            };\n\n            calcPosition();\n            setTimeout(calcPosition, 500);\n\n            const onScroll = () => calcPosition();\n            const onResize = () => calcPosition();\n\n            window.addEventListener('scroll', onScroll, { passive: true });\n            window.addEventListener('resize', onResize, { passive: true });\n\n            this.arrowCleanupFns.push(() =>\n                window.removeEventListener('scroll', onScroll)\n            );\n            this.arrowCleanupFns.push(() =>\n                window.removeEventListener('resize', onResize)\n            );\n        });\n    }\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport {\n    AfterViewInit,\n    Component,\n    ElementRef,\n    HostListener, // <--- Importante\n    Inject,\n    Input,\n    PLATFORM_ID,\n} from '@angular/core';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport { SwiperInitDirective } from '../../../directives/sliders/swiper-init.directive';\nimport { BabylonMultimediaI, BabylonTextInfoI } from '../../../interfaces';\n\n@Component({\n    selector: 'lib-babylon-sli-c3-svg-vid-cta',\n    standalone: true,\n    imports: [SwiperInitDirective, BabylonLinkTypeDirective],\n    templateUrl: './babylon-sli-c3-svg-vid-cta.component.html',\n    styleUrl: './babylon-sli-c3-svg-vid-cta.component.scss',\n})\nexport class BabylonSliC3SvgVidCtaComponent implements AfterViewInit {\n    @Input() texts?: BabylonTextInfoI;\n    @Input() multimedia?: BabylonMultimediaI;\n\n    constructor(\n        private host: ElementRef<HTMLElement>,\n        @Inject(PLATFORM_ID) private platformId: object\n    ) {}\n\n    // =========================================================\n    // 🖱️ EVENT DELEGATION (La solución a tus problemas)\n    // Escuchamos en todo el componente, no elemento a elemento.\n    // =========================================================\n\n    @HostListener('mouseover', ['$event'])\n    onMouseOver(event: MouseEvent): void {\n        if (!isPlatformBrowser(this.platformId)) return;\n        const target = event.target as Element;\n        const container = target.closest(\n            '.SliC3SvgVidCta__item'\n        ) as HTMLElement;\n        const imgVid = container?.querySelector(\n            '.SliC3SvgVidCta__item--imgVid'\n        ) as HTMLElement;\n\n        if (\n            container &&\n            imgVid &&\n            !container.classList.contains('is-video-hover')\n        ) {\n            this.onVideoEnter(imgVid);\n        }\n    }\n\n    @HostListener('mouseout', ['$event'])\n    onMouseOut(event: MouseEvent): void {\n        if (!isPlatformBrowser(this.platformId)) return;\n        const target = event.target as Element;\n        const related = event.relatedTarget as Element;\n\n        const container = target.closest(\n            '.SliC3SvgVidCta__item'\n        ) as HTMLElement;\n        const movingTo = related?.closest('.SliC3SvgVidCta__item');\n\n        if (container && container !== movingTo) {\n            const imgVid = container.querySelector(\n                '.SliC3SvgVidCta__item--imgVid'\n            ) as HTMLElement;\n            if (imgVid) this.onVideoLeave(imgVid);\n        }\n    }\n\n    @HostListener('click', ['$event'])\n    onClick(event: MouseEvent): void {\n        if (!isPlatformBrowser(this.platformId)) return;\n\n        const target = event.target as HTMLElement;\n        const container = target.closest(\n            '.SliC3SvgVidCta__item--imgVid'\n        ) as HTMLElement;\n        const item = container?.closest('.SliC3SvgVidCta__item');\n\n        if (container && item) {\n            // Si el video NO está reproduciéndose, prevenimos que el click navegue a otra página\n            if (!item.classList.contains('is-video-hover')) {\n                event.preventDefault(); // Evita navegar al href del <a>\n                this.onVideoEnter(container);\n            }\n            // NOTA: Si ya se está reproduciendo y hacen clic de nuevo,\n            // no hacemos preventDefault y el <a> los llevará al enlace correctamente.\n        }\n    }\n\n    @HostListener('touchmove')\n    onTouchMove(): void {\n        // En móviles, si el usuario desliza la pantalla (ya sea scroll vertical o swiper horizontal)\n        // detenemos todos los videos activos para que no suenen en segundo plano.\n        this.stopAllVideos();\n    }\n\n    ngAfterViewInit(): void {\n        if (!isPlatformBrowser(this.platformId)) return;\n\n        // Intentamos enganchar el evento slideChange nativo de Swiper (Le damos un respiro para que cargue)\n        setTimeout(() => {\n            const swiperEl = this.host.nativeElement.querySelector(\n                '.swiper'\n            ) as any;\n            if (swiperEl && swiperEl.swiper) {\n                swiperEl.swiper.on('slideChange', () => {\n                    this.stopAllVideos();\n                });\n            }\n        }, 500);\n    }\n\n    stopAllVideos(): void {\n        if (!isPlatformBrowser(this.platformId)) return;\n\n        // Buscamos cualquier tarjeta que tenga el video activo y lo detenemos\n        const activeItems =\n            this.host.nativeElement.querySelectorAll('.is-video-hover');\n        activeItems.forEach((item) => {\n            const imgVid = item.querySelector('.SliC3SvgVidCta__item--imgVid');\n            if (imgVid) {\n                this.onVideoLeave(imgVid as HTMLElement);\n            }\n        });\n    }\n\n    onVideoEnter(container: HTMLElement): void {\n        if (!isPlatformBrowser(this.platformId)) return;\n\n        const item = container.closest('.SliC3SvgVidCta__item');\n        if (item?.classList.contains('is-video-hover')) return;\n\n        const ytDiv = container.querySelector('.yt-video') as HTMLElement;\n        if (ytDiv) {\n            this.activateVideo(container, ytDiv, 'youtube');\n        }\n    }\n    onVideoLeave(container: HTMLElement): void {\n        if (!isPlatformBrowser(this.platformId)) return;\n\n        const item = container.closest('.SliC3SvgVidCta__item');\n        item?.classList.remove('is-video-hover', 'is-video-ready');\n\n        // 🔥 MUY IMPORTANTE: Destruimos el iframe.\n        // Si no hacemos esto, el video se oculta pero sigue reproduciéndose consumiendo datos.\n        const ytDiv = container.querySelector('.yt-video') as HTMLElement;\n        if (ytDiv) {\n            ytDiv.innerHTML = '&nbsp;';\n        }\n    }\n\n    // =====================================\n    // 🎥 Lógica de activación\n    // =====================================\n    private activateVideo(\n        container: HTMLElement,\n        dataElement: HTMLElement,\n        type: 'youtube'\n    ): void {\n        const rawInput = dataElement.getAttribute('data-video-id');\n        if (!rawInput) return;\n\n        const videoId = this.getVideoId(rawInput, type);\n        if (!videoId) {\n            console.warn('ID de video no válido:', rawInput);\n            return;\n        }\n\n        // Efectos visuales\n        const item = container.closest('.SliC3SvgVidCta__item');\n        item?.classList.add('is-video-hover');\n\n        // Si ya hay un iframe dentro, no hacemos nada más (ya está cargado)\n        if (container.querySelector('iframe')) return;\n\n        // Creamos el iframe\n        const iframe = document.createElement('iframe');\n\n        if (type === 'youtube') {\n            // 👇 DEFINICIÓN DE PARÁMETROS LIMPIOS 👇\n            const params = [\n                'autoplay=1', // Reproducción automática\n                'mute=1', // Silenciado (obligatorio para autoplay)\n                'controls=0', // Oculta la barra de control inferior (Play, volumen, etc.)\n                'rel=0', // Muestra videos relacionados SOLO de tu canal al final\n                'showinfo=0', // (OBSOLETO, pero a veces ayuda en reproductores antiguos)\n                'modestbranding=1', // Intenta ocultar el logo de YouTube en la barra de control (irrelevant si controls=0)\n                'iv_load_policy=3', // Oculta las anotaciones y suscripciones flotantes dentro del video\n                'disablekb=1', // Desactiva los atajos de teclado (espacio para pausar, etc.)\n                'fs=0', // Desactiva el botón de pantalla completa\n                'playsinline=1', // Reproduce dentro de la web en móviles, no a pantalla completa nativa\n                `playlist=${videoId}`, // Necesario para que 'loop' funcione\n                'loop=1', // Reproducción en bucle\n            ].join('&');\n\n            iframe.src = `https://www.youtube.com/embed/${videoId}?${params}`;\n        } else {\n            iframe.src = `https://player.vimeo.com/video/${videoId}?autoplay=1&muted=1&loop=1&background=1&title=0&byline=0&portrait=0&controls=0`;\n        }\n\n        iframe.setAttribute('frameborder', '0');\n        iframe.setAttribute(\n            'allow',\n            'autoplay; fullscreen; picture-in-picture'\n        );\n\n        // IMPORTANTE: Asegúrate por CSS que el iframe ocupe el 100%\n        iframe.style.width = '100%';\n        iframe.style.height = '100%';\n        iframe.style.position = 'absolute';\n        iframe.style.top = '0';\n        iframe.style.left = '0';\n\n        iframe.style.transform = 'scale(1.35)';\n\n        iframe.addEventListener('load', () => {\n            // TRUCO: Retrasamos la aparición de la clase 'is-video-ready'\n            // Esto le da tiempo a YouTube a esconder su interfaz y arrancar el video.\n            setTimeout(() => {\n                item?.classList.add('is-video-ready');\n            }, 300); // 500 milisegundos. Puedes subirlo a 600 o bajarlo a 400 según veas.\n        });\n        // Limpiamos el div placeholder y metemos el iframe\n        dataElement.innerHTML = '';\n        dataElement.appendChild(iframe);\n    }\n\n    // =====================================\n    // 🛠️ Helpers de IDs (Actualizados)\n    // =====================================\n    private getVideoId(\n        input: string,\n        type: 'youtube' | 'vimeo'\n    ): string | null {\n        const trimmedInput = input.trim();\n\n        // Si no parece una URL (no tiene barras ni puntos), asumimos que es un ID directo\n        if (!trimmedInput.includes('/') && !trimmedInput.includes('.')) {\n            return trimmedInput;\n        }\n\n        return type === 'youtube'\n            ? this.extractYoutubeId(trimmedInput)\n            : this.extractVimeoId(trimmedInput);\n    }\n\n    private extractYoutubeId(url: string): string | null {\n        // 1. Si ya es un ID de 11 caracteres y no tiene puntos ni barras, devolverlo\n        if (url.length === 11 && !url.includes('/') && !url.includes('.')) {\n            return url;\n        }\n\n        // 2. Regex ultra-completa:\n        // Soporta: youtube.com/watch?v=..., youtube.com/embed/..., youtu.be/..., youtube.com/shorts/...\n        const regExp =\n            /^.*((youtu.be\\/)|(v\\/)|(\\/u\\/\\w\\/)|(embed\\/)|(watch\\?v=)|(\\&v=)|(shorts\\/))([^#\\&\\?]*).*/;\n        const match = url.match(regExp);\n\n        // El ID de YouTube siempre tiene 11 caracteres\n        return match && match[9].length === 11 ? match[9] : null;\n    }\n\n    private extractVimeoId(url: string): string | null {\n        const regExp = /vimeo.*\\/(\\d+)/i;\n        const match = url.match(regExp);\n        return match && match[1] ? match[1] : null;\n    }\n}\n","@if (multimedia?.imagenes; as imagenes) {\n    <section\n        class=\"SliC3SvgVidCta js-active-slider\"\n        appSwiperInit\n        data-slider_pause=\"false\"\n        data-slider_name=\"SliC3SvgVidCta__slider\"\n        data-slider_showbtns=\"true\"\n        data-slider_showdots=\"false\"\n        data-slides_pc=\"3.12\"\n        data-slides_laptop=\"3.12\"\n        data-slides_tablet=\"3.12\"\n        data-slides_mobile=\"2\"\n        data-slides_mobile_small=\"1\"\n        data-slides_mobile_xsmall=\"1\"\n        data-slides_infinite=\"true\"\n        data-slider_draggable=\"true\"\n    >\n        <svg aria-hidden=\"true\" focusable=\"false\" class=\"SliC3SvgVidCta__logo\">\n            <use\n                href=\"/assets/babylon/svg/canbordoy-icon-logo.svg#canbordoy-icon-logo\"\n            ></use>\n        </svg>\n\n        <div class=\"relative\">\n            <div class=\"swiper SliC3SvgVidCta__slider js-slider_fix-arrows\">\n                <div class=\"swiper-wrapper\">\n                    @for (item of imagenes; track $index) {\n                        <div class=\"swiper-slide\">\n                            <a\n                                [href]=\"item.buttons?.[0]?.url\"\n                                [linkType]=\"item.buttons?.[0]?.linkType\"\n                            >\n                                <div class=\"SliC3SvgVidCta__item\">\n                                    <div\n                                        class=\"SliC3SvgVidCta__item--imgVid js-slider_fix-arrows-zone mobile\"\n                                    >\n                                        <figure>\n                                            <img\n                                                [src]=\"\n                                                    item.img?.src ||\n                                                    'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                                \"\n                                                [alt]=\"item.img?.alt ?? 'image'\"\n                                            />\n                                            <div\n                                                class=\"yt-video\"\n                                                [attr.data-video-id]=\"\n                                                    item.ndTitle ??\n                                                    item?.texts?.ndTitle\n                                                \"\n                                            >\n                                                &nbsp;\n                                            </div>\n                                        </figure>\n                                        <svg\n                                            aria-hidden=\"true\"\n                                            focusable=\"false\"\n                                            class=\"SliC3SvgVidCta__item--play\"\n                                        >\n                                            <use\n                                                href=\"/assets/babylon/svg/play-icon.svg#play-icon\"\n                                            ></use>\n                                        </svg>\n                                    </div>\n                                    <div class=\"SliC3SvgVidCta__item--heading\">\n                                        @if (item.title) {\n                                            <h3>{{ item.title }}</h3>\n                                        }\n                                        @if (item.subtitle) {\n                                            <p>{{ item.subtitle }}</p>\n                                        }\n                                    </div>\n                                    @if (item.buttons?.[0]; as btn) {\n                                        <div class=\"btn__group\">\n                                            <a\n                                                class=\"btn btn__outline\"\n                                                [href]=\"btn.url\"\n                                                [linkType]=\"btn.linkType\"\n                                            >\n                                                <span>{{ btn.label }}</span>\n                                            </a>\n                                        </div>\n                                    }\n                                </div>\n                            </a>\n                        </div>\n                    }\n                </div>\n            </div>\n            <div class=\"js-slider-arrows\"></div>\n        </div>\n    </section>\n}\n","import { Component, Input, SimpleChanges } from '@angular/core';\nimport { SwiperInitDirective } from '../../../directives/sliders/swiper-init.directive';\nimport {\n    BabylonButtonI,\n    BabylonImageI,\n    BabylonMenuButtonI,\n    BabylonMultimediaI,\n    BabylonTextInfoI,\n} from '../../../interfaces';\nimport { BabylonGlobalItem } from '../../../interfaces/babylon-global-item.interface';\nimport { getFirstImageByTagFromImages } from '../../../utils/mutimedia.utils';\n\n@Component({\n    selector: 'lib-babylon-sli-c3-txt-img-cta',\n    standalone: true,\n    imports: [SwiperInitDirective],\n    templateUrl: './babylon-sli-c3-txt-img-cta.component.html',\n    styleUrl: './babylon-sli-c3-txt-img-cta.component.scss',\n})\nexport class BabylonSliC3TxtImgCtaComponent {\n    @Input() texts?: BabylonTextInfoI;\n    @Input() items?: BabylonGlobalItem[];\n    @Input() multimedia?: BabylonMultimediaI;\n    @Input() buttons?: BabylonMenuButtonI[];\n\n    public slides: BabylonSlideItem[] = [];\n\n    tagName: string = 'slic3txtimgcta';\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if (changes['items'] || changes['multimedia']) {\n            this.normalizeSlides();\n        }\n    }\n\n    private normalizeSlides(): void {\n        this.slides = [];\n\n        // CASO 1: Vienen 'items' (Estructura exacta de tu pantallazo)\n        if (this.items && this.items.length > 0) {\n            this.slides = this.items.map((item: any) => {\n                // 1. PREPARAMOS EL ARRAY DE IMÁGENES DONDE BUSCAR\n                // Según tu captura, las imágenes pueden estar en multimedia2.imagenes\n                let arrayToSearch = item.multimedia2?.imagenes || [];\n\n                // Si arrayToSearch está vacío, miramos en 'multimedia' (que es un array de objetos con la prop 'img')\n                if (\n                    arrayToSearch.length === 0 &&\n                    Array.isArray(item.multimedia)\n                ) {\n                    arrayToSearch = item.multimedia\n                        .map((m: any) => m.img)\n                        .filter(Boolean);\n                }\n\n                // 2. BUSCAMOS POR TAG (Prioridad Absoluta)\n                let imgSource = this.getFirstImageByTag(\n                    this.tagName,\n                    arrayToSearch\n                );\n\n                // 3. FALLBACKS (Si el tag no existe, pillamos la primera imagen disponible)\n                if (!imgSource?.src) {\n                    if (!imgSource?.img?.src) {\n                        imgSource = arrayToSearch[0];\n                    }\n                }\n\n                if (arrayToSearch.length === 0 && item.img) {\n                    imgSource = item.img;\n                }\n\n                return {\n                    imageSrc: imgSource?.src || imgSource?.img?.src || '',\n                    imageAlt:\n                        item.alt ||\n                        imgSource?.alt ||\n                        imgSource?.img?.alt ||\n                        item.title ||\n                        '',\n\n                    // Textos (Según tu captura, están dentro de item.texts)\n                    title: item.title || item.texts?.title || imgSource?.title,\n                    subtitle:\n                        item.subtitle ||\n                        item.texts?.subtitle ||\n                        item.texts?.pretitle ||\n                        item.texts?.description,\n                    description: item.description || item.texts?.description,\n\n                    // Botones (En tu captura se ve que es un array directo item.buttons)\n                    buttons: item.buttons || item.links,\n\n                    linkUrl:\n                        item.buttons?.[0]?.url ||\n                        item.links?.[0]?.url ||\n                        item.url ||\n                        '#',\n                };\n            });\n\n            return;\n        } else if (\n            this.multimedia &&\n            this.multimedia.imagenes &&\n            this.multimedia.imagenes.length > 0\n        ) {\n            this.slides = this.multimedia.imagenes.map((img) => {\n                return {\n                    imageSrc: img.src || '',\n                    imageAlt: img.alt || img.title,\n                    title: img.title || img.texts?.title,\n                    subtitle: img.subtitle || img.texts?.subtitle,\n                    description: img.description || img.texts?.description,\n                    buttons: img.buttons || img.links,\n                    linkUrl:\n                        img.links?.[0]?.url || img.buttons?.[0]?.url || '#',\n                };\n            });\n        }\n    }\n\n    getFirstImageByTag(tagName: string, images: BabylonImageI[]) {\n        return getFirstImageByTagFromImages(images, tagName);\n    }\n}\n\nexport interface BabylonSlideItem {\n    imageSrc: string;\n    imageAlt?: string;\n    title?: string;\n    subtitle?: string;\n    description?: string;\n    buttons?: BabylonButtonI[];\n    linkUrl?: string;\n}\n","<section\n    class=\"SliC3TxtImgCta js-active-slider\"\n    appSwiperInit\n    data-slider_pause=\"false\"\n    data-slider_name=\"SliC3TxtImgCta__slider\"\n    data-slider_showbtns=\"true\"\n    data-slider_showdots=\"false\"\n    data-slides_pc=\"3\"\n    data-slides_laptop=\"3\"\n    data-slides_tablet=\"2\"\n    data-slides_mobile=\"1\"\n    data-slides_mobile_small=\"1\"\n    data-slides_mobile_xsmall=\"1\"\n    data-slider_draggable=\"true\"\n>\n    @if (texts) {\n        <div class=\"SliC3TxtImgCta__heading\">\n            @if (texts.title) {\n                <h2 [innerHTML]=\"texts.title\"></h2>\n            }\n            @if (texts.description || texts.subtitle) {\n                <p [innerHTML]=\"texts.description || texts.subtitle\"></p>\n            }\n        </div>\n    }\n    @if (buttons?.length) {\n        <div class=\"SliC3TxtImgCta__buttons\">\n            @for (btn of buttons; track $index) {\n                <div class=\"button-container\">\n                    <button class=\"btn btn__outline\">\n                        <span>{{ btn.label }}</span>\n                    </button>\n                </div>\n            }\n        </div>\n    }\n    @if (slides.length > 0) {\n        <div class=\"relative SliC3TxtImgCta__inner\">\n            <div class=\"swiper SliC3TxtImgCta__slider js-slider_fix-arrows\">\n                <div class=\"swiper-wrapper\">\n                    @for (item of slides; track $index) {\n                        <div class=\"swiper-slide\">\n                            <a [href]=\"item.linkUrl\">\n                                <div class=\"SliC3TxtImgCta__item\">\n                                    <div\n                                        class=\"SliC3TxtImgCta__item--img js-slider_fix-arrows-zone\"\n                                    >\n                                        <figure>\n                                            <img\n                                                [src]=\"item.imageSrc\"\n                                                [alt]=\"\n                                                    item.imageAlt ??\n                                                    item.title ??\n                                                    ''\n                                                \"\n                                            />\n                                        </figure>\n                                    </div>\n\n                                    <div class=\"SliC3TxtImgCta__item--content\">\n                                        @if (item.title) {\n                                            <h3 [innerHTML]=\"item.title\"></h3>\n                                        }\n\n                                        @if (item.subtitle) {\n                                            <p [innerHTML]=\"item.subtitle\"></p>\n                                        }\n\n                                        @if (item.buttons?.length) {\n                                            <div class=\"btn__group\">\n                                                @for (\n                                                    btn of item.buttons;\n                                                    track $index\n                                                ) {\n                                                    <div>\n                                                        <button\n                                                            class=\"btn btn__outline\"\n                                                        >\n                                                            <span>{{\n                                                                btn.label\n                                                            }}</span>\n                                                        </button>\n                                                    </div>\n                                                }\n                                            </div>\n                                        }\n                                    </div>\n                                </div>\n                            </a>\n                        </div>\n                    }\n                </div>\n            </div>\n            <div class=\"js-slider-arrows\"></div>\n        </div>\n    }\n</section>\n","import { isPlatformBrowser } from '@angular/common';\nimport {\n    AfterViewInit,\n    Directive,\n    ElementRef,\n    HostListener,\n    OnDestroy,\n    PLATFORM_ID,\n    inject,\n} from '@angular/core';\nimport { tap } from 'rxjs';\nimport Swiper, { Navigation, SwiperOptions } from 'swiper';\nimport { Utils } from '../../utils';\n\n@Directive({\n    selector: '[babylonSwiperSliderV2]',\n    standalone: true,\n})\nexport class BabylonSwiperSliderV2Directive\n    implements AfterViewInit, OnDestroy\n{\n    private readonly platform = inject(PLATFORM_ID);\n    private swiperInstance?: Swiper;\n    private swiperSlides: HTMLElement[] = [];\n\n    constructor(private el: ElementRef<HTMLElement>) {\n        // Registramos el módulo de navegación de Swiper\n        Swiper.use([Navigation]);\n    }\n\n    ngAfterViewInit(): void {\n        if (!isPlatformBrowser(this.platform)) return;\n\n        // Cargamos el CSS de Swiper y luego inicializamos\n        Utils.loadStyle$('assets/babylon/css/swiper-bundle.min.css')\n            .pipe(tap(() => this.initSwiper()))\n            .subscribe();\n    }\n\n    ngOnDestroy(): void {\n        if (!isPlatformBrowser(this.platform)) return;\n\n        if (this.swiperInstance) {\n            try {\n                this.swiperInstance.destroy(true, true);\n            } catch {\n                /* sin drama */\n            }\n        }\n    }\n\n    private initSwiper(): void {\n        if (!isPlatformBrowser(this.platform)) return;\n\n        const host = this.el.nativeElement;\n\n        // La directiva se aplica sobre .swiper-container\n        const container = host.classList.contains('swiper-container')\n            ? host\n            : ((host.querySelector('.swiper-container') as HTMLElement) ??\n              host);\n\n        // Buscamos los botones de navegación dentro del mismo bloque\n        const nextBtn = container\n            .closest('.mdl-experiencias')\n            ?.querySelector('.swiper-button-next') as HTMLElement | null;\n\n        const prevBtn = container\n            .closest('.mdl-experiencias')\n            ?.querySelector('.swiper-button-prev') as HTMLElement | null;\n\n        const options: SwiperOptions = {\n            slidesPerView: 1,\n            loop: false,\n            navigation: {\n                // Si hay botones dentro de la sección, los usamos.\n                nextEl: nextBtn ?? '.swiper-button-next',\n                prevEl: prevBtn ?? '.swiper-button-prev',\n            },\n            centerInsufficientSlides: true,\n            spaceBetween: 24,\n            breakpoints: {\n                0: {\n                    slidesPerView: 1,\n                },\n                500: {\n                    slidesPerView: 2,\n                },\n                1024: {\n                    slidesPerView: 3,\n                },\n                1366: {\n                    slidesPerView: 4,\n                },\n                1680: {\n                    slidesPerView: 5,\n                },\n            },\n        };\n\n        // Si ya había una instancia, la destruimos antes de crear otra\n        if (this.swiperInstance) {\n            try {\n                this.swiperInstance.destroy(true, true);\n            } catch {\n                /* nada */\n            }\n        }\n\n        this.swiperInstance = new Swiper(container, options);\n\n        // Guardamos los slides para la lógica de botonactivo\n        this.swiperSlides = Array.from(\n            container.querySelectorAll<HTMLElement>('div.swiper-slide')\n        );\n\n        this.updateBotonActivo();\n    }\n\n    /** Lógica equivalente a tu función activarBoton() */\n    private updateBotonActivo(): void {\n        if (!isPlatformBrowser(this.platform)) return;\n        if (!this.swiperSlides.length) return;\n\n        const activar = window.innerWidth < 1024;\n\n        this.swiperSlides.forEach((slide) => {\n            if (activar) {\n                slide.classList.add('botonactivo');\n            } else {\n                slide.classList.remove('botonactivo');\n            }\n        });\n    }\n\n    // Sustituimos el addEventListener de tu JS por HostListener\n    @HostListener('window:resize')\n    onResize() {\n        this.updateBotonActivo();\n    }\n}\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { BabylonSwiperSliderV2Directive } from '../../../directives/babylon-sliders/babylon-swiper.directive';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport { BabylonItemI, BabylonTextInfoI } from '../../../interfaces';\nimport { BabylonStyleGlobalItem } from '../../../interfaces/babylon-style.interface';\n\n@Component({\n    selector: 'lib-babylon-sli-c5-img-txt',\n    standalone: true,\n    imports: [\n        CommonModule,\n        BabylonSwiperSliderV2Directive,\n        BabylonLinkTypeDirective,\n    ],\n    templateUrl: './babylon-sli-c5-img-txt.component.html',\n    styleUrl: './babylon-sli-c5-img-txt.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonSliC5ImgTxtComponent {\n    @Input() texts?: BabylonTextInfoI;\n    @Input() items?: BabylonItemI[];\n    @Input() styles?: BabylonStyleGlobalItem;\n}\n","@if (items?.length) {\n    <section class=\"mdl-experiencias\">\n        <div class=\"mdl-container\">\n            @if (texts) {\n                <div class=\"m-head\">\n                    @if (texts.pretitle) {\n                        <div class=\"m-pretitulo\">{{ texts.pretitle }}</div>\n                    }\n                    <div class=\"m-subhead\">\n                        @if (texts.title) {\n                            <h2 class=\"m-titulo\">\n                                {{ texts.title }}\n                            </h2>\n                        }\n                        @if (texts.description ?? texts.subtitle) {\n                            <div\n                                class=\"m-texto\"\n                                [innerHTML]=\"\n                                    texts.description ?? texts.subtitle\n                                \"\n                            ></div>\n                        }\n                    </div>\n                </div>\n            }\n            <div class=\"m-content\">\n                <div class=\"swiper\">\n                    <div class=\"swiper-container\" babylonSwiperSliderV2>\n                        <div class=\"swiper-wrapper\">\n                            @if (items?.length) {\n                                @for (item of items; track $index) {\n                                    <div\n                                        class=\"swiper-slide\"\n                                        [ngClass]=\"{\n                                            'js-experiencias-slider':\n                                                $index === 0,\n                                            'card-art': $index % 2 !== 0,\n                                        }\"\n                                    >\n                                        @if (\n                                            item.multimedia?.imagenes?.[0] ??\n                                                item?.img;\n                                            as img\n                                        ) {\n                                            <a\n                                                [href]=\"item.buttons?.[0]?.url\"\n                                                [linkType]=\"\n                                                    item.buttons?.[0]?.linkType\n                                                \"\n                                            >\n                                                <img\n                                                    [src]=\"\n                                                        img?.src ||\n                                                        'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                                    \"\n                                                    [alt]=\"\n                                                        img?.img?.alt ||\n                                                        img?.title ||\n                                                        'image'\n                                                    \"\n                                                />\n                                            </a>\n                                        } @else if (item.images?.length) {\n                                            <a\n                                                [href]=\"item.buttons?.[0]?.url\"\n                                                [linkType]=\"\n                                                    item.buttons?.[0]?.linkType\n                                                \"\n                                            >\n                                                <img\n                                                    [src]=\"\n                                                        item.images?.[0]?.img\n                                                            ?.src\n                                                    \"\n                                                    [alt]=\"\n                                                        item.images?.[0]?.img\n                                                            ?.alt\n                                                    \"\n                                                />\n                                            </a>\n                                        }\n                                        @if (\n                                            item.texts?.title ||\n                                            item.texts?.name\n                                        ) {\n                                            <div class=\"m-texto\">\n                                                {{\n                                                    item.texts?.title ??\n                                                        item.texts?.name\n                                                }}\n                                            </div>\n                                        }\n\n                                        @if (item.buttons?.length) {\n                                            <a\n                                                class=\"m-button-sm\"\n                                                [href]=\"item.buttons?.[0]?.url\"\n                                                [linkType]=\"\n                                                    item.buttons?.[0]?.linkType\n                                                \"\n                                            >\n                                                {{ item.buttons?.[0]?.label }}\n                                            </a>\n                                        }\n                                    </div>\n                                }\n                            }\n                        </div>\n                    </div>\n                    <button\n                        type=\"button\"\n                        class=\"swiper-button-prev swiper-button-prev\"\n                        aria-label=\"Previous slide\"\n                        [style.--arrow-color]=\"styles?.primary\"\n                        [style.--arrow-hover-color]=\"\n                            styles?.primaryHover ?? styles?.primary\n                        \"\n                    ></button>\n                    <button\n                        type=\"button\"\n                        class=\"swiper-button-next swiper-button-next\"\n                        aria-label=\"Next slide\"\n                        [style.--arrow-color]=\"styles?.primary\"\n                        [style.--arrow-hover-color]=\"styles?.primaryHover\"\n                    ></button>\n                </div>\n            </div>\n        </div>\n    </section>\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { SlickInitDirective } from '../../../directives/sliders/slick-init.directive';\nimport {\n    BabylonItemI,\n    BabylonRoomDetailI,\n    BabylonTextInfoI,\n} from '../../../interfaces';\nimport { getImagesByTagFromMultimedia } from '../../../utils/mutimedia.utils';\n\n@Component({\n    selector: 'lib-babylon-slider-box',\n    standalone: true,\n    imports: [SlickInitDirective, CommonModule],\n    templateUrl: './babylon-slider-box.component.html',\n    styleUrl: './babylon-slider-box.component.scss',\n})\nexport class BabylonSliderBoxComponent {\n    @Input() texts?: BabylonTextInfoI;\n    @Input() items?: BabylonItemI[];\n    @Input() rooms?: BabylonRoomDetailI[];\n    @Input() hasBackground?: boolean = false;\n\n    tagName = 'SliderBox';\n\n    get vm() {\n        let unifiedItems: any[] = [];\n\n        // 1. Si vienen rooms, los transformamos al formato visual de la tarjeta\n        if (this.rooms && this.rooms.length > 0) {\n            unifiedItems = this.rooms.map((room) => {\n                // Primero intentamos extraer la imagen buscando por Tag\n                // Hacemos el casting a 'any' si tu interfaz RoomDetailI.multimedia es un array directo\n                const taggedImages = getImagesByTagFromMultimedia(\n                    room.multimedia as any,\n                    this.tagName\n                );\n                let firstImage = taggedImages?.length ? taggedImages[0] : null;\n\n                // Fallback: Si no hay imagen con el tag, cogemos la primera por defecto\n                if (!firstImage) {\n                    // Adaptado según si room.multimedia es un objeto con 'imagenes' o un array directamente\n                    firstImage =\n                        room.multimedia &&\n                        (room?.multimedia as any)?.imagenes?.length > 0\n                            ? (room?.multimedia as any)?.imagenes?.[0]\n                            : Array.isArray(room.multimedia)\n                              ? room.multimedia[0]\n                              : null;\n                }\n\n                // Dependiendo de cómo venga la interfaz, sacamos la URL de la imagen\n                const imgSrc = firstImage?.img?.src || '';\n                const imgAlt = firstImage?.alt || room.texts?.name;\n\n                return {\n                    img: {\n                        src: imgSrc,\n                        alt: imgAlt,\n                    },\n                    texts: {\n                        title: room.texts?.name,\n                        description:\n                            room.texts?.additional2 ?? room.texts?.description,\n                    },\n                    buttons: room.buttons,\n                };\n            });\n        }\n        // 2. Si no hay rooms, usamos los items genéricos (que vienen de multimedia)\n        else if (this.items && this.items.length > 0) {\n            unifiedItems = this.items;\n        }\n\n        return {\n            title: this.texts?.title,\n            items: unifiedItems,\n        };\n    }\n}\n","<section\n    class=\"simple-box js-active-slider slides-visible\"\n    [ngClass]=\"{\n        background: hasBackground,\n    }\"\n    data-slider_draggable=\"true\"\n    data-slider_name=\"js-simple-box-slider\"\n    data-slider_showbtns=\"true\"\n    data-slider_btns=\"icon-small\"\n    data-slider_showdots=\"false\"\n    data-slider_fade=\"false\"\n    data-slider_autoplay=\"false\"\n    data-slides_pc=\"3\"\n    data-slides_laptop=\"3\"\n    data-slides_tablet=\"3\"\n    data-slides_mobile=\"2\"\n    data-slides_mobile_small=\"1\"\n    data-slides_mobile_xsmall=\"1\"\n    data-slider_speed=\"800\"\n>\n    <div class=\"container\">\n        <div class=\"simple-box__inner\">\n            @if (vm.title) {\n                <span class=\"simple-box__title\" [innerHTML]=\"vm.title\"></span>\n            }\n\n            @if (vm.items?.length) {\n                <div class=\"relative\">\n                    <div\n                        class=\"simple-box__slider js-simple-box-slider js-slider_fix-arrows\"\n                    >\n                        @for (item of vm.items; track $index) {\n                            <div>\n                                <div class=\"simple-box__item\">\n                                    @if (item?.img?.src) {\n                                        <div\n                                            class=\"simple-box__image js-slider_fix-arrows-zone\"\n                                        >\n                                            <figure>\n                                                <img\n                                                    [src]=\"\n                                                        item?.img?.src ||\n                                                        'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                                    \"\n                                                    [alt]=\"item?.img?.alt\"\n                                                />\n                                            </figure>\n                                        </div>\n                                    }\n\n                                    <div class=\"simple-box__content\">\n                                        <svg\n                                            aria-hidden=\"true\"\n                                            focusable=\"false\"\n                                            class=\"simple-box__content--graphic\"\n                                        >\n                                            <use\n                                                href=\"/assets/babylon/svg/icon-graphic.svg#icon-graphic\"\n                                            ></use>\n                                        </svg>\n\n                                        @if (item?.texts?.title) {\n                                            <h2\n                                                [innerHTML]=\"item?.texts?.title\"\n                                            ></h2>\n                                        }\n\n                                        @if (item?.texts?.description) {\n                                            <p\n                                                [innerHTML]=\"\n                                                    item?.texts?.description\n                                                \"\n                                            ></p>\n                                        }\n\n                                        @if (item?.buttons?.length) {\n                                            <div class=\"btn__group\">\n                                                @for (\n                                                    button of item?.buttons;\n                                                    track button;\n                                                    let i = $index;\n                                                    let isEven = $even\n                                                ) {\n                                                    @if (\n                                                        button?.url ||\n                                                        button?.link_value\n                                                    ) {\n                                                        <a\n                                                            [attr.aria-label]=\"\n                                                                button?.url ||\n                                                                button?.link_value\n                                                            \"\n                                                            [href]=\"\n                                                                button?.url ||\n                                                                button?.link_value\n                                                            \"\n                                                            [attr.target]=\"\n                                                                !isEven\n                                                                    ? '_self'\n                                                                    : '_blank'\n                                                            \"\n                                                            class=\"btn btn__primary\"\n                                                        >\n                                                            <span>{{\n                                                                button?.label\n                                                            }}</span>\n                                                        </a>\n                                                    }\n                                                }\n                                            </div>\n                                        }\n                                    </div>\n                                </div>\n                            </div>\n                        }\n                    </div>\n                    <div\n                        class=\"js-slider-arrows arrows--absolute arrows--full\"\n                    ></div>\n                </div>\n            }\n        </div>\n    </div>\n</section>\n","import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n    AfterViewInit,\n    Component,\n    ElementRef,\n    HostListener,\n    Inject,\n    Input,\n    PLATFORM_ID,\n} from '@angular/core';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport { SlickInitDirective } from '../../../directives/sliders/slick-init.directive';\nimport {\n    BabylonButtonI,\n    BabylonRoomDetailI,\n    BabylonTextInfoI,\n} from '../../../interfaces'; // <-- Importado BabylonRoomDetailI\nimport { BabylonMultimediaI } from '../../../interfaces/babylon-multimedia.interface';\nimport { getImagesByTagFromMultimedia } from '../../../utils/mutimedia.utils';\n\n@Component({\n    selector: 'lib-babylon-slider-img-static',\n    standalone: true,\n    imports: [SlickInitDirective, BabylonLinkTypeDirective, CommonModule],\n    templateUrl: './babylon-slider-img-static.component.html',\n    styleUrl: './babylon-slider-img-static.component.scss',\n})\nexport class BabylonSliderImgStaticComponent implements AfterViewInit {\n    @Input() leftSide?: boolean = false;\n    @Input() rightSide?: boolean = false;\n    @Input() texts?: BabylonTextInfoI;\n    @Input() textsExtra?: BabylonTextInfoI;\n    @Input() multimedia?: BabylonMultimediaI;\n    @Input() buttons?: BabylonButtonI[];\n    @Input() room?: BabylonRoomDetailI;\n\n    tagName = 'SliderImgStatic';\n    tagNameStatic = 'SliderImgStaticStatic';\n\n    constructor(\n        private el: ElementRef,\n        @Inject(PLATFORM_ID) private platformId: Object\n    ) {}\n\n    get vm() {\n        if (this.room) {\n            return {\n                title: this.room.texts?.name,\n                description: this.room.texts?.description,\n                additional2: this.room.texts?.additional2,\n                additional3: this.room.texts?.additional3,\n                buttons: this.room.buttons?.length\n                    ? this.room.buttons\n                    : this.buttons,\n                multimedia: this.room.multimedia || this.multimedia,\n            };\n        }\n\n        return {\n            title: this.texts?.title || this.textsExtra?.name,\n            additional2: this.texts?.additional2,\n            additional3: this.texts?.additional3,\n            description:\n                this.textsExtra?.description || this.texts?.description,\n            buttons: this.buttons,\n            multimedia: this.multimedia,\n        };\n    }\n\n    ngAfterViewInit(): void {\n        if (isPlatformBrowser(this.platformId)) {\n            this.calcArrowPosition();\n            setTimeout(() => {\n                this.calcArrowPosition();\n            }, 500);\n        }\n    }\n\n    @HostListener('window:scroll')\n    @HostListener('window:resize')\n    onWindowEvents() {\n        if (isPlatformBrowser(this.platformId)) {\n            this.calcArrowPosition();\n        }\n    }\n\n    calcArrowPosition(): void {\n        const nativeElement = this.el.nativeElement as HTMLElement;\n        const sliders = nativeElement.querySelectorAll('.js-slider_fix-arrows');\n\n        if (!sliders || sliders.length === 0) return;\n\n        sliders.forEach((slider: Element) => {\n            const htmlSlider = slider as HTMLElement;\n            const arrowsParent = htmlSlider.closest(\n                '.js-active-slider'\n            ) as HTMLElement;\n\n            if (!arrowsParent) return;\n\n            let heightSelector: HTMLElement | null = null;\n            const mobileZone = htmlSlider.querySelector(\n                '.js-slider_fix-arrows-zone.mobile'\n            ) as HTMLElement;\n            const desktopZone = htmlSlider.querySelector(\n                '.js-slider_fix-arrows-zone.desktop'\n            ) as HTMLElement;\n            const defaultZone = htmlSlider.querySelector(\n                '.js-slider_fix-arrows-zone'\n            ) as HTMLElement;\n\n            if (mobileZone && window.innerWidth <= 1279) {\n                heightSelector = mobileZone;\n            } else if (desktopZone && window.innerWidth >= 1280) {\n                heightSelector = desktopZone;\n            } else {\n                heightSelector = defaultZone;\n            }\n\n            if (heightSelector) {\n                const relativeParent = heightSelector.closest(\n                    '.relative'\n                ) as HTMLElement;\n\n                if (relativeParent) {\n                    const selectorRect = heightSelector.getBoundingClientRect();\n                    const parentRect = relativeParent.getBoundingClientRect();\n\n                    const height =\n                        selectorRect.top -\n                        parentRect.top +\n                        heightSelector.offsetHeight / 2;\n\n                    arrowsParent.style.setProperty(\n                        '--sliderNav__position',\n                        `${height}px`\n                    );\n                }\n            }\n        });\n    }\n\n    getImagesByTag(tagName: string) {\n        return getImagesByTagFromMultimedia(this.vm.multimedia, tagName);\n    }\n}\n","<section\n    class=\"slider-img js-active-slider\"\n    [ngClass]=\"{ 'slider-img--left': leftSide || rightSide }\"\n    data-slides_infinite=\"true\"\n    data-slider_name=\"js-slider-img-slider\"\n    data-slider_showbtns=\"true\"\n    data-slider_btns=\"icon-small\"\n    data-slider_showdots=\"false\"\n    data-slider_fade=\"true\"\n    data-slider_autoplay=\"true\"\n    data-slides_pc=\"1\"\n>\n    <div class=\"container\">\n        <div class=\"slider-img__inner\">\n            @if (\n                getImagesByTag(tagNameStatic).length\n                    ? getImagesByTag(tagNameStatic)\n                    : vm.multimedia?.staticImagenes;\n                as imgs\n            ) {\n                <div\n                    class=\"slider-img__image js-active-slider\"\n                    data-slider_pause=\"false\"\n                    data-slider_speed=\"300\"\n                    data-slides_infinite=\"true\"\n                    data-slider_name=\"js-image-slider\"\n                    data-slider_showbtns=\"false\"\n                    data-slider_showdots=\"false\"\n                    data-slider_fade=\"true\"\n                    data-slider_autoplay=\"true\"\n                    data-slides_pc=\"1\"\n                >\n                    <div class=\"js-image-slider\">\n                        @for (item of imgs; track $index) {\n                            <div>\n                                <figure>\n                                    <img\n                                        [src]=\"\n                                            item?.img?.src ||\n                                            'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                        \"\n                                        [alt]=\"item?.img?.alt || 'image'\"\n                                    />\n                                </figure>\n                            </div>\n                        }\n                    </div>\n                </div>\n            }\n\n            <div class=\"slider-img__content\">\n                <div class=\"slider-img__content-text\">\n                    @if (vm.description) {\n                        <div>\n                            <p [innerHTML]=\"vm.description\"></p>\n                        </div>\n                    }\n\n                    <div\n                        class=\"slider-img__content-text--img js-active-slider\"\n                        data-slider_pause=\"false\"\n                        data-slider_speed=\"300\"\n                        data-slides_infinite=\"true\"\n                        data-slider_name=\"js-image-mobile-slider\"\n                        data-slider_showbtns=\"false\"\n                        data-slider_showdots=\"false\"\n                        data-slider_fade=\"true\"\n                        data-slider_autoplay=\"true\"\n                        data-slides_pc=\"1\"\n                    >\n                        @if (\n                            getImagesByTag(tagNameStatic).length\n                                ? getImagesByTag(tagNameStatic)\n                                : vm.multimedia?.staticImagenes;\n                            as imgs\n                        ) {\n                            <div class=\"js-image-mobile-slider\">\n                                @for (item of imgs; track $index) {\n                                    <div>\n                                        <figure>\n                                            <img\n                                                [src]=\"\n                                                    item?.img?.src ||\n                                                    'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                                \"\n                                                [alt]=\"\n                                                    item?.img?.alt || 'image'\n                                                \"\n                                            />\n                                        </figure>\n                                    </div>\n                                }\n                            </div>\n                        }\n                    </div>\n                </div>\n\n                <div class=\"slider-img__content-heading\">\n                    @if (vm.title) {\n                        <h2 [innerHTML]=\"vm.title\"></h2>\n                    }\n\n                    @if (vm.buttons?.length) {\n                        @if (vm.buttons?.[0]?.url || vm.buttons?.[0]?.label) {\n                            <div class=\"btn__group\">\n                                <a\n                                    [href]=\"vm.buttons?.[0]?.url\"\n                                    [linkType]=\"vm.buttons?.[0]?.linkType\"\n                                    class=\"btn btn__primary\"\n                                >\n                                    <span>{{ vm.buttons?.[0]?.label }}</span>\n                                </a>\n                            </div>\n                        }\n                    }\n                </div>\n\n                <div class=\"slider-img__content-image\">\n                    <div class=\"relative\">\n                        @if (\n                            getImagesByTag(tagName).length\n                                ? getImagesByTag(tagName)\n                                : vm.multimedia?.imagenes;\n                            as imgs\n                        ) {\n                            <div\n                                class=\"slider-img__slider js-slider-img-slider js-slider_fix-arrows\"\n                            >\n                                @for (item of imgs; track $index) {\n                                    @if (item) {\n                                        <div>\n                                            <figure\n                                                class=\"js-slider_fix-arrows-zone\"\n                                            >\n                                                <img\n                                                    [src]=\"\n                                                        item?.img?.src ||\n                                                        'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                                    \"\n                                                    [alt]=\"item?.img?.alt\"\n                                                />\n                                            </figure>\n                                        </div>\n                                    }\n                                }\n                            </div>\n                        }\n                        <div class=\"js-slider-arrows arrows--absolute\"></div>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n</section>\n","import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n    AfterViewInit,\n    Component,\n    ElementRef,\n    Inject,\n    Input,\n    PLATFORM_ID,\n} from '@angular/core';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport { SlickInitDirective } from '../../../directives/sliders/slick-init.directive';\nimport { SliderFixArrowsDirective } from '../../../directives/sliders/slider-fix-arrows.directive';\nimport {\n    BabylonButtonI,\n    BabylonRoomDetailI,\n    BabylonTextInfoI,\n} from '../../../interfaces';\nimport { BabylonMultimediaI } from '../../../interfaces/babylon-multimedia.interface';\nimport { getImagesByTagFromMultimedia } from '../../../utils/mutimedia.utils';\n\n@Component({\n    selector: 'lib-babylon-slider-img-static-v2',\n    standalone: true,\n    imports: [\n        SlickInitDirective,\n        SliderFixArrowsDirective,\n        BabylonLinkTypeDirective,\n        CommonModule,\n    ],\n    templateUrl: './babylon-slider-img-static-v2.component.html',\n    styleUrl: './babylon-slider-img-static-v2.component.scss',\n})\nexport class BabylonSliderImgStaticV2Component implements AfterViewInit {\n    @Input() rightSide?: boolean = true;\n    @Input() texts?: BabylonTextInfoI;\n    @Input() multimedia?: BabylonMultimediaI;\n    @Input() buttons?: BabylonButtonI[];\n    @Input() room?: BabylonRoomDetailI;\n\n    tagName = 'SliderImgStaticV2';\n    tagNameStatic = 'SliderImgStaticV2Static';\n\n    get vm() {\n        if (this.room) {\n            return {\n                title: this.room.texts?.name,\n                subtitle:\n                    this.room.texts?.additional1 ||\n                    this.room.texts?.additional2,\n                description: this.room.texts?.description,\n                buttons: this.room.buttons?.length\n                    ? this.room.buttons\n                    : this.buttons,\n                multimedia: this.room.multimedia || this.multimedia,\n            };\n        }\n\n        return {\n            title:\n                this.texts?.title || this.texts?.pretitle || this.texts?.name,\n            pretitle: this.texts?.pretitle,\n            subtitle: this.texts?.subtitle,\n            description: this.texts?.description,\n            buttons: this.buttons,\n            multimedia: this.multimedia,\n        };\n    }\n\n    constructor(\n        private el: ElementRef,\n        @Inject(PLATFORM_ID) private platformId: Object\n    ) {}\n\n    ngAfterViewInit(): void {\n        if (isPlatformBrowser(this.platformId)) {\n            this.calcArrowPosition();\n            setTimeout(() => {\n                this.calcArrowPosition();\n            }, 500);\n        }\n    }\n\n    getImagesByTag(tagName: string) {\n        const currentMultimedia = this.vm.multimedia;\n        const imagesByTag = getImagesByTagFromMultimedia(\n            currentMultimedia,\n            tagName\n        );\n\n        if (imagesByTag && imagesByTag.length > 0) {\n            return imagesByTag;\n        }\n\n        if (tagName === this.tagName) {\n            return currentMultimedia?.imagenes || [];\n        }\n\n        if (tagName === this.tagNameStatic) {\n            return currentMultimedia?.staticImagenes || [];\n        }\n        return imagesByTag;\n    }\n\n    calcArrowPosition(): void {\n        const nativeElement = this.el.nativeElement as HTMLElement;\n        const sliders = nativeElement.querySelectorAll('.js-slider_fix-arrows');\n\n        if (!sliders || sliders.length === 0) return;\n\n        sliders.forEach((slider: Element) => {\n            const htmlSlider = slider as HTMLElement;\n            const arrowsParent = htmlSlider.closest(\n                '.js-active-slider'\n            ) as HTMLElement;\n\n            if (!arrowsParent) return;\n\n            let heightSelector: HTMLElement | null = null;\n            const mobileZone = htmlSlider.querySelector(\n                '.js-slider_fix-arrows-zone.mobile'\n            ) as HTMLElement;\n            const desktopZone = htmlSlider.querySelector(\n                '.js-slider_fix-arrows-zone.desktop'\n            ) as HTMLElement;\n            const defaultZone = htmlSlider.querySelector(\n                '.js-slider_fix-arrows-zone'\n            ) as HTMLElement;\n\n            if (mobileZone && window.innerWidth <= 1279) {\n                heightSelector = mobileZone;\n            } else if (desktopZone && window.innerWidth >= 1280) {\n                heightSelector = desktopZone;\n            } else {\n                heightSelector = defaultZone;\n            }\n\n            if (heightSelector) {\n                const relativeParent = heightSelector.closest(\n                    '.relative'\n                ) as HTMLElement;\n\n                if (relativeParent) {\n                    const selectorRect = heightSelector.getBoundingClientRect();\n                    const parentRect = relativeParent.getBoundingClientRect();\n\n                    const height =\n                        selectorRect.top -\n                        parentRect.top +\n                        heightSelector.offsetHeight / 2;\n\n                    arrowsParent.style.setProperty(\n                        '--sliderNav__position',\n                        `${height}px`\n                    );\n                }\n            }\n        });\n    }\n}\n","<section\n    class=\"slider-img-v2\"\n    [ngClass]=\"{ 'slider-img-v2--right': rightSide }\"\n>\n    <div class=\"container\">\n        <div class=\"slider-img-v2__box\">\n            <div class=\"slider-img-v2__box-inner\">\n                <div\n                    class=\"slider-img-v2__slider-1-outer js-active-slider\"\n                    data-slider_name=\"js-slider-img-v2__slider-1\"\n                    data-slider_showbtns=\"false\"\n                    data-slider_showdots=\"false\"\n                    data-slider_fade=\"true\"\n                    data-slider_autoplay=\"true\"\n                    data-slides_pc=\"1\"\n                >\n                    <div\n                        class=\"slider-img-v2__slider-1 js-slider-img-v2__slider-1\"\n                    >\n                        @if (getImagesByTag(tagNameStatic); as imgs) {\n                            @for (item of imgs; track $index) {\n                                <div class=\"slider-img-v2__item\">\n                                    <img\n                                        [src]=\"\n                                            item?.img?.src ||\n                                            'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                        \"\n                                        [alt]=\"item?.img?.alt || 'image'\"\n                                    />\n                                </div>\n                            }\n                        }\n                    </div>\n\n                    <div class=\"slider-img-v2__content\">\n                        @if (vm.title || vm.pretitle) {\n                            <div class=\"slider-img-v2__title\">\n                                <span [innerHTML]=\"vm.pretitle ?? vm.title\"></span>\n                            </div>\n                        }\n                        @if (vm.description) {\n                            <div class=\"slider-img-v2__description\">\n                                <p [innerHTML]=\"vm.description\"></p>\n                            </div>\n                        }\n                    </div>\n                </div>\n\n                <div\n                    class=\"slider-img-v2__slider-2-outer js-active-slider\"\n                    data-slides_infinite=\"true\"\n                    data-slider_name=\"js-slider-img-v2__slider-2\"\n                    data-slider_showbtns=\"true\"\n                    data-slider_btns=\"icon-small\"\n                    data-slider_showdots=\"false\"\n                    data-slider_fade=\"true\"\n                    data-slider_autoplay=\"true\"\n                    data-slides_pc=\"1\"\n                >\n                    <div class=\"slider-img-v2__heading\">\n                        @if (vm.title) {\n                            <h2>\n                                <span [innerHTML]=\"vm.title\"></span>\n                            </h2>\n                        }\n                        @if (vm.buttons?.length) {\n                            @for (button of vm.buttons; track $index) {\n                                <div class=\"btn__group\">\n                                    <a\n                                        role=\"button\"\n                                        [attr.aria-label]=\"button?.label\"\n                                        [href]=\"button?.url\"\n                                        [attr.data-link-type]=\"button?.linkType\"\n                                        class=\"btn btn__primary\"\n                                        ><span>{{ button?.label }}</span></a\n                                    >\n                                </div>\n                            }\n                        }\n                    </div>\n\n                    @if (getImagesByTag(tagName); as imgs) {\n                        <div class=\"slider-img-v2__slider-2-box\">\n                            <div class=\"slider-img-v2__slider-2-box--inner\">\n                                <div class=\"relative\">\n                                    <div\n                                        class=\"slider-img-v2__slider-2 js-slider-img-v2__slider-2 js-slider_fix-arrows\"\n                                        sliderFixArrows\n                                    >\n                                        @for (item of imgs; track $index) {\n                                            <div\n                                                class=\"slider-img-v2__item js-slider_fix-arrows-zone\"\n                                            >\n                                                <img\n                                                    [src]=\"\n                                                        item?.img?.src ||\n                                                        'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                                    \"\n                                                    [alt]=\"item?.img?.alt\"\n                                                />\n                                            </div>\n                                        }\n                                    </div>\n                                    <div\n                                        class=\"js-slider-arrows arrows--absolute\"\n                                    ></div>\n                                </div>\n\n                                @if (vm.buttons) {\n                                    @for (button of vm.buttons; track $index) {\n                                        <div class=\"btn__group\">\n                                            <a\n                                                role=\"button\"\n                                                [attr.aria-label]=\"\n                                                    button?.label\n                                                \"\n                                                [href]=\"button?.url\"\n                                                [linkType]=\"button?.linkType\"\n                                                class=\"btn btn__primary\"\n                                                ><span>{{\n                                                    button?.label\n                                                }}</span></a\n                                            >\n                                        </div>\n                                    }\n                                }\n                            </div>\n\n                            @if (vm.subtitle) {\n                                <div\n                                    class=\"slider-img-v2__slider-2-box--content\"\n                                >\n                                    <p [innerHTML]=\"vm.subtitle\"></p>\n                                </div>\n                            }\n                        </div>\n                    }\n                </div>\n            </div>\n        </div>\n    </div>\n</section>\n","import { isPlatformBrowser } from '@angular/common';\nimport {\n    AfterViewInit,\n    Component,\n    ElementRef,\n    inject,\n    Input,\n    PLATFORM_ID,\n    ViewChild,\n} from '@angular/core';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport { SlickInitDirective } from '../../../directives/sliders/slick-init.directive';\nimport { SliderFixArrowsDirective } from '../../../directives/sliders/slider-fix-arrows.directive';\nimport { TagType } from '../../../Enum/tags.enums';\nimport {\n    BabylonImageI,\n    BabylonRoomDetailI,\n    BabylonTextInfoI,\n} from '../../../interfaces';\nimport { getFirstImageByTagFromImages } from '../../../utils/mutimedia.utils';\nimport { BabylonVideoSourceI } from '../babylon-top-slider-video';\n\n@Component({\n    selector: 'lib-babylon-slider-img-video',\n    standalone: true,\n    imports: [\n        SlickInitDirective,\n        SliderFixArrowsDirective,\n        BabylonLinkTypeDirective,\n    ],\n    templateUrl: './babylon-slider-img-video.component.html',\n    styleUrl: './babylon-slider-img-video.component.scss',\n})\nexport class BabylonSliderImgVideoComponent implements AfterViewInit {\n    @ViewChild('sliderRoot', { static: false }) sliderRoot?: ElementRef;\n    @Input() rightSide = false;\n    @Input() texts?: BabylonTextInfoI;\n    @Input() rooms?: BabylonRoomDetailI[];\n    @Input() videoData?: BabylonVideoSourceI;\n    private platformId = inject(PLATFORM_ID);\n\n    tag: TagType = TagType.SliderImgVideo;\n    tagSmall: TagType = TagType.SliderImgVideoSmall;\n\n    // Intenta reproducir sin romper si el navegador bloquea\n    safePlay(video: HTMLVideoElement) {\n        video.muted = true;\n        const p = video.play();\n        if (p && typeof p.then === 'function') {\n            p.catch(() => {\n                // Algunos navegadores necesitan un segundo intento con muted/inline ya puestos\n                video.muted = true;\n                video.play().catch(() => {});\n            });\n        }\n    }\n\n    ngAfterViewInit(): void {\n        // Si usas Slick, re-produce solo el del slide activo\n        // Ajusta el selector al contenedor real de tu slider\n        if (!isPlatformBrowser(this.platformId)) return;\n        const sliderEl = this.sliderRoot?.nativeElement || document;\n        const onChange = () => {\n            const slides = Array.from(\n                sliderEl.querySelectorAll('.slick-slide')\n            );\n            slides.forEach((s: any) => {\n                const v = s.querySelector('video') as HTMLVideoElement | null;\n                if (v) v.pause();\n            });\n            // Slide activo\n            const current = sliderEl.querySelector(\n                '.slick-slide.slick-current.slick-active'\n            );\n            const currentVid = current?.querySelector(\n                'video'\n            ) as HTMLVideoElement | null;\n            if (currentVid) this.safePlay(currentVid);\n        };\n\n        // Eventos de Slick (init y afterChange)\n        // Si no usas jQuery aquí, puedes enlazar desde tu SlickInitDirective\n        sliderEl.addEventListener('init' as any, onChange);\n        sliderEl.addEventListener('afterChange' as any, onChange);\n\n        // Primer intento por si el slide ya está visible\n        setTimeout(onChange, 0);\n    }\n\n    getImagesByTag(tagName: string, images?: BabylonImageI[]) {\n        return getFirstImageByTagFromImages(images ?? [], tagName);\n    }\n\n    getFirstImageByTag(tagName: string, images?: BabylonImageI[]) {\n        return getFirstImageByTagFromImages(images ?? [], tagName);\n    }\n}\n","<section\n    class=\"slider-img-video bg-cream js-active-slider slides-visible\"\n    [class.slider-img-video--right]=\"rightSide\"\n    data-slides_infinite=\"true\"\n    data-slider_name=\"js-slider-img-video-slider\"\n    data-slider_showbtns=\"true\"\n    data-slider_btns=\"icon-small\"\n    data-slider_showdots=\"false\"\n    data-slider_fade=\"true\"\n    data-slider_autoplay=\"true\"\n    data-slides_pc=\"1\"\n>\n    <div class=\"container\">\n        <div class=\"slider-img-video__inner\">\n            @if (texts?.title) {\n                <span\n                    class=\"slider-img-video__title\"\n                    [innerHTML]=\"texts?.title\"\n                ></span>\n            }\n            <div class=\"relative\">\n                <div\n                    class=\"slider-img-video__slider js-slider-img-video-slider js-slider_fix-arrows\"\n                >\n                    @if (rooms?.length) {\n                        @for (room of rooms; track $index) {\n                            <div>\n                                <div class=\"slider-img-video__item\">\n                                    @if (room?.multimedia?.imagenes?.length) {\n                                        <div class=\"slider-img-video__image\">\n                                            @if (\n                                                getFirstImageByTag(\n                                                    tag,\n                                                    room?.multimedia?.imagenes\n                                                )\n                                            ) {\n                                                <svg\n                                                    aria-hidden=\"true\"\n                                                    focusable=\"false\"\n                                                    class=\"slider-img-video__image--graphic\"\n                                                >\n                                                    <use\n                                                        href=\"/assets/babylon/svg/icon-graphic.svg#icon-graphic\"\n                                                    ></use>\n                                                </svg>\n                                                <figure\n                                                    class=\"js-slider_fix-arrows-zone\"\n                                                >\n                                                    <img\n                                                        [src]=\"\n                                                            getFirstImageByTag(\n                                                                tag,\n                                                                room?.multimedia\n                                                                    ?.imagenes\n                                                            )?.img?.src\n                                                        \"\n                                                        [alt]=\"\n                                                            getFirstImageByTag(\n                                                                tag,\n                                                                room?.multimedia\n                                                                    ?.imagenes\n                                                            )?.img?.alt\n                                                        \"\n                                                    />\n                                                </figure>\n                                            }\n\n                                            <ul class=\"slider-img-video__info\">\n                                                @if (room?.equipments?.length) {\n                                                    @for (\n                                                        equipment of room?.equipments;\n                                                        track $index\n                                                    ) {\n                                                        <li>\n                                                            {{\n                                                                equipment?.name\n                                                            }}\n                                                        </li>\n                                                    }\n                                                }\n                                            </ul>\n                                            @if (room?.buttons?.length) {\n                                                <div class=\"btn__group\">\n                                                    @for (\n                                                        button of room?.buttons;\n                                                        track $index\n                                                    ) {\n                                                        <a\n                                                            class=\"btn btn__primary\"\n                                                            [href]=\"button?.url\"\n                                                            [linkType]=\"\n                                                                button?.linkType\n                                                            \"\n                                                            ><span>{{\n                                                                button?.label\n                                                            }}</span></a\n                                                        >\n                                                    }\n                                                </div>\n                                            }\n                                        </div>\n                                    }\n                                    <div class=\"slider-img-video__content\">\n                                        <figure\n                                            class=\"slider-img-video__content--image\"\n                                        >\n                                            @if (\n                                                room?.videos?.length &&\n                                                room?.videos?.[0]?.src\n                                            ) {\n                                                @if (\n                                                    room?.videos?.[0]?.type ===\n                                                    'video'\n                                                ) {\n                                                    <video\n                                                        #vid\n                                                        width=\"320\"\n                                                        height=\"240\"\n                                                        loop\n                                                        autoplay\n                                                        muted\n                                                        playsinline\n                                                        preload=\"auto\"\n                                                        [attr.autoplay]=\"''\"\n                                                        (loadeddata)=\"\n                                                            safePlay(vid)\n                                                        \"\n                                                        (canplay)=\"\n                                                            safePlay(vid)\n                                                        \"\n                                                    >\n                                                        <source\n                                                            [src]=\"\n                                                                videoData?.src +\n                                                                '.mp4'\n                                                            \"\n                                                            type=\"video/mp4\"\n                                                        />\n                                                    </video>\n                                                }\n                                            } @else if (\n                                                room?.multimedia?.imagenes\n                                                    ?.length\n                                            ) {\n                                                @if (\n                                                    getFirstImageByTag(\n                                                        tagSmall,\n                                                        room?.multimedia\n                                                            ?.imagenes\n                                                    )\n                                                ) {\n                                                    <img\n                                                        [src]=\"\n                                                            getFirstImageByTag(\n                                                                tagSmall,\n                                                                room?.multimedia\n                                                                    ?.imagenes\n                                                            )?.img?.src\n                                                        \"\n                                                        [alt]=\"\n                                                            getFirstImageByTag(\n                                                                tagSmall,\n                                                                room?.multimedia\n                                                                    ?.imagenes\n                                                            )?.img?.alt\n                                                        \"\n                                                    />\n                                                }\n                                            }\n                                        </figure>\n                                        @if (room?.texts?.name) {\n                                            <h2>{{ room?.texts?.name }}</h2>\n                                        }\n                                        @if (room?.texts?.description) {\n                                            <p\n                                                [innerHTML]=\"\n                                                    room?.texts?.description\n                                                \"\n                                            ></p>\n                                        }\n                                        @if (room?.buttons?.length) {\n                                            <div class=\"btn__group\">\n                                                @for (\n                                                    button of room?.buttons;\n                                                    track $index\n                                                ) {\n                                                    <a\n                                                        class=\"btn btn__primary\"\n                                                        [href]=\"button?.url\"\n                                                        [linkType]=\"\n                                                            button?.linkType\n                                                        \"\n                                                        ><span>{{\n                                                            button?.label\n                                                        }}</span></a\n                                                    >\n                                                }\n                                            </div>\n                                        }\n                                    </div>\n                                </div>\n                            </div>\n                        }\n                    }\n                </div>\n                <div class=\"js-slider-arrows arrows--absolute\"></div>\n            </div>\n        </div>\n    </div>\n</section>\n","import { CommonModule } from '@angular/common';\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    EventEmitter,\n    Input,\n    Output,\n} from '@angular/core';\nimport { BabylonSlidersDirective } from '../../../directives/babylon-sliders/babylon-sliders.directive';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport { BabylonButtonI } from '../../../interfaces/babylon-button.interface';\nimport { BabylonImageI } from '../../../interfaces/babylon-image.interface';\nimport { BabylonTopSliderV2Item } from '../babylon-top-slider-v2/babylon-top-slider-v2-item.interface';\nimport { BabylonTagsI } from '../../../interfaces';\nimport { BabylonDynamicHeadingComponent } from '../../shared';\n\n@Component({\n    selector: 'lib-babylon-slider2col',\n    standalone: true,\n    imports: [CommonModule, BabylonSlidersDirective, BabylonLinkTypeDirective, BabylonDynamicHeadingComponent],\n    templateUrl: './babylon-slider2col.component.html',\n    styleUrl: './babylon-slider2col.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonSlider2colComponent {\n    @Input() rightSide: boolean = false;\n    @Input() labels?: BabylonTopSliderV2Item;\n    @Input() button?: BabylonButtonI;\n    @Input() images?: BabylonSlider2ColItemI[];\n    @Input() tags?: BabylonTagsI;\n\n    @Output() modalClick = new EventEmitter<string>();\n\n    btnClick(e: Event): void {\n        e.preventDefault();\n    }\n}\n\nexport interface BabylonSlider2ColItemI {\n  subtitle?: string;\n  title?: string;\n  pretitle?: string;\n  description?: string;\n  buttons?: BabylonButtonI[];\n  links?: BabylonButtonI[];\n  image?: BabylonImageI;\n}\n","@if (!rightSide) {\n    <section\n        class=\"babylon__slider2col margin-main cs_gray_bg cs_half_bg position-relative\"\n        id=\"Slider2ColLeft\"\n    >\n        <div class=\"cs_half_bg_right cs_primary_bg bg--dark cs--radius\"></div>\n        <div class=\"cs_height_150 cs_height_lg_40\"></div>\n        <div class=\"container-fluid p-0 position-relative\">\n            <div class=\"cs_slider cs_style_1 cs_slider_gap_24\">\n                <div class=\"container position-relative\">\n                    <div class=\"row column-reverse\">\n                        <div class=\"col-lg-4\">\n                            <div\n                                class=\"intro_info align--center intro_info--light no-align pt--20\"\n                            >\n                                @if (labels?.pretitle) {\n                                    <lib-babylon-dynamic-heading\n                                        [tag]=\"tags?.pretitle || 'h3'\"\n                                        cssClass=\"pretitle\"\n                                        [content]=\"labels?.pretitle\"\n                                    ></lib-babylon-dynamic-heading>\n                                }\n                                @if (labels?.title) {\n                                    <lib-babylon-dynamic-heading\n                                        [tag]=\"tags?.title || 'h2'\"\n                                        cssClass=\"title wow fadeInUp\"\n                                        [content]=\"labels?.title\"\n                                        data-wow-duration=\"0.8s\"\n                                        data-wow-delay=\"0.2s\"\n                                    ></lib-babylon-dynamic-heading>\n                                }\n\n                                @if (button?.label) {\n                                    <div class=\"btns__box align--center\">\n                                        <a\n                                            [attr.aria-label]=\"button?.label\"\n                                            [href]=\"button?.url\"\n                                            [linkType]=\"button?.linkType\"\n                                            [modalClick]=\"modalClick\"\n                                            class=\"btn btn_primary btn--light\"\n                                        >\n                                            <b>{{ button?.label }}</b>\n                                            <span\n                                                class=\"babylon-arrow-right-big\"\n                                            ></span>\n                                        </a>\n                                    </div>\n                                }\n                            </div>\n                        </div>\n                        <div class=\"col-lg-8\">\n                            <div\n                                class=\"cs_slider_container\"\n                                sliders=\"cs_slider_container\"\n                                data-autoplay=\"0\"\n                                data-loop=\"1\"\n                                data-speed=\"600\"\n                                data-center=\"0\"\n                                data-variable-width=\"0\"\n                                data-slides-per-view=\"responsive\"\n                                data-xs-slides=\"1\"\n                                data-sm-slides=\"2\"\n                                data-md-slides=\"2\"\n                                data-mlg-slides=\"2\"\n                                data-lg-slides=\"2\"\n                                data-add-slides=\"2\"\n                            >\n                                <div class=\"cs_slider_wrapper\">\n                                    @if (images?.length) {\n                                        @for (image of images; track $index) {\n                                            <div class=\"cs_slide\">\n                                                <a\n                                                    [attr.aria-label]=\"\n                                                        image.image?.src\n                                                    \"\n                                                    class=\"cs_card cs_style_4 cs_type_1 d-block position-relative cs--radius\"\n                                                    [linkType]=\"\n                                                        image?.links?.[0]\n                                                            ?.linkType ??\n                                                        'nolink'\n                                                    \"\n                                                    [href]=\"\n                                                        image?.links?.[0]?.url\n                                                    \"\n                                                    [modalClick]=\"modalClick\"\n                                                >\n                                                    <img\n                                                        [src]=\"\n                                                            image.image?.src ||\n                                                            'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                                        \"\n                                                        alt=\"Room\"\n                                                        class=\"cs_card_thumb w-100 h-100\"\n                                                        loading=\"lazy\"\n                                                    />\n                                                    <div\n                                                        class=\"cs_card_info position-absolute start-0 top-0 h-100 w-100\"\n                                                    >\n                                                        <div\n                                                            class=\"intro_info intro_info--light\"\n                                                        >\n                                                            @if (image?.title) {\n                                                                <h2\n                                                                    class=\"title--small mb--10\"\n                                                                >\n                                                                    {{\n                                                                        image?.title\n                                                                    }}\n                                                                </h2>\n                                                            }\n                                                            @if (\n                                                                image?.subtitle\n                                                            ) {\n                                                                <p\n                                                                    class=\"text mb--0\"\n                                                                >\n                                                                    {{\n                                                                        image?.subtitle\n                                                                    }}\n                                                                </p>\n                                                            }\n                                                        </div>\n                                                    </div>\n                                                </a>\n                                            </div>\n                                        }\n                                    }\n                                </div>\n                                <div\n                                    class=\"cs_pagination cs_style_1 cs_type_3\"\n                                ></div>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </div>\n        <div class=\"cs_height_150 cs_height_lg_40\"></div>\n    </section>\n}\n@if (rightSide) {\n    <!-- mismo modulo pero a la inversa -->\n    <section\n        class=\"babylon__slider2col margin-main cs_gray_bg cs_half_bg position-relative\"\n        id=\"Slider2ColRight\"\n    >\n        <div class=\"cs_half_bg_left cs_primary_bg bg--dark cs--radius\"></div>\n        <div class=\"cs_height_150 cs_height_lg_40\"></div>\n        <div class=\"container-fluid p-0 position-relative\">\n            <div class=\"cs_slider cs_style_1 cs_slider_gap_24\">\n                <div class=\"container position-relative\">\n                    <div class=\"row\">\n                        <div class=\"col-lg-8\">\n                            <div\n                                class=\"cs_slider_container\"\n                                sliders=\"cs_slider_container\"\n                                data-autoplay=\"0\"\n                                data-loop=\"1\"\n                                data-speed=\"600\"\n                                data-center=\"0\"\n                                data-variable-width=\"0\"\n                                data-slides-per-view=\"responsive\"\n                                data-xs-slides=\"1\"\n                                data-sm-slides=\"2\"\n                                data-md-slides=\"2\"\n                                data-mlg-slides=\"3\"\n                                data-lg-slides=\"2\"\n                                data-add-slides=\"2\"\n                            >\n                                <div\n                                    class=\"cs_pagination cs_style_1 cs_type_3 cs_type_3--left\"\n                                ></div>\n                                <div class=\"cs_slider_wrapper\">\n                                    @if (images?.length) {\n                                        @for (image of images; track $index) {\n                                            <div class=\"cs_slide\">\n                                                <a\n                                                    [attr.aria-label]=\"\n                                                        image.image?.src\n                                                    \"\n                                                    class=\"cs_card cs_style_4 cs_type_1 d-block position-relative cs--radius\"\n                                                    [linkType]=\"\n                                                        image?.links?.[0]\n                                                            ?.linkType ??\n                                                        'nolink'\n                                                    \"\n                                                    [href]=\"\n                                                        image?.links?.[0]?.url\n                                                    \"\n                                                    [modalClick]=\"modalClick\"\n                                                >\n                                                    <img\n                                                        [src]=\"\n                                                            image.image?.src ||\n                                                            'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                                        \"\n                                                        alt=\"Room\"\n                                                        class=\"cs_card_thumb w-100 h-100\"\n                                                        loading=\"lazy\"\n                                                    />\n                                                    <div\n                                                        class=\"cs_card_info position-absolute start-0 top-0 h-100 w-100\"\n                                                    >\n                                                        <div\n                                                            class=\"intro_info intro_info--light\"\n                                                        >\n                                                            @if (image?.title) {\n                                                                <h2\n                                                                    class=\"title--small mb--10\"\n                                                                >\n                                                                    {{\n                                                                        image?.title\n                                                                    }}\n                                                                </h2>\n                                                            }\n                                                            @if (\n                                                                image?.subtitle\n                                                            ) {\n                                                                <p\n                                                                    class=\"text mb--0\"\n                                                                >\n                                                                    {{\n                                                                        image?.subtitle\n                                                                    }}\n                                                                </p>\n                                                            }\n                                                        </div>\n                                                    </div>\n                                                </a>\n                                            </div>\n                                        }\n                                    }\n                                </div>\n                            </div>\n                        </div>\n                        <div class=\"col-lg-4\">\n                            <div\n                                class=\"intro_info align--center intro_info--light no-align pt--20\"\n                            >\n                                @if (labels?.pretitle) {\n                                    <lib-babylon-dynamic-heading\n                                        [tag]=\"tags?.pretitle || 'h3'\"\n                                        cssClass=\"pretitle\"\n                                        [content]=\"labels?.pretitle\"\n                                    ></lib-babylon-dynamic-heading>\n                                }\n                                @if (labels?.title) {\n                                    <h2\n                                        class=\"title wow fadeInUp\"\n                                        data-wow-duration=\"0.8s\"\n                                        data-wow-delay=\"0.2s\"\n                                    >\n                                        {{ labels?.title }}\n                                    </h2>\n                                }\n\n                                @if (button?.label) {\n                                    <div class=\"btns__box align--center\">\n                                        <a\n                                            [attr.aria-label]=\"button?.label\"\n                                            [href]=\"button?.url\"\n                                            [linkType]=\"button?.linkType\"\n                                            [modalClick]=\"modalClick\"\n                                            class=\"btn btn_primary btn--light\"\n                                        >\n                                            <b>{{ button?.label }}</b>\n                                            <span\n                                                class=\"babylon-arrow-right-big\"\n                                            ></span>\n                                        </a>\n                                    </div>\n                                }\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </div>\n        <div class=\"cs_height_150 cs_height_lg_40\"></div>\n    </section>\n}\n\n<ng-template #imageContent let-image>\n    <img\n        [src]=\"\n            image?.src ||\n            'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n        \"\n        alt=\"Room\"\n        class=\"cs_card_thumb w-100 h-100\"\n        loading=\"lazy\"\n    />\n    <div class=\"cs_card_info position-absolute start-0 top-0 h-100 w-100\">\n        <div class=\"intro_info intro_info--light\">\n            @if (image?.title) {\n                <h2 class=\"title--small mb--10\">{{ image?.title }}</h2>\n            }\n            @if (image?.subtitle) {\n                <p class=\"text mb--0\">{{ image?.subtitle }}</p>\n            }\n        </div>\n    </div>\n</ng-template>\n","import { Component, Input } from '@angular/core';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport { SlickInitDirective } from '../../../directives/sliders/slick-init.directive';\nimport { SliderFixArrowsDirective } from '../../../directives/sliders/slider-fix-arrows.directive';\nimport { BabylonOfferItemI, BabylonTexts } from '../../../interfaces';\n\n@Component({\n    selector: 'lib-babylon-slider2col-v2',\n    standalone: true,\n    imports: [\n        SlickInitDirective,\n        SliderFixArrowsDirective,\n        BabylonLinkTypeDirective,\n    ],\n    templateUrl: './babylon-slider2col-v2.component.html',\n    styleUrl: './babylon-slider2col-v2.component.scss',\n})\nexport class BabylonSlider2colV2Component {\n    @Input() texts?: BabylonTexts;\n    @Input() offers?: BabylonOfferItemI[];\n}\n","<section\n    class=\"promo js-active-slider slides-visible\"\n    data-slider_draggable=\"false\"\n    data-slider_name=\"js-promo-slider\"\n    data-slider_showbtns=\"true\"\n    data-slider_btns=\"icon-large\"\n    data-slider_showdots=\"false\"\n    data-slider_fade=\"false\"\n    data-slider_autoplay=\"false\"\n    data-slides_pc=\"2\"\n    data-slides_laptop=\"2\"\n    data-slides_tablet=\"2\"\n    data-slides_mobile=\"1\"\n    data-slides_mobile_small=\"1\"\n    data-slides_mobile_xsmall=\"1\"\n>\n    <div class=\"container\">\n        <div class=\"promo__inner\">\n            @if (texts?.title) {\n                <span class=\"promo__title\">{{ texts?.title }}</span>\n            }\n            <div class=\"relative\">\n                <div\n                    class=\"promo__slider js-promo-slider js-slider_fix-arrows\"\n                    sliderFixArrows\n                >\n                    @if (offers?.length) {\n                        @for (item of offers; track $index) {\n                            <div>\n                                <div class=\"promo__item\">\n                                    <a href=\"/\">\n                                        @if (item.images?.src) {\n                                            <div\n                                                class=\"promo__image js-slider_fix-arrows-zone\"\n                                            >\n                                                <svg\n                                                    aria-hidden=\"true\"\n                                                    focusable=\"false\"\n                                                    class=\"promo__image--graphic-top\"\n                                                >\n                                                    <use\n                                                        href=\"/assets/babylon/svg/icon-graphic.svg#icon-graphic\"\n                                                    ></use>\n                                                </svg>\n                                                <svg\n                                                    aria-hidden=\"true\"\n                                                    focusable=\"false\"\n                                                    class=\"promo__image--graphic-bottom\"\n                                                >\n                                                    <use\n                                                        href=\"/assets/babylon/svg/icon-graphic.svg#icon-graphic\"\n                                                    ></use>\n                                                </svg>\n                                                <figure>\n                                                    <img\n                                                        [src]=\"item.images?.src\"\n                                                        [alt]=\"item.images?.alt\"\n                                                    />\n                                                </figure>\n                                                @if (\n                                                    item.multimedia?.[0]?.title\n                                                ) {\n                                                    <span\n                                                        class=\"promo__label\"\n                                                        >{{\n                                                            item.multimedia?.[0]\n                                                                ?.title\n                                                        }}</span\n                                                    >\n                                                }\n                                            </div>\n                                        }\n                                    </a>\n                                    <div class=\"promo__content\">\n                                        <div class=\"promo__heading\">\n                                            @if (item.texts?.title) {\n                                                <h3>{{ item.texts?.title }}</h3>\n                                            }\n                                            @if (item.texts?.description) {\n                                                <p>\n                                                    {{\n                                                        item.texts?.description\n                                                    }}\n                                                </p>\n                                            }\n                                        </div>\n                                        <div class=\"promo__price-discount\">\n                                            <span\n                                                class=\"promo__price-discount--label\"\n                                            >\n                                                @if (item.discount) {\n                                                    {{\n                                                        item.texts?.additional1\n                                                    }}\n                                                } @else {\n                                                    {{\n                                                        item.texts?.additional2\n                                                    }}\n                                                }\n                                            </span>\n                                            <span\n                                                class=\"promo__price-discount--price\"\n                                            >\n                                                @if (item.discount) {\n                                                    {{ item.discount }}%\n                                                } @else {\n                                                    {{ item.price }}€\n                                                }\n                                            </span>\n                                        </div>\n                                    </div>\n                                    @if (item.buttons) {}\n                                    <div class=\"btn__group\">\n                                        <svg\n                                            aria-hidden=\"true\"\n                                            focusable=\"false\"\n                                            class=\"promo__image--graphic-bottom\"\n                                        >\n                                            <use\n                                                href=\"/assets/babylon/svg/icon-graphic.svg#icon-graphic\"\n                                            ></use>\n                                        </svg>\n                                        @if (texts?.subtitle) {\n                                            <span class=\"promo__label\">{{\n                                                texts?.subtitle\n                                            }}</span>\n                                        }\n                                        @for (\n                                            btn of item.buttons;\n                                            track $index\n                                        ) {\n                                            <a\n                                                [href]=\"btn.url\"\n                                                class=\"btn btn__primary\"\n                                                [linkType]=\"btn.linkType\"\n                                                ><span>{{ btn.label }}</span></a\n                                            >\n                                        }\n                                    </div>\n                                </div>\n                            </div>\n                        }\n                    }\n                </div>\n                <div\n                    class=\"js-slider-arrows arrows--absolute arrows--full\"\n                ></div>\n\n                <!-- Displayed when only one promo item is available -->\n                @if (texts?.description) {\n                    <div class=\"promo__item--empty\">\n                        <div class=\"promo__item--empty-inner\">\n                            <h3 [innerHTML]=\"texts?.description\"></h3>\n                        </div>\n                    </div>\n                }\n                <!-- Displayed when only one promo item is available -->\n            </div>\n        </div>\n    </div>\n</section>\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport { BabylonSlidersDirective } from '../../../directives/babylon-sliders/babylon-sliders.directive';\nimport { BabylonSliderItem } from '../babylon-slider3items/babylon-slider3items.component';\n\n@Component({\n    selector: 'lib-babylon-slider2items',\n    standalone: true,\n    imports: [CommonModule, BabylonLinkTypeDirective, BabylonSlidersDirective],\n    templateUrl: './babylon-slider2items.component.html',\n    styleUrl: './babylon-slider2items.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonSlider2itemsComponent {\n    @Input() pretitle?: string;\n    @Input() title?: string;\n    @Input() items?: BabylonSliderItem[];\n}\n","<section class=\"babylon__slider2Items margin-main\">\n    <div class=\"container\">\n        <div class=\"intro_info align--center no-align\">\n            @if (pretitle) {\n                <h3 class=\"pretitle\">{{ pretitle }}</h3>\n            }\n            @if (title) {\n                <h2\n                    class=\"title wow fadeInUp\"\n                    data-wow-duration=\"0.8s\"\n                    data-wow-delay=\"0.2s\"\n                >\n                    {{ title }}\n                </h2>\n            }\n        </div>\n    </div>\n    @if (items) {\n        <div class=\"cs_slider cs_style_1 cs_slider_gap_60 cs_hover_show_arrows\">\n            <div class=\"container\">\n                <div\n                    class=\"cs_slider_container\"\n                    sliders=\"cs_slider_container\"\n                    data-autoplay=\"0\"\n                    data-loop=\"1\"\n                    data-speed=\"600\"\n                    data-center=\"0\"\n                    data-variable-width=\"0\"\n                    data-slides-per-view=\"responsive\"\n                    data-xs-slides=\"1\"\n                    data-sm-slides=\"1\"\n                    data-md-slides=\"2\"\n                    data-mlg-slides=\"2\"\n                    data-lg-slides=\"2\"\n                    data-add-slides=\"2\"\n                >\n                    <div class=\"cs_slider_wrapper\">\n                        @for (item of items; track $index) {\n                            <div class=\"cs_slide\">\n                                <div class=\"cs_post cs_style_1\">\n                                    <div\n                                        class=\"cs_post_thumb1 post-room cs--radius overflow-hidden d-block position-relative\"\n                                    >\n                                        <a\n                                            [attr.aria-label]=\"item.link?.url\"\n                                            [href]=\"item.link?.url\"\n                                            [linkType]=\"item.link?.linkType\"\n                                        >\n                                        </a>\n                                        @if (item.img) {\n                                            <img\n                                                [src]=\"item.img.src\"\n                                                [alt]=\"item.img.alt\"\n                                                loading=\"lazy\"\n                                            />\n                                        }\n                                        <div\n                                            class=\"intro_info tit-room intro_info--light\"\n                                        >\n                                            @if (item.title) {\n                                                <h4 class=\"title--small mb--10\">\n                                                    {{ item.title }}\n                                                </h4>\n                                            }\n                                            @if (item.pretitle) {\n                                                <p class=\"pretitle\">\n                                                    {{ item.pretitle }}\n                                                </p>\n                                            }\n                                        </div>\n                                        <span class=\"icon-plus cs--radius\">\n                                            <span class=\"babylon-plus\"></span>\n                                        </span>\n                                        <div\n                                            class=\"room-info intro_info no-align\"\n                                        >\n                                            @if (item.services) {\n                                                <ul\n                                                    class=\"cs_card_list cs_mp_0\"\n                                                >\n                                                    @for (\n                                                        service of item.services;\n                                                        track $index\n                                                    ) {\n                                                        <li>\n                                                            <div\n                                                                class=\"info--icon\"\n                                                            >\n                                                                @if (\n                                                                    service.icon\n                                                                ) {\n                                                                    <i\n                                                                        class=\"icon--svg\"\n                                                                        [ngClass]=\"\n                                                                            service.icon\n                                                                        \"\n                                                                    ></i>\n                                                                }\n                                                            </div>\n                                                            @if (service.name) {\n                                                                <p\n                                                                    class=\"text--small\"\n                                                                >\n                                                                    {{\n                                                                        service.name\n                                                                    }}\n                                                                </p>\n                                                            }\n                                                        </li>\n                                                    }\n                                                </ul>\n                                            }\n                                            @if (item.buttons) {\n                                                <div\n                                                    class=\"btns__box align--center\"\n                                                >\n                                                    @for (\n                                                        button of item.buttons;\n                                                        track $index\n                                                    ) {\n                                                        <a\n                                                            [attr.aria-label]=\"\n                                                                button.label\n                                                            \"\n                                                            [href]=\"button.url\"\n                                                            [linkType]=\"\n                                                                button.linkType\n                                                            \"\n                                                            class=\"btn btn--light\"\n                                                            [ngClass]=\"{\n                                                                'btn_primary ':\n                                                                    !$odd,\n                                                                'btn_call ':\n                                                                    $odd,\n                                                            }\"\n                                                        >\n                                                            <b>{{\n                                                                button.label\n                                                            }}</b>\n                                                            <span\n                                                                class=\"babylon-arrow-right-big\"\n                                                            ></span>\n                                                        </a>\n                                                    }\n                                                </div>\n                                            }\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                        }\n                    </div>\n                </div>\n            </div>\n\n            <div class=\"cs_slider_arrows cs_style_2 cs_mobile_hide\">\n                <div class=\"cs_left_arrow slick-arrow\">\n                    <span class=\"babylon-arrow-left-big\"></span>\n                </div>\n                <div class=\"cs_right_arrow slick-arrow\">\n                    <span class=\"babylon-arrow-right-big\"></span>\n                </div>\n            </div>\n            <div class=\"cs_pagination cs_style_1 cs_mobile_show\"></div>\n        </div>\n    }\n</section>\n","import { CommonModule } from '@angular/common';\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    EventEmitter,\n    Input,\n    Output,\n} from '@angular/core';\nimport { BabylonBackgroundStrip } from '../../../directives/babylon-background-strip/babylon-background-strip.directive';\nimport { BabylonSlidersDirective } from '../../../directives/babylon-sliders/babylon-sliders.directive';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport { BabylonTagsI, BabylonTextsColorsI } from '../../../interfaces';\nimport { BabylonImageI } from '../../../interfaces/babylon-image.interface';\nimport { BabylonDynamicHeadingComponent } from '../../shared';\nimport { BabylonTopSliderV2Item } from '../babylon-top-slider-v2/babylon-top-slider-v2-item.interface';\n@Component({\n    selector: 'lib-babylon-slider3col',\n    standalone: true,\n    imports: [\n        CommonModule,\n        BabylonSlidersDirective,\n        BabylonLinkTypeDirective,\n        BabylonBackgroundStrip,\n        BabylonDynamicHeadingComponent,\n    ],\n    templateUrl: './babylon-slider3col.component.html',\n    styleUrl: './babylon-slider3col.component.scss',\n    changeDetection: ChangeDetectionStrategy.Default,\n})\nexport class BabylonSlider3ColComponent {\n    @Input() identifier?: string;\n    @Input() labels?: BabylonTopSliderV2Item;\n    /* @Input() images?: BabylonImageI[]; */\n    @Input() set images(value: BabylonImageI[] | undefined) {\n        this._images = value || [];\n    }\n    @Input() topColor?: string;\n    @Input() bottomColor?: string;\n    @Input() tags?: BabylonTagsI;\n    @Input() textColors?: BabylonTextsColorsI;\n\n    @Input() set topBG(topBG: BabylonImageI) {\n        this._topBG = topBG?.src;\n    }\n    @Input() set bottomBG(bottomBG: BabylonImageI) {\n        this._bottomBG = bottomBG?.src;\n    }\n\n    @Output() modalClick = new EventEmitter<string>();\n\n    _topBG?: string;\n    _bottomBG?: string;\n\n    get topBG(): string | undefined {\n        return this._topBG;\n    }\n\n    get bottomBG(): string | undefined {\n        return this._bottomBG;\n    }\n\n    private _images: BabylonImageI[] = [];\n\n    get images(): BabylonImageI[] {\n        return this._images;\n    }\n\n    btnClick(e: Event): void {\n        e.preventDefault();\n    }\n}\n","<section\n    class=\"babylon__slider3col margin-main\"\n    backgroundStrip\n    [topBG]=\"topBG\"\n    [bottomBG]=\"bottomBG\"\n    [topColor]=\"topColor\"\n    [bottomColor]=\"bottomColor\"\n    [id]=\"identifier ?? 'Slider3Col'\"\n>\n    <div class=\"container\">\n        <div class=\"intro_info align--center no-align\">\n            @if (labels?.pretitle) {\n                <lib-babylon-dynamic-heading\n                    [tag]=\"tags?.pretitle || 'h3'\"\n                    cssClass=\"pretitle\"\n                    [content]=\"labels?.pretitle\"\n                    [color]=\"textColors?.pretitle\"\n                    data-wow-duration=\"0.8s\"\n                    data-wow-delay=\"0.2s\"\n                ></lib-babylon-dynamic-heading>\n            }\n            @if (labels?.title) {\n                <lib-babylon-dynamic-heading\n                    [tag]=\"tags?.title || 'h2'\"\n                    cssClass=\"title wow fadeInUp\"\n                    [content]=\"labels?.title\"\n                    [color]=\"textColors?.title\"\n                    data-wow-duration=\"0.8s\"\n                    data-wow-delay=\"0.2s\"\n                ></lib-babylon-dynamic-heading>\n            }\n        </div>\n    </div>\n    <div class=\"cs_slider cs_style_1 cs_slider_gap_60 cs_hover_show_arrows\">\n        <div class=\"container\">\n            <div\n                class=\"cs_slider_container\"\n                sliders=\"cs_slider_container5\"\n                data-autoplay=\"0\"\n                data-loop=\"1\"\n                data-speed=\"600\"\n                data-center=\"0\"\n                data-variable-width=\"0\"\n                data-slides-per-view=\"responsive\"\n                data-xs-slides=\"1\"\n                data-sm-slides=\"2\"\n                data-md-slides=\"2\"\n                data-mlg-slides=\"3\"\n                data-lg-slides=\"3\"\n                data-add-slides=\"3\"\n            >\n                <div class=\"cs_slider_wrapper\">\n                    @if (images?.length) {\n                        @for (image of images; track $index) {\n                            <div\n                                class=\"cs_slide\"\n                                [ngClass]=\"{\n                                    'pointer-none': !image?.buttons?.[0],\n                                }\"\n                            >\n                                <div class=\"cs_post cs_style_1\">\n                                    <a\n                                        [attr.aria-label]=\"\n                                            image?.links?.[0]?.url ??\n                                            image?.buttons?.[0]?.url\n                                        \"\n                                        [linkType]=\"\n                                            image?.links?.[0]?.linkType ??\n                                            image?.buttons?.[0]?.linkType ??\n                                            'nolink'\n                                        \"\n                                        [href]=\"\n                                            image?.links?.[0]?.url ??\n                                            image?.buttons?.[0]?.url\n                                        \"\n                                        [modalClick]=\"modalClick\"\n                                        class=\"cs_post_thumb cs--radius overflow-hidden d-block position-relative\"\n                                    >\n                                        <img\n                                            [attr.src]=\"\n                                                image?.src ||\n                                                'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                            \"\n                                            [attr.alt]=\"\n                                                image?.alt ??\n                                                image?.title ??\n                                                'Slider Image'\n                                            \"\n                                            loading=\"lazy\"\n                                        />\n                                        @if (image?.buttons?.length) {\n                                            <span\n                                                class=\"cs_hover_icon cs_center position-absolute cs_white_color cs_zindex_2 cs--radius\"\n                                            >\n                                                <span\n                                                    class=\"babylon-arrow_btn\"\n                                                ></span>\n                                            </span>\n                                        }\n                                    </a>\n                                    <div\n                                        class=\"cs_post_info intro_info no-align\"\n                                    >\n                                        <div class=\"cs_post_meta cs_mb_24\">\n                                            @if (image?.pretitle) {\n                                                <span>{{\n                                                    image?.pretitle\n                                                }}</span>\n                                            }\n                                            <span\n                                                class=\"cs_post_meta_seperator\"\n                                            ></span>\n                                            @if (image?.links?.length) {\n                                                <a\n                                                    [attr.aria-label]=\"\n                                                        image.links?.[0]?.label\n                                                    \"\n                                                    [href]=\"\n                                                        image.links?.[0]?.url\n                                                    \"\n                                                    [linkType]=\"\n                                                        image.links?.[0]\n                                                            ?.linkType\n                                                    \"\n                                                    >{{\n                                                        image.links?.[0]?.label\n                                                    }}</a\n                                                >\n                                            }\n                                        </div>\n                                        <div class=\"intro_info\">\n                                            @if (image?.title) {\n                                                <h3 class=\"title--small mb--10\">\n                                                    {{ image?.title }}\n                                                </h3>\n                                            }\n                                            @if (image?.subtitle) {\n                                                <h4\n                                                    class=\"subtitle--small mb--10\"\n                                                >\n                                                    {{ image?.subtitle }}\n                                                </h4>\n                                            }\n                                            @if (image?.description) {\n                                                <div\n                                                    class=\"text mb--10\"\n                                                    [innerHTML]=\"\n                                                        image?.description\n                                                    \"\n                                                ></div>\n                                            }\n                                            @if (image.buttons?.length) {\n                                                @for (\n                                                    button of image.buttons;\n                                                    track $index\n                                                ) {\n                                                    @if (button) {\n                                                        <div class=\"btns__box\">\n                                                            <a\n                                                                [attr.aria-label]=\"\n                                                                    button?.label\n                                                                \"\n                                                                [href]=\"\n                                                                    button?.url\n                                                                \"\n                                                                [linkType]=\"\n                                                                    button?.linkType\n                                                                \"\n                                                                [modalClick]=\"\n                                                                    modalClick\n                                                                \"\n                                                                class=\"btn-link\"\n                                                            >\n                                                                <b>{{\n                                                                    button?.label\n                                                                }}</b>\n                                                                <span\n                                                                    class=\"babylon-arrow-right-big\"\n                                                                ></span>\n                                                            </a>\n                                                        </div>\n                                                    }\n                                                }\n                                            }\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                        }\n                    }\n                </div>\n            </div>\n        </div>\n\n        <div class=\"cs_slider_arrows cs_style_2 cs_mobile_hide\">\n            <div class=\"cs_left_arrow slick-arrow\">\n                <span class=\"babylon-arrow-left-big\"></span>\n            </div>\n            <div class=\"cs_right_arrow slick-arrow\">\n                <span class=\"babylon-arrow-right-big\"></span>\n            </div>\n        </div>\n        <div class=\"cs_pagination cs_style_1 cs_mobile_show\"></div>\n    </div>\n</section>\n","import { Component } from '@angular/core';\n\n@Component({\n    selector: 'lib-babylon-slider3col-clear',\n    standalone: true,\n    imports: [],\n    templateUrl: './babylon-slider3col-clear.component.html',\n    styleUrl: './babylon-slider3col-clear.component.scss',\n})\nexport class BabylonSlider3colClearComponent {}\n","<section class=\"babylon__slider3col margin-main\">\n    <div class=\"container\">\n        <div class=\"intro_info align--center no-align\">\n            <h3 class=\"pretitle\">Slider 3Col Clear</h3>\n            <h2\n                class=\"title wow fadeInUp\"\n                data-wow-duration=\"0.8s\"\n                data-wow-delay=\"0.2s\"\n            >\n                Explore Our Exclusive Resort Facilities\n            </h2>\n        </div>\n    </div>\n    <div class=\"cs_slider cs_style_1 cs_slider_gap_60 cs_hover_show_arrows\">\n        <div class=\"container\">\n            <div\n                class=\"cs_slider_container\"\n                data-autoplay=\"0\"\n                data-loop=\"1\"\n                data-speed=\"600\"\n                data-center=\"0\"\n                data-variable-width=\"0\"\n                data-slides-per-view=\"responsive\"\n                data-xs-slides=\"1\"\n                data-sm-slides=\"2\"\n                data-md-slides=\"2\"\n                data-mlg-slides=\"3\"\n                data-lg-slides=\"3\"\n                data-add-slides=\"3\"\n            >\n                <div class=\"cs_slider_wrapper\">\n                    <div class=\"cs_slide\">\n                        <div class=\"cs_post cs_style_1\">\n                            <a\n                                aria-label=\"#\"\n                                href=\"#\"\n                                class=\"cs_post_thumb cs--radius overflow-hidden d-block position-relative\"\n                            >\n                                <img\n                                    src=\"/assets/babylon/fotos/feature_img_1.jpeg\"\n                                    alt=\"Feature\"\n                                    loading=\"lazy\"\n                                />\n\n                                <span\n                                    class=\"cs_hover_icon cs_center position-absolute cs_white_color cs_zindex_2 cs--radius\"\n                                >\n                                    <span class=\"babylon-arrow_btn\"></span>\n                                </span>\n                            </a>\n                            <div class=\"cs_post_info intro_info no-align\">\n                                <div class=\"cs_post_meta cs_mb_24\">\n                                    <span>Nuestra carta</span>\n                                    <span class=\"cs_post_meta_seperator\"></span>\n                                    <a aria-label=\"#\" href=\"#\">descargar</a>\n                                </div>\n                                <div class=\"intro_info\">\n                                    <h4 class=\"title--small mb--10\">\n                                        Restaurant & Bar 1\n                                    </h4>\n                                    <p class=\"text mb--10\">\n                                        Exceptional dining awaits at our resort.\n                                        Immerse yourself in exquisite flavors\n                                        with view to match. Pure indulgence,\n                                        effortlessly delivered\n                                    </p>\n\n                                    <div class=\"btns__box\">\n                                        <a\n                                            aria-label=\"#\"\n                                            href=\"#\"\n                                            class=\"btn-link\"\n                                        >\n                                            <b>Ver más información</b>\n                                            <span\n                                                class=\"babylon-arrow-right-big\"\n                                            ></span>\n                                        </a>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                    <div class=\"cs_slide\">\n                        <div class=\"cs_post cs_style_1\">\n                            <a\n                                aria-label=\"#\"\n                                href=\"#\"\n                                class=\"cs_post_thumb cs--radius overflow-hidden d-block position-relative\"\n                            >\n                                <img\n                                    src=\"/assets/babylon/fotos/feature_img_1.jpeg\"\n                                    alt=\"Feature\"\n                                    loading=\"lazy\"\n                                />\n\n                                <span\n                                    class=\"cs_hover_icon cs_center position-absolute cs_white_color cs_zindex_2 cs--radius\"\n                                >\n                                    <span class=\"babylon-arrow_btn\"></span>\n                                </span>\n                            </a>\n                            <div class=\"cs_post_info intro_info no-align\">\n                                <div class=\"cs_post_meta cs_mb_24\">\n                                    <span>Nuestra carta</span>\n                                    <span class=\"cs_post_meta_seperator\"></span>\n                                </div>\n                                <div class=\"intro_info\">\n                                    <h4 class=\"title--small mb--10\">\n                                        Restaurant & Bar 1\n                                    </h4>\n                                    <p class=\"text mb--10\">\n                                        Exceptional dining awaits at our resort.\n                                        Immerse yourself in exquisite flavors\n                                        with view to match. Pure indulgence,\n                                        effortlessly delivered\n                                    </p>\n\n                                    <div class=\"btns__box\">\n                                        <a\n                                            aria-label=\"#\"\n                                            href=\"#\"\n                                            class=\"btn-link\"\n                                        >\n                                            <b>Ver más información</b>\n                                            <span\n                                                class=\"babylon-arrow-right-big\"\n                                            ></span>\n                                        </a>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                    <div class=\"cs_slide\">\n                        <div class=\"cs_post cs_style_1\">\n                            <a\n                                aria-label=\"#\"\n                                href=\"#\"\n                                class=\"cs_post_thumb cs--radius overflow-hidden d-block position-relative\"\n                            >\n                                <img\n                                    src=\"/assets/babylon/fotos/feature_img_1.jpeg\"\n                                    alt=\"Feature\"\n                                    loading=\"lazy\"\n                                />\n\n                                <span\n                                    class=\"cs_hover_icon cs_center position-absolute cs_white_color cs_zindex_2 cs--radius\"\n                                >\n                                    <span class=\"babylon-arrow_btn\"></span>\n                                </span>\n                            </a>\n                            <div class=\"cs_post_info intro_info no-align\">\n                                <div class=\"cs_post_meta cs_mb_24\">\n                                    <span class=\"cs_post_meta_seperator\"></span>\n                                    <a aria-label=\"#\" href=\"#\">descargar</a>\n                                </div>\n                                <div class=\"intro_info\">\n                                    <h4 class=\"title--small mb--10\">\n                                        Restaurant & Bar 1\n                                    </h4>\n                                    <p class=\"text mb--10\">\n                                        Exceptional dining awaits at our resort.\n                                        Immerse yourself in exquisite flavors\n                                        with view to match. Pure indulgence,\n                                        effortlessly delivered\n                                    </p>\n                                    <div class=\"btns__box\">\n                                        <a\n                                            aria-label=\"#\"\n                                            href=\"#\"\n                                            class=\"btn-link\"\n                                        >\n                                            <b>Ver más información</b>\n                                            <span\n                                                class=\"babylon-arrow-right-big\"\n                                            ></span>\n                                        </a>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                    <div class=\"cs_slide\">\n                        <a aria-label=\"#\" href=\"#\" class=\"cs_post cs_style_1\">\n                            <div\n                                class=\"cs_post_thumb cs--radius overflow-hidden d-block position-relative\"\n                            >\n                                <img\n                                    src=\"/assets/babylon/fotos/feature_img_1.jpeg\"\n                                    alt=\"Feature\"\n                                    loading=\"lazy\"\n                                />\n\n                                <span\n                                    class=\"cs_hover_icon cs_center position-absolute cs_white_color cs_zindex_2 cs--radius\"\n                                >\n                                    <span class=\"babylon-arrow_btn\"></span>\n                                </span>\n                            </div>\n                            <div class=\"cs_post_info intro_info no-align\">\n                                <div class=\"intro_info\">\n                                    <h4 class=\"title--small mb--10\">\n                                        Restaurant & Bar\n                                    </h4>\n                                    <p class=\"text mb--10\">\n                                        Exceptional dining awaits at our resort.\n                                        Immerse yourself in exquisite flavors\n                                        with view to match. Pure indulgence,\n                                        effortlessly delivered\n                                    </p>\n                                    <div class=\"btns__box\">\n                                        <a\n                                            aria-label=\"#\"\n                                            href=\"#\"\n                                            class=\"btn-link\"\n                                        >\n                                            <b>Ver más información</b>\n                                            <span\n                                                class=\"babylon-arrow-right-big\"\n                                            ></span>\n                                        </a>\n                                    </div>\n                                </div>\n                            </div>\n                        </a>\n                    </div>\n                </div>\n            </div>\n        </div>\n\n        <div class=\"cs_slider_arrows cs_style_2 cs_mobile_hide\">\n            <div class=\"cs_left_arrow slick-arrow\">\n                <span class=\"babylon-arrow-left-big\"></span>\n            </div>\n            <div class=\"cs_right_arrow slick-arrow\">\n                <span class=\"babylon-arrow-right-big\"></span>\n            </div>\n        </div>\n        <div class=\"cs_pagination cs_style_1 cs_mobile_show\"></div>\n    </div>\n</section>\n","import { Component, Input } from '@angular/core';\nimport { SlickInitDirective } from '../../../directives/sliders/slick-init.directive';\nimport { BabylonTextInfoI, BabylonOfferItemI, BabylonMultimediaI } from '../../../interfaces';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\n\n@Component({\n    selector: 'lib-babylon-slider3col-v2',\n    standalone: true,\n    imports: [SlickInitDirective, BabylonLinkTypeDirective],\n    templateUrl: './babylon-slider3col-v2.component.html',\n    styleUrl: './babylon-slider3col-v2.component.scss',\n})\nexport class BabylonSlider3colV2Component {\n  @Input() texts?: BabylonTextInfoI;\n  @Input() offers?: BabylonOfferItemI[];\n  @Input() multimedia?: BabylonMultimediaI;\n}\n","<section\n    class=\"slider3col-v2 bg-cream slides-visible js-active-slider\"\n    data-slider_name=\"js-foto-banner-slider\"\n    data-slider_showbtns=\"true\"\n    data-slider_btns=\"icon-small\"\n    data-slider_showdots=\"false\"\n    data-slider_fade=\"false\"\n    data-slider_autoplay=\"false\"\n    data-slides_pc=\"3\"\n    data-slides_laptop=\"3\"\n    data-slides_tablet=\"3\"\n    data-slides_mobile=\"2\"\n    data-slides_mobile_small=\"1\"\n    data-slides_mobile_xsmall=\"1\"\n>\n    <div class=\"container\">\n        <div class=\"slider3col-v2__inner\">\n            @if (texts?.title) {\n                <span class=\"slider3col-v2__title\">{{ texts?.title }}</span>\n            }\n            <div class=\"relative\">\n                <div\n                    class=\"foto-banner__slider js-foto-banner-slider js-slider_fix-arrows\"\n                >\n                    @if (offers) {\n                        @for (offer of offers; track $index) {\n                            <div>\n                                <div class=\"slider3col-v2__item\">\n                                    @if (offer?.buttons?.length) {\n                                        <a\n                                            [attr.aria-label]=\"\n                                                offer?.buttons?.[0]?.label\n                                            \"\n                                            [href]=\"offer?.buttons?.[0]?.url\"\n                                        >\n                                            @if (offer?.images?.src) {}\n                                            <figure\n                                                class=\"js-slider_fix-arrows-zone\"\n                                            >\n                                                <img\n                                                    [src]=\"offer?.images?.src\"\n                                                    [alt]=\"offer?.images?.alt\"\n                                                />\n                                            </figure>\n                                            <div class=\"slider3col-v2__content\">\n                                                @if (offer?.name) {\n                                                    <h2>{{ offer?.name }}</h2>\n                                                }\n                                                @if (offer?.texts?.subtitle) {\n                                                    <p\n                                                        [innerHTML]=\"\n                                                            offer?.texts\n                                                                ?.subtitle\n                                                        \"\n                                                    ></p>\n                                                }\n                                            </div>\n                                            @if (offer?.buttons?.length) {\n                                                <div class=\"btn__group\">\n                                                    <svg\n                                                        aria-hidden=\"true\"\n                                                        focusable=\"false\"\n                                                        class=\"btn__group--graphic\"\n                                                    >\n                                                        <use\n                                                            href=\"/assets/babylon/svg/icon-graphic.svg#icon-graphic\"\n                                                        ></use>\n                                                    </svg>\n                                                    <button\n                                                        [href]=\"\n                                                            offer?.buttons?.[0]\n                                                                ?.url\n                                                        \"\n                                                        [linkType]=\"\n                                                            offer?.buttons?.[0]\n                                                                ?.linkType\n                                                        \"\n                                                        class=\"btn btn__secondary\"\n                                                    >\n                                                        @if (\n                                                            offer?.buttons?.[0]\n                                                                ?.label\n                                                        ) {\n                                                            <span>{{\n                                                                offer\n                                                                    ?.buttons?.[0]\n                                                                    ?.label\n                                                            }}</span>\n                                                        }\n                                                    </button>\n                                                </div>\n                                            }\n                                        </a>\n                                    }\n                                </div>\n                            </div>\n                        }\n                    }\n                    @if (multimedia?.imagenes?.length) {\n                        @for (img of multimedia?.imagenes; track $index) {\n                            <div>\n                                <div class=\"slider3col-v2__item\">\n                                    @if (img?.img?.src) {\n                                        <figure\n                                            class=\"js-slider_fix-arrows-zone\"\n                                        >\n                                            <img\n                                                [src]=\"\n                                                    img?.img?.src ||\n                                                    'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                                \"\n                                                [alt]=\"\n                                                    img?.img?.alt ||\n                                                    img?.title ||\n                                                    'image'\n                                                \"\n                                            />\n                                        </figure>\n                                        <div class=\"slider3col-v2__content\">\n                                            @if (img?.texts?.title) {\n                                                <h2>{{ img?.texts?.title }}</h2>\n                                            }\n                                            @if (img?.texts?.subtitle) {\n                                                <p\n                                                    [innerHTML]=\"\n                                                        img?.texts?.subtitle\n                                                    \"\n                                                ></p>\n                                            }\n                                        </div>\n                                        @if (\n                                            img?.buttons?.length ||\n                                            img?.links?.length\n                                        ) {\n                                            @if (\n                                                img?.buttons?.[0] ??\n                                                    img?.links?.[0];\n                                                as btn\n                                            ) {\n                                                <div class=\"btn__group\">\n                                                    <svg\n                                                        aria-hidden=\"true\"\n                                                        focusable=\"false\"\n                                                        class=\"btn__group--graphic\"\n                                                    >\n                                                        <use\n                                                            href=\"/assets/babylon/svg/icon-graphic.svg#icon-graphic\"\n                                                        ></use>\n                                                    </svg>\n                                                    <a\n                                                        [href]=\"btn?.url\"\n                                                        [linkType]=\"\n                                                            btn?.linkType\n                                                        \"\n                                                        class=\"btn btn__secondary\"\n                                                    >\n                                                        @if (btn?.label) {\n                                                            <span>{{\n                                                                btn?.label\n                                                            }}</span>\n                                                        }\n                                                    </a>\n                                                </div>\n                                            }\n                                        }\n                                    }\n                                </div>\n                            </div>\n                        }\n                    }\n                </div>\n                <div\n                    class=\"js-slider-arrows arrows--absolute arrows--full\"\n                ></div>\n            </div>\n        </div>\n    </div>\n</section>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { BabylonImageI } from '../../../interfaces/babylon-image.interface';\nimport { CommonModule } from '@angular/common';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport { BabylonSlidersDirective } from '../../../directives/babylon-sliders/babylon-sliders.directive';\nimport { BabylonButtonI } from '../../../interfaces/babylon-button.interface';\nimport { BabylonGlobalIconI } from '../../../interfaces/babylon-global-icon.interface';\nimport { BabylonDynamicHeadingComponent } from '../../shared';\nimport { BabylonTagsI, BabylonTextsColorsI } from '../../../interfaces';\n\n@Component({\n    selector: 'lib-babylon-slider3items',\n    standalone: true,\n    imports: [\n        CommonModule,\n        BabylonLinkTypeDirective,\n        BabylonSlidersDirective,\n        BabylonDynamicHeadingComponent,\n    ],\n    templateUrl: './babylon-slider3items.component.html',\n    styleUrl: './babylon-slider3items.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonSlider3itemsComponent {\n    @Input() pretitle?: string;\n    @Input() title?: string;\n    @Input() items?: BabylonSliderItem[];\n    @Input() identifier?: string;\n    @Input() tags?: BabylonTagsI;\n    @Input() textColors?: BabylonTextsColorsI;\n\n    navigate(\n        event: MouseEvent,\n        url: string | undefined,\n        linkType: string | undefined\n    ): void {\n        if (!url) return;\n\n        if (linkType === 'anchor_link') {\n            const element = document.querySelector(url);\n            if (element) {\n                element.scrollIntoView({ behavior: 'smooth', block: 'start' });\n            }\n        } else {\n            event.stopPropagation();\n            window.location.href = url;\n        }\n    }\n}\n\nexport interface BabylonSliderItem {\n    pretitle?: string;\n    title?: string;\n    img?: BabylonImageI;\n    link?: BabylonButtonI;\n    buttons?: BabylonButtonI[];\n    services?: BabylonGlobalIconI[];\n}\n","<section class=\"babylon__slider3Items margin-main\" [id]=\"identifier ?? 'slider3Items'\">\n    <div class=\"container\">\n        <div class=\"intro_info align--center no-align\">\n            @if (pretitle) {\n                <lib-babylon-dynamic-heading\n                    [tag]=\"tags?.pretitle || 'h3'\"\n                    cssClass=\"pretitle\"\n                    [content]=\"pretitle\"\n                    [color]=\"textColors?.pretitle\"\n                ></lib-babylon-dynamic-heading>\n            }\n            @if (title) {\n                <lib-babylon-dynamic-heading\n                    [tag]=\"tags?.title || 'h2'\"\n                    cssClass=\"title wow fadeInUp\"\n                    [content]=\"title\"\n                    [color]=\"textColors?.title\"\n                    data-wow-duration=\"0.8s\"\n                    data-wow-delay=\"0.2s\"\n                ></lib-babylon-dynamic-heading>\n            }\n        </div>\n    </div>\n    @if (items) {\n        <div class=\"cs_slider cs_style_1 cs_slider_gap_60 cs_hover_show_arrows\">\n            <div class=\"container\">\n                <div\n                    class=\"cs_slider_container\"\n                    sliders=\"cs_slider_container\"\n                    data-autoplay=\"0\"\n                    data-loop=\"1\"\n                    data-speed=\"600\"\n                    data-center=\"0\"\n                    data-variable-width=\"0\"\n                    data-slides-per-view=\"responsive\"\n                    data-xs-slides=\"1\"\n                    data-sm-slides=\"2\"\n                    data-md-slides=\"2\"\n                    data-mlg-slides=\"3\"\n                    data-lg-slides=\"3\"\n                    data-add-slides=\"3\"\n                >\n                    <div class=\"cs_slider_wrapper\">\n                        @for (item of items; track $index) {\n                            <div class=\"cs_slide\">\n                                <div class=\"cs_post cs_style_1\">\n                                    <a\n                                        [attr.aria-label]=\"item.link?.url\"\n                                        [href]=\"item.link?.url\"\n                                        [linkType]=\"item.link?.linkType\"\n                                        (click)=\"navigate($event, item.link?.url, item.link?.linkType)\"\n                                        class=\"cs_post_thumb1 post-room cs--radius overflow-hidden d-block position-relative\"\n                                    >\n                                        @if (item.img) {\n                                            <img\n                                                [src]=\"item.img.src\"\n                                                [alt]=\"item.img.alt\"\n                                                loading=\"lazy\"\n                                            />\n                                        }\n                                        <div\n                                            class=\"intro_info tit-room intro_info--light\"\n                                        >\n                                            @if (item.pretitle) {\n                                                <p class=\"pretitle mb--10\">\n                                                    {{ item.pretitle }}\n                                                </p>\n                                            }\n                                            @if (item.title) {\n                                                <h3 class=\"title--small mb--10\">\n                                                    {{ item.title }}\n                                                </h3>\n                                            }\n                                        </div>\n                                    </a>\n                                </div>\n                            </div>\n                        }\n                    </div>\n                </div>\n            </div>\n\n            <div class=\"cs_slider_arrows cs_style_2 cs_mobile_hide\">\n                <div class=\"cs_left_arrow slick-arrow\">\n                    <span class=\"babylon-arrow-left-big\"></span>\n                </div>\n                <div class=\"cs_right_arrow slick-arrow\">\n                    <span class=\"babylon-arrow-right-big\"></span>\n                </div>\n            </div>\n            <div class=\"cs_pagination cs_style_1 cs_mobile_show\"></div>\n        </div>\n    }\n</section>\n","import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    inject,\n    Input,\n    PLATFORM_ID,\n} from '@angular/core';\nimport { BabylonHobbleEffectDirective } from '../../../directives/babylon-hobble-effect/babylon-hobble-effect.directive';\nimport { BabylonSlidersDirective } from '../../../directives/babylon-sliders/babylon-sliders.directive';\nimport { BabylonTagsI, BabylonTextsColorsI } from '../../../interfaces';\nimport { BabylonImageI } from '../../../interfaces/babylon-image.interface';\nimport { BabylonDynamicHeadingComponent } from '../../shared';\n\n@Component({\n    selector: 'lib-babylon-slider4col',\n    standalone: true,\n    imports: [\n        CommonModule,\n        BabylonSlidersDirective,\n        BabylonHobbleEffectDirective,\n        BabylonDynamicHeadingComponent,\n    ],\n    templateUrl: './babylon-slider4col.component.html',\n    styleUrl: './babylon-slider4col.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonSlider4colComponent {\n    @Input() labels?: BabylonSlider4colLabels;\n    @Input() images?: BabylonImageI[];\n    @Input() tags?: BabylonTagsI;\n    @Input() textColors?: BabylonTextsColorsI;\n\n    platformId = inject(PLATFORM_ID);\n\n    btnClick(e: Event): void {\n        e.preventDefault();\n    }\n\n    onCardClick(e: MouseEvent) {\n        if (!isPlatformBrowser(this.platformId)) return;\n        const el = e.target as HTMLElement;\n        const clickedButton = el.closest('.btn');\n        if (!clickedButton) {\n            this.btnClick(e);\n        }\n    }\n}\n\nexport interface BabylonSlider4colLabels {\n    title?: string;\n    subtitle?: string;\n    pretitle?: string;\n}\n","<section class=\"babylon__slider4col margin-main\">\n    <div class=\"container\">\n        <div class=\"intro_info align--center no-align\">\n            @if (labels?.pretitle) {\n                <lib-babylon-dynamic-heading\n                    [tag]=\"tags?.pretitle || 'h3'\"\n                    cssClass=\"pretitle\"\n                    [content]=\"labels?.pretitle ?? ''\"\n                    [color]=\"textColors?.pretitle\"\n                ></lib-babylon-dynamic-heading>\n            }\n            @if (labels?.title) {\n                <lib-babylon-dynamic-heading\n                    [tag]=\"tags?.title || 'h1'\"\n                    cssClass=\"title wow fadeInUp\"\n                    [content]=\"labels?.title ?? ''\"\n                    [color]=\"textColors?.title\"\n                    data-wow-duration=\"0.8s\"\n                    data-wow-delay=\"0.2s\"\n                ></lib-babylon-dynamic-heading>\n            }\n        </div>\n    </div>\n    <div class=\"container-fluid p-0\">\n        <div class=\"cs_slider cs_style_1 cs_slider_gap_24 cs_hover_show_arrows\">\n            <div\n                class=\"cs_slider_container\"\n                sliders=\"cs_slider_container\"\n                data-autoplay=\"0\"\n                data-loop=\"1\"\n                data-speed=\"600\"\n                data-center=\"0\"\n                data-variable-width=\"0\"\n                data-slides-per-view=\"responsive\"\n                data-xs-slides=\"1\"\n                data-sm-slides=\"2\"\n                data-md-slides=\"2\"\n                data-mlg-slides=\"3\"\n                data-lg-slides=\"3\"\n                data-xl-slides=\"4\"\n                data-add-slides=\"4\"\n            >\n                <div class=\"cs_slider_wrapper\">\n                    @if (images?.length) {\n                        @for (image of images; track $index) {\n                            <div class=\"cs_slide\">\n                                <a\n                                    aria-label=\"#\"\n                                    href=\"#\"\n                                    class=\"cs_feature_box cs_style_3 position-relative text-center cs_center cs_hobble cs_primary_bg cs_type_1 cs--radius\"\n                                    hobbleEffect\n                                    (click)=\"onCardClick($event)\"\n                                >\n                                    <div\n                                        class=\"cs_feature_box_bg cs_bg_filed cs_hover_layer_2 cs--radius\"\n                                    >\n                                        <img\n                                            [src]=\"\n                                                image?.src ||\n                                                'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                            \"\n                                            [alt]=\"\n                                                image?.alt ??\n                                                image?.title ??\n                                                'title'\n                                            \"\n                                            class=\"cs--radius\"\n                                            loading=\"lazy\"\n                                        />\n                                    </div>\n                                    <div\n                                        class=\"cs_feature_box_text position-relative cs_zindex_3 cs_hover_layer_2\"\n                                    >\n                                        <div\n                                            class=\"intro_info align--center intro_info--light no-align\"\n                                        >\n                                            @if (image?.title) {\n                                                <h3 class=\"title--small\">\n                                                    {{ image?.title }}\n                                                </h3>\n                                            }\n                                            @if (image?.description) {\n                                                <p class=\"text\">\n                                                    {{ image?.description }}\n                                                </p>\n                                            }\n                                            @if (image?.buttons) {\n                                                @for (\n                                                    button of image.buttons;\n                                                    track $index\n                                                ) {\n                                                    <div\n                                                        class=\"btns__box align--center\"\n                                                    >\n                                                        <a\n                                                            [attr.aria-label]=\"\n                                                                button?.url\n                                                            \"\n                                                            [href]=\"button?.url\"\n                                                            class=\"btn btn_primary btn--light\"\n                                                        >\n                                                            <b>{{\n                                                                button?.label\n                                                            }}</b>\n                                                            <span\n                                                                class=\"babylon-arrow-right-big\"\n                                                            ></span>\n                                                        </a>\n                                                    </div>\n                                                }\n                                            }\n                                        </div>\n                                    </div>\n                                </a>\n                            </div>\n                        }\n                    }\n                </div>\n            </div>\n            @if (images && images.length > 4) {\n                <div class=\"cs_pagination cs_style_1 cs_type_2\"></div>\n            }\n        </div>\n    </div>\n</section>\n","import { Component, Input } from '@angular/core';\nimport { BabylonButtonI, BabylonTextInfoI } from '../../../interfaces';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\n\n@Component({\n    selector: 'lib-babylon-social-bar',\n    standalone: true,\n    imports: [BabylonLinkTypeDirective],\n    templateUrl: './babylon-social-bar.component.html',\n    styleUrl: './babylon-social-bar.component.scss',\n})\nexport class BabylonSocialBarComponent {\n      @Input() texts?: BabylonTextInfoI;\n      @Input() links?: BabylonButtonI[];\n      @Input() rightSide?: boolean = false;\n}\n","<section class=\"social social__page-internal bg-cream\">\n    <div class=\"container\">\n        <div class=\"social__follow\">\n            @if (texts?.pretitle) {\n                <div class=\"pretitle-container\">\n                    <span\n                        class=\"social__title\"\n                        [innerHTML]=\"texts?.pretitle\"\n                    ></span>\n                </div>\n            }\n            <ul>\n                @for (item of links; track $index) {\n                    <li\n                        class=\"social__follow-item social__follow-item--{{\n                            item?.label\n                        }}\"\n                    >\n                        <a\n                            role=\"button\" [href]=\"item?.url\" [linkType]=\"item?.linkType\"\n                            target=\"_blank\"\n                            rel=\"noopener noreferrer\"\n                        >\n                            <svg aria-hidden=\"true\" focusable=\"false\">\n                                <use\n                                    [attr.href]=\"\n                                        '/assets/babylon/svg/icon-' +\n                                        item?.label +\n                                        '.svg#icon-' +\n                                        item?.label\n                                    \"\n                                ></use>\n                            </svg>\n                        </a>\n                    </li>\n                }\n            </ul>\n            @if (texts?.title) {\n                <div class=\"title-container\">\n                    <p [innerHTML]=\"texts?.title\"></p>\n                </div>\n            }\n        </div>\n    </div>\n    <svg\n        aria-hidden=\"true\"\n        focusable=\"false\"\n        class=\"social__graphic social__graphic--bottom\"\n    >\n        <use href=\"/assets/babylon/svg/icon-graphic.svg#icon-graphic\"></use>\n    </svg>\n</section>\n","import { Component, Input } from '@angular/core';\nimport { BabylonButtonI, BabylonMultimediaI, BabylonTextInfoI } from '../../../interfaces';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\n\n@Component({\n    selector: 'lib-babylon-social-bar-v2',\n    standalone: true,\n    imports: [BabylonLinkTypeDirective],\n    templateUrl: './babylon-social-bar-v2.component.html',\n    styleUrl: './babylon-social-bar-v2.component.scss',\n})\nexport class BabylonSocialBarV2Component {\n  @Input() texts?: BabylonTextInfoI;\n  @Input() buttons?: BabylonButtonI[];\n  @Input() links?: BabylonButtonI[];\n  @Input() multimedia?: BabylonMultimediaI;\n\n  getInstagramUrl(): string {\n    const instagramLink = this.links?.find(link =>\n      link?.label?.toLowerCase().includes('instagram')\n    );\n    return instagramLink?.url || 'https://www.instagram.com/';\n  }\n\n  getInstagramLinkType(): string | undefined {\n    const instagramLink = this.links?.find(link =>\n      link?.label?.toLowerCase().includes('instagram')\n    );\n    return instagramLink?.linkType;\n  }\n}\n","<section class=\"redes bg-cream\" style=\"--vm-speed: 40s\">\n    <svg\n        aria-hidden=\"true\"\n        focusable=\"false\"\n        class=\"redes__graphic redes__graphic--top\"\n    >\n        <use href=\"/assets/babylon/svg/icon-graphic.svg#icon-graphic\"></use>\n    </svg>\n    <div class=\"redes__slider--1\">\n        <a\n            role=\"button\"\n            [href]=\"getInstagramUrl()\"\n            [linkType]=\"getInstagramLinkType()\"\n            target=\"_blank\"\n        >\n            @if (multimedia?.imagenes?.length) {\n                <div class=\"redes__slider--1-inner\">\n                    <div class=\"redes__slider-items\">\n                        @for (item of multimedia?.imagenes; track $index) {\n                            <span\n                                ><img\n                                    [src]=\"\n                                        item?.img?.src ||\n                                        'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                    \"\n                                    [alt]=\"item?.img?.alt\"\n                                />\n                            </span>\n                        }\n                    </div>\n                </div>\n            }\n            <!-- Duplicate the div for infinite loop marquee -->\n            @if (multimedia?.imagenes?.length) {\n                <div class=\"redes__slider--1-inner\">\n                    <div class=\"redes__slider-items\">\n                        @for (item of multimedia?.imagenes; track $index) {\n                            <span\n                                ><img\n                                    [src]=\"\n                                        item?.img?.src ||\n                                        'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                    \"\n                                    [alt]=\"item?.img?.alt\"\n                            /></span>\n                        }\n                    </div>\n                </div>\n            }\n        </a>\n    </div>\n    <div class=\"redes__follow\">\n        @if (texts?.pretitle) {\n            <span class=\"redes__title\">{{ texts?.pretitle }}</span>\n        }\n        @if (links?.length) {\n            <ul>\n                @for (link of links; track $index) {\n                    @if (link?.url) {\n                        <li\n                            [class]=\"\n                                'redes__follow-item redes__follow-item--' +\n                                link?.label?.toLowerCase()\n                            \"\n                        >\n                            <a\n                                role=\"button\"\n                                [href]=\"link?.url\"\n                                [linkType]=\"link?.linkType\"\n                            >\n                                <svg aria-hidden=\"true\" focusable=\"false\">\n                                    <use\n                                        [attr.href]=\"\n                                            '/assets/babylon/svg/icon-' +\n                                            link?.label +\n                                            '.svg#icon-' +\n                                            link?.label\n                                        \"\n                                    ></use>\n                                </svg>\n                            </a>\n                        </li>\n                    }\n                }\n            </ul>\n        }\n        @if (texts?.title) {\n            <p [innerHTML]=\"texts?.title\"></p>\n        }\n    </div>\n    <div class=\"redes__slider--2\">\n        <a\n            role=\"button\"\n            [href]=\"getInstagramUrl()\"\n            [linkType]=\"getInstagramLinkType()\"\n            target=\"_blank\"\n        >\n            @if (multimedia?.imagenes?.length) {\n                <div class=\"redes__slider--2-inner\">\n                    <div class=\"redes__slider-items\">\n                        @for (item of multimedia?.imagenes; track $index) {\n                            <span\n                                ><img\n                                    [src]=\"\n                                        item?.img?.src ||\n                                        'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                    \"\n                                    [alt]=\"item?.img?.alt\"\n                            /></span>\n                        }\n                    </div>\n                </div>\n            }\n        </a>\n    </div>\n    <svg\n        aria-hidden=\"true\"\n        focusable=\"false\"\n        class=\"redes__graphic redes__graphic--bottom\"\n    >\n        <use href=\"/assets/babylon/svg/icon-graphic.svg#icon-graphic\"></use>\n    </svg>\n</section>\n<!--\n<section class=\"redes bg-cream\" style=\"--vm-speed: 40s\">\n    <svg\n        aria-hidden=\"true\"\n        focusable=\"false\"\n        class=\"redes__graphic redes__graphic--top\"\n    >\n        <use href=\"/assets/babylon/svg/icon-graphic.svg#icon-graphic\"></use>\n    </svg>\n    <div class=\"redes__slider--1\">\n        <a\n            href=\"https://www.instagram.com/blancohotelformentera/\"\n            target=\"_blank\"\n        >\n            <div class=\"redes__slider--1-inner\">\n                <div class=\"redes__slider-items\">\n                    <span\n                        ><img src=\"/assets/babylon/images/img-25.webp\"\n                    /></span>\n                    <span\n                        ><img src=\"/assets/babylon/images/img-26.webp\"\n                    /></span>\n                    <span\n                        ><img src=\"/assets/babylon/images/img-27.webp\"\n                    /></span>\n                    <span\n                        ><img src=\"/assets/babylon/images/img-28.webp\"\n                    /></span>\n                    <span\n                        ><img src=\"/assets/babylon/images/img-29.webp\"\n                    /></span>\n                    <span\n                        ><img src=\"/assets/babylon/images/img-30.webp\"\n                    /></span>\n                    <span\n                        ><img src=\"/assets/babylon/images/img-31.webp\"\n                    /></span>\n                    <span\n                        ><img src=\"/assets/babylon/images/img-32.webp\"\n                    /></span>\n                    <span\n                        ><img src=\"/assets/babylon/images/img-24.webp\"\n                    /></span>\n                </div>\n            </div>\n          -->\n<!-- Duplicate the div for infinite loop marquee -->\n<!--\n            <div class=\"redes__slider--1-inner\">\n                <div class=\"redes__slider-items\">\n                    <span\n                        ><img src=\"/assets/babylon/images/img-25.webp\"\n                    /></span>\n                    <span\n                        ><img src=\"/assets/babylon/images/img-26.webp\"\n                    /></span>\n                    <span\n                        ><img src=\"/assets/babylon/images/img-27.webp\"\n                    /></span>\n                    <span\n                        ><img src=\"/assets/babylon/images/img-28.webp\"\n                    /></span>\n                    <span\n                        ><img src=\"/assets/babylon/images/img-29.webp\"\n                    /></span>\n                    <span\n                        ><img src=\"/assets/babylon/images/img-30.webp\"\n                    /></span>\n                    <span\n                        ><img src=\"/assets/babylon/images/img-31.webp\"\n                    /></span>\n                    <span\n                        ><img src=\"/assets/babylon/images/img-32.webp\"\n                    /></span>\n                    <span\n                        ><img src=\"/assets/babylon/images/img-24.webp\"\n                    /></span>\n                </div>\n            </div>\n          -->\n<!-- Duplicate the div for infinite loop marquee -->\n<!--\n        </a>\n    </div>\n    <div class=\"redes__follow\">\n        <span class=\"redes__title\">SÍGUENOS</span>\n        <ul>\n            <li class=\"redes__follow-item redes__follow-item--instagram\">\n                <a href=\"\">\n                    <svg aria-hidden=\"true\" focusable=\"false\">\n                        <use\n                            href=\"/assets/babylon/svg/icon-instagram.svg#icon-instagram\"\n                        ></use>\n                    </svg>\n                </a>\n            </li>\n            <li class=\"redes__follow-item redes__follow-item--facebook\">\n                <a href=\"\">\n                    <svg aria-hidden=\"true\" focusable=\"false\">\n                        <use\n                            href=\"/assets/babylon/svg/icon-facebook.svg#icon-facebook\"\n                        ></use>\n                    </svg>\n                </a>\n            </li>\n            <li class=\"redes__follow-item redes__follow-item--twitter\">\n                <a href=\"\">\n                    <svg aria-hidden=\"true\" focusable=\"false\">\n                        <use\n                            href=\"/assets/babylon/svg/icon-twitter.svg#icon-twitter\"\n                        ></use>\n                    </svg>\n                </a>\n            </li>\n            <li class=\"redes__follow-item redes__follow-item--youtube\">\n                <a href=\"\">\n                    <svg aria-hidden=\"true\" focusable=\"false\">\n                        <use\n                            href=\"/assets/babylon/svg/icon-youtube.svg#icon-youtube\"\n                        ></use>\n                    </svg>\n                </a>\n            </li>\n        </ul>\n        <p>#blancohotelformentera</p>\n    </div>\n    <div class=\"redes__slider--2\">\n        <a\n            href=\"https://www.instagram.com/blancohotelformentera/\"\n            target=\"_blank\"\n        >\n            <div class=\"redes__slider--2-inner\">\n                <div class=\"redes__slider-items\">\n                    <span\n                        ><img src=\"/assets/babylon/images/img-31.webp\"\n                    /></span>\n                    <span\n                        ><img src=\"/assets/babylon/images/img-32.webp\"\n                    /></span>\n                    <span\n                        ><img src=\"/assets/babylon/images/img-24.webp\"\n                    /></span>\n                    <span\n                        ><img src=\"/assets/babylon/images/img-25.webp\"\n                    /></span>\n                    <span\n                        ><img src=\"/assets/babylon/images/img-26.webp\"\n                    /></span>\n                    <span\n                        ><img src=\"/assets/babylon/images/img-27.webp\"\n                    /></span>\n                    <span\n                        ><img src=\"/assets/babylon/images/img-28.webp\"\n                    /></span>\n                    <span\n                        ><img src=\"/assets/babylon/images/img-29.webp\"\n                    /></span>\n                    <span\n                        ><img src=\"/assets/babylon/images/img-30.webp\"\n                    /></span>\n                </div>\n            </div>\n          -->\n<!-- Duplicate the div for infinite loop marquee -->\n<!--\n            <div class=\"redes__slider--2-inner\">\n                <div class=\"redes__slider-items\">\n                    <span\n                        ><img src=\"/assets/babylon/images/img-31.webp\"\n                    /></span>\n                    <span\n                        ><img src=\"/assets/babylon/images/img-32.webp\"\n                    /></span>\n                    <span\n                        ><img src=\"/assets/babylon/images/img-24.webp\"\n                    /></span>\n                    <span\n                        ><img src=\"/assets/babylon/images/img-25.webp\"\n                    /></span>\n                    <span\n                        ><img src=\"/assets/babylon/images/img-26.webp\"\n                    /></span>\n                    <span\n                        ><img src=\"/assets/babylon/images/img-27.webp\"\n                    /></span>\n                    <span\n                        ><img src=\"/assets/babylon/images/img-28.webp\"\n                    /></span>\n                    <span\n                        ><img src=\"/assets/babylon/images/img-29.webp\"\n                    /></span>\n                    <span\n                        ><img src=\"/assets/babylon/images/img-30.webp\"\n                    /></span>\n                </div>\n            </div>\n          -->\n<!-- Duplicate the div for infinite loop marquee -->\n<!--\n        </a>\n    </div>\n    <svg\n        aria-hidden=\"true\"\n        focusable=\"false\"\n        class=\"redes__graphic redes__graphic--bottom\"\n    >\n        <use href=\"/assets/babylon/svg/icon-graphic.svg#icon-graphic\"></use>\n    </svg>\n</section>\n\n-->\n","import { isPlatformBrowser } from '@angular/common';\nimport { Directive, HostListener, inject, PLATFORM_ID } from '@angular/core';\n\n@Directive({\n    selector: '[scrollUp]',\n    standalone: true,\n})\nexport class BabylonScrollUpDirective {\n    private platformId = inject(PLATFORM_ID);\n\n    @HostListener('click', ['$event'])\n    onClick(event: Event): void {\n        if (isPlatformBrowser(this.platformId)) {\n            event.preventDefault();\n            window.scrollTo({ top: 0, behavior: 'smooth' });\n        }\n    }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    EventEmitter,\n    Input,\n    OnInit,\n    Output,\n} from '@angular/core';\nimport {\n    FormBuilder,\n    FormGroup,\n    FormsModule,\n    ReactiveFormsModule,\n    Validators,\n} from '@angular/forms';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\nimport { BabylonDataBackgroundDirective } from '../../../directives/data-background/data-background.directive';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport { BabylonScrollUpDirective } from '../../../directives/scrolls/scroll-up.directive';\nimport { BabylonTagsI, BabylonTextsColorsI } from '../../../interfaces';\nimport { BabylonButtonI } from '../../../interfaces/babylon-button.interface';\nimport { BabylonImageI } from '../../../interfaces/babylon-image.interface';\nimport { BabylonInputI } from '../../../interfaces/babylon-input.interface';\nimport { BabylonDynamicHeadingComponent } from '../../shared';\n\n@Component({\n    selector: 'lib-babylon-static-footer',\n    standalone: true,\n    imports: [\n        CommonModule,\n        MatCheckboxModule,\n        BabylonDataBackgroundDirective,\n        BabylonScrollUpDirective,\n        BabylonLinkTypeDirective,\n        ReactiveFormsModule,\n        FormsModule,\n        BabylonDynamicHeadingComponent,\n    ],\n    templateUrl: './babylon-static-footer.component.html',\n    styleUrl: './babylon-static-footer.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonStaticFooterComponent implements AfterViewInit, OnInit {\n    @Input() img?: BabylonImageI;\n    @Input() title?: string;\n    @Input() ndTitle?: string;\n    @Input() rdTitle?: string;\n    @Input() thTitle?: string;\n    @Input() fifthTitle?: string;\n    @Input() ahTitle?: string;\n    @Input() frameUrl: string = '';\n    @Input() contactInfo?: BabylonButtonI[];\n    @Input() contactLinks?: BabylonButtonI[];\n    @Input() address?: BabylonAddressItem;\n    @Input() addressHotels?: BabylonAddressItem[];\n    @Input() socialMedia?: BabylonButtonI[];\n    @Input() copyright?: string;\n    @Input() nav?: BabylonButtonI[];\n    @Input() footerLinks?: BabylonButtonI[];\n    @Input() logo?: BabylonImageI;\n    @Input() input?: BabylonInputI;\n    @Input() legalAdvise?: string;\n    @Input() additionalLinks?: BabylonButtonI[];\n    @Input() tags?: BabylonTagsI;\n    @Input() textColors?: BabylonTextsColorsI;\n\n    @Output() submitForm = new EventEmitter<string>();\n\n    safeUrl: SafeResourceUrl | null = null;\n    form!: FormGroup;\n\n    constructor(\n        private readonly sanitizer: DomSanitizer,\n        private readonly cdr: ChangeDetectorRef,\n        private readonly fb: FormBuilder\n    ) {}\n\n    ngAfterViewInit(): void {\n        if (this.frameUrl != null) {\n            const videoUrl = this.frameUrl;\n            this.safeUrl =\n                this.sanitizer.bypassSecurityTrustResourceUrl(videoUrl);\n            this.cdr.detectChanges();\n        }\n    }\n\n    ngOnInit(): void {\n        this.form = this.fb.group({\n            input: ['', [Validators.email, Validators.required]],\n            checkbox: [false, [Validators.requiredTrue]],\n        });\n    }\n\n    validateInput(): void {\n        if (this.input) {\n            this.input.valid = this.form.controls['input'].errors === null;\n        }\n    }\n\n    inputChange(event: Event): void {\n        this.input!.value = (event.target as HTMLInputElement).value;\n    }\n\n    submit(): void {\n        this.submitForm.emit(this.form.controls['input'].value as string);\n        this.form.reset();\n    }\n}\n\nexport interface BabylonAddressItem {\n    id?: string;\n    name?: string;\n    address?: string;\n    city?: string;\n    locality?: string;\n    province?: string;\n    country?: string;\n    cp?: string;\n    url?: string;\n    mapLink?: string;\n    phone?: string;\n    email?: string;\n    full_address?: string;\n    category?: string;\n}\n","<!--  La foto es opcional -->\n<footer\n    class=\"babylon__footer cs_bg_filed\"\n    dataBackground=\"url({{ img?.src }})\"\n>\n    <div class=\"cs_footer_main\">\n        <div class=\"container-fluid cs_plr_100\">\n            <div class=\"cs_footer_grid_4\">\n                @if (title || contactInfo?.length || socialMedia?.length) {\n                    <div class=\"cs_footer_grid_item\">\n                        <div class=\"cs_footer_item\">\n                            @if (title) {\n                                <lib-babylon-dynamic-heading\n                                    [tag]=\"tags?.title || 'h5'\"\n                                    cssClass=\"cs_widget_title title--smaller\"\n                                    [color]=\"textColors?.title\"\n                                    [content]=\"title\"\n                                    wrapper=\"span\"\n                                ></lib-babylon-dynamic-heading>\n                            }\n                            @if (contactInfo?.length) {\n                                <ul class=\"cs_menu_widget cs_mp0\">\n                                    @for (\n                                        contact of contactInfo;\n                                        track $index\n                                    ) {\n                                        @if (contact) {\n                                            <li>\n                                                <a\n                                                    [attr.aria-label]=\"\n                                                        contact.label\n                                                    \"\n                                                    [linkType]=\"\n                                                        contact.linkType ?? ''\n                                                    \"\n                                                    [href]=\"contact.url\"\n                                                    [innerHTML]=\"contact.label\"\n                                                ></a>\n                                            </li>\n                                        }\n                                    }\n                                </ul>\n                            }\n                            @if (socialMedia?.length) {\n                                <ul class=\"cs_social_btns cs_style_1\">\n                                    @for (item of socialMedia; track $index) {\n                                        <li>\n                                            <a\n                                                [attr.aria-label]=\"item.icon\"\n                                                linkType=\"external\"\n                                                [href]=\"item.url\"\n                                                class=\"cs_center\"\n                                            >\n                                                <i [ngClass]=\"item.icon\"></i>\n                                            </a>\n                                        </li>\n                                    }\n                                </ul>\n                            }\n                        </div>\n                    </div>\n                }\n                @if (ndTitle) {\n                    <div class=\"cs_footer_grid_item\">\n                        <div class=\"cs_footer_item\">\n                            <lib-babylon-dynamic-heading\n                                [tag]=\"tags?.ndtitle || 'h5'\"\n                                cssClass=\"cs_widget_title title--smaller\"\n                                [color]=\"textColors?.ndtitle\"\n                                [content]=\"ndTitle\"\n                                wrapper=\"span\"\n                            ></lib-babylon-dynamic-heading>\n                            @if (address) {\n                                <div class=\"cs_text_widget\">\n                                    <a\n                                        [attr.aria-label]=\"address.address\"\n                                        [href]=\"address.url || '#'\"\n                                        linkType=\"external\"\n                                        [ngClass]=\"{\n                                            'pointer-none': !address.url,\n                                        }\"\n                                    >\n                                        @if (address.address) {\n                                            {{ address.address }} <br />\n                                        }\n                                        @if (address.cp && address.city) {\n                                            {{ address.cp }} {{ address.city }}\n                                            <br />\n                                        }\n                                        @if (\n                                            address.province && address.country\n                                        ) {\n                                            {{ address.province }}\n                                            {{ address.country }}\n                                        }\n                                    </a>\n                                </div>\n                            }\n                        </div>\n                    </div>\n                }\n                @if (footerLinks) {\n                    <div class=\"cs_footer_grid_item\">\n                        <div class=\"cs_footer_item\">\n                            @if (rdTitle) {\n                                <lib-babylon-dynamic-heading\n                                    [tag]=\"tags?.rdtitle || 'h5'\"\n                                    cssClass=\"cs_widget_title title--smaller\"\n                                    [color]=\"textColors?.rdtitle\"\n                                    [content]=\"rdTitle\"\n                                    wrapper=\"span\"\n                                ></lib-babylon-dynamic-heading>\n                            }\n                            @if (footerLinks.length) {\n                                <ul class=\"cs_menu_widget cs_mp0\">\n                                    @for (link of footerLinks; track $index) {\n                                        @if (link) {\n                                            <li>\n                                                <a\n                                                    [attr.aria-label]=\"\n                                                        link.label\n                                                    \"\n                                                    [href]=\"link.url\"\n                                                    [linkType]=\"link.linkType\"\n                                                    [innerHTML]=\"link.label\"\n                                                >\n                                                </a>\n                                            </li>\n                                        }\n                                    }\n                                </ul>\n                            }\n                        </div>\n                    </div>\n                }\n                @if (additionalLinks && additionalLinks.length > 0) {\n                    <div class=\"cs_footer_grid_item\">\n                        <div class=\"cs_footer_item\">\n                            @if (fifthTitle) {\n                                <lib-babylon-dynamic-heading\n                                    [tag]=\"tags?.fifthtitle || 'h5'\"\n                                    cssClass=\"cs_widget_title title--smaller\"\n                                    [color]=\"textColors?.fifthtitle\"\n                                    [content]=\"fifthTitle\"\n                                    wrapper=\"span\"\n                                ></lib-babylon-dynamic-heading>\n                            }\n                            @if (additionalLinks.length) {\n                                <ul class=\"cs_menu_widget cs_mp0\">\n                                    @for (\n                                        link of additionalLinks;\n                                        track $index\n                                    ) {\n                                        @if (link) {\n                                            <li>\n                                                <a\n                                                    [attr.aria-label]=\"\n                                                        link.label\n                                                    \"\n                                                    [href]=\"link.url\"\n                                                    [linkType]=\"link.linkType\"\n                                                    [innerHTML]=\"link.label\"\n                                                >\n                                                </a>\n                                            </li>\n                                        }\n                                    }\n                                </ul>\n                            }\n                        </div>\n                    </div>\n                }\n                @if (addressHotels) {\n                    <div class=\"cs_footer_grid_item address_hotels\">\n                        <div class=\"cs_footer_item\">\n                            @if (ahTitle) {\n                                <lib-babylon-dynamic-heading\n                                    [tag]=\"tags?.ahtitle || 'h5'\"\n                                    cssClass=\"cs_widget_title title--smaller\"\n                                    [color]=\"textColors?.ahtitle\"\n                                    [content]=\"ahTitle\"\n                                    wrapper=\"span\"\n                                ></lib-babylon-dynamic-heading>\n                            } @else if (fifthTitle) {\n                                <lib-babylon-dynamic-heading\n                                    [tag]=\"tags?.fifthtitle || 'h5'\"\n                                    cssClass=\"cs_widget_title title--smaller\"\n                                    [color]=\"textColors?.fifthtitle\"\n                                    [content]=\"fifthTitle\"\n                                    wrapper=\"span\"\n                                ></lib-babylon-dynamic-heading>\n                            }\n                            @if (addressHotels.length) {\n                                <ul class=\"cs_menu_widget cs_mp0\">\n                                    @for (\n                                        address of addressHotels;\n                                        track $index\n                                    ) {\n                                        @if (address) {\n                                            <li>\n                                                @if (address.name) {\n                                                    <p class=\"text--small\">\n                                                        <span>{{\n                                                            address.name\n                                                        }}</span>\n                                                    </p>\n                                                }\n                                                @if (address.phone) {\n                                                    <a\n                                                        [attr.aria-label]=\"\n                                                            address.phone\n                                                        \"\n                                                        [href]=\"\n                                                            'tel:' +\n                                                            address.phone\n                                                        \"\n                                                        linkType=\"external\"\n                                                    >\n                                                        {{ address.phone }}\n                                                    </a>\n                                                    <br />\n                                                }\n                                                @if (address.email) {\n                                                    <a\n                                                        [attr.aria-label]=\"\n                                                            address.email\n                                                        \"\n                                                        [href]=\"\n                                                            'mailto:' +\n                                                            address.email\n                                                        \"\n                                                        linkType=\"external\"\n                                                    >\n                                                        {{ address.email }}\n                                                    </a>\n                                                    <br />\n                                                }\n                                                @if (address.full_address) {\n                                                    <a\n                                                        [attr.aria-label]=\"\n                                                            address.full_address\n                                                        \"\n                                                        [href]=\"\n                                                            address.url || '#'\n                                                        \"\n                                                        linkType=\"external\"\n                                                        [ngClass]=\"{\n                                                            'pointer-none':\n                                                                !address.url,\n                                                        }\"\n                                                        [innerHTML]=\"\n                                                            address.full_address\n                                                        \"\n                                                    >\n                                                    </a>\n                                                } @else {\n                                                    @if (address.address) {\n                                                        <a\n                                                            [attr.aria-label]=\"\n                                                                address.address\n                                                            \"\n                                                            [href]=\"\n                                                                address.url ||\n                                                                '#'\n                                                            \"\n                                                            linkType=\"external\"\n                                                            [ngClass]=\"{\n                                                                'pointer-none':\n                                                                    !address.url,\n                                                            }\"\n                                                        >\n                                                            {{\n                                                                address.address\n                                                            }},\n                                                            {{ address.cp }}\n                                                            {{ address.city }},\n                                                            {{\n                                                                address.province\n                                                            }},\n                                                            {{\n                                                                address.country\n                                                            }}\n                                                        </a>\n                                                    }\n                                                }\n                                                <br />\n                                            </li>\n                                        }\n                                    }\n                                </ul>\n                            }\n                        </div>\n                    </div>\n                }\n                @if (thTitle || safeUrl || input) {\n                    <div class=\"cs_footer_grid_item\">\n                        <div class=\"cs_footer_item\">\n                            @if (thTitle) {\n                                <lib-babylon-dynamic-heading\n                                    [tag]=\"tags?.thtitle || 'h5'\"\n                                    cssClass=\"cs_widget_title title--smaller\"\n                                    [color]=\"textColors?.thtitle\"\n                                    [content]=\"thTitle\"\n                                    wrapper=\"span\"\n                                ></lib-babylon-dynamic-heading>\n                            }\n                            @if (safeUrl) {\n                                <div class=\"cs_footer_map cs_primary_bg\">\n                                    <iframe\n                                        [src]=\"safeUrl\"\n                                        allowfullscreen\n                                        title=\"map\"\n                                    ></iframe>\n                                </div>\n                            } @else {\n                                <div id=\"message-newsletter\"></div>\n                                @if (input) {\n                                    <form\n                                        name=\"newsletter_form\"\n                                        id=\"newsletter_form\"\n                                        [formGroup]=\"form\"\n                                    >\n                                        <div class=\"form-group\">\n                                            <input\n                                                type=\"text\"\n                                                class=\"form-control\"\n                                                formControlName=\"input\"\n                                                [placeholder]=\"\n                                                    input.placeholder\n                                                \"\n                                                (input)=\"inputChange($event)\"\n                                                (blur)=\"validateInput()\"\n                                            />\n                                            <button\n                                                name=\"submit\"\n                                                type=\"submit\"\n                                                id=\"submit-newsletter\"\n                                                (click)=\"submit()\"\n                                                [ngClass]=\"{\n                                                    'pointers-none':\n                                                        !form.valid,\n                                                }\"\n                                            >\n                                                <i\n                                                    class=\"babylon-arrow-right btn-send\"\n                                                ></i>\n                                            </button>\n                                        </div>\n                                        <div class=\"checkbox-element\">\n                                            <mat-checkbox\n                                                class=\"formcontrol\"\n                                                formControlName=\"checkbox\"\n                                            ></mat-checkbox>\n                                            @if (legalAdvise) {\n                                                <span\n                                                    class=\"text--small m-0 pt-2\"\n                                                    [innerHTML]=\"legalAdvise\"\n                                                ></span>\n                                            }\n                                        </div>\n                                    </form>\n                                }\n                            }\n                        </div>\n                    </div>\n                }\n            </div>\n            @if (logo) {\n                <div class=\"cs_footer_logo\">\n                    <img\n                        [src]=\"logo.src\"\n                        [alt]=\"logo.alt\"\n                        class=\"footer-logo-img\"\n                        loading=\"lazy\"\n                    />\n                </div>\n            }\n        </div>\n    </div>\n    <div class=\"cs_bottom_footer_wrap\">\n        <div class=\"container-fluid cs_plr_100\">\n            <div class=\"cs_bottom_footer position-relative\">\n                @if (copyright) {\n                    <div class=\"cs_copyright\">\n                        <lib-babylon-dynamic-heading\n                            [tag]=\"tags?.copyright || 'span'\"\n                            cssClass=\"cs_copyright_year\"\n                            [color]=\"textColors?.copyright\"\n                            [content]=\"copyright\"\n                            wrapper=\"span\"\n                        ></lib-babylon-dynamic-heading>\n                    </div>\n                }\n                <span class=\"cs_scrollup cs_center\" scrollUp>\n                    <svg\n                        width=\"15\"\n                        height=\"7\"\n                        viewBox=\"0 0 15 7\"\n                        fill=\"none\"\n                        xmlns=\"http://www.w3.org/2000/svg\"\n                    >\n                        <path\n                            d=\"M15 6.18793L14.1169 7L7.93687 1.31723C7.81958 1.20941 7.66053 1.14885 7.49468 1.14885C7.32884 1.14885 7.16978 1.20941 7.0525 1.31723L0.884376 6.99022L0 6.177L6.16812 0.505163C6.51998 0.181708 6.99715 0 7.49468 0C7.99222 0 8.46938 0.181708 8.82125 0.505163L15 6.18793Z\"\n                            fill=\"currentColor\"\n                        />\n                    </svg>\n                    <span class=\"cs_scrollup_bg_dotted cs_accent_color\">\n                        <svg\n                            width=\"56\"\n                            height=\"56\"\n                            viewBox=\"0 0 56 56\"\n                            fill=\"none\"\n                            xmlns=\"http://www.w3.org/2000/svg\"\n                        >\n                            <circle\n                                cx=\"28\"\n                                cy=\"28\"\n                                r=\"27.5\"\n                                stroke=\"currentColor\"\n                                stroke-dasharray=\"5 5\"\n                            />\n                        </svg>\n                    </span>\n                </span>\n                @if (contactLinks?.length) {\n                    <div class=\"cs_bottom_footer_right\">\n                        <ul class=\"cs_footer_links cs_mp_0\">\n                            @for (link of contactLinks; track $index) {\n                                @if (link) {\n                                    <li>\n                                        <a\n                                            [attr.aria-label]=\"link.label\"\n                                            [linkType]=\"link.linkType ?? ''\"\n                                            [href]=\"link.url\"\n                                            >{{ link.label }}</a\n                                        >\n                                    </li>\n                                }\n                            }\n                        </ul>\n                    </div>\n                }\n            </div>\n        </div>\n    </div>\n</footer>\n","import { CommonModule } from '@angular/common';\nimport {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    Input,\n} from '@angular/core';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport { BabylonButtonI } from '../../../interfaces/babylon-button.interface';\nimport { BabylonImageI } from '../../../interfaces/babylon-image.interface';\nimport { BabylonAddressItem } from '../babylon-static-footer/babylon-static-footer.component';\n\n@Component({\n    selector: 'lib-babylon-static-footer-v2',\n    standalone: true,\n    imports: [CommonModule, BabylonLinkTypeDirective],\n    templateUrl: './babylon-static-footer-v2.component.html',\n    styleUrl: './babylon-static-footer-v2.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonStaticFooterV2Component implements AfterViewInit {\n    @Input() img?: BabylonImageI;\n    @Input() imgUrl?: string;\n    @Input() title?: string;\n    @Input() ndTitle?: string;\n    @Input() rdTitle?: string;\n    @Input() thTitle?: string;\n    @Input() frameUrl: string = '';\n    @Input() contactInfo?: BabylonButtonI[];\n    @Input() contactLinks?: BabylonButtonI[];\n    @Input() address?: BabylonAddressItem;\n    @Input() socialMedia?: BabylonButtonI[];\n    @Input() copyright?: string;\n    @Input() nav?: BabylonButtonI[];\n    @Input() footerLinks?: BabylonButtonI[];\n\n    safeUrl: SafeResourceUrl = '';\n\n    constructor(\n        private readonly sanitizer: DomSanitizer,\n        private readonly cdr: ChangeDetectorRef\n    ) {}\n\n    ngAfterViewInit(): void {\n        const videoUrl = this.frameUrl;\n        this.safeUrl = this.sanitizer.bypassSecurityTrustResourceUrl(videoUrl);\n        this.cdr.detectChanges();\n    }\n}\n","<!--  La foto es opcional -->\n<footer class=\"babylon__footer_v2 cs_bg_filed\">\n    <div class=\"cs_footer_main\">\n        <div class=\"container-fluid cs_plr_100\">\n            <div class=\"cs_footer_grid_2\">\n                <!-- 1a columna -->\n                <div class=\"cs_footer_column\">\n                    <div class=\"cs_footer_grid_item\">\n                        <div class=\"cs_footer_item\">\n                            @if (title) {\n                                <h3 class=\"pretitle\">\n                                    <span>{{ title }}</span>\n                                </h3>\n                            }\n                            @if (contactInfo?.length) {\n                                <ul class=\"cs_menu_widget cs_mp0\">\n                                    @for (\n                                        contact of contactInfo;\n                                        track $index\n                                    ) {\n                                        @if (contact) {\n                                            <li>\n                                                <a\n                                                    [attr.aria-label]=\"\n                                                        contact.label\n                                                    \"\n                                                    class=\"text\"\n                                                    [linkType]=\"\n                                                        contact.linkType\n                                                    \"\n                                                    [href]=\"contact.url\"\n                                                    >{{ contact.label }}</a\n                                                >\n                                            </li>\n                                        }\n                                    }\n                                </ul>\n                            }\n                        </div>\n                    </div>\n                    <div class=\"cs_footer_grid_item\">\n                        <div class=\"cs_footer_item\">\n                            @if (ndTitle) {\n                                <h3 class=\"pretitle\">\n                                    <span>{{ ndTitle }}</span>\n                                </h3>\n                            }\n                            @if (address) {\n                                <div class=\"cs_text_widget text\">\n                                    <p>\n                                        @if (address.address) {\n                                            {{ address.address }} <br />\n                                        }\n                                        @if (address.cp && address.city) {\n                                            {{ address.cp }} {{ address.city }}\n                                            <br />\n                                        }\n                                        @if (\n                                            address.province && address.country\n                                        ) {\n                                            {{ address.province }}\n                                            {{ address.country }}\n                                        }\n                                    </p>\n                                </div>\n                            }\n                        </div>\n                    </div>\n                    <div class=\"cs_footer_grid_item\">\n                        <div class=\"cs_footer_item\">\n                            @if (rdTitle) {\n                                <h3 class=\"pretitle\">\n                                    <span>{{ rdTitle }}</span>\n                                </h3>\n                            }\n                            @if (socialMedia) {\n                                <ul class=\"cs_menu_widget cs_mp0\">\n                                    @for (item of socialMedia; track $index) {\n                                        <li>\n                                            <a\n                                                [attr.aria-label]=\"item.label\"\n                                                class=\"text\"\n                                                linkType=\"external\"\n                                                [href]=\"item.url\"\n                                            >\n                                                <i [ngClass]=\"item.icon\"></i>\n                                                {{ item.label }}\n                                            </a>\n                                        </li>\n                                    }\n                                </ul>\n                            }\n                        </div>\n                    </div>\n                </div>\n                <!-- 2a columna -->\n                <div class=\"cs_footer_column\">\n                    <div class=\"cs_footer_grid_item\">\n                        <div class=\"cs_footer_item\">\n                            @if (img) {\n                                <a\n                                    [attr.aria-label]=\"img.src\"\n                                    class=\"cs_footer_map cs_primary_bg\"\n                                    [href]=\"imgUrl || '#'\"\n                                    [ngClass]=\"{ 'pointers-none': !imgUrl }\"\n                                    linkType=\"external\"\n                                >\n                                    <img\n                                        [src]=\"img.src\"\n                                        [alt]=\"img.alt\"\n                                        loading=\"lazy\"\n                                    />\n                                </a>\n                            } @else {\n                                @if (safeUrl) {\n                                    <div class=\"cs_footer_map cs_primary_bg\">\n                                        <iframe\n                                            [src]=\"safeUrl\"\n                                            allowfullscreen\n                                        ></iframe>\n                                    </div>\n                                }\n                            }\n                        </div>\n                    </div>\n                    <div class=\"cs_bottom_links_footer position-relative\">\n                        @if (footerLinks) {\n                            <ul class=\"cs_menu_widget_links cs_mp0\">\n                                @for (link of footerLinks; track $index) {\n                                    @if (link) {\n                                        <li>\n                                            <a\n                                                [attr.aria-label]=\"link.label\"\n                                                class=\"text\"\n                                                [href]=\"link.url\"\n                                                [linkType]=\"link.linkType\"\n                                            >\n                                                {{ link.label }}\n                                            </a>\n                                        </li>\n                                    }\n                                }\n                            </ul>\n                        }\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n    <div class=\"cs_bottom_footer_wrap\">\n        <div class=\"container-fluid cs_plr_100\">\n            <div class=\"cs_bottom_footer position-relative\">\n                @if (copyright) {\n                    <div class=\"cs_copyright\">\n                        <span class=\"cs_copyright_year\"> {{ copyright }} </span>\n                    </div>\n                }\n                @if (contactLinks?.length) {\n                    <div class=\"cs_bottom_footer_right\">\n                        <ul class=\"cs_footer_links cs_mp_0\">\n                            @for (link of contactLinks; track $index) {\n                                <li>\n                                    <a\n                                        [attr.aria-label]=\"link.label\"\n                                        [linkType]=\"link.linkType\"\n                                        [href]=\"link.url\"\n                                        >{{ link.label }}</a\n                                    >\n                                </li>\n                            }\n                        </ul>\n                    </div>\n                }\n            </div>\n        </div>\n    </div>\n</footer>\n","import { isPlatformBrowser } from '@angular/common';\nimport {\n    AfterViewInit,\n    Component,\n    ElementRef,\n    Inject,\n    Input,\n    OnDestroy,\n    PLATFORM_ID,\n} from '@angular/core';\nimport {\n    BabylonButtonI,\n    BabylonMultimediaI,\n    BabylonTextInfoI,\n} from '../../../interfaces';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport { BabylonAddressItemI } from '../../../interfaces/babylon-address-item.interface';\nimport { BabylonCleanPhonePipe } from '../../../pipes/babylon-clean-phone.pipe';\n\n@Component({\n    selector: 'lib-babylon-static-footer-v3',\n    standalone: true,\n    imports: [BabylonLinkTypeDirective, BabylonCleanPhonePipe],\n    templateUrl: './babylon-static-footer-v3.component.html',\n    styleUrl: './babylon-static-footer-v3.component.scss',\n})\nexport class BabylonStaticFooterV3Component\n    implements AfterViewInit, OnDestroy\n{\n    @Input() links?: BabylonButtonI[];\n    @Input() contactlinks?: BabylonButtonI[];\n    @Input() multimedia?: BabylonMultimediaI;\n    @Input() texts?: BabylonTextInfoI;\n    @Input() address?: BabylonAddressItemI[];\n\n    private readonly isBrowser: boolean;\n    private cleanups: Array<() => void> = [];\n    constructor(\n        private host: ElementRef<HTMLElement>,\n        @Inject(PLATFORM_ID) platformId: Object\n    ) {\n        this.isBrowser = isPlatformBrowser(platformId);\n    }\n\n    ngAfterViewInit(): void {\n        if (!this.isBrowser) return;\n\n        const root = this.host.nativeElement;\n        const triggers = Array.from(\n            root.querySelectorAll<HTMLElement>('.footer__gotoTop')\n        );\n        if (!triggers.length) return;\n\n        const scrollToTop = () => {\n            const reduce = window.matchMedia?.(\n                '(prefers-reduced-motion: reduce)'\n            ).matches;\n            try {\n                window.scrollTo({\n                    top: 0,\n                    behavior: reduce ? 'auto' : 'smooth',\n                });\n            } catch {\n                // fallback Safari muy viejo\n                window.scrollTo(0, 0);\n            }\n        };\n\n        for (const el of triggers) {\n            const onClick = (ev: Event) => {\n                ev.preventDefault();\n                scrollToTop();\n            };\n            const onKeydown = (ev: KeyboardEvent) => {\n                if (\n                    ev.key === 'Enter' ||\n                    ev.key === ' ' ||\n                    ev.code === 'Space'\n                ) {\n                    ev.preventDefault();\n                    scrollToTop();\n                }\n            };\n\n            el.addEventListener('click', onClick);\n            el.addEventListener('keydown', onKeydown);\n\n            this.cleanups.push(() => {\n                el.removeEventListener('click', onClick);\n                el.removeEventListener('keydown', onKeydown);\n            });\n        }\n    }\n\n    ngOnDestroy(): void {\n        if (!this.isBrowser) return;\n        this.cleanups.forEach((fn) => fn());\n        this.cleanups = [];\n    }\n}\n","<footer class=\"footer\">\n    <div class=\"footer__top\">\n        <div class=\"container\">\n            @if (multimedia?.imagenes?.length) {\n                <div class=\"footer__logos\">\n                    @for (item of multimedia?.imagenes; track $index) {\n                        @if (item?.img?.src) {\n                            @if (item?.buttons?.[0]?.url) {\n                                <a\n                                    role=\"button\"\n                                    [href]=\"item?.buttons?.[0]?.url\"\n                                    [linkType]=\"item?.buttons?.[0]?.linkType\"\n                                    target=\"_blank\"\n                                >\n                                    <img\n                                        [src]=\"\n                                            item?.img?.src ||\n                                            'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                        \"\n                                        [alt]=\"item?.img?.alt\"\n                                    />\n                                </a>\n                            } @else if (item?.img?.src) {\n                                <img\n                                    [src]=\"\n                                        item?.img?.src ||\n                                        'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                    \"\n                                    [alt]=\"item?.img?.alt\"\n                                />\n                            }\n                        }\n                    }\n                </div>\n            }\n            <div class=\"footer__inner\">\n                <div class=\"footer__info\">\n                    <div class=\"footer__info--inner\">\n                        <div class=\"footer__direction--outer\">\n                            <div class=\"footer__direction--map\">\n                                @if (\n                                    multimedia?.backgroundimage?.[0]?.img\n                                        ?.src &&\n                                    multimedia?.backgroundimage?.[0]\n                                        ?.buttons?.[0]?.url\n                                ) {\n                                    <a\n                                        role=\"button\"\n                                        [linkType]=\"\n                                            multimedia?.backgroundimage?.[0]\n                                                ?.buttons?.[0]?.linkType\n                                        \"\n                                        [href]=\"\n                                            multimedia?.backgroundimage?.[0]\n                                                ?.buttons?.[0]?.url\n                                        \"\n                                    >\n                                        <figure>\n                                            <img\n                                                [src]=\"\n                                                    multimedia\n                                                        ?.backgroundimage?.[0]\n                                                        ?.img?.src\n                                                \"\n                                                [alt]=\"\n                                                    multimedia\n                                                        ?.backgroundimage?.[0]\n                                                        ?.img?.alt || 'images'\n                                                \"\n                                            />\n                                            @if (\n                                                multimedia?.backgroundimage?.[0]\n                                                    ?.buttons?.length\n                                            ) {\n                                                <div class=\"map-link\">\n                                                    @if (\n                                                        multimedia\n                                                            ?.backgroundimage?.[0]\n                                                            ?.buttons?.[0]\n                                                            ?.label\n                                                    ) {\n                                                        <span>{{\n                                                            multimedia\n                                                                ?.backgroundimage?.[0]\n                                                                ?.buttons?.[0]\n                                                                ?.label\n                                                        }}</span>\n                                                    }\n                                                    <svg\n                                                        aria-hidden=\"true\"\n                                                        focusable=\"false\"\n                                                    >\n                                                        <use\n                                                            href=\"/assets/babylon/svg/icon-map.svg#icon-map\"\n                                                        ></use>\n                                                    </svg>\n                                                </div>\n                                            }\n                                        </figure>\n                                    </a>\n                                } @else if (\n                                    multimedia?.backgroundimage?.[0]?.img?.src\n                                ) {\n                                    <figure>\n                                        <img\n                                            [src]=\"\n                                                multimedia?.backgroundimage?.[0]\n                                                    ?.img?.src\n                                            \"\n                                            [alt]=\"\n                                                multimedia?.backgroundimage?.[0]\n                                                    ?.img?.alt || 'images'\n                                            \"\n                                        />\n                                    </figure>\n                                }\n                            </div>\n                            <div class=\"footer__direction\">\n                                @if (texts?.addresstitle) {\n                                    <h3>{{ texts?.addresstitle }}</h3>\n                                }\n                                @if (\n                                    address?.length &&\n                                    address?.[0]?.full_address\n                                ) {\n                                    <p\n                                        [innerHTML]=\"address?.[0]?.full_address\"\n                                    ></p>\n                                } @else if (\n                                    address?.length && address?.[0]?.address\n                                ) {\n                                    <a\n                                        [attr.aria-label]=\"\n                                            address?.[0]?.address\n                                        \"\n                                        [href]=\"address?.[0]?.link\"\n                                        target=\"_blank\"\n                                        [class]=\"\n                                            address?.[0]?.link\n                                                ? 'btn__link'\n                                                : ''\n                                        \"\n                                    >\n                                        {{ address?.[0]?.address }} <br />\n\n                                        @if (\n                                            address?.[0]?.cp &&\n                                            address?.[0]?.city\n                                        ) {\n                                            {{ address?.[0]?.cp }}\n                                            {{ address?.[0]?.city }}\n                                            <br />\n                                        }\n                                        @if (\n                                            address?.[0]?.province &&\n                                            address?.[0]?.country\n                                        ) {\n                                            {{ address?.[0]?.province }}\n                                            {{ address?.[0]?.country }}\n                                        }\n                                    </a>\n                                }\n                            </div>\n                        </div>\n                        <div class=\"footer__contact\">\n                            @if (texts?.contacttitle) {\n                                <h3>{{ texts?.contacttitle }}</h3>\n                            }\n                            @if (address?.length && address?.[0]?.phone) {\n                                <p>\n                                    @if (address?.[0]?.phone) {\n                                        <a\n                                            [attr.aria-label]=\"\n                                                address?.[0]?.phone\n                                            \"\n                                            [href]=\"\n                                                'tel:' +\n                                                (address?.[0]?.phone\n                                                    | cleanPhone)\n                                            \"\n                                            linkType=\"external\"\n                                            >{{ address?.[0]?.phone }}</a\n                                        >\n                                    }\n                                    @if (address?.[0]?.phone2) {\n                                        <br />\n                                        <a\n                                            [attr.aria-label]=\"\n                                                address?.[0]?.phone2\n                                            \"\n                                            [href]=\"\n                                                'tel:' +\n                                                (address?.[0]?.phone2\n                                                    | cleanPhone)\n                                            \"\n                                            linkType=\"external\"\n                                            >{{ address?.[0]?.phone2 }}</a\n                                        >\n                                    }\n                                    @if (address?.[0]?.email) {\n                                        <br />\n                                        <a\n                                            [href]=\"\n                                                'mailto:' + address?.[0]?.email\n                                            \"\n                                            class=\"btn__link\"\n                                            >{{ address?.[0]?.email }}\n                                        </a>\n                                    }\n                                </p>\n                            }\n                        </div>\n                    </div>\n                </div>\n                <div class=\"footer__links\">\n                    @if (links?.length) {\n                        <ul>\n                            @for (link of links; track $index) {\n                                @if (link?.url && link?.label) {\n                                    <li>\n                                        <a\n                                            role=\"button\"\n                                            [linkType]=\"link?.linkType\"\n                                            [href]=\"link?.url\"\n                                            class=\"btn__link\"\n                                            >{{ link?.label }}</a\n                                        >\n                                    </li>\n                                }\n                            }\n                            @if (contactlinks?.length) {\n                                @for (\n                                    contactlink of contactlinks;\n                                    track $index\n                                ) {\n                                    @if (\n                                        contactlink?.url && contactlink?.label\n                                    ) {\n                                        <li>\n                                            <a\n                                                role=\"button\"\n                                                [linkType]=\"\n                                                    contactlink?.linkType\n                                                \"\n                                                [href]=\"contactlink?.url\"\n                                                class=\"btn__link\"\n                                                >{{ contactlink?.label }}</a\n                                            >\n                                        </li>\n                                    }\n                                }\n                            }\n                        </ul>\n                    }\n                    <div\n                        class=\"footer__gotoTop js-scrollto\"\n                        data-scroll_spacer=\"0\"\n                        data-scroll_to=\"body\"\n                        role=\"button\"\n                    >\n                        @if (texts?.topButton) {\n                            <span>{{ texts?.topButton }}</span>\n                        }\n                        <div class=\"footer__gotoTop--icon\">\n                            <svg\n                                aria-hidden=\"true\"\n                                focusable=\"false\"\n                                class=\"line\"\n                            >\n                                <use\n                                    href=\"/assets/babylon/svg/icon-long-arrow.svg#icon-long-arrow\"\n                                ></use>\n                            </svg>\n                            <svg aria-hidden=\"true\" focusable=\"false\">\n                                <use\n                                    href=\"/assets/babylon/svg/icon-arrow.svg#icon-arrow\"\n                                ></use>\n                            </svg>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n    <div class=\"footer__copyright bg-cream\">\n        <svg\n            aria-hidden=\"true\"\n            focusable=\"false\"\n            class=\"footer__copyright--graphic\"\n        >\n            <use href=\"#icon-graphic\"></use>\n        </svg>\n        <div class=\"container\">\n            <div class=\"footer__copyright--inner\">\n                @if (texts?.bannertext) {\n                    <p [innerHTML]=\"texts?.bannertext\"></p>\n                }\n                @if (texts?.copyrighttext) {\n                    <span\n                        class=\"footer__copyright--text\"\n                        [innerHTML]=\"texts?.copyrighttext\"\n                    ></span>\n                }\n            </div>\n        </div>\n    </div>\n</footer>\n","import { CommonModule } from '@angular/common';\nimport {\n    ChangeDetectorRef,\n    Component,\n    EventEmitter,\n    Input,\n    OnInit,\n    Output,\n} from '@angular/core';\nimport {\n    FormBuilder,\n    FormGroup,\n    FormsModule,\n    ReactiveFormsModule,\n    Validators,\n} from '@angular/forms';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\nimport { BabylonDataBackgroundDirective } from '../../../directives/data-background/data-background.directive';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport { BabylonScrollUpDirective } from '../../../directives/scrolls/scroll-up.directive';\nimport {\n    BabylonButtonI,\n    BabylonTagsI,\n    BabylonTextInfoI,\n    BabylonTextsColorsI,\n} from '../../../interfaces';\nimport { Utils } from '../../../utils';\nimport { BabylonDynamicHeadingComponent } from '../../shared';\nimport { BabylonAddressItem } from '../babylon-static-footer/babylon-static-footer.component';\n\n@Component({\n    selector: 'lib-babylon-static-footer-v4',\n    standalone: true,\n    imports: [\n        CommonModule,\n        MatCheckboxModule,\n        BabylonDataBackgroundDirective,\n        BabylonScrollUpDirective,\n        BabylonLinkTypeDirective,\n        ReactiveFormsModule,\n        FormsModule,\n        BabylonDynamicHeadingComponent,\n    ],\n    templateUrl: './babylon-static-footer-v4.component.html',\n    styleUrl: './babylon-static-footer-v4.component.scss',\n    /* changeDetection: ChangeDetectionStrategy.OnPush, */\n})\nexport class BabylonStaticFooterV4Component implements OnInit {\n    @Input() address?: BabylonAddressItem[];\n    @Input() addressHotels?: BabylonAddressItem[];\n    @Input() texts?: BabylonTextInfoI;\n    @Input() buttons?: BabylonButtonI[];\n\n    @Input() tags?: BabylonTagsI;\n    @Input() textColors?: BabylonTextsColorsI;\n\n    @Output() submitForm = new EventEmitter<string>();\n\n    safeUrl: SafeResourceUrl | null = null;\n    form!: FormGroup;\n\n    constructor(\n        private readonly sanitizer: DomSanitizer,\n        private readonly cdr: ChangeDetectorRef,\n        private readonly fb: FormBuilder\n    ) {}\n\n    ngOnInit(): void {\n        this.form = this.fb.group({\n            input: ['', [Validators.email, Validators.required]],\n            checkbox: [false, [Validators.requiredTrue]],\n        });\n    }\n\n    submit(): void {\n        if (this.form.invalid) {\n            this.form.markAllAsTouched();\n            this.cdr.markForCheck();\n            return;\n        }\n        this.submitForm.emit(this.form.controls['input'].value as string);\n        this.form.reset();\n    }\n\n    encodeText(text: string | undefined): string {\n        return text ? encodeURIComponent(text) : '';\n    }\n\n    getNumber(text: string): number[] {\n        return Utils.extractNumberRange(text);\n    }\n\n    getStarsHtml(address: BabylonAddressItem): string {\n        // 1. Obtenemos el número de estrellas\n        const num = this.getNumber(address?.category ?? '').length;\n\n        // 2. Definimos el SVG de la estrella (he añadido un pequeño margen a la izquierda)\n        const starSvg = `<svg width=\"14\" height=\"14\" viewBox=\"0 0 20 20\" style=\"display:inline-block; vertical-align:middle; margin-left:2px;\"><path fill=\"gold\" d=\"M10 0l2.294 7.104c.034.106.133.178.245.178L20 7.267l-6.046 4.374v.001c-.09.066-.128.182-.093.289l2.322 7.095-6.032-4.4c-.09-.065-.213-.065-.303 0l-6.029 4.4 2.322-7.095H6.14c.035-.107-.003-.223-.094-.289L0 7.268l7.461.015.001-.001c.112 0 .211-.072.245-.178L10 0z\"/></svg>`;\n\n        // 3. Retornamos el nombre + las estrellas repetidas N veces\n        // Usamos un <span> para agrupar las estrellas y que no se rompa el diseño\n        const starsGroup = `<span style=\"display:inline-flex; align-items:center; margin-left:5px;\">${starSvg.repeat(num)}</span>`;\n\n        return `${address?.name || ''} ${starsGroup}`;\n    }\n}\n","<!--  La foto es opcional -->\n<footer class=\"babylon__footer cs_bg_filed\">\n    <div class=\"cs_footer_main\">\n        <div class=\"container-fluid cs_plr_100\">\n            <div class=\"cs_footer_grid_4\">\n                @if (address?.length) {\n                    @for (add of address; track $index) {\n                        <div class=\"cs_footer_grid_item\">\n                            <div class=\"cs_footer_item\">\n                                <div class=\"cs_widget_title-whitout-hotel\">\n                                    <lib-babylon-dynamic-heading\n                                        [tag]=\"tags?.title || 'h5'\"\n                                        cssClass=\"cs_widget_title title--smaller\"\n                                        [color]=\"textColors?.title\"\n                                        [content]=\"add.name\"\n                                        wrapper=\"span\"\n                                    ></lib-babylon-dynamic-heading>\n                                </div>\n                                <div class=\"cs_text_widget\">\n                                    <a\n                                        [attr.aria-label]=\"add.address\"\n                                        [href]=\"\n                                            add.url ||\n                                            'https://www.google.com/maps/search/?api=1&query=' +\n                                                encodeText(\n                                                    add?.address +\n                                                        ' ' +\n                                                        add?.cp +\n                                                        ' ' +\n                                                        add?.city +\n                                                        ' ' +\n                                                        add?.province +\n                                                        ' ' +\n                                                        add?.country\n                                                ) ||\n                                            '#'\n                                        \"\n                                        linkType=\"external\"\n                                        [ngClass]=\"{\n                                            'pointer-none': !add.url,\n                                        }\"\n                                    >\n                                        @if (add.address) {\n                                            {{ add.address }} <br />\n                                        }\n                                        @if (add.cp && add.city) {\n                                            {{ add.cp }} {{ add.city }}\n                                            <br />\n                                        }\n                                        @if (add.province && add.country) {\n                                            {{ add.province }}\n                                            {{ add.country }}\n                                        }\n                                    </a>\n                                    <br />\n                                    @if (add.phone) {\n                                        <a\n                                            class=\"phone\"\n                                            [attr.aria-label]=\"add.phone\"\n                                            [href]=\"'tel:' + add.phone\"\n                                            linkType=\"external\"\n                                        >\n                                            {{ add.phone }}\n                                        </a>\n                                        <br />\n                                    }\n                                    @if (add.email) {\n                                        <a\n                                            [attr.aria-label]=\"add.email\"\n                                            [href]=\"'mailto:' + add.email\"\n                                            linkType=\"external\"\n                                        >\n                                            {{ add.email }}\n                                        </a>\n                                        <br />\n                                    }\n                                </div>\n                            </div>\n                        </div>\n                    }\n                }\n                @if (addressHotels?.length) {\n                    @for (address of addressHotels; track $index) {\n                        <div class=\"cs_footer_grid_item address_hotels\">\n                            <div class=\"cs_footer_item\">\n                                <div\n                                    class=\"cs_widget_title\"\n                                    style=\"\n                                        display: flex;\n                                        flex-direction: column;\n                                        gap: 4px;\n                                    \"\n                                >\n                                    @if (address.name) {\n                                        <lib-babylon-dynamic-heading\n                                            [tag]=\"tags?.title || 'h5'\"\n                                            cssClass=\"title--smaller\"\n                                            [color]=\"textColors?.title\"\n                                            [content]=\"address.name\"\n                                            wrapper=\"span\"\n                                        ></lib-babylon-dynamic-heading>\n                                    }\n\n                                    @if (address.category) {\n                                        <div\n                                            class=\"stars-container\"\n                                            style=\"\n                                                display: flex;\n                                                gap: 2px;\n                                                margin-top: 4px;\n                                            \"\n                                        >\n                                            @for (\n                                                item of getNumber(\n                                                    address.category\n                                                );\n                                                track $index\n                                            ) {\n                                                <svg\n                                                    width=\"14\"\n                                                    height=\"14\"\n                                                    viewBox=\"0 0 20 20\"\n                                                >\n                                                    <path\n                                                        fill=\"currentColor\"\n                                                        d=\"M10 0l2.294 7.104c.034.106.133.178.245.178L20 7.267l-6.046 4.374v.001c-.09.066-.128.182-.093.289l2.322 7.095-6.032-4.4c-.09-.065-.213-.065-.303 0l-6.029 4.4 2.322-7.095H6.14c.035-.107-.003-.223-.094-.289L0 7.268l7.461.015.001-.001c.112 0 .211-.072.245-.178L10 0z\"\n                                                    />\n                                                </svg>\n                                            }\n                                        </div>\n                                    }\n                                </div>\n\n                                <div class=\"cs_text_widget\">\n                                    @if (address.full_address) {\n                                        <a\n                                            [attr.aria-label]=\"\n                                                address.full_address\n                                            \"\n                                            [href]=\"\n                                                address.url ||\n                                                address.mapLink ||\n                                                'https://www.google.com/maps/search/?api=1&query=' +\n                                                    encodeText(\n                                                        address?.full_address\n                                                    ) ||\n                                                '#'\n                                            \"\n                                            linkType=\"external\"\n                                            [ngClass]=\"{\n                                                'pointer-none': !address.url,\n                                            }\"\n                                            [innerHTML]=\"address.full_address\"\n                                        >\n                                        </a>\n                                        <br />\n                                    } @else {\n                                        @if (address.address) {\n                                            <a\n                                                [attr.aria-label]=\"\n                                                    address.address\n                                                \"\n                                                [href]=\"\n                                                    address.url ||\n                                                    address.mapLink ||\n                                                    'https://www.google.com/maps/search/?api=1&query=' +\n                                                        encodeText(\n                                                            address?.address +\n                                                                ' ' +\n                                                                address?.cp +\n                                                                ' ' +\n                                                                address?.city +\n                                                                ' ' +\n                                                                address?.province +\n                                                                ' ' +\n                                                                address?.country\n                                                        ) ||\n                                                    '#'\n                                                \"\n                                                linkType=\"external\"\n                                                [ngClass]=\"{\n                                                    'pointer-none':\n                                                        !address.url,\n                                                }\"\n                                            >\n                                                {{ address.address }}\n                                                <br />\n                                                {{ address.cp }}\n                                                {{ address.city }}\n                                                {{ address.province }}\n                                                <br />\n                                                {{ address.country }}\n                                            </a>\n                                            <br />\n                                        }\n                                    }\n                                    @if (address.phone) {\n                                        <a\n                                            class=\"phone\"\n                                            [attr.aria-label]=\"address.phone\"\n                                            [href]=\"'tel:' + address.phone\"\n                                            linkType=\"external\"\n                                        >\n                                            {{ address.phone }}\n                                        </a>\n                                        <br />\n                                    }\n                                    @if (address.email) {\n                                        <a\n                                            [attr.aria-label]=\"address.email\"\n                                            [href]=\"'mailto:' + address.email\"\n                                            linkType=\"external\"\n                                        >\n                                            {{ address.email }}\n                                        </a>\n                                        <br />\n                                    }\n                                </div>\n                            </div>\n                        </div>\n                    }\n                }\n\n                @if (texts?.newsletterTitle) {\n                    <div class=\"cs_footer_grid_item\">\n                        <div class=\"cs_footer_item\">\n                            <div id=\"message-newsletter\"></div>\n                            @if (texts?.newsletterTitle) {\n                                <form\n                                    name=\"newsletter_form\"\n                                    id=\"newsletter_form\"\n                                    [formGroup]=\"form\"\n                                >\n                                    <div class=\"form-group\">\n                                        <input\n                                            type=\"text\"\n                                            class=\"form-control\"\n                                            formControlName=\"input\"\n                                            [class.input-error]=\"\n                                                form.get('input')?.invalid &&\n                                                form.get('input')?.touched\n                                            \"\n                                            [placeholder]=\"\n                                                texts?.newsletterTitle\n                                            \"\n                                        />\n                                        <button\n                                            name=\"submit\"\n                                            type=\"submit\"\n                                            id=\"submit-newsletter\"\n                                            (click)=\"submit()\"\n                                        >\n                                            <i\n                                                class=\"babylon-arrow-right btn-send\"\n                                            ></i>\n                                        </button>\n                                    </div>\n                                    <div\n                                        class=\"checkbox-element\"\n                                        [class.check-error]=\"\n                                            form.get('checkbox')?.invalid &&\n                                            form.get('checkbox')?.touched\n                                        \"\n                                    >\n                                        <mat-checkbox\n                                            class=\"formcontrol\"\n                                            formControlName=\"checkbox\"\n                                        ></mat-checkbox>\n                                        @if (texts?.conditions) {\n                                            @if (buttons?.[0]; as btn) {\n                                                <a\n                                                    [href]=\"btn.url\"\n                                                    [linkType]=\"btn.linkType\"\n                                                >\n                                                    <span\n                                                        class=\"text--small m-0 pt-2\"\n                                                        [innerHTML]=\"\n                                                            texts?.conditions\n                                                        \"\n                                                    ></span>\n                                                </a>\n                                            } @else {\n                                                <span\n                                                    class=\"text--small m-0 pt-2\"\n                                                    [innerHTML]=\"\n                                                        texts?.conditions\n                                                    \"\n                                                ></span>\n                                            }\n                                        }\n                                    </div>\n                                </form>\n                            }\n                        </div>\n                    </div>\n                }\n            </div>\n        </div>\n    </div>\n    <div class=\"cs_bottom_footer_wrap\">\n        <div class=\"container-fluid cs_plr_100\">\n            <div class=\"cs_bottom_footer position-relative\">\n                <span class=\"cs_scrollup cs_center\" scrollUp>\n                    <svg\n                        width=\"15\"\n                        height=\"7\"\n                        viewBox=\"0 0 15 7\"\n                        fill=\"none\"\n                        xmlns=\"http://www.w3.org/2000/svg\"\n                    >\n                        <path\n                            d=\"M15 6.18793L14.1169 7L7.93687 1.31723C7.81958 1.20941 7.66053 1.14885 7.49468 1.14885C7.32884 1.14885 7.16978 1.20941 7.0525 1.31723L0.884376 6.99022L0 6.177L6.16812 0.505163C6.51998 0.181708 6.99715 0 7.49468 0C7.99222 0 8.46938 0.181708 8.82125 0.505163L15 6.18793Z\"\n                            fill=\"currentColor\"\n                        />\n                    </svg>\n                    <span class=\"cs_scrollup_bg_dotted cs_accent_color\">\n                        <svg\n                            width=\"56\"\n                            height=\"56\"\n                            viewBox=\"0 0 56 56\"\n                            fill=\"none\"\n                            xmlns=\"http://www.w3.org/2000/svg\"\n                        >\n                            <circle\n                                cx=\"28\"\n                                cy=\"28\"\n                                r=\"27.5\"\n                                stroke=\"currentColor\"\n                                stroke-dasharray=\"5 5\"\n                            />\n                        </svg>\n                    </span>\n                </span>\n            </div>\n        </div>\n    </div>\n</footer>\n","import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    HostListener,\n    inject,\n    Input,\n    OnInit,\n    PLATFORM_ID,\n} from '@angular/core';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport { BabylonButtonI } from '../../../interfaces';\nimport { BabylonHotelStylesItem } from '../../../interfaces/babylon-hotel-styles.interface';\n\n@Component({\n    selector: 'lib-babylon-submenu-hotel',\n    standalone: true,\n    imports: [CommonModule, BabylonLinkTypeDirective],\n    templateUrl: './babylon-submenu-hotel.component.html',\n    styleUrl: './babylon-submenu-hotel.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonSubmenuHotelComponent implements OnInit {\n    @Input() items?: BabylonButtonI[];\n    @Input() selected?: BabylonButtonI;\n    @Input() styles?: BabylonHotelStylesItem;\n\n    headerFixed = false;\n    isDropdownOpen = false;\n\n    private platformId = inject(PLATFORM_ID);\n\n    ngOnInit() {\n        this.checkScroll();\n    }\n\n    @HostListener('window:scroll', [])\n    onWindowScroll() {\n        this.checkScroll();\n    }\n\n    private checkScroll() {\n        if (isPlatformBrowser(this.platformId)) {\n            const scrollPosition = window.scrollY;\n            this.headerFixed = scrollPosition > 100;\n        }\n    }\n\n    toggleDropdown(): void {\n        this.isDropdownOpen = !this.isDropdownOpen;\n    }\n}\n","<section\n    class=\"babylon__submenu-hotel\"\n    [ngClass]=\"{\n        cs_gescout_sticky: headerFixed,\n        'submenu-open': isDropdownOpen,\n    }\"\n>\n    <!-- Trigger for tablet -->\n    <div class=\"submenu-trigger\" (click)=\"toggleDropdown()\">\n        <span>MENU</span>\n        <span class=\"hamburger-icon\">\n            <span></span>\n            <span></span>\n            <span></span>\n        </span>\n    </div>\n\n    @if (items) {\n        <div class=\"babylon__submenu-content\">\n            @if (styles && styles.logos?.length! > 0) {\n                <div class=\"cs_logo_left\">\n                    <div class=\"cs_logo_item\">\n                        <img\n                            [src]=\"styles.logos?.[0]\"\n                            class=\"cs_logo\"\n                            width=\"250\"\n                            loading=\"lazy\"\n                        />\n                    </div>\n                </div>\n            }\n            <nav class=\"submenu\">\n                <ul>\n                    @for (item of items; track $index) {\n                        @if (item) {\n                            <li>\n                                <a\n                                    [attr.aria-label]=\"item.label\"\n                                    [href]=\"item.url\"\n                                    (click)=\"toggleDropdown()\"\n                                    [linkType]=\"item.linkType\"\n                                    [ngClass]=\"{\n                                        active:\n                                            selected?.label?.toLowerCase() ===\n                                            item?.label?.toLowerCase(),\n                                    }\"\n                                    >{{ item?.label }}</a\n                                >\n                            </li>\n                        }\n                    }\n                </ul>\n            </nav>\n        </div>\n    }\n</section>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { BabylonButtonI } from '../../../interfaces/babylon-button.interface';\nimport { RouterModule } from '@angular/router';\n\n@Component({\n    selector: 'lib-babylon-thanks',\n    standalone: true,\n    imports: [RouterModule],\n    templateUrl: './babylon-thanks.component.html',\n    styleUrl: './babylon-thanks.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonThanksComponent {\n    @Input() pretitle?: string;\n    @Input() title?: string;\n    @Input() text?: string;\n    @Input() button?: BabylonButtonI;\n\n    btnClick(e: Event): void {\n        e.preventDefault();\n    }\n}\n","<section class=\"babylon__thank margin-main\">\n    <div class=\"container\">\n        <div class=\"intro_info align--center no-align\">\n            @if (pretitle) {\n                <h2 class=\"pretitle\">{{ pretitle }}</h2>\n            }\n            @if (title) {\n                <h3 class=\"title mb--10\">{{ title }}</h3>\n            }\n            @if (text) {\n                <p class=\"text mb--10\">{{ text }}</p>\n            }\n        </div>\n        @if (button) {\n            <div class=\"btns__box align--center\">\n                <a\n                    [attr.aria-label]=\"button.label\"\n                    (click)=\"btnClick($event)\"\n                    [href]=\"button.url\"\n                    [routerLink]=\"button.url\"\n                    class=\"btn btn_primary\"\n                >\n                    <b>{{ button.label }}</b>\n                    <span class=\"babylon-arrow-right-big\"></span>\n                </a>\n            </div>\n        }\n    </div>\n</section>\n","// directives/show-only-at-top.directive.ts\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n    AfterViewInit,\n    Directive,\n    HostBinding,\n    Inject,\n    Input,\n    NgZone,\n    OnDestroy,\n    PLATFORM_ID,\n} from '@angular/core';\n\n@Directive({\n    selector: '[showOnlyAtTop]',\n    standalone: true,\n})\nexport class ShowOnlyAtTopDirective implements AfterViewInit, OnDestroy {\n    /** Rango en px desde el top en el que el botón permanece visible */\n    @Input() topShowPx = 10; // ajusta a 4–16 si quieres más/menos sensible\n    @Input() minWidth = 540;\n    private hidden = false;\n    private active = false;\n    private offScroll?: () => void;\n    private offResize?: () => void;\n    private ticking = false;\n\n    @HostBinding('style.transition') t =\n        'opacity .25s ease, transform .25s ease';\n    @HostBinding('class.is-hidden') get cls() {\n        return this.hidden;\n    }\n    @HostBinding('style.opacity') get op() {\n        return this.hidden ? '0' : '1';\n    }\n    @HostBinding('style.pointerEvents') get pe() {\n        return this.hidden ? 'none' : 'auto';\n    }\n\n    constructor(private zone: NgZone, @Inject(PLATFORM_ID) private platformId: object) {}\n\n    ngAfterViewInit(): void {\n      if (!isPlatformBrowser(this.platformId)) return;\n        const evaluateScroll = () => {\n            const y = Math.max(\n                window.scrollY,\n                document.documentElement.scrollTop || 0\n            );\n            const shouldHide = this.active && y > this.topShowPx;\n            if (shouldHide !== this.hidden) this.hidden = shouldHide;\n        };\n\n        const applyActiveState = () => {\n            const nowActive = window.innerWidth >= this.minWidth;\n            if (nowActive === this.active) return;\n            this.active = nowActive;\n            if (!this.active) {\n                // Desactivado en < minWidth: muestra siempre y no escucha scroll\n                this.hidden = false;\n                window.removeEventListener('scroll', onScroll);\n            } else {\n                // Re-activar\n                window.addEventListener('scroll', onScroll, { passive: true });\n                evaluateScroll();\n            }\n        };\n\n        const onScroll = () => {\n            if (this.ticking) return;\n            this.ticking = true;\n            requestAnimationFrame(() => {\n                evaluateScroll();\n                this.ticking = false;\n            });\n        };\n\n        const onResize = () => {\n            applyActiveState();\n            if (this.active) onScroll();\n        };\n\n        this.zone.runOutsideAngular(() => {\n            // Setup inicial\n            applyActiveState();\n            if (this.active) {\n                window.addEventListener('scroll', onScroll, { passive: true });\n                evaluateScroll();\n            }\n            window.addEventListener('resize', onResize, { passive: true });\n            this.offScroll = () =>\n                window.removeEventListener('scroll', onScroll);\n            this.offResize = () =>\n                window.removeEventListener('resize', onResize);\n        });\n    }\n\n    ngOnDestroy(): void {\n        this.offScroll?.();\n        this.offResize?.();\n    }\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport {\n    ChangeDetectorRef,\n    Component,\n    HostListener,\n    Inject,\n    Input,\n    PLATFORM_ID,\n    inject,\n} from '@angular/core';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport { ScrollToDirective } from '../../../directives/scrolls/scroll-to.directive';\nimport { ShowOnlyAtTopDirective } from '../../../directives/scrolls/show-only-top.directive';\nimport { StickyAvoidFooterDirective } from '../../../directives/utils/sticky-avoid-footer.directive';\nimport {\n    BabylonButtonI,\n    BabylonRoomDetailI,\n    BabylonTextInfoI,\n} from '../../../interfaces';\nimport { BabylonMultimediaI } from '../../../interfaces/babylon-multimedia.interface';\nimport { ScreenSizerService } from '../../../services/screen-sizer';\nimport { getImagesByTagFromMultimedia } from '../../../utils/mutimedia.utils';\n\n@Component({\n    selector: 'lib-babylon-top-simple-banner',\n    standalone: true,\n    imports: [\n        ScrollToDirective,\n        StickyAvoidFooterDirective,\n        ShowOnlyAtTopDirective,\n        BabylonLinkTypeDirective,\n    ],\n    templateUrl: './babylon-top-simple-banner.component.html',\n    styleUrl: './babylon-top-simple-banner.component.scss',\n})\nexport class BabylonTopSimpleBannerComponent {\n    @Input() texts?: BabylonTextInfoI;\n    @Input() multimedia?: BabylonMultimediaI;\n    @Input() buttons?: BabylonButtonI[];\n    @Input() hiddenRightButtons?: boolean = false;\n    @Input() room?: BabylonRoomDetailI;\n\n    tagName: string = 'TopSimpleBanner';\n\n    // Inyectamos los servicios necesarios para la detección móvil\n    private screenSizer = inject(ScreenSizerService);\n    private cdr = inject(ChangeDetectorRef);\n    public isMobile: boolean = false;\n\n    constructor(@Inject(PLATFORM_ID) private platformId: Object) {\n        this.checkScreenSize();\n    }\n\n    // Escuchamos los cambios de tamaño de pantalla\n    @HostListener('window:resize')\n    onResize() {\n        this.checkScreenSize();\n    }\n\n    private checkScreenSize() {\n        if (isPlatformBrowser(this.platformId)) {\n            const currentIsMobile = this.screenSizer.maxMediumTablet();\n            // Solo forzamos el redibujado si cambia el estado (optimización de rendimiento)\n            if (this.isMobile !== currentIsMobile) {\n                this.isMobile = currentIsMobile;\n                this.cdr.markForCheck();\n            }\n        }\n    }\n\n    get vm() {\n        // Definimos qué array de botones vamos a usar\n        const currentButtons = this.room?.buttons?.length\n            ? this.room.buttons\n            : this.buttons; // Buscamos el botón con order 2, si no existe tomamos el primero\n\n        const primaryButton =\n            currentButtons?.find((btn) => btn?.order === '2') ||\n            currentButtons?.[0];\n\n        if (this.room) {\n            return {\n                title: this.room.texts?.name,\n                subtitle:\n                    this.room.texts?.additional1 ||\n                    this.room.texts?.additional2,\n                descriptionTitle: null,\n                description: this.room.texts?.description,\n                additional2: this.room.texts?.additional2,\n                additional3: this.room.texts?.additional3,\n                buttons: currentButtons,\n                primaryButton: primaryButton,\n                multimedia: this.room.multimedia || this.multimedia,\n            };\n        } else {\n            return {\n                title: this.multimedia?.imagenes?.[0]?.title,\n                subtitle: this.multimedia?.imagenes?.[0]?.subtitle,\n                descriptionTitle: null,\n                description: this.multimedia?.imagenes?.[0]?.description,\n                additional2: null,\n                additional3: null,\n                buttons: currentButtons,\n                primaryButton: primaryButton,\n                multimedia: this.multimedia,\n            };\n        }\n    }\n\n    getImagesByTag(tagName: string) {\n        const currentMultimedia = this.vm.multimedia;\n\n        // 1. Si es móvil y tenemos la propiedad 'imagenesmobile' llena, la devolvemos.\n        if (this.isMobile && currentMultimedia?.mobileImagenes?.length) {\n            return currentMultimedia.mobileImagenes;\n        }\n\n        // 2. Si no es móvil (o no hay imagenesmobile configuradas), intentamos buscar por Tag\n        const taggedImages = getImagesByTagFromMultimedia(\n            currentMultimedia,\n            tagName\n        );\n        if (taggedImages && taggedImages.length > 0) {\n            return taggedImages;\n        }\n\n        // 3. Fallback final: Devolvemos las imagenes por defecto de desktop\n        return currentMultimedia?.imagenes;\n    }\n}\n","<section\n    class=\"top-banner js-active-slider\"\n    data-slider_pause=\"false\"\n    data-slider_name=\"js-banner-slider\"\n    data-slider_showbtns=\"false\"\n    data-slider_showdots=\"false\"\n    data-slider_fade=\"true\"\n    data-slider_autoplay=\"true\"\n    data-slides_pc=\"1\"\n>\n    @if (getImagesByTag(tagName); as imgs) {\n        <div class=\"js-banner-slider\">\n            <div class=\"top-banner__item\">\n                <img\n                    [src]=\"\n                        imgs?.[0]?.img?.src ||\n                        'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                    \"\n                    [alt]=\"\n                        imgs?.[0]?.img?.alt ||\n                        imgs?.[0]?.title ||\n                        'Imagen de sección'\n                    \"\n                    class=\"top-banner__image\"\n                    width=\"1800\"\n                    height=\"1244\"\n                />\n            </div>\n        </div>\n\n        <div\n            class=\"top-banner__content js-scrollto\"\n            data-scroll_spacer=\"50\"\n            data-scroll_to=\".start\"\n            role=\"button\"\n        >\n            <div class=\"top-banner__content-inner\">\n                @if (vm.title) {\n                    <h1>{{ vm.title }}</h1>\n                }\n                @if (vm.subtitle) {\n                    <p [innerHTML]=\"vm.subtitle\"></p>\n                }\n\n                <span class=\"top-banner__content-icon\">\n                    <span class=\"top-banner__content-icon--line\">\n                        <svg aria-hidden=\"true\" focusable=\"false\">\n                            <use\n                                href=\"/assets/babylon/svg/arrow-line.svg#arrow-line\"\n                            ></use>\n                        </svg>\n                    </span>\n                    <span class=\"top-banner__content-icon--img\">\n                        <svg aria-hidden=\"true\" focusable=\"false\">\n                            <use\n                                href=\"/assets/babylon/svg/icon-arrow.svg#icon-arrow\"\n                            ></use>\n                        </svg>\n                    </span>\n                </span>\n            </div>\n        </div>\n    }\n\n    <div class=\"top-banner__text\">\n        <div class=\"container\">\n            @if (vm.additional2 || vm.descriptionTitle) {\n                <h3 [innerHTML]=\"vm.additional2 ?? vm.descriptionTitle\"></h3>\n            }\n            @if (vm.additional3 ?? vm.description) {\n                <p [innerHTML]=\"vm.additional3 ?? vm.description\"></p>\n            }\n        </div>\n    </div>\n\n    <span class=\"hero-banner__cookies\">\n        <svg\n            aria-hidden=\"true\"\n            focusable=\"false\"\n            class=\"hero-banner__cookies--img\"\n        >\n            <use href=\"/assets/babylon/svg/icon-cookies.svg#icon-cookies\"></use>\n        </svg>\n    </span>\n\n    @if (!hiddenRightButtons) {\n        <div\n            class=\"hero-banner__actions\"\n            stickyAvoidFooter\n            [footerSelector]=\"'.footer__links'\"\n            [viewportPadding]=\"30\"\n            [defaultBottom]=\"'3rem'\"\n            [overlapAdjustPx]=\"10\"\n        >\n            <span\n                class=\"hero-banner__actions--icon hero-banner__actions--whatsapp\"\n            >\n                <span>Whatsapp</span>\n                <span class=\"hero-banner__actions--img\">\n                    <svg aria-hidden=\"true\" focusable=\"false\">\n                        <use\n                            href=\"/assets/babylon/svg/icon-whatsapp.svg#icon-whatsapp\"\n                        ></use>\n                    </svg>\n                </span>\n            </span>\n            <span\n                class=\"hero-banner__actions--icon js-active-modal\"\n                data-modal_name=\"newsletter\"\n            >\n                <span>Newsletter</span>\n                <span class=\"hero-banner__actions--img\">\n                    <svg aria-hidden=\"true\" focusable=\"false\">\n                        <use\n                            href=\"/assets/babylon/svg/icon-envelope.svg#icon-envelope\"\n                        ></use>\n                    </svg>\n                </span>\n            </span>\n        </div>\n    }\n\n    @if (vm.primaryButton; as btn) {\n        @if (btn?.label || btn?.url) {\n            <div\n                class=\"btn__group\"\n                fadeWithScroll\n                showOnlyAtTop\n                [topShowPx]=\"12\"\n                [minWidth]=\"540\"\n            >\n                <a\n                    [attr.aria-label]=\"btn.label\"\n                    [href]=\"btn.url\"\n                    [linkType]=\"btn.linkType\"\n                    class=\"btn btn__primary\"\n                >\n                    <span>{{ btn.label }}</span>\n                </a>\n            </div>\n        }\n    }\n</section>\n\n<div class=\"start\"></div>\n","import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n    AfterViewInit,\n    Component,\n    ElementRef,\n    HostListener,\n    Inject,\n    Input,\n    PLATFORM_ID,\n    ViewChild,\n} from '@angular/core';\nimport {\n    BabylonButtonI,\n    BabylonMultimediaI,\n    BabylonTexts,\n} from '../../../interfaces';\n\n@Component({\n    selector: 'lib-babylon-top-simple-img',\n    standalone: true,\n    templateUrl: './babylon-top-simple-img.component.html',\n    styleUrl: './babylon-top-simple-img.component.scss',\n    imports: [CommonModule],\n})\nexport class BabylonTopSimpleImgComponent implements AfterViewInit {\n    @Input() rightSide?: boolean = false;\n    @Input() texts?: BabylonTexts;\n    @Input() multimedia?: BabylonMultimediaI;\n    @Input() buttons?: BabylonButtonI[];\n    @Input() useGraphic?: boolean = false;\n    @Input() svg: string = '/assets/babylon/svg/icon-graphic.svg#icon-graphic';\n\n    @ViewChild('bgSection') bgSection!: ElementRef<HTMLElement>;\n    @ViewChild('headingEl') headingEl!: ElementRef<HTMLElement>;\n\n    constructor(@Inject(PLATFORM_ID) private platformId: Object) {}\n\n    ngAfterViewInit(): void {\n        if (isPlatformBrowser(this.platformId)) {\n            // Un pequeño setTimeout asegura que Angular haya renderizado y calculado los altos reales\n            setTimeout(() => this.updateBGHeight(), 50);\n        }\n    }\n\n    @HostListener('window:resize')\n    onResize(): void {\n        if (isPlatformBrowser(this.platformId)) {\n            this.updateBGHeight();\n        }\n    }\n\n    updateBGHeight(): void {\n        if (!this.bgSection?.nativeElement || !this.headingEl?.nativeElement) {\n            return;\n        }\n\n        const heading = this.headingEl.nativeElement;\n        const bgSpan = this.bgSection.nativeElement;\n        const baseFontSize =\n            parseFloat(getComputedStyle(document.documentElement).fontSize) ||\n            16;\n\n        // 1. --- CÁLCULO DE BG-HEIGHT (Lo que ya tienes) ---\n        const totalPx = (heading.offsetTop || 0) + (heading.offsetHeight || 0);\n        const totalRem = totalPx / baseFontSize;\n        bgSpan.style.setProperty('--bg-height', `${totalRem}rem`);\n\n        // 2. --- CÁLCULO DE HEADER-HEIGHT (Si lo tienes que hacer desde aquí) ---\n        // ⚠️ Cambia 'header' por la clase o etiqueta real de tu menú (ej. '.main-header')\n        const headerElement = document.querySelector('header');\n\n        if (headerElement) {\n            const headerPx = headerElement.offsetHeight;\n            const headerRem = headerPx / baseFontSize;\n\n            // Lo guardamos en el :root (document.documentElement) para que sea global\n            // y tu SCSS (top: var(--header-height-sm)) pueda leerlo.\n            document.documentElement.style.setProperty(\n                '--header-height-sm',\n                `${headerRem}rem`\n            );\n\n            // Si también necesitas la versión de escritorio (--header-height-xxl),\n            // podrías inyectarla aquí de la misma manera.\n        }\n    }\n\n    scrollToSection(event: Event, url: string | undefined): void {\n        if (!url) return; // Si no hay URL, no hacemos nada\n\n        // Limpiamos el '#' si viene incluido (ej: '#loyalty' -> 'loyalty' | 'loyalty' -> 'loyalty')\n        const targetId = url.startsWith('#') ? url.substring(1) : url;\n\n        // Buscamos si realmente existe una sección con ese ID en la pantalla actual\n        const targetElement = document.getElementById(targetId);\n\n        if (targetElement) {\n            // ¡Bingo! Es un ancla interna. Evitamos el comportamiento por defecto del enlace.\n            event.preventDefault();\n\n            // Buscamos el header para restarle su altura\n            const headerElement = document.querySelector('header');\n            const headerHeight = headerElement\n                ? headerElement.offsetHeight\n                : 100;\n\n            // Calculamos la posición exacta y hacemos scroll\n            const elementPosition =\n                targetElement.getBoundingClientRect().top + window.scrollY;\n            const offsetPosition = elementPosition - headerHeight - 30; // 30px extra de margen\n\n            window.scrollTo({\n                top: offsetPosition,\n                behavior: 'smooth',\n            });\n        }\n        // Si no entra en el 'if', significa que no encontró el ID en la página.\n        // Por tanto, no hacemos event.preventDefault() y el enlace te llevará\n        // a la página que toque de forma natural.\n    }\n}\n","<section\n    #bgSection\n    class=\"top-simple-img-ficha__module js-bgHeight-section\"\n    [ngClass]=\"{ rightSide: ' top-simple-img-ficha__module--right' }\"\n>\n    <div class=\"container\">\n        <div class=\"top-simple-img-ficha__module-inner\">\n            <div class=\"top-simple-img-ficha__module-content\">\n                <div class=\"top-simple-img-ficha__module-content--inner\">\n                    <div\n                        #headingEl\n                        class=\"top-simple-img-ficha__module-heading js-bgHeight-heading\"\n                    >\n                        @if (texts?.title) {\n                            <h2 [innerHTML]=\"texts?.title\"></h2>\n                        }\n                        @if (texts?.subtitle) {\n                            <p [innerHTML]=\"texts?.subtitle\"></p>\n                        }\n                    </div>\n                    <div\n                        class=\"top-simple-img-ficha__module-image top-simple-img-ficha__module-image--mobile\"\n                    >\n                        @if (useGraphic) {\n                            <svg\n                                aria-hidden=\"true\"\n                                focusable=\"false\"\n                                class=\"top-simple-img-ficha__module-graphic--top\"\n                            >\n                                <use [attr.href]=\"svg\"></use>\n                            </svg>\n                            <svg\n                                aria-hidden=\"true\"\n                                focusable=\"false\"\n                                class=\"top-simple-img-ficha__module-graphic--bottom\"\n                            >\n                                <use [attr.href]=\"svg\"></use>\n                            </svg>\n                        }\n                        @if (multimedia?.imagenes?.length) {\n                            <figure>\n                                <img\n                                    [src]=\"\n                                        multimedia?.imagenes?.[0]?.img?.src ||\n                                        'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                    \"\n                                    [alt]=\"\n                                        multimedia?.imagenes?.[0]?.img?.alt ||\n                                        'image'\n                                    \"\n                                />\n                            </figure>\n                        }\n                    </div>\n                    <div class=\"top-simple-img-ficha__module-text\">\n                        <div class=\"top-simple-img-ficha__module-text--box\">\n                            @if (texts?.description) {\n                                <p [innerHTML]=\"texts?.description\"></p>\n                            }\n                        </div>\n                        @if (buttons?.length && buttons?.[0]?.label) {\n                            <div class=\"btn__group\">\n                                <a\n                                    class=\"btn btn__primary\"\n                                    [attr.aria-label]=\"buttons?.[0]?.label\"\n                                    (click)=\"\n                                        scrollToSection(\n                                            $event,\n                                            buttons?.[0]?.url\n                                        )\n                                    \"\n                                >\n                                    <span>{{ buttons?.[0]?.label }}</span>\n                                </a>\n                            </div>\n                        }\n                    </div>\n                </div>\n            </div>\n            <div\n                class=\"top-simple-img-ficha__module-image top-simple-img-ficha__module-image--desktop\"\n            >\n                @if (useGraphic) {\n                    <svg\n                        aria-hidden=\"true\"\n                        focusable=\"false\"\n                        class=\"top-simple-img-ficha__module-graphic--top\"\n                    >\n                        <use [attr.href]=\"svg\"></use>\n                    </svg>\n                    <svg\n                        aria-hidden=\"true\"\n                        focusable=\"false\"\n                        class=\"top-simple-img-ficha__module-graphic--bottom\"\n                    >\n                        <use [attr.href]=\"svg\"></use>\n                    </svg>\n                }\n                @if (multimedia?.imagenes?.length) {\n                    <figure>\n                        <img\n                            [src]=\"\n                                multimedia?.imagenes?.[0]?.img?.src ||\n                                'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                            \"\n                            [alt]=\"\n                                multimedia?.imagenes?.[0]?.img?.alt || 'image'\n                            \"\n                        />\n                    </figure>\n                }\n            </div>\n        </div>\n    </div>\n</section>\n","import { Pipe, PipeTransform, inject } from '@angular/core';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\n\n@Pipe({\n  name: 'safeUrl',\n  standalone: true\n})\nexport class SafeUrlPipe implements PipeTransform {\n  private sanitizer = inject(DomSanitizer);\n\n  transform(url: string): SafeResourceUrl {\n    return this.sanitizer.bypassSecurityTrustResourceUrl(url);\n  }\n}","import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    effect,\n    EventEmitter,\n    inject,\n    Input,\n    OnChanges,\n    OnDestroy,\n    Output,\n    PLATFORM_ID,\n    SimpleChanges,\n} from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { BabylonSwiperSliderDirective } from '../../../directives/babylon-sliders/babylon-swiper-slider.directive';\nimport { BabylonDataBackgroundDirective } from '../../../directives/data-background/data-background.directive';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport { BabylonTagsI, BabylonTextsColorsI } from '../../../interfaces';\nimport { BabylonButtonI } from '../../../interfaces/babylon-button.interface';\nimport { BabylonImageI } from '../../../interfaces/babylon-image.interface';\nimport { SafeUrlPipe } from '../../../pipes/babylon-safe-url.pipe';\nimport { ScreenSizerService } from '../../../services/screen-sizer';\nimport { Utils } from '../../../utils';\nimport { BabylonDynamicHeadingComponent } from '../../shared';\nimport { BabylonVideoSourceI } from '../babylon-top-slider-video/babylon-video-source.interface';\nimport { BabylonTopSliderItem } from './babylon-top-slider-item.interface';\n\n@Component({\n    selector: 'lib-babylon-top-slider',\n    standalone: true,\n    imports: [\n        CommonModule,\n        BabylonDataBackgroundDirective,\n        BabylonSwiperSliderDirective,\n        BabylonLinkTypeDirective,\n        BabylonDynamicHeadingComponent,\n        SafeUrlPipe,\n    ],\n    templateUrl: './babylon-top-slider.component.html',\n    styleUrl: './babylon-top-slider.component.scss',\n    changeDetection: ChangeDetectionStrategy.Default,\n})\nexport class BabylonTopSliderComponent\n    implements AfterViewInit, OnChanges, OnDestroy\n{\n    @Input() items?: BabylonTopSliderItem[];\n    @Input() buttons?: BabylonButtonI[];\n    @Input() logo?: BabylonImageI;\n    @Input() itemsMobile?: BabylonTopSliderItem[]; // Dont work, i hace to fix\n    @Input() logoTitle?: BabylonImageI;\n    @Input() tags?: BabylonTagsI;\n    @Input() textColors?: BabylonTextsColorsI;\n    @Input() videoData?: BabylonVideoSourceI;\n\n    @Output() btnClick = new EventEmitter<BabylonButtonI>();\n    @Output() modalClick = new EventEmitter<string>();\n\n    mobile: boolean = false;\n\n    private _hideVideo = false;\n    public isYTVideo = true;\n    public isVimeo = false;\n    public vimeoUrl: string = '';\n    public get hideVideo(): boolean {\n        return this._hideVideo;\n    }\n    public set hideVideo(value: boolean) {\n        this._hideVideo = value;\n        this.changeDetectorRef.markForCheck();\n    }\n\n    public actualItems: BabylonTopSliderItem[] = [];\n\n    private hasPlayerInitialized = false;\n    private observer?: IntersectionObserver;\n\n    private readonly changeDetectorRef = inject(ChangeDetectorRef);\n    private readonly screenSizer = inject(ScreenSizerService);\n    private readonly platformId = inject(PLATFORM_ID);\n\n    private destroy$ = new Subject<void>();\n\n    constructor() {\n        effect(() => {\n            this.manageVideoOrImage();\n        });\n        effect(() => {\n            const isMaxMediumTablet = this.screenSizer.maxMediumTablet();\n\n            if (isPlatformBrowser(this.platformId)) {\n                this.hideVideo =\n                    isMaxMediumTablet && !!this.itemsMobile?.length;\n                this.updateItems();\n            }\n        });\n    }\n\n    ngOnChanges(changes: SimpleChanges) {\n        if (changes['items'] || changes['itemsMobile']) {\n            this.updateItems();\n        }\n    }\n\n    ngAfterViewInit() {\n        if (!isPlatformBrowser(this.platformId)) return;\n        if (!this.screenSizer.minMediumTablet()) return;\n\n        const target = document.querySelector('.youtube-bg');\n        if (!target) return;\n\n        this.observer = new IntersectionObserver(\n            async (entries) => {\n                for (const e of entries) {\n                    if (e.isIntersecting && !this.hasPlayerInitialized) {\n                        try {\n                            await this.loadVideoPlayer();\n                        } finally {\n                            this.observer?.disconnect();\n                        }\n                    }\n                }\n            },\n            { rootMargin: '200px 0px' }\n        );\n        this.observer.observe(target);\n    }\n\n    ngOnDestroy(): void {\n        this.observer?.disconnect();\n        this.destroy$.next();\n        this.destroy$.complete();\n    }\n\n    private manageVideoOrImage(): void {\n        if (!isPlatformBrowser(this.platformId)) return;\n        const isDesktop = this.screenSizer.minMediumTablet();\n\n        if (!isPlatformBrowser(this.platformId) || !isDesktop) {\n            this.hideVideo = true;\n            return;\n        }\n\n        const src = this.videoData?.src;\n        if (src) {\n            this.hideVideo = false;\n\n            if (src.includes('vimeo.com')) {\n                this.isVimeo = true;\n                this.isYTVideo = false;\n                this.vimeoUrl = this.extractVimeoEmbedUrl(src);\n            } else {\n                this.isVimeo = false;\n                this.isYTVideo = true;\n                this.hasPlayerInitialized = false;\n                setTimeout(() => {\n                    this.loadVideoPlayer();\n                }, 0);\n            }\n        } else {\n            this.hideVideo = true;\n        }\n    }\n\n    private extractVimeoEmbedUrl(url: string): string {\n        const match = url.match(/vimeo\\.com\\/(\\d+)/);\n        const id = match ? match[1] : '';\n        return `https://player.vimeo.com/video/${id}?autoplay=1&loop=1&background=1&muted=1`;\n    }\n\n    private async loadVideoPlayer(): Promise<void> {\n        if (this.isVimeo) return;\n        await Utils.loadScript$('assets/babylon/js/jquery.min.js').toPromise();\n        await this.waitFor(() => (window as any).jQuery || (window as any).$);\n        const w = window as any;\n        if (!w.$ && w.jQuery) w.$ = w.jQuery;\n\n        const src = await this.waitFor(() => this.videoData?.src);\n        const videoId = this.extractYouTubeId(src!);\n        if (!videoId) {\n            console.warn('YT src no válido:', src);\n            return;\n        }\n\n        await Utils.loadScript$(\n            'assets/babylon/js/jquery.mb.YTPlayer.min.js'\n        ).toPromise();\n        await this.waitFor(() => w.$?.fn?.YTPlayer);\n\n        if (this.hasPlayerInitialized) return;\n\n        const $ = w.$;\n        const videoEl = $('#bgndVideo');\n        if (!videoEl?.length) return;\n        this.hasPlayerInitialized = true;\n\n        videoEl.YTPlayer({\n            videoURL: videoId,\n            containment: '.youtube-bg',\n            autoPlay: true,\n            mute: true,\n            startAt: 1,\n            opacity: 1,\n            showControls: false,\n            loop: true,\n            stopMovieOnBlur: false,\n            quality: 'hd1080',\n            ratio: '16/9',\n            optimizeDisplay: true,\n        });\n\n        videoEl.on('YTPReady', () => {\n            try {\n                const player = videoEl.YTPGetPlayer();\n                player?.setPlaybackQuality?.('hd1080');\n            } catch {}\n        });\n    }\n\n    private waitFor<T>(\n        cond: () => T | undefined | null,\n        interval = 50,\n        timeout = 5000\n    ): Promise<T> {\n        return new Promise((resolve, reject) => {\n            const t0 = Date.now();\n            const tick = () => {\n                const v = cond();\n                if (v) return resolve(v);\n                if (Date.now() - t0 > timeout)\n                    return reject(new Error('waitFor timeout'));\n                setTimeout(tick, interval);\n            };\n            tick();\n        });\n    }\n\n    private extractYouTubeId(input: string): string | null {\n        if (!input) return null;\n\n        const idOnly = /^[\\w-]{6,}$/i;\n        if (idOnly.test(input)) return input;\n        const m = input.match(\n            /(?:v=|\\/(?:embed|shorts|v)\\/|youtu\\.be\\/)([\\w-]{6,})/i\n        );\n        return m ? m[1] : null;\n    }\n\n    scrollToSection(event: Event, sectionId: string): void {\n        event.preventDefault();\n        if (isPlatformBrowser(this.platformId)) {\n            const section = document.getElementById(sectionId);\n            if (section) {\n                section.scrollIntoView({ behavior: 'smooth' });\n            }\n        }\n    }\n\n    private updateItems() {\n        if (!isPlatformBrowser(this.platformId)) {\n            this.actualItems = [...(this.items ?? [])];\n        } else if (\n            this.itemsMobile?.length &&\n            this.screenSizer.maxMediumTablet()\n        ) {\n            this.actualItems = [...this.itemsMobile];\n        } else {\n            this.actualItems = [...(this.items ?? [])];\n        }\n\n        this.changeDetectorRef.markForCheck();\n    }\n}\n","<section class=\"babylon__topslider margin-main-botom\" babylonSwiperSlider>\n    <div\n        [class]=\"\n            videoData?.src && !hideVideo\n                ? 'cs_hero cs_style_4 cs_primary_bg cs_bg_filed text-center position-relative youtube-bg'\n                : 'cs_parallax_slider loading overflow-hidden position-relative'\n        \"\n    >\n        @if (videoData?.src && !hideVideo) {\n            @if (isYTVideo) {\n                <div id=\"bgndVideo\" class=\"player\"></div>\n            }\n            @if (isVimeo) {\n                <div class=\"vimeo-wrapper\">\n                    <iframe\n                        [src]=\"vimeoUrl | safeUrl\"\n                        frameborder=\"0\"\n                        allow=\"autoplay; fullscreen\"\n                    ></iframe>\n                </div>\n            }\n        } @else if (actualItems.length) {\n            <div class=\"swiper-wrapper\">\n                @for (item of actualItems; track item) {\n                    <div class=\"swiper-slide\">\n                        <div\n                            class=\"cs_hero cs_style_1 cs_center text-center position-relative\"\n                        >\n                            <figure\n                                class=\"cs_swiper_parallax_bg cs_hero_bg cs_bg_filed h-100 w-100 position-absolute top-0 start-0 mb-0\"\n                                [attr.data-src]=\"\n                                    item?.img?.src ||\n                                    'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                \"\n                                [style.background-image]=\"\n                                    item?.img?.src\n                                        ? 'url(' + item.img?.src + ')'\n                                        : 'url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)'\n                                \"\n                                [dataBackground]=\"item?.img?.src || ''\"\n                            >\n                                @if (item?.img?.src) {\n                                    <img\n                                        [attr.src]=\"\n                                            item.img?.src ||\n                                            'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                        \"\n                                        [attr.alt]=\"\n                                            item.img?.alt ||\n                                            item.img?.title ||\n                                            'Imagen de sección'\n                                        \"\n                                        style=\"display: none\"\n                                    />\n                                }\n                            </figure>\n                            <div\n                                class=\"container position-relative cs_zindex_3\"\n                            >\n                                <div class=\"cs_hero_text\">\n                                    @if (item.subtitle) {\n                                        <lib-babylon-dynamic-heading\n                                            [tag]=\"tags?.title || 'p'\"\n                                            cssClass=\"pretitle_carrusel\"\n                                            [content]=\"item.subtitle\"\n                                            [color]=\"textColors?.title\"\n                                        ></lib-babylon-dynamic-heading>\n                                    }\n                                    @if (logoTitle && logoTitle.src) {\n                                        <div class=\"logo_title\">\n                                            <img\n                                                [src]=\"logoTitle.src\"\n                                                [alt]=\"\n                                                    logoTitle.alt ||\n                                                    'Logo de sección'\n                                                \"\n                                                loading=\"lazy\"\n                                            />\n                                        </div>\n                                    } @else {\n                                        @if (item.title) {\n                                            <lib-babylon-dynamic-heading\n                                                [tag]=\"\n                                                    tags && tags.title\n                                                        ? tags.title\n                                                        : $index == 0\n                                                          ? 'h1'\n                                                          : 'h2'\n                                                \"\n                                                cssClass=\"title_carrusel\"\n                                                [content]=\"item.title\"\n                                                [color]=\"textColors?.title\"\n                                            ></lib-babylon-dynamic-heading>\n                                        }\n                                    }\n                                    @if (item?.buttons?.length) {\n                                        @for (\n                                            button of item?.buttons;\n                                            track $index\n                                        ) {\n                                            <div\n                                                class=\"btns__box align--center\"\n                                            >\n                                                <a\n                                                    [linkType]=\"\n                                                        button?.linkType\n                                                    \"\n                                                    [href]=\"button?.url ?? '#'\"\n                                                    [modalClick]=\"modalClick\"\n                                                    class=\"btn btn_primary btn--light\"\n                                                >\n                                                    <b>{{\n                                                        button?.label ?? ''\n                                                    }}</b>\n                                                    <span\n                                                        class=\"babylon-arrow-right-big\"\n                                                    ></span>\n                                                </a>\n                                            </div>\n                                        }\n                                    }\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                }\n            </div>\n        }\n    </div>\n    @if (actualItems && actualItems.length > 1 && !videoData?.src) {\n        <div class=\"cs_slider_navigation cs_white_color\">\n            <div class=\"cs_swiper_button_prev\">\n                <span class=\"babylon-arrow-left-big\"></span>\n            </div>\n            <div class=\"cs_swiper_button_next\">\n                <span class=\"babylon-arrow-right-big\"></span>\n            </div>\n        </div>\n    }\n    @if (logo) {\n        <img\n            [src]=\"logo.src\"\n            [alt]=\"logo.alt\"\n            class=\"top-slider-logo\"\n            loading=\"lazy\"\n        />\n    }\n    <div class=\"mouse_wp\">\n        <button\n            type=\"button\"\n            class=\"cs_down_btn_2\"\n            aria-label=\"Desplazarse a la primera sección\"\n            (click)=\"scrollToSection($event, 'first_section')\"\n        >\n            <div class=\"mouse\"></div>\n        </button>\n    </div>\n</section>\n<div id=\"first_section\"></div>\n","import { DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport {\n    AfterViewInit,\n    Component,\n    ElementRef,\n    Inject,\n    Input,\n    OnDestroy,\n    PLATFORM_ID,\n    ViewChild,\n} from '@angular/core';\nimport { SlickInitDirective } from '../../../directives/sliders/slick-init.directive';\nimport { BabylonMultimediaI, BabylonTextInfoI } from '../../../interfaces';\n\ndeclare global {\n    interface Window {\n        YT: any;\n        onYouTubeIframeAPIReady?: () => void;\n    }\n}\n\n@Component({\n    selector: 'lib-babylon-top-slider-img-video',\n    standalone: true,\n    imports: [SlickInitDirective],\n    templateUrl: './babylon-top-slider-img-video.component.html',\n    styleUrl: './babylon-top-slider-img-video.component.scss',\n})\nexport class BabylonTopSliderImgVideoComponent\n    implements AfterViewInit, OnDestroy\n{\n    /** Modo vídeo o imágenes */\n    @Input() video?: string = 'M8gcKlBeGIo';\n    @Input() multimedia?: BabylonMultimediaI;\n    @Input() texts?: BabylonTextInfoI;\n\n    @ViewChild('ytPlayer', { static: false })\n    ytPlayerRef?: ElementRef<HTMLDivElement>;\n\n    private player?: any;\n\n    constructor(\n        @Inject(DOCUMENT) private document: Document,\n        @Inject(PLATFORM_ID) private platformId: Object\n    ) {}\n\n    private get isBrowser(): boolean {\n        return isPlatformBrowser(this.platformId);\n    }\n\n    ngAfterViewInit(): void {\n        if (!this.isBrowser || !this.video) return;\n\n        this.loadYouTubeApi();\n    }\n\n    ngOnDestroy(): void {\n        if (this.player && typeof this.player.destroy === 'function') {\n            this.player.destroy();\n        }\n    }\n\n    // =========================\n    //   YOUTUBE API\n    // =========================\n    private loadYouTubeApi(): void {\n        // Si ya está cargada la API\n        if (window.YT && window.YT.Player) {\n            this.initPlayer();\n            return;\n        }\n\n        // Evitar cargar el script varias veces\n        const existingScript =\n            this.document.getElementById('youtube-iframe-api');\n        if (!existingScript) {\n            const tag = this.document.createElement('script');\n            tag.id = 'youtube-iframe-api';\n            tag.src = 'https://www.youtube.com/iframe_api';\n            tag.async = true;\n            const firstScript = this.document.getElementsByTagName('script')[0];\n            firstScript.parentNode?.insertBefore(tag, firstScript);\n        }\n\n        // Callback global exigido por la API\n        window.onYouTubeIframeAPIReady = () => {\n            this.initPlayer();\n        };\n    }\n\n    private initPlayer(): void {\n        if (!this.ytPlayerRef) return;\n\n        this.player = new window.YT.Player(this.ytPlayerRef.nativeElement, {\n            videoId: this.video,\n            width: 1920,\n            height: 1080,\n            playerVars: {\n                enablejsapi: 1,\n                autoplay: 1,\n                controls: 0,\n                showinfo: 0,\n                mute: 1,\n                modestbranding: 1,\n                loop: 1,\n                fs: 1,\n                cc_load_policy: 1,\n                iv_load_policy: 3,\n                autohide: 1,\n                rel: 0,\n                playsinline: 1,\n                playlist: this.video, // necesario para loop\n            },\n            events: {\n                onReady: (e: any) => {\n                    e.target.mute();\n                    e.target.playVideo();\n                },\n                onStateChange: (e: any) => {\n                    e.target.setPlaybackQuality('highres');\n\n                    if (e.data === window.YT.PlayerState.PLAYING) {\n                        const iframe =\n                            this.document.getElementById('YouTubeVideoPlayer');\n                        if (iframe) iframe.style.opacity = '1';\n                    }\n\n                    if (e.data === window.YT.PlayerState.ENDED) {\n                        e.target.playVideo();\n                        e.target.mute();\n                    }\n                },\n            },\n        });\n    }\n}\n","<section\n    class=\"TopVid js-active-slider\"\n    appSlickInit\n    data-slider_pause=\"false\"\n    data-slider_name=\"js-banner-slider\"\n    data-slider_showbtns=\"true\"\n    data-slider_showdots=\"false\"\n    data-slider_fade=\"true\"\n    data-slider_autoplay=\"true\"\n    data-slides_pc=\"1\"\n>\n    <!-- if TopVid image-->\n    @if (!video && multimedia?.imagenes) {\n        <div class=\"swiper js-banner-slider\">\n            @for (item of multimedia?.imagenes; track $index) {\n                <div class=\"swiper-wrapper\">\n                    <div class=\"swiper-slide\">\n                        <div class=\"TopVid__item\">\n                            <img\n                                [src]=\"\n                                    item.img?.src ||\n                                    'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                \"\n                                [alt]=\"item.img?.alt\"\n                                class=\"TopVid__image\"\n                                width=\"1800\"\n                                height=\"935\"\n                            />\n                        </div>\n                    </div>\n                </div>\n            }\n        </div>\n    }\n    <!-- if TopVid image -->\n    <!-- if TopVid video -->\n    @if (video) {\n        <div class=\"TopVid__video\">\n            <div class=\"TopVid__video--inner\">\n                <div\n                    #ytPlayer\n                    id=\"YouTubeVideoPlayer\"\n                    class=\"TopVid__video-player\"\n                ></div>\n            </div>\n        </div>\n    }\n    <!-- if TopVid video -->\n</section>\n","import {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    Input,\n} from '@angular/core';\nimport { BabylonImageI } from '../../../interfaces/babylon-image.interface';\nimport { CommonModule } from '@angular/common';\nimport { BabylonSlidersDirective } from '../../../directives/babylon-sliders/babylon-sliders.directive';\nimport { BabylonCurrencyPipe } from '../../../pipes/babylon-currency.pipe';\nimport { BabylonDataBackgroundDirective } from '../../../directives/data-background/data-background.directive';\n\n@Component({\n    selector: 'lib-babylon-top-slider-thumbs',\n    standalone: true,\n    imports: [\n        CommonModule,\n        BabylonSlidersDirective,\n        BabylonCurrencyPipe,\n        BabylonDataBackgroundDirective,\n    ],\n    templateUrl: './babylon-top-slider-thumbs.component.html',\n    styleUrl: './babylon-top-slider-thumbs.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonTopSliderThumbsComponent implements AfterViewInit {\n    @Input() title?: string;\n    @Input() from?: string;\n    @Input() currency?: string;\n    @Input() price?: number;\n    @Input() images?: BabylonImageI[];\n\n    constructor(private cdr: ChangeDetectorRef) {}\n\n    ngAfterViewInit() {\n        setTimeout(() => {\n            this.cdr.detectChanges();\n        }, 100);\n    }\n}\n","<section class=\"babylon__topslider-thumbs margin-main-botom\">\n    <div class=\"position-relative cs_gallery_hover_show_nav\">\n        <div\n            class=\"cs_gallery_slider_thumb_2 slick-slider\"\n            sliders=\"cs_gallery_slider_thumb_2\"\n        >\n            @if (images?.length) {\n                @for (image of images; track $index) {\n                    <div\n                        class=\"cs_gallery_slider_thumb_item_2 cs_bg_filed\"\n                        dataBackground=\"url('{{ image?.src }}')\"\n                    ></div>\n                }\n            }\n        </div>\n        <div class=\"cs_gallery_slider_nav_2_wrap\">\n            <div class=\"container position-relative cs_gallery_slider_nav_2_in\">\n                <div class=\"intro_info intro_info--light\">\n                    @if (title) {\n                        <h1 class=\"title mb--10\">{{ title }}</h1>\n                    }\n                    <p class=\"subtitle mb--0\">\n                        @if (from) {\n                            <span class=\"text\">\n                                {{ from }}\n                            </span>\n                        }\n                        @if (price) {\n                            {{ price }}\n                        }\n                        @if (currency) {\n                            {{ currency | currencySymbol }}\n                        }\n                    </p>\n                </div>\n                <div\n                    class=\"cs_gallery_slider_nav_2 slick-slider\"\n                    sliders=\"cs_gallery_slider_nav_2\"\n                >\n                    @if (images?.length) {\n                        @for (image of images; track $index) {\n                            <div\n                                class=\"cs_gallery_slider_thumb_mini_2 cs_bg_filed\"\n                                [attr.data-src]=\"\n                                    image?.src ||\n                                    'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                \"\n                                dataBackground=\"url('{{ image?.src }}')\"\n                            ></div>\n                        }\n                    }\n                </div>\n            </div>\n        </div>\n        <div\n            class=\"cs_left_arrow_gallery_2 cs_center cs_mobile_hide cs_slider_navigation cs_white_color\"\n        >\n            <div class=\"cs_swiper_button_prev\">\n                <span class=\"babylon-arrow-left-big\"></span>\n            </div>\n        </div>\n        <div\n            class=\"cs_right_arrow_gallery_2 cs_center cs_mobile_hide cs_slider_navigation cs_white_color\"\n        >\n            <div class=\"cs_swiper_button_next\">\n                <span class=\"babylon-arrow-right-big\"></span>\n            </div>\n        </div>\n    </div>\n</section>\n","import { CommonModule } from '@angular/common';\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    EventEmitter,\n    Input,\n    Output,\n} from '@angular/core';\nimport { BabylonSwiperSliderDirective } from '../../../directives/babylon-sliders/babylon-swiper-slider.directive';\nimport { BabylonButtonI } from '../../../interfaces/babylon-button.interface';\nimport { BabylonTopSliderItem } from '../babylon-top-slider/babylon-top-slider-item.interface';\nimport { BabylonTopSliderV2Item } from './babylon-top-slider-v2-item.interface';\n\n@Component({\n    selector: 'lib-babylon-top-slider-v2',\n    standalone: true,\n    imports: [CommonModule, BabylonSwiperSliderDirective],\n    templateUrl: './babylon-top-slider-v2.component.html',\n    styleUrl: './babylon-top-slider-v2.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonTopSliderV2Component {\n    @Input() rightSide: boolean = false;\n    @Input() labels?: BabylonTopSliderV2Item;\n    @Input() items?: BabylonTopSliderItem[];\n    @Input() buttons?: BabylonButtonI | BabylonButtonI[];\n\n    @Output() btnClick = new EventEmitter<BabylonButtonI>();\n\n    get normalizedButton(): BabylonButtonI | undefined {\n        if (!this.buttons) return undefined;\n        return Array.isArray(this.buttons) ? this.buttons[0] : this.buttons;\n    }\n}\n","<section\n    class=\"babylon__topsliderv2 cs_hero cs_style_2 position-relative margin-main-botom\"\n    babylonSwiperSlider\n>\n    @if (items) {\n        <div\n            class=\"cs_bg_filed\"\n            [ngClass]=\"{\n                cs_hero_left_right: rightSide,\n                cs_hero_left_img: !rightSide,\n            }\"\n        >\n            <div\n                class=\"cs_parallax_slider loading overflow-hidden position-relative\"\n            >\n                <div class=\"swiper-wrapper\">\n                    @for (item of items; track $index) {\n                        <div class=\"swiper-slide\">\n                            <div\n                                class=\"cs_hero cs_style_1 cs_center text-center position-relative\"\n                            >\n                                <figure\n                                    class=\"cs_swiper_parallax_bg cs_hero_bg cs_bg_filed h-100 w-100 position-absolute top-0 start-0 mb-0\"\n                                    [style.background-image]=\"\n                                        'url(' + (item.img?.src || item.img) + ')'\n                                    \"\n                                ></figure>\n                            </div>\n                        </div>\n                    }\n                </div>\n            </div>\n            <div class=\"cs_slider_navigation cs_white_color\">\n                <div class=\"cs_swiper_button_prev\">\n                    <span class=\"babylon-arrow-left-big\"></span>\n                </div>\n                <div class=\"cs_swiper_button_next\">\n                    <span class=\"babylon-arrow-right-big\"></span>\n                </div>\n            </div>\n        </div>\n    }\n    <div class=\"cs_hero_in\">\n        <div class=\"cs_hero_content cs_center\">\n            <div class=\"container\">\n                <div class=\"row\">\n                    <div class=\"col-lg-12\">\n                        <div class=\"cs_hero_text intro_info\">\n                            @if (labels?.subtitle) {\n                                <h2\n                                    class=\"pretitle_carrusel pretitle_carrusel--dark\"\n                                >\n                                    {{ labels?.subtitle || labels?.pretitle }}\n                                </h2>\n                            }\n                            @if (labels?.title) {\n                                <h1\n                                    class=\"title_carrusel title_carrusel--dark wow fadeInRight\"\n                                    data-wow-duration=\"0.8s\"\n                                    data-wow-delay=\"0.2s\"\n                                >\n                                    {{ labels?.title }}\n                                </h1>\n                            }\n                            @if (labels?.description || labels?.text) {\n                                <p class=\"text\">{{ labels?.description }}</p>\n                                <p class=\"text\">{{ labels?.text }}</p>\n                            }\n                            @if (normalizedButton) {\n                                <div class=\"btns__box\">\n                                    <a\n                                        [attr.aria-label]=\"normalizedButton.label\"\n                                        [href]=\"normalizedButton.url\"\n                                        class=\"btn btn_primary\"\n                                    >\n                                        <b>{{ normalizedButton.label }}</b>\n                                        <span\n                                            class=\"babylon-arrow-right-big\"\n                                        ></span>\n                                    </a>\n                                </div>\n                            }\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n</section>\n","import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport { Component, inject, Input, OnInit, PLATFORM_ID } from '@angular/core';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\n\nimport {\n    BabylonImageI,\n    BabylonTagsI,\n    BabylonTextsColorsI,\n} from '../../../interfaces';\nimport { BabylonButtonI } from '../../../interfaces/babylon-button.interface';\nimport { BabylonDynamicHeadingComponent } from '../../shared';\nimport { BabylonVideoSourceI } from './babylon-video-source.interface';\n\n@Component({\n    selector: 'lib-babylon-top-slider-video',\n    standalone: true,\n    imports: [CommonModule, BabylonDynamicHeadingComponent],\n    templateUrl: './babylon-top-slider-video.component.html',\n    styleUrl: './babylon-top-slider-video.component.scss',\n})\nexport class BabylonTopSliderVideoComponent implements OnInit {\n    @Input() labelInfos?: BabylonLabelInfo;\n    @Input() imgTexts?: BabylonLabelInfo;\n    @Input() videoData?: BabylonVideoSourceI;\n    @Input() smallVideoData?: BabylonVideoSourceI;\n    @Input() button?: BabylonButtonI;\n    @Input() img?: BabylonImageI;\n    @Input() tags?: BabylonTagsI;\n    @Input() textColors?: BabylonTextsColorsI;\n\n    private sanitizer = inject(DomSanitizer);\n    private platform = inject(PLATFORM_ID);\n\n    videoUrl: SafeResourceUrl | null = null;\n\n    ngOnInit(): void {\n        if (!isPlatformBrowser(this.platform)) return;\n\n        const src = this.videoData?.src || this.smallVideoData?.src;\n        if (!src) return;\n\n        const id = this.extractYouTubeId(src);\n        if (!id) return;\n\n        const url = `https://www.youtube-nocookie.com/embed/${id}?autoplay=1&mute=1&loop=1&playlist=${id}&controls=0&modestbranding=1&rel=0`;\n\n        this.videoUrl = this.sanitizer.bypassSecurityTrustResourceUrl(url);\n    }\n\n    private extractYouTubeId(input: string): string | null {\n        if (!input) return null;\n\n        const idOnly = /^[\\w-]{6,}$/i;\n        if (idOnly.test(input)) return input;\n\n        const match = input.match(\n            /(?:v=|\\/(?:embed|shorts|v)\\/|youtu\\.be\\/)([\\w-]{6,})/i\n        );\n\n        return match ? match[1] : null;\n    }\n}\n\nexport interface BabylonLabelInfo {\n    title: string;\n    pretitle: string;\n}\n","<section class=\"babylon__topslidervideo margin-main-botom\">\n    <div\n        [class]=\"\n            'cs_hero cs_style_4 cs_primary_bg cs_bg_filed text-center position-relative youtube-bg ' +\n            (img?.src && (videoData?.src || smallVideoData?.src)\n                ? 'video-image'\n                : '')\n        \"\n    >\n        @if (videoUrl) {\n            <div class=\"video-wrapper\">\n                <iframe\n                    [src]=\"videoUrl\"\n                    frameborder=\"0\"\n                    allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\"\n                    allowfullscreen\n                ></iframe>\n            </div>\n        }\n\n        @if (img && img.src) {\n            <img [src]=\"img.src\" [alt]=\"img.alt\" loading=\"lazy\" />\n            @if (!labelInfos?.pretitle && !labelInfos?.title) {\n                <div\n                    class=\"img cs_hero_text_wrap cs_center wow fadeIn\"\n                    data-wow-duration=\"0.8s\"\n                    data-wow-delay=\"0.2s\"\n                >\n                    <div class=\"container position-relative cs_zindex_3\">\n                        <div class=\"cs_hero_text\">\n                            @if (imgTexts?.pretitle) {\n                                <h2 class=\"cs_hero_subtitle pretitle_carrusel\">\n                                    {{ imgTexts?.pretitle }}\n                                </h2>\n                            }\n\n                            @if (imgTexts?.title) {\n                                <h1 class=\"title_carrusel\">\n                                    {{ imgTexts?.title }}\n                                </h1>\n                            }\n                        </div>\n                    </div>\n                </div>\n            }\n        }\n\n        <div\n            class=\"cs_hero_text_wrap cs_center wow fadeIn\"\n            data-wow-duration=\"0.8s\"\n            data-wow-delay=\"0.2s\"\n        >\n            <div class=\"container position-relative cs_zindex_3\">\n                <div class=\"cs_hero_text\">\n                    @if (labelInfos?.pretitle) {\n                        <lib-babylon-dynamic-heading\n                            [tag]=\"tags?.pretitle || 'h2'\"\n                            cssClass=\"cs_hero_subtitle pretitle_carrusel\"\n                            [content]=\"labelInfos?.pretitle ?? ''\"\n                            [color]=\"textColors?.pretitle\"\n                        ></lib-babylon-dynamic-heading>\n                    }\n\n                    @if (labelInfos?.title) {\n                        <lib-babylon-dynamic-heading\n                            [tag]=\"tags?.title || 'h1'\"\n                            cssClass=\"title_carrusel\"\n                            [content]=\"labelInfos?.title ?? ''\"\n                            [color]=\"textColors?.title\"\n                        ></lib-babylon-dynamic-heading>\n                    }\n\n                    @if (button?.url) {\n                        <div class=\"btns__box align--center\">\n                            <a\n                                [attr.aria-label]=\"button?.label\"\n                                [href]=\"button?.url\"\n                                class=\"btn btn_primary btn--light\"\n                            >\n                                <b>{{ button?.label }}</b>\n                                <span class=\"babylon-arrow-right-big\"></span>\n                            </a>\n                        </div>\n                    }\n                </div>\n            </div>\n        </div>\n    </div>\n</section>","import { Component, Input } from '@angular/core';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\nimport { StickyAvoidFooterDirective } from '../../../directives/utils/sticky-avoid-footer.directive';\nimport { BabylonMultimediaI, BabylonTextInfoI } from '../../../interfaces';\n\n@Component({\n    selector: 'lib-babylon-top-slider-video-v2',\n    standalone: true,\n    imports: [StickyAvoidFooterDirective],\n    templateUrl: './babylon-top-slider-video-v2.component.html',\n    styleUrl: './babylon-top-slider-video-v2.component.scss',\n})\nexport class BabylonTopSliderVideoV2Component {\n    @Input() texts?: BabylonTextInfoI;\n    @Input() multimedia?: BabylonMultimediaI;\n\n    constructor(private sanitizer: DomSanitizer) {}\n    \n    get youtubeEmbedUrl(): SafeResourceUrl | null {\n        const url = this.texts?.topslidervideov2video;\n        if (!url) return null;\n\n        let videoId: string | null = null;\n\n        // youtu.be/ID\n        const shortMatch = url.match(/youtu\\.be\\/([^?&]+)/);\n        if (shortMatch) {\n            videoId = shortMatch[1];\n        }\n\n        // youtube.com/watch?v=ID\n        if (!videoId) {\n            const longMatch = url.match(/[?&]v=([^?&]+)/);\n            if (longMatch) {\n                videoId = longMatch[1];\n            }\n        }\n\n        if (!videoId) return null;\n\n        const finalUrl = `https://www.youtube-nocookie.com/embed/${videoId}?enablejsapi=1&controls=0&autoplay=1&loop=1&mute=1&playlist=${videoId}&playsinline=1&modestbranding=1&iv_load_policy=3&disablekb=1&rel=0`;\n\n        return this.sanitizer.bypassSecurityTrustResourceUrl(finalUrl);\n    }\n}\n","<section\n    class=\"hero-banner js-active-slider\"\n    data-slider_pause=\"false\"\n    data-slider_name=\"js-banner-slider\"\n    data-slider_showbtns=\"false\"\n    data-slider_showdots=\"false\"\n    data-slider_fade=\"true\"\n    data-slider_autoplay=\"true\"\n    data-slides_pc=\"1\"\n>\n    <!-- if banner image-->\n    @if (!texts?.topslidervideov2video && multimedia?.imagenes?.length) {\n        <div class=\"js-banner-slider\">\n            @if (multimedia?.imagenes?.[0]?.img) {\n                <div class=\"hero-banner__item\">\n                    <img\n                        [src]=\"\n                            multimedia?.imagenes?.[0]?.img?.src ||\n                            'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                        \"\n                        [alt]=\"multimedia?.imagenes?.[0]?.img?.alt\"\n                        class=\"hero-banner__image\"\n                        width=\"1800\"\n                        height=\"935\"\n                    />\n                </div>\n            }\n            @if (multimedia?.imagenes?.[1]?.img) {\n                <div class=\"hero-banner__item\">\n                    <img\n                        [src]=\"\n                            multimedia?.imagenes?.[1]?.img?.src ||\n                            'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                        \"\n                        [alt]=\"multimedia?.imagenes?.[1]?.img?.alt\"\n                        class=\"hero-banner__image\"\n                        width=\"1800\"\n                        height=\"935\"\n                    />\n                </div>\n            }\n        </div>\n    }\n    <!-- if banner image-->\n    <!-- if banner video -->\n    @if (texts?.topslidervideov2video) {\n        <div class=\"hero-banner__video\">\n            <div class=\"hero-banner__video--inner\">\n                <iframe\n                    id=\"YouTubeVideoPlayer\"\n                    width=\"1920\"\n                    height=\"1080\"\n                    allow=\"\n                        accelerometer;\n                        autoplay;\n                        clipboard-write;\n                        encrypted-media;\n                        gyroscope;\n                        picture-in-picture;\n                    \"\n                    [src]=\"youtubeEmbedUrl\"\n                    frameborder=\"0\"\n                    allowfullscreen=\"\"\n                ></iframe>\n            </div>\n        </div>\n    }\n    <!-- if banner video -->\n    <div\n        class=\"hero-banner__logo js-scrollto\"\n        data-scroll_spacer=\"50\"\n        data-scroll_to=\".start\"\n        role=\"button\"\n    >\n        <svg\n            aria-hidden=\"true\"\n            focusable=\"false\"\n            class=\"hero-banner__logo--img hero-banner__logo--desktop\"\n        >\n            <use\n                href=\"/assets/babylon/svg/blanco-logo-white.svg#blanco-logo-white\"\n            ></use>\n        </svg>\n\n        <svg\n            aria-hidden=\"true\"\n            focusable=\"false\"\n            class=\"hero-banner__logo--img hero-banner__logo--mobile\"\n        >\n            <use\n                href=\"/assets/babylon/svg/blanco-logo-mobile.svg#blonco-logo-mobile\"\n            ></use>\n        </svg>\n    </div>\n    <div class=\"hero-banner__content\">\n        @if (texts?.title) {\n            <h1>\n                <span class=\"hero-banner__content--title-mobile\">{{\n                    texts?.title\n                }}</span>\n                <span class=\"hero-banner__content--title-desktop\">{{\n                    texts?.title\n                }}</span>\n            </h1>\n        }\n        @if (texts?.subtitle) {\n            <p>{{ texts?.subtitle }}</p>\n        }\n        <span class=\"hero-banner__content-icon\">\n            <span class=\"hero-banner__content-icon--line\">\n                <svg aria-hidden=\"true\" focusable=\"false\">\n                    <use\n                        href=\"/assets/babylon/svg/arrow-line.svg#arrow-line\"\n                    ></use>\n                </svg>\n            </span>\n            <span class=\"hero-banner__content-icon--img\">\n                <svg aria-hidden=\"true\" focusable=\"false\">\n                    <use\n                        href=\"/assets/babylon/svg/icon-arrow.svg#icon-arrow\"\n                    ></use>\n                </svg>\n            </span>\n        </span>\n    </div>\n    <span class=\"hero-banner__cookies\">\n        <svg\n            aria-hidden=\"true\"\n            focusable=\"false\"\n            class=\"hero-banner__cookies--img\"\n        >\n            <use href=\"/assets/babylon/svg/icon-cookies.svg#icon-cookies\"></use>\n        </svg>\n    </span>\n    <!--   <div\n        class=\"hero-banner__actions\"\n        stickyAvoidFooter\n        [footerSelector]=\"'.footer__links'\"\n        [viewportPadding]=\"30\"\n        [defaultBottom]=\"'3rem'\"\n        [overlapAdjustPx]=\"10\"\n    >\n        <span class=\"hero-banner__actions--icon hero-banner__actions--whatsapp\">\n            <span>Whatsapp</span>\n            <span class=\"hero-banner__actions--img\">\n                <svg aria-hidden=\"true\" focusable=\"false\">\n                    <use\n                        href=\"/assets/babylon/svg/icon-whatsapp.svg#icon-whatsapp\"\n                    ></use>\n                </svg>\n            </span>\n        </span>\n        <span\n            class=\"hero-banner__actions--icon js-active-modal\"\n            data-modal_name=\"newsletter\"\n        >\n            <span>Newsletter</span>\n            <span class=\"hero-banner__actions--img\">\n                <svg aria-hidden=\"true\" focusable=\"false\">\n                    <use\n                        href=\"/assets/babylon/svg/icon-envelope.svg#icon-envelope\"\n                    ></use>\n                </svg>\n            </span>\n        </span>\n    </div> -->\n    @if (texts?.scrolltext) {\n        <div class=\"hero-banner__bar\">\n            <svg\n                aria-hidden=\"true\"\n                focusable=\"false\"\n                class=\"hero-banner__bar--graphic\"\n            >\n                <use\n                    href=\"/assets/babylon/svg/icon-graphic.svg#icon-graphic\"\n                ></use>\n            </svg>\n            <span>{{ texts?.scrolltext }}</span>\n        </div>\n    }\n</section>\n","import { isPlatformBrowser } from '@angular/common';\nimport {\n    AfterViewInit,\n    Component,\n    ElementRef,\n    Inject,\n    Input,\n    OnDestroy,\n    PLATFORM_ID,\n} from '@angular/core';\nimport { BabylonLinkTypeDirective } from '../../../directives/link-type/link-type.directive';\nimport { BabylonMultimediaI, BabylonTextInfoI } from '../../../interfaces';\n\n@Component({\n    selector: 'lib-babylon-variant-selector',\n    standalone: true,\n    imports: [BabylonLinkTypeDirective],\n    templateUrl: './babylon-variant-selector.component.html',\n    styleUrl: './babylon-variant-selector.component.scss',\n})\nexport class BabylonVariantSelectorComponent\n    implements AfterViewInit, OnDestroy\n{\n    @Input() texts?: BabylonTextInfoI;\n    @Input() multimedia?: BabylonMultimediaI;\n\n    private readonly isBrowser: boolean;\n    private onChangeBound?: (ev: Event) => void;\n\n    constructor(\n        private host: ElementRef<HTMLElement>,\n        @Inject(PLATFORM_ID) platformId: Object\n    ) {\n        this.isBrowser = isPlatformBrowser(platformId);\n    }\n\n    formatOptionValue(alt: string | undefined): string {\n        if (!alt) return '';\n        return alt.toLowerCase().replace(/ /g, '-');\n    }\n\n    ngAfterViewInit(): void {\n        if (!this.isBrowser) return;\n\n        const root = this.host.nativeElement;\n\n        // Mismos selectores de tu maqueta\n        const select = root.querySelector<HTMLSelectElement>('#blanco-point');\n        const imageEl = root.querySelector<HTMLImageElement>(\n            '.variant-selector__image img'\n        );\n        const imageWrap = root.querySelector<HTMLElement>(\n            '.variant-selector__image'\n        );\n        const inner = root.querySelector<HTMLElement>(\n            '.variant-selector__content--inner'\n        );\n        const content = root.querySelector<HTMLElement>(\n            '.variant-selector__content'\n        );\n\n        if (!select || !imageEl || !imageWrap || !inner || !content) {\n            // En dev, avisa si falta algo, pero no rompas\n            console.warn(\n                '[VariantSelector] Faltan nodos esperados (#blanco-point/.variant-selector__...)'\n            );\n            return;\n        }\n\n        const defaultImage =\n            imageWrap.getAttribute('data-image') ||\n            imageEl.getAttribute('src') ||\n            '';\n\n        const updateUI = (rawValue: string) => {\n            const value = rawValue?.trim();\n\n            // Quitar visibilidad previa\n            inner\n                .querySelectorAll('li.show')\n                .forEach((li) => li.classList.remove('show'));\n\n            // Mostrar/ocultar <p> por defecto\n            const defaultP = inner.querySelector<HTMLElement>(':scope > p');\n            if (defaultP) defaultP.style.display = value ? 'none' : '';\n\n            if (value) {\n                // Escapar por si el value tiene espacios/símbolos y se usa como clase\n                const escaped = (window as any).CSS?.escape\n                    ? (CSS as any).escape(value)\n                    : value.replace(/[^\\w-]/g, '\\\\$&');\n\n                const target = inner.querySelector<HTMLElement>('.' + escaped);\n                const valueImage = target?.getAttribute('data-image') || '';\n\n                if (target) target.classList.add('show');\n                content.classList.add('open');\n                imageEl.src = valueImage || defaultImage;\n            } else {\n                content.classList.remove('open');\n                imageEl.src = defaultImage;\n            }\n        };\n\n        // Listener al <select>\n        this.onChangeBound = (ev: Event) => {\n            const val = (ev.target as HTMLSelectElement).value;\n            updateUI(val);\n        };\n        select.addEventListener('change', this.onChangeBound);\n\n        // Estado inicial (por si el select viene con valor)\n        updateUI(select.value || '');\n    }\n\n    ngOnDestroy(): void {\n        if (!this.isBrowser) return;\n\n        const root = this.host.nativeElement;\n        const select = root.querySelector<HTMLSelectElement>('#blanco-point');\n        if (select && this.onChangeBound) {\n            select.removeEventListener('change', this.onChangeBound);\n        }\n    }\n}\n","<section class=\"variant-selector js-bgPosition-section\">\n    <div class=\"container\">\n        <div class=\"variant-selector__inner\">\n            @if (texts?.title) {\n                <span class=\"variant-selector__title\">\n                    <span>{{ texts?.title }}</span>\n                </span>\n            }\n            @if (multimedia?.mainimagenes?.[0]?.img?.src) {\n                <figure\n                    class=\"variant-selector__image js-bgPosition-image\"\n                    [attr.data-image]=\"\n                        multimedia?.mainimagenes?.[0]?.img?.src ||\n                        'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                    \"\n                >\n                    <img\n                        [src]=\"\n                            multimedia?.mainimagenes?.[0]?.img?.src ||\n                            'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                        \"\n                        [alt]=\"multimedia?.mainimagenes?.[0]?.img?.alt\"\n                    />\n                </figure>\n            }\n            <div class=\"variant-selector__content\">\n                <div class=\"variant-selector__content--inner\">\n                    @if (texts?.subtitle) {\n                        <p [innerHTML]=\"texts?.subtitle\"></p>\n                    }\n                    <div class=\"input-group\">\n                        <select class=\"select-control\" id=\"blanco-point\">\n                            @if (texts?.selectorTexts) {\n                                <option value=\"\">\n                                    {{ texts?.selectorTexts }}\n                                </option>\n                            }\n                            @if (multimedia?.mainimagenes?.length) {\n                                @for (\n                                    image of multimedia?.imagenes;\n                                    track $index\n                                ) {\n                                    <option\n                                        [value]=\"\n                                            formatOptionValue(image?.title)\n                                        \"\n                                    >\n                                        {{ image?.title }}\n                                    </option>\n                                }\n                            }\n                        </select>\n                        <span class=\"input-group--icon\">\n                            <svg\n                                aria-hidden=\"true\"\n                                class=\"down-arrow\"\n                                focusable=\"false\"\n                            >\n                                <use\n                                    href=\"/assets/babylon/svg/icon-arrow.svg#icon-arrow\"\n                                ></use>\n                            </svg>\n                        </span>\n                    </div>\n                    @if (multimedia?.imagenes?.length) {\n                        <ul>\n                            @for (image of multimedia?.imagenes; track $index) {\n                                <li\n                                    [class]=\"formatOptionValue(image?.title)\"\n                                    [attr.data-image]=\"\n                                        image?.img?.src ||\n                                        'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                    \"\n                                >\n                                    @if (image?.description) {\n                                        <p [innerHTML]=\"image?.description\"></p>\n                                    }\n                                    @if (\n                                        image?.buttons?.length &&\n                                        image?.buttons?.[0]?.label\n                                    ) {\n                                        <a\n                                            [href]=\"image?.buttons?.[0]?.url\"\n                                            [attr.aria-label]=\"\n                                                image?.buttons?.[0]?.label\n                                            \"\n                                            [linkType]=\"\n                                                image?.buttons?.[0]?.linkType\n                                            \"\n                                            class=\"btn btn__secondary\"\n                                            ><span>\n                                                {{ image?.buttons?.[0]?.label }}\n                                            </span>\n                                        </a>\n                                    }\n                                </li>\n                            }\n                        </ul>\n                    }\n                </div>\n            </div>\n        </div>\n    </div>\n</section>\n","import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { BabylonButtonI } from '../../../interfaces/babylon-button.interface';\nimport { RouterModule } from '@angular/router';\nimport { BabylonImageI } from '../../../interfaces/babylon-image.interface';\nimport { BabylonDynamicHeadingComponent } from '../../shared';\nimport { BabylonTagsI, BabylonTextsColorsI } from '../../../interfaces';\n\n@Component({\n    selector: 'lib-babylon-webmap',\n    standalone: true,\n    imports: [RouterModule, BabylonDynamicHeadingComponent],\n    templateUrl: './babylon-webmap.component.html',\n    styleUrl: './babylon-webmap.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BabylonWebmapComponent {\n    @Input() pretitle?: string;\n    @Input() title?: string;\n    @Input() image?: BabylonImageI;\n    @Input() links?: BabylonButtonI[];\n    @Input() tags?: BabylonTagsI;\n    @Input() textColors?: BabylonTextsColorsI;\n\n    linkClick(e: Event) {\n        e.preventDefault();\n    }\n}\n","<section class=\"babylon__webmap margin-main\">\n    <div class=\"container\">\n        <div class=\"row cs_gap_y_30\">\n            <div class=\"col-lg-6 cs_pr_110\">\n                <div class=\"intro_info no-align\">\n                    @if (pretitle) {\n                        <lib-babylon-dynamic-heading\n                            [tag]=\"tags?.pretitle || 'h3'\"\n                            cssClass=\"pretitle mb--10\"\n                            [color]=\"textColors?.pretitle\"\n                            [content]=\"pretitle\"\n                        ></lib-babylon-dynamic-heading>\n                    }\n                    @if (title) {\n                        <lib-babylon-dynamic-heading\n                            [tag]=\"tags?.title || 'h2'\"\n                            cssClass=\"title\"\n                            [color]=\"textColors?.title\"\n                            [content]=\"title\"\n                        ></lib-babylon-dynamic-heading>\n                    }\n                    @if (links?.length) {\n                        <ul class=\"cs_list cs_style_1 cs_mp_0\">\n                            @for (link of links; track $index) {\n                                @if (link) {\n                                    <li>\n                                        <a\n                                            [attr.aria-label]=\"link.label\"\n                                            [href]=\"link.url\"\n                                            [routerLink]=\"link.url\"\n                                            (click)=\"linkClick($event)\"\n                                        >\n                                            <p class=\"text--small\">\n                                                {{ link.label }}\n                                            </p>\n                                        </a>\n                                    </li>\n                                }\n                            }\n                        </ul>\n                    }\n                </div>\n            </div>\n            @if (image) {\n                <div class=\"col-lg-6\">\n                    <div\n                        class=\"cs_pr_1101 cs_image_layer cs_style_3 position-relative\"\n                    >\n                        <img\n                            [src]=\"\n                                image?.src ||\n                                'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                            \"\n                            [alt]=\"image?.alt ?? image?.title ?? 'title'\"\n                            class=\"cs--radius\"\n                            loading=\"lazy\"\n                        />\n                    </div>\n                </div>\n            }\n        </div>\n    </div>\n</section>\n","import { Component, Input } from '@angular/core';\nimport { RouterModule } from '@angular/router';\nimport {\n    BabylonButtonI,\n    BabylonMultimediaI,\n    BabylonTagsI,\n    BabylonTextInfoI,\n    BabylonTextsColorsI,\n} from '../../../interfaces';\nimport { BabylonDynamicHeadingComponent } from '../../shared';\n\n@Component({\n    selector: 'lib-babylon-webmap-v2',\n    standalone: true,\n    imports: [RouterModule, BabylonDynamicHeadingComponent],\n    templateUrl: './babylon-webmap-v2.component.html',\n    styleUrl: './babylon-webmap-v2.component.scss',\n})\nexport class BabylonWebmapV2Component {\n    @Input() texts?: BabylonTextInfoI;\n    @Input() multimedia?: BabylonMultimediaI;\n    @Input() pages?: BabylonButtonI[];\n    @Input() tags?: BabylonTagsI;\n    @Input() textColors?: BabylonTextsColorsI;\n\n    linkClick(e: Event) {\n        e.preventDefault();\n    }\n}\n","<section class=\"mapa-web mapa-web--right js-bgHeight-section\">\n    <div class=\"container\">\n        <div class=\"mapa-web__inner\">\n            <div class=\"mapa-web__content\">\n                <div class=\"mapa-web__content--inner\">\n                    @if (texts?.title) {\n                        <div class=\"mapa-web__heading js-bgHeight-heading\">\n                            <h2 [innerHTML]=\"texts?.title\"></h2>\n                        </div>\n                    }\n                    <ul class=\"mapa-web__list\">\n                        @if (pages?.length) {\n                            @for (link of pages; track $index) {\n                                <li>\n                                    <a\n                                        [attr.aria-label]=\"link.label\"\n                                        [href]=\"link.url\"\n                                        [routerLink]=\"link.url\"\n                                        (click)=\"linkClick($event)\"\n                                    >\n                                        {{ link.url }}\n                                    </a>\n                                </li>\n                            }\n                        }\n                    </ul>\n                </div>\n            </div>\n            @if (multimedia?.imagenes) {\n                <div class=\"mapa-web__image\">\n                    <svg\n                        aria-hidden=\"true\"\n                        focusable=\"false\"\n                        class=\"mapa-web__graphic--top\"\n                    >\n                        <use\n                            href=\"/assets/babylon/svg/icon-graphic.svg#icon-graphic\"\n                        ></use>\n                    </svg>\n                    <svg\n                        aria-hidden=\"true\"\n                        focusable=\"false\"\n                        class=\"mapa-web__graphic--bottom\"\n                    >\n                        <use\n                            href=\"/assets/babylon/svg/icon-graphic.svg#icon-graphic\"\n                        ></use>\n                    </svg>\n                    <figure>\n                        <img\n                            [src]=\"\n                                multimedia?.imagenes?.[0]?.img?.src ||\n                                'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                            \"\n                            [alt]=\"multimedia?.imagenes?.[0]?.img?.alt\"\n                        />\n                    </figure>\n                </div>\n            }\n        </div>\n    </div>\n</section>\n","import { Component, Input } from '@angular/core';\nimport { BabylonItemI } from '../../../interfaces';\n\n// 1. Respetamos exactamente tu estructura de variables\n\n@Component({\n    selector: 'lib-babylon-zig-zag-img-txt',\n    standalone: true,\n    imports: [],\n    templateUrl: './babylon-zig-zag-img-txt.component.html',\n    styleUrl: './babylon-zig-zag-img-txt.component.scss',\n})\nexport class BabylonZigZagImgTxtComponent {\n    @Input() items?: BabylonItemI[];\n}\n","<div class=\"destinations-container\">\n    @for (item of items; track $index) {\n        <div class=\"destination-row\" [class.reverse]=\"$index % 2 !== 0\">\n            <div class=\"text-content\">\n                <h2>{{ item?.texts?.title }}</h2>\n                <p [innerHTML]=\"item?.texts?.description\"></p>\n            </div>\n\n            <div class=\"image-content\">\n                @if (item?.url) {\n                    <a [href]=\"item.url\" target=\"_self\" rel=\"noopener\">\n                        <img\n                            [src]=\"\n                                item?.multimedia?.imagenes?.[0]?.img?.src ||\n                                'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                            \"\n                            [alt]=\"item?.multimedia?.imagenes?.[0]?.img?.alt\"\n                        />\n                    </a>\n                } @else {\n                    <img\n                        [src]=\"\n                            item?.multimedia?.imagenes?.[0]?.img?.src ||\n                            'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                        \"\n                        [alt]=\"item?.multimedia?.imagenes?.[0]?.img?.alt\"\n                    />\n                }\n            </div>\n        </div>\n    }\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { BabylonLinkTypeDirective } from '../../../../directives/link-type/link-type.directive';\nimport {\n    BabylonButtonI,\n    BabylonMultimediaI,\n    BabylonTextInfoI,\n} from '../../../../interfaces';\nimport { BabylonStyleGlobalItem } from '../../../../interfaces/babylon-style.interface';\nimport { getFirstImageByTagFromMultimedia } from '../../../../utils/mutimedia.utils';\nimport { BabylonAddressItem } from '../../../core';\n\nexport interface C2ImgTxtSvgLine {\n    text: string;\n    url?: string;\n    target?: string;\n}\n\nexport interface C2ImgTxtSvgSection {\n    title: string;\n    lines: C2ImgTxtSvgLine[];\n}\n\nexport interface C2ImgTxtSvgButton {\n    label: string;\n    url?: string;\n    target?: string;\n    ariaLabel?: string;\n}\n\nexport interface C2ImgTxtSvgContent {\n    reverse?: boolean;\n    leftImage: string;\n    infoSections: C2ImgTxtSvgSection[];\n    mapImage: string;\n    mapUrl: string;\n    button: C2ImgTxtSvgButton;\n}\n\nconst DEFAULT_CONTENT: C2ImgTxtSvgContent = {\n    reverse: true,\n    leftImage: '',\n    infoSections: [\n        {\n            title: '',\n            lines: [{ text: '' }, { text: '' }],\n        },\n        {\n            title: '',\n            lines: [\n                { text: '', url: '' },\n                {\n                    text: '',\n                    url: '',\n                },\n            ],\n        },\n    ],\n    mapImage: '',\n    mapUrl: '',\n    button: {\n        label: '',\n        url: '',\n    },\n} as C2ImgTxtSvgContent;\n\n@Component({\n    selector: 'c2-img-txt-svg',\n    standalone: true,\n    encapsulation: ViewEncapsulation.None,\n    imports: [CommonModule, BabylonLinkTypeDirective],\n    templateUrl: './c2-img-txt-svg.component.html',\n    styleUrl: './c2-img-txt-svg.component.scss',\n})\nexport class C2ImgTxtSvgComponent {\n    @Input() content: C2ImgTxtSvgContent = DEFAULT_CONTENT;\n    @Input() reverse?: boolean = false;\n\n    @Input() texts?: BabylonTextInfoI;\n    @Input() multimedia?: BabylonMultimediaI;\n    @Input() buttons?: BabylonButtonI[];\n    @Input() links?: BabylonButtonI[];\n    @Input() styles?: BabylonStyleGlobalItem;\n    @Input() address?: BabylonAddressItem[];\n\n    tagNameMap: string = 'C2ImgTxtSvgMap';\n    tagNameMapPNG: string = 'C2ImgTxtSvg-icon-svg';\n\n    trackByTitle(index: number, section: C2ImgTxtSvgSection): string {\n        return section.title ?? `${index}`;\n    }\n\n    trackByLine(index: number, line: C2ImgTxtSvgLine): string {\n        return line.text ?? `${index}`;\n    }\n\n    getFirstImageByTag(tagName: string) {\n        return getFirstImageByTagFromMultimedia(this.multimedia, tagName);\n    }\n}\n","<section class=\"mdl-mdh022\" [ngClass]=\"{ reverse: reverse }\">\n    <div class=\"mdl-container\">\n        <div class=\"m-left\">\n            @if (multimedia?.imagenes?.[0]; as img) {\n                <img\n                    [src]=\"\n                        img.img?.src ||\n                        'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                    \"\n                    [alt]=\"img.img?.alt\"\n                />\n            }\n\n            @if (links) {\n                <div class=\"text-container\">\n                    <div class=\"m-item\">\n                        @if (texts?.addresstitle) {\n                            <div\n                                class=\"m-title\"\n                                [innerHTML]=\"texts?.addresstitle\"\n                            ></div>\n                        }\n                        @if (address?.[0]; as address) {\n                            <div class=\"m-subitle\">\n                                <ng-container>\n                                    <a\n                                        class=\"m-subitle\"\n                                        [href]=\"address.url\"\n                                        [linkType]=\"'external'\"\n                                    >\n                                        <p>{{ address.address }}</p>\n                                        <p>\n                                            {{ address.cp }}\n                                            {{ address.locality }}\n                                            {{ address.province }}\n                                        </p>\n                                        <p>{{ address.country }}</p>\n                                    </a>\n                                </ng-container>\n                            </div>\n                        }\n                        <!--  @if (links?.[0]; as link) {\n                            <div class=\"m-subitle\">\n                                <ng-container>\n                                    <a\n                                        class=\"m-subitle\"\n                                        [href]=\"link.url\"\n                                        [linkType]=\"link.linkType\"\n                                        [attr.target]=\"link.target || '_self'\"\n                                        [attr.aria-label]=\"link.label\"\n                                        [attr.rel]=\"\n                                            (link.target || '_self') ===\n                                            '_blank'\n                                                ? 'noopener noreferrer'\n                                                : null\n                                        \"\n                                    >\n                                        <p [innerHTML]=\"link.label\"></p>\n                                    </a>\n                                </ng-container>\n                            </div>\n                        } -->\n                    </div>\n                    <div class=\"m-item\">\n                        @if (texts?.contacttitle) {\n                            <div\n                                class=\"m-title\"\n                                [innerHTML]=\"texts?.contacttitle\"\n                            ></div>\n                        }\n                        @if (address?.[0]; as address) {\n                            <div class=\"m-subitle\">\n                                <ng-container>\n                                    <a\n                                        class=\"m-subitle\"\n                                        [href]=\"'tel: ' + address.phone\"\n                                        [linkType]=\"'external'\"\n                                    >\n                                        <p>{{ address.phone }}</p>\n                                    </a>\n                                    <a\n                                        class=\"m-subitle\"\n                                        [href]=\"'mailto: ' + address.email\"\n                                        [linkType]=\"'external'\"\n                                    >\n                                        <p>{{ address.email }}</p>\n                                    </a>\n                                </ng-container>\n                            </div>\n                        }\n                        <!-- \n                        @if (links?.[1]; as link) {\n                            <div class=\"m-subitle\">\n                                <ng-container>\n                                    <a\n                                        class=\"m-subitle\"\n                                        [href]=\"link.url\"\n                                        [linkType]=\"link.linkType\"\n                                        [attr.target]=\"link.target || '_self'\"\n                                        [attr.aria-label]=\"link.label\"\n                                        [attr.rel]=\"\n                                            (link.target || '_self') ===\n                                            '_blank'\n                                                ? 'noopener noreferrer'\n                                                : null\n                                        \"\n                                    >\n                                        {{ link.label }}\n                                    </a>\n                                </ng-container>\n                            </div>\n                        } -->\n                    </div>\n                </div>\n            }\n        </div>\n        @if (getFirstImageByTag(tagNameMap); as mapImage) {\n            <a\n                class=\"m-right\"\n                [href]=\"texts?.mapUrl\"\n                target=\"_blank\"\n                rel=\"noopener noreferrer\"\n            >\n                <img\n                    [src]=\"\n                        mapImage.img?.src ||\n                        'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                    \"\n                    alt=\"map\"\n                />\n                @if (getFirstImageByTag(tagNameMapPNG); as pngImage) {\n                    <img\n                        class=\"iconmap\"\n                        [src]=\"\n                            pngImage.img?.src ||\n                            'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                        \"\n                        alt=\"icon\"\n                    />\n                }\n                <!--       <svg\n                    width=\"79\"\n                    height=\"89\"\n                    viewBox=\"0 0 79 89\"\n                    fill=\"none\"\n                    xmlns=\"http://www.w3.org/2000/svg\"\n                    aria-hidden=\"true\"\n                >\n                    <path\n                        opacity=\"0.2\"\n                        d=\"M39 89C42.866 89 46 88.1046 46 87C46 85.8954 42.866 85 39 85C35.134 85 32 85.8954 32 87C32 88.1046 35.134 89 39 89Z\"\n                        [attr.fill]=\"\n                            styles?.primary ?? styles?.primaryHover ?? '#515050'\n                        \"\n                    />\n                    <path\n                        opacity=\"0.2\"\n                        d=\"M39 88C41.2091 88 43 87.5523 43 87C43 86.4477 41.2091 86 39 86C36.7909 86 35 86.4477 35 87C35 87.5523 36.7909 88 39 88Z\"\n                        [attr.fill]=\"\n                            styles?.primary ?? styles?.primaryHover ?? '#515050'\n                        \"\n                    />\n                    <path\n                        d=\"M39.462 78.924C61.2563 78.924 78.924 61.2563 78.924 39.462C78.924 17.6677 61.2563 0 39.462 0C17.6677 0 0 17.6677 0 39.462C0 61.2563 17.6677 78.924 39.462 78.924Z\"\n                        [attr.fill]=\"\n                            styles?.primary ?? styles?.primaryHover ?? '#FF4338'\n                        \"\n                    />\n                    <path\n                        d=\"M39.8647 85.9677C39.7768 86.1195 39.6506 86.2455 39.4987 86.3331C39.3468 86.4207 39.1745 86.4668 38.9992 86.4668C38.8238 86.4668 38.6515 86.4207 38.4996 86.3331C38.3477 86.2455 38.2215 86.1195 38.1337 85.9677L28.8677 69.9677C28.7799 69.8158 28.7337 69.6434 28.7337 69.468C28.7337 69.2925 28.7798 69.1201 28.8674 68.9681C28.9551 68.8162 29.0812 68.6899 29.233 68.6021C29.3849 68.5142 29.5572 68.4679 29.7327 68.4677H48.2657C48.4411 68.4679 48.6134 68.5142 48.7653 68.6021C48.9172 68.6899 49.0433 68.8162 49.1309 68.9681C49.2186 69.1201 49.2647 69.2925 49.2646 69.468C49.2646 69.6434 49.2184 69.8158 49.1307 69.9677L39.8647 85.9677Z\"\n                        [attr.fill]=\"\n                            styles?.primary ?? styles?.primaryHover ?? '#FF4338'\n                        \"\n                    />\n                    <path\n                        d=\"M38.9996 49.1102L24.9029 35.0105C21.2427 31.3533 21.2427 25.4024 24.9029 21.7452C28.5601 18.0849 34.5109 18.0849 38.1682 21.7452L38.9996 22.5765L39.8338 21.7452C43.4911 18.0849 49.442 18.0849 53.0992 21.7452C56.7564 25.4024 56.7564 31.3533 53.0992 35.0105L38.9996 49.1102ZM31.5356 22.8187C30.1121 22.8187 28.6887 23.36 27.6032 24.4455C25.4352 26.6135 25.4352 30.1422 27.6032 32.3102L38.9996 43.7095L50.3988 32.3102C52.5669 30.1422 52.5669 26.6135 50.3988 24.4455C48.2308 22.2775 44.7022 22.2775 42.5342 24.4455L38.9996 27.9771L35.4679 24.4455C34.3854 23.36 32.959 22.8187 31.5356 22.8187Z\"\n                        fill=\"white\"\n                    />\n                    <path\n                        d=\"M38.9986 58.9953C32.037 58.9953 25.6196 55.1348 22.2524 48.9178L25.6106 47.0996C28.311 52.0816 33.4395 55.1766 38.9986 55.1766C44.5577 55.1766 49.6862 52.0816 52.3865 47.0996L55.7447 48.9178C52.3776 55.1348 45.9602 58.9953 38.9986 58.9953Z\"\n                        fill=\"white\"\n                    />\n                </svg> -->\n                @if (buttons?.[0]; as button) {\n                    <ng-container>\n                        <a\n                            class=\"m-button-sm\"\n                            [href]=\"button.url\"\n                            [linkType]=\"button.linkType\"\n                            [attr.target]=\"button.target || '_self'\"\n                            [attr.aria-label]=\"button.label\"\n                            [attr.rel]=\"\n                                (button.target || '_self') === '_blank'\n                                    ? 'noopener noreferrer'\n                                    : null\n                            \"\n                            [style.--primary-color]=\"styles?.primary\"\n                            [style.--hover-color]=\"styles?.primaryHover\"\n                        >\n                            <span>{{ button.label }}</span>\n                        </a>\n                    </ng-container>\n                }\n            </a>\n        }\n    </div>\n</section>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { BabylonLinkTypeDirective } from '../../../../directives/link-type/link-type.directive';\nimport {\n    BabylonButtonI,\n    BabylonItemI,\n    BabylonMultimediaI,\n    BabylonRoomDetailI,\n    BabylonTextInfoI,\n} from '../../../../interfaces';\nimport { BabylonStyleGlobalItem } from '../../../../interfaces/babylon-style.interface';\n\nexport type C2TxtCtaStat = string;\n\nexport interface C2TxtCtaButton {\n    label: string;\n    url?: string;\n    target?: string;\n    ariaLabel?: string;\n}\n\nexport interface C2TxtCtaContent {\n    backgroundColor?: string;\n    left: {\n        title: string;\n        stats: C2TxtCtaStat[];\n    };\n    right: {\n        description: string;\n        button?: C2TxtCtaButton;\n    };\n}\n\n@Component({\n    selector: 'c2-txt-cta',\n    standalone: true,\n    encapsulation: ViewEncapsulation.None,\n    imports: [CommonModule, BabylonLinkTypeDirective],\n    templateUrl: './c2-txt-cta.component.html',\n    styleUrl: './c2-txt-cta.component.scss',\n})\nexport class C2TxtCtaComponent {\n    @Input() texts?: BabylonTextInfoI;\n    @Input() items?: BabylonItemI[];\n    @Input() rooms?: BabylonRoomDetailI[];\n    @Input() buttons?: BabylonButtonI[];\n    @Input() styles?: BabylonStyleGlobalItem;\n    @Input() multimedia?: BabylonMultimediaI;\n}\n","@if (texts) {\n    <section class=\"mdl-mdh009\">\n        <div class=\"mdl-container\">\n            <div\n                class=\"m-left\"\n                [ngClass]=\"{ bottom: multimedia?.imagenes?.[0] }\"\n            >\n                @if (multimedia?.imagenes?.[0]; as img) {\n                    <div>\n                        <img\n                            class=\"m-imagen\"\n                            [src]=\"\n                                img.img?.src ||\n                                'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                            \"\n                            [alt]=\"img.img?.alt\"\n                        />\n                    </div>\n                }\n                @if (texts.title || texts.name) {\n                    <div\n                        class=\"m-titulo\"\n                        [ngClass]=\"{ 'like-text': multimedia }\"\n                    >\n                        {{ texts.title || texts.name }}\n                    </div>\n                }\n                <!--      @if (items) {\n                    <div class=\"m-list\">\n                        @for (item of items; track $index) {\n                            <div>\n                                {{ item?.title }}\n                            </div>\n                        }\n                    </div>\n                } -->\n            </div>\n            <div class=\"m-right\">\n                @if (texts.pretitle) {\n                    <div class=\"m-pre-titulo\">\n                        {{ texts.pretitle }}\n                    </div>\n                }\n                @if (items) {\n                    <div class=\"m-list\">\n                        @for (item of items; track $index) {\n                            <div\n                                class=\"m-texto p-10\"\n                                [ngClass]=\"{ first: $index == 0 }\"\n                            >\n                                {{ item?.title }}\n                            </div>\n                        }\n                    </div>\n                }\n                @if (rooms?.[0]?.texts?.description ?? texts.description) {\n                    <div\n                        class=\"m-texto\"\n                        [innerHTML]=\"\n                            rooms?.[0]?.texts?.description ?? texts.description\n                        \"\n                    ></div>\n                }\n                @if (rooms?.[0]?.buttons?.[0] ?? buttons?.[0]; as btn) {\n                    <a\n                        class=\"m-button-sm\"\n                        [href]=\"btn.url\"\n                        [linkType]=\"btn.linkType\"\n                        [attr.target]=\"btn.target || '_self'\"\n                        [attr.aria-label]=\"btn.label\"\n                        [attr.rel]=\"\n                            (btn.target || '_self') === '_blank'\n                                ? 'noopener noreferrer'\n                                : null\n                        \"\n                        [style.--color]=\"styles?.primary ?? '#ed3b37'\"\n                        [style.--hover-color]=\"\n                            styles?.primaryHover ?? styles?.primary ?? '#ed3b37'\n                        \"\n                    >\n                        <span>{{ btn.label }}</span>\n                    </a>\n                }\n            </div>\n        </div>\n    </section>\n}\n","import { BabylonItemI } from '../interfaces';\nimport { BabylonGlobalsFaqGroup } from '../interfaces/babylon-globals-faqs-group.interface';\n\nexport class ListsUtils {\n    /**\n     * Devuelve los items del grupo con ese listId.\n     * Si no existe, devuelve [].\n     */\n    static getFaqItemsByListId(\n        lists: BabylonGlobalsFaqGroup[] | undefined,\n        listId: number\n    ): BabylonItemI[] {\n        if (!Array.isArray(lists)) return [];\n\n        const group = lists.find((g) => Number(g.listId) === Number(listId));\n        return group?.items ?? [];\n    }\n\n    /**\n     * (Opcional) Versión con fallback:\n     * - intenta listId\n     * - si no existe: intenta listId 1\n     * - si no existe: devuelve el primer grupo\n     */\n    // static getFaqItemsByListIdWithFallback(\n    //   lists: FaqGroup[] | undefined,\n    //   listId: number\n    // ): BabylonItemI[] {\n    //   if (!Array.isArray(lists) || lists.length === 0) return [];\n    //\n    //   return (\n    //     lists.find((g) => Number(g.listId) === Number(listId))?.items ??\n    //     lists.find((g) => Number(g.listId) === 1)?.items ??\n    //     lists[0]?.items ??\n    //     []\n    //   );\n    // }\n}\n","import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n    AfterViewInit,\n    Component,\n    ElementRef,\n    inject,\n    Input,\n    OnDestroy,\n    PLATFORM_ID,\n    QueryList,\n    ViewChild,\n    ViewChildren,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport {\n    BabylonButtonI,\n    BabylonItemI,\n    BabylonTextInfoI,\n} from '../../../../interfaces';\nimport { BabylonGlobalsFaqGroup } from '../../../../interfaces/babylon-globals-faqs-group.interface';\nimport { BabylonStyleGlobalItem } from '../../../../interfaces/babylon-style.interface';\nimport { ListsUtils } from '../../../../utils/get-list';\nimport { HighlightFeature } from './c2-txt-cta-des.interfaces';\n\n@Component({\n    selector: 'c2-txt-cta-des',\n    standalone: true,\n    imports: [CommonModule],\n    templateUrl: './c2-txt-cta-des.component.html',\n    styleUrl: './c2-txt-cta-des.component.scss',\n})\nexport class C2TxtCtaDesComponent implements AfterViewInit, OnDestroy {\n    @Input() texts?: BabylonTextInfoI;\n    @Input() buttons?: BabylonButtonI[];\n    @Input() links?: BabylonButtonI[];\n    @Input() lists?: BabylonGlobalsFaqGroup[];\n    @Input() styles?: BabylonStyleGlobalItem;\n\n    @ViewChild('faqSection') private faqSection?: ElementRef<HTMLElement>;\n    @ViewChildren('faqAnswerRef') private faqAnswerRefs?: QueryList<\n        ElementRef<HTMLDivElement>\n    >;\n    faqHeights: number[] = [];\n    expandedFaqIndex: number | null = null;\n    private faqChangesSub?: Subscription;\n    private resizeTimeoutId?: ReturnType<typeof setTimeout>;\n    private readonly platformId = inject(PLATFORM_ID);\n    private mutationObserver?: MutationObserver;\n    private readonly handleResize = (): void => {\n        if (!isPlatformBrowser(this.platformId)) return;\n        if (typeof window === 'undefined') {\n            return;\n        }\n        clearTimeout(this.resizeTimeoutId);\n        this.resizeTimeoutId = setTimeout(() => this.moveTopPanel(), 150);\n    };\n\n    ngAfterViewInit(): void {\n        if (!isPlatformBrowser(this.platformId)) return;\n        this.measureAnswerHeights();\n        this.faqChangesSub = this.faqAnswerRefs?.changes.subscribe(() =>\n            this.measureAnswerHeights()\n        );\n        this.moveTopPanel();\n        this.initializeResizeListener();\n        this.initializeMutationObserver();\n    }\n\n    ngOnDestroy(): void {\n        if (!isPlatformBrowser(this.platformId)) return;\n        this.faqChangesSub?.unsubscribe();\n        if (typeof window !== 'undefined') {\n            window.removeEventListener('resize', this.handleResize);\n        }\n        clearTimeout(this.resizeTimeoutId);\n        this.mutationObserver?.disconnect();\n    }\n\n    toggleFaq(index: number): void {\n        this.expandedFaqIndex = this.expandedFaqIndex === index ? null : index;\n    }\n\n    trackByIndex(index: number): number {\n        return index;\n    }\n\n    trackByLabel(index: number, item: HighlightFeature): string {\n        return item.label ?? String(index);\n    }\n\n    getAnswerHeight(index: number): number {\n        return this.faqHeights[index] ?? 0;\n    }\n\n    private measureAnswerHeights(): void {\n        setTimeout(() => {\n            if (!this.faqAnswerRefs) {\n                return;\n            }\n\n            const heights: number[] = [];\n            this.faqAnswerRefs.forEach((ref, idx) => {\n                heights[idx] = ref.nativeElement.scrollHeight;\n            });\n            this.faqHeights = heights;\n        }, 0);\n    }\n\n    private moveTopPanel(): void {\n        if (!isPlatformBrowser(this.platformId)) return;\n        if (typeof window === 'undefined') {\n            return;\n        }\n        const root = this.faqSection?.nativeElement;\n        const topPanel = root?.querySelector<HTMLElement>('.m-top');\n        const content = root?.querySelector<HTMLElement>('.m-content');\n        const container = root?.querySelector<HTMLElement>('.mdl-container');\n\n        if (!root || !topPanel || !content || !container) {\n            return;\n        }\n\n        const isDesktop = window.matchMedia('(min-width: 767px)').matches;\n\n        if (isDesktop) {\n            if (topPanel.parentElement !== content) {\n                content.insertBefore(topPanel, content.firstElementChild);\n            }\n            topPanel.style.position = 'relative';\n            return;\n        }\n\n        if (topPanel.parentElement !== root) {\n            root.insertBefore(topPanel, container);\n        }\n        topPanel.style.position = '';\n    }\n\n    private initializeResizeListener(): void {\n        if (typeof window === 'undefined') {\n            return;\n        }\n        window.addEventListener('resize', this.handleResize);\n    }\n\n    private initializeMutationObserver(): void {\n        if (!this.faqSection?.nativeElement) {\n            return;\n        }\n\n        this.mutationObserver?.disconnect();\n        this.mutationObserver = new MutationObserver(() => this.moveTopPanel());\n        this.mutationObserver.observe(this.faqSection.nativeElement, {\n            childList: true,\n            subtree: true,\n        });\n    }\n\n    getFaqItemsByListIdOnUtil(\n        lists: BabylonGlobalsFaqGroup[],\n        id: number\n    ): BabylonItemI[] {\n        return ListsUtils.getFaqItemsByListId(lists, id);\n    }\n}\n","<!-- COMENTARIO CONEXIÓN: Añadir clase 'm-bot' si solo se quiere mantener el m-bottom y no el m-top, añadir opción en el json -->\n<section class=\"mdl-faqs\" #faqSection>\n    <div class=\"mdl-container\">\n        <div class=\"m-content\">\n            @if (texts?.title || texts?.description) {\n                <div class=\"m-top\">\n                    @if (texts?.title) {\n                        <div class=\"m-titulo\">{{ texts?.title }}</div>\n                    }\n                    @if (texts?.description) {\n                        <div\n                            class=\"m-texto\"\n                            [innerHTML]=\"texts?.description\"\n                        ></div>\n                    }\n                </div>\n            }\n            @if (buttons || texts?.contactTitle || texts?.contactDescription) {\n                <div class=\"m-bottom\">\n                    <div class=\"m-textos-bot\">\n                        @if (texts?.contactTitle) {\n                            <div class=\"m-titulo\">\n                                {{ texts?.contactTitle }}\n                            </div>\n                        }\n                        @if (texts?.contactDescription) {\n                            <div\n                                class=\"m-texto\"\n                                [innerHTML]=\"texts?.contactDescription\"\n                            ></div>\n                        }\n                    </div>\n                    @if (buttons?.[0]; as button) {\n                        <ng-container>\n                            <a\n                                class=\"m-button-sm\"\n                                [style.--var-color]=\"styles?.primary\"\n                                [style.--var-color-hover]=\"styles?.primaryHover\"\n                                [href]=\"button.url\"\n                                [attr.target]=\"button.target || '_self'\"\n                                [attr.aria-label]=\"button.label\"\n                                [attr.rel]=\"\n                                    (button.target || '_self') === '_blank'\n                                        ? 'noopener noreferrer'\n                                        : null\n                                \"\n                            >\n                                <span>{{ button.label }}</span>\n                            </a>\n                        </ng-container>\n                    }\n                </div>\n            }\n        </div>\n        <div class=\"m-listadofaqs\">\n            @if (\n                texts?.howGetTitle ||\n                texts?.howGetDescription ||\n                texts?.howGetTitle2 ||\n                getFaqItemsByListIdOnUtil(lists ?? [], 2).length > 0\n            ) {\n                <div class=\"m-extra-info\">\n                    <div class=\"m-row m-row1\">\n                        @if (texts?.howGetTitle) {\n                            <div class=\"m-title\">{{ texts?.howGetTitle }}</div>\n                        }\n                        <div class=\"m-content2\">\n                            @if (texts?.howGetDescription) {\n                                <div\n                                    class=\"m-text\"\n                                    [innerHTML]=\"texts?.howGetDescription\"\n                                ></div>\n                            }\n                            @if (\n                                getFaqItemsByListIdOnUtil(lists ?? [], 2);\n                                as items\n                            ) {\n                                <div class=\"m-items\">\n                                    @for (item of items; track $index) {\n                                        <div class=\"m-item\">\n                                            @if (item.icon) {\n                                                <i\n                                                    class=\"icon--svg\"\n                                                    [ngClass]=\"item.icon\"\n                                                    [style.--var-color]=\"\n                                                        styles?.primary\n                                                    \"\n                                                ></i>\n                                            }\n                                            <span>{{ item.label }}</span>\n                                        </div>\n                                    }\n                                </div>\n                            }\n                        </div>\n                    </div>\n                    <div class=\"m-row m-row2\">\n                        @if (texts?.howGetTitle2) {\n                            <div class=\"m-title\">{{ texts?.howGetTitle2 }}</div>\n                        }\n                        <div class=\"m-content2\">\n                            @if (texts?.howGetDescription2) {\n                                <div\n                                    class=\"m-text\"\n                                    [innerHTML]=\"texts?.howGetDescription2\"\n                                ></div>\n                            }\n                        </div>\n                    </div>\n                </div>\n            }\n            @if (lists?.length) {\n                @if (getFaqItemsByListIdOnUtil(lists ?? [], 1); as faqs) {\n                    @for (faq of faqs; track $index) {\n                        <div class=\"faq-item\">\n                            <button\n                                type=\"button\"\n                                class=\"faq-question\"\n                                [attr.id]=\"'faq-question-' + $index\"\n                                [attr.aria-controls]=\"'faq-answer-' + $index\"\n                                [attr.aria-expanded]=\"\n                                    expandedFaqIndex === $index\n                                \"\n                                (click)=\"toggleFaq($index)\"\n                                [class.active]=\"expandedFaqIndex === $index\"\n                            >\n                                <span>{{ faq.label }}</span>\n                                <span\n                                    class=\"faq-icon\"\n                                    [class.rotate]=\"expandedFaqIndex === $index\"\n                                ></span>\n                            </button>\n                            <div\n                                class=\"faq-answer\"\n                                [class.open]=\"expandedFaqIndex === $index\"\n                                [style.maxHeight.px]=\"\n                                    expandedFaqIndex === $index\n                                        ? getAnswerHeight($index)\n                                        : 0\n                                \"\n                                #faqAnswerRef\n                                [attr.id]=\"'faq-answer-' + $index\"\n                                role=\"region\"\n                                [attr.aria-labelledby]=\"\n                                    'faq-question-' + $index\n                                \"\n                            >\n                                {{ faq.description }}\n                            </div>\n                            <!--    <ng-container *ngIf=\"faq.button as faqButton\">\n                                <a\n                                    *ngIf=\"\n                                        faqButton.url;\n                                        else faqButtonTemplate\n                                    \"\n                                    class=\"m-button-sm\"\n                                    [ngClass]=\"faqButton.variant\"\n                                    [href]=\"faqButton.url\"\n                                    [attr.target]=\"faqButton.target || '_self'\"\n                                    [attr.aria-label]=\"\n                                        faqButton.ariaLabel || faqButton.label\n                                    \"\n                                    [attr.rel]=\"\n                                        (faqButton.target || '_self') ===\n                                        '_blank'\n                                            ? 'noopener noreferrer'\n                                            : null\n                                    \"\n                                >\n                                    <span>{{ faqButton.label }}</span>\n                                </a>\n                                <ng-template #faqButtonTemplate>\n                                    <button\n                                        type=\"button\"\n                                        class=\"m-button-sm\"\n                                        [ngClass]=\"faqButton.variant\"\n                                        [attr.aria-label]=\"\n                                            faqButton.ariaLabel ||\n                                            faqButton.label\n                                        \"\n                                    >\n                                        <span>{{ faqButton.label }}</span>\n                                    </button>\n                                </ng-template>\n                            </ng-container> -->\n                        </div>\n                    }\n                }\n            }\n        </div>\n    </div>\n</section>\n","import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n    AfterViewInit,\n    Component,\n    ElementRef,\n    inject,\n    Input,\n    OnDestroy,\n    PLATFORM_ID,\n    ViewChild,\n} from '@angular/core';\nimport {\n    BabylonButtonI,\n    BabylonItemI,\n    BabylonMultimediaI,\n    BabylonTextInfoI,\n} from '../../../../interfaces';\n\n@Component({\n    selector: 'c2-txt-img-v2',\n    standalone: true,\n    imports: [CommonModule],\n    templateUrl: './c2-txt-img-v2.component.html',\n    styleUrl: './c2-txt-img-v2.component.scss',\n})\nexport class C2TxtImgV2Component implements AfterViewInit, OnDestroy {\n    @Input() texts?: BabylonTextInfoI;\n    @Input() multimedia?: BabylonMultimediaI;\n    @Input() buttons?: BabylonButtonI[];\n    @Input() items?: BabylonItemI[];\n\n    platformId = inject(PLATFORM_ID);\n\n    @ViewChild('faqSection') private faqSection?: ElementRef<HTMLElement>;\n    private resizeTimeoutId?: ReturnType<typeof setTimeout>;\n    private mutationObserver?: MutationObserver;\n    private readonly handleResize = (): void => {\n        if (typeof window === 'undefined') {\n            return;\n        }\n        clearTimeout(this.resizeTimeoutId);\n        this.resizeTimeoutId = setTimeout(() => this.moveTopPanel(), 150);\n    };\n\n    ngAfterViewInit(): void {\n        this.moveTopPanel();\n        this.initializeResizeListener();\n        this.initializeMutationObserver();\n    }\n\n    ngOnDestroy(): void {\n        if (!isPlatformBrowser(this.platformId)) return;\n        if (typeof window !== 'undefined') {\n            window.removeEventListener('resize', this.handleResize);\n        }\n        clearTimeout(this.resizeTimeoutId);\n        this.mutationObserver?.disconnect();\n    }\n\n    trackByIndex(index: number): number {\n        return index;\n    }\n\n    private moveTopPanel(): void {\n        if (typeof window === 'undefined') {\n            return;\n        }\n        const root = this.faqSection?.nativeElement;\n        const topPanel = root?.querySelector<HTMLElement>('.m-top');\n        const content = root?.querySelector<HTMLElement>('.m-content');\n        const container = root?.querySelector<HTMLElement>('.mdl-container');\n\n        if (!root || !topPanel || !content || !container) {\n            return;\n        }\n\n        const isDesktop = window.matchMedia('(min-width: 1080px)').matches;\n\n        if (isDesktop) {\n            if (topPanel.parentElement !== content) {\n                content.insertBefore(topPanel, content.firstElementChild);\n            }\n            topPanel.style.position = 'relative';\n            return;\n        }\n\n        if (topPanel.parentElement !== root) {\n            root.insertBefore(topPanel, container);\n        }\n        topPanel.style.position = '';\n    }\n\n    private initializeResizeListener(): void {\n        if (typeof window === 'undefined') {\n            return;\n        }\n        window.addEventListener('resize', this.handleResize);\n    }\n\n    private initializeMutationObserver(): void {\n        if (!isPlatformBrowser(this.platformId)) return;\n        if (!this.faqSection?.nativeElement) {\n            return;\n        }\n\n        this.mutationObserver?.disconnect();\n        this.mutationObserver = new MutationObserver(() => this.moveTopPanel());\n        this.mutationObserver.observe(this.faqSection.nativeElement, {\n            childList: true,\n            subtree: true,\n        });\n    }\n}\n","<section class=\"mdl-md017\" #faqSection>\n    <div class=\"mdl-container\">\n        <div class=\"m-content\">\n            @if (texts?.title) {\n                <div class=\"m-top\">\n                    <div class=\"m-titulo\" [innerHTML]=\"texts?.title\"></div>\n                </div>\n            }\n            <div class=\"m-bottom\">\n                @if (multimedia?.imagenes?.[0]; as img) {\n                    <div class=\"m-img\">\n                        <img\n                            [src]=\"\n                                img.img?.src ||\n                                'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                            \"\n                            [alt]=\"img.img?.alt\"\n                            loading=\"lazy\"\n                        />\n                    </div>\n                }\n                @if (texts?.subtitle) {\n                    <div class=\"m-texto\" [innerHTML]=\"texts?.subtitle\"></div>\n                }\n            </div>\n        </div>\n        @if (items?.length) {\n            <div class=\"m-listadofaqs\">\n                @for (item of items; track $index) {\n                    <div class=\"faq-item\">\n                        @if (item.description) {\n                            <div\n                                class=\"faq-answer\"\n                                [innerHTML]=\"item?.description\"\n                            ></div>\n                        }\n                        @if (item.title) {\n                            <div\n                                class=\"faq-question\"\n                                [innerHTML]=\"item?.title\"\n                            ></div>\n                        }\n                    </div>\n                }\n            </div>\n        }\n    </div>\n</section>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { BabylonLinkTypeDirective } from '../../../../directives/link-type/link-type.directive';\nimport {\n    BabylonButtonI,\n    BabylonOfferItemI,\n    BabylonTextInfoI,\n} from '../../../../interfaces';\nimport { BabylonCurrencyPipe } from '../../../../pipes/babylon-currency.pipe';\n\n@Component({\n    selector: 'c2-txt-img-v2',\n    standalone: true,\n    imports: [CommonModule, BabylonCurrencyPipe, BabylonLinkTypeDirective],\n    templateUrl: './c2-txt-img-v3.component.html',\n    styleUrl: './c2-txt-img-v3.component.scss',\n})\nexport class C2TxtImgV3Component {\n    @Input() texts?: BabylonTextInfoI;\n    @Input() offers?: BabylonOfferItemI[];\n}\n","<section class=\"mdl-C2TxtImgV3\">\n    @if (texts?.title) {\n        <div class=\"m-pretitulo\" [innerHTML]=\"texts?.title\"></div>\n    }\n    @if (offers?.length) {\n        <div class=\"mdl-container\">\n            @for (offer of offers; track $index) {\n                <div class=\"m-item\">\n                    @if (offer.images) {\n                        <img\n                            [src]=\"offer.images.src\"\n                            [alt]=\"offer.images.alt\"\n                        />\n                    }\n                    <div class=\"m-content\">\n                        <div class=\"m-left\">\n                            @if (offer.texts?.title ?? offer.name) {\n                                <div\n                                    class=\"m-titulo\"\n                                    [innerHTML]=\"\n                                        offer.texts?.title ?? offer.name\n                                    \"\n                                ></div>\n                            }\n                            @if (offer.texts?.subtitle) {\n                                <div\n                                    class=\"m-subtitulo\"\n                                    [innerHTML]=\"offer.texts?.subtitle\"\n                                ></div>\n                            }\n                        </div>\n                        <div class=\"m-right\">\n                            @if (offer.texts?.additional1) {\n                                <div\n                                    class=\"m-desde\"\n                                    [innerHTML]=\"offer.texts?.additional1\"\n                                ></div>\n                            }\n                            <div class=\"m-precio\">\n                                @if (offer.price) {\n                                    {{ offer.price\n                                    }}{{\n                                        offer?.currency ?? 'EUR'\n                                            | currencySymbol\n                                    }}\n                                } @else if (offer.discount) {\n                                    {{ offer.discount }} %\n                                }\n                            </div>\n                        </div>\n                    </div>\n                    <div class=\"m-actions\">\n                        @if (offer.links) {\n                            <a\n                                class=\"m-button1\"\n                                [href]=\"offer?.links?.[0]?.url\"\n                                [linkType]=\"offer?.links?.[0]?.linkType\"\n                                [attr.aria-label]=\"offer?.links?.[0]?.label\"\n                            >\n                                <span>{{ offer?.links?.[0]?.label }}</span>\n                            </a>\n                        }\n                        @if (offer.buttons) {\n                            <a\n                                class=\"m-button2\"\n                                [href]=\"offer?.buttons?.[0]?.url\"\n                                [linkType]=\"offer?.buttons?.[0]?.linkType\"\n                                [attr.aria-label]=\"offer?.buttons?.[0]?.label\"\n                            >\n                                <span>{{ offer?.buttons?.[0]?.label }}</span>\n                            </a>\n                        }\n                    </div>\n                    <div class=\"m-tag\">\n                        {{ texts?.offerTag ?? texts?.tag ?? texts?.Tag }}\n                    </div>\n                </div>\n            }\n        </div>\n    }\n</section>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { BabylonLinkTypeDirective } from '../../../../directives/link-type/link-type.directive';\nimport { BabylonButtonI, BabylonTextInfoI } from '../../../../interfaces';\n\nexport interface C2TxtRrssIcon {\n    label: string;\n    url: string;\n    background: string;\n    target?: string;\n}\n\nexport interface C2TxtRrssContent {\n    backgroundColor?: string;\n    title: string;\n    hashtag: string;\n    icons: C2TxtRrssIcon[];\n}\n\n@Component({\n    selector: 'c2-txt-rrss',\n    standalone: true,\n    encapsulation: ViewEncapsulation.None,\n    imports: [CommonModule, BabylonLinkTypeDirective],\n    templateUrl: './c2-txt-rrss.component.html',\n    styleUrl: './c2-txt-rrss.component.scss',\n})\nexport class C2TxtRrssComponent {\n    @Input() texts?: BabylonTextInfoI;\n    @Input() socials?: BabylonButtonI[];\n\n    trackByIcon(index: number, item: C2TxtRrssIcon): string {\n        return item.label ?? `${index}`;\n    }\n\n    normalizeText(value?: string | null): string {\n        return (value ?? '')\n            .toLowerCase()\n            .normalize('NFD')\n            .replace(/[\\u0300-\\u036f]/g, '')\n            .replace(/\\s+/g, '')\n            .trim();\n    }\n}\n","@if (socials) {\n    <section class=\"mdl-md001\">\n        <div class=\"mdl-container\">\n            <div class=\"m-rrss\">\n                @if (texts) {\n                    <h2 class=\"m-title\">{{ texts.title }}</h2>\n                }\n                <div class=\"m-icons\">\n                    @for (item of socials; track $index) {\n                        @if (\n                            normalizeText(item.name) == 'youtube' ||\n                            normalizeText(item.label) == 'youtube'\n                        ) {\n                            <a\n                                background=\"#FF4338\"\n                                [href]=\"item?.url\"\n                                [linkType]=\"item?.linkType ?? 'external'\"\n                                class=\"m-icon youtube\"\n                            >\n                                <svg\n                                    width=\"22\"\n                                    height=\"22\"\n                                    viewBox=\"0 0 24 24\"\n                                    fill=\"none\"\n                                    xmlns=\"http://www.w3.org/2000/svg\"\n                                >\n                                    <path\n                                        fill-rule=\"evenodd\"\n                                        clip-rule=\"evenodd\"\n                                        d=\"M23.5 6.2c-.3-1.1-1.2-2-2.3-2.3C19.2 3.4 12 3.4 12 3.4s-7.2 0-9.2.5C1.7 4.2.8 5.1.5 6.2.1 8.2.1 12 .1 12s0 3.8.4 5.8c.3 1.1 1.2 2 2.3 2.3 2 .5 9.2.5 9.2.5s7.2 0 9.2-.5c1.1-.3 2-1.2 2.3-2.3.4-2 .4-5.8.4-5.8s0-3.8-.4-5.8ZM10 8.5v7l6-3.5-6-3.5Z\"\n                                        fill=\"black\"\n                                    />\n                                </svg>\n                            </a>\n                        }\n                        @if (\n                            normalizeText(item.name) == 'facebook' ||\n                            normalizeText(item.label) == 'facebook'\n                        ) {\n                            <a\n                                background=\"#5B87DA\"\n                                [href]=\"item?.url\"\n                                class=\"m-icon facebook\"\n                            >\n                                <svg\n                                    width=\"22\"\n                                    height=\"22\"\n                                    viewBox=\"0 0 24 24\"\n                                    fill=\"none\"\n                                    xmlns=\"http://www.w3.org/2000/svg\"\n                                >\n                                    <path\n                                        d=\"M13.5 22V12.9h3.1l.5-3.5h-3.6V7.2c0-1 .3-1.7 1.8-1.7h1.9V2.4c-.3 0-1.6-.1-3-.1-3 0-5 1.8-5 5.1v2.9H6.2v3.5h3.1V22h4.2Z\"\n                                        fill=\"black\"\n                                    />\n                                </svg>\n                            </a>\n                        }\n                        @if (\n                            normalizeText(item.name) == 'instagram' ||\n                            normalizeText(item.label) == 'instagram'\n                        ) {\n                            <a\n                                background=\"#515050\"\n                                [href]=\"item?.url\"\n                                [linkType]=\"item?.linkType ?? 'external'\"\n                                class=\"m-icon instagram\"\n                            >\n                                <svg\n                                    width=\"22\"\n                                    height=\"22\"\n                                    viewBox=\"0 0 22 22\"\n                                    fill=\"none\"\n                                    xmlns=\"http://www.w3.org/2000/svg\"\n                                >\n                                    <path\n                                        d=\"M21.2299 6.04339C21.2281 4.50196 20.6263 3.05153 19.5362 1.96139C18.4461 0.872174 16.9956 0.271388 15.4542 0.269531H5.77478C4.23336 0.27046 2.78386 0.872174 1.69371 1.96139C0.603571 3.05246 0.00185714 4.50196 0 6.04339V15.7228C0.00185714 17.2642 0.602643 18.7137 1.69371 19.8048C2.78386 20.8949 4.23336 21.4967 5.77478 21.4985H15.4542C16.9956 21.4967 18.4451 20.8959 19.5362 19.8057C20.6263 18.7147 21.2281 17.2652 21.2299 15.7237V6.04339ZM19.6857 15.7228C19.6848 16.8529 19.2437 17.9142 18.4461 18.7137C17.6475 19.5132 16.5852 19.9534 15.4551 19.9543H5.77478C4.64471 19.9534 3.58243 19.5132 2.78478 18.7137C1.98621 17.9161 1.54514 16.8538 1.54421 15.7247V6.04339C1.54607 4.91331 1.98714 3.85196 2.78478 3.05432C3.58243 2.25574 4.64378 1.8156 5.77478 1.81374H15.4542C16.5843 1.81467 17.6466 2.25482 18.4451 3.05432C19.2437 3.85103 19.6848 4.91331 19.6857 6.04339V15.7228Z\"\n                                        fill=\"black\"\n                                    />\n                                    <path\n                                        d=\"M5.6446 8.8254C5.23603 9.81155 5.13017 10.8859 5.33817 11.9333C5.54617 12.9798 6.0541 13.9316 6.80995 14.6893C7.56488 15.4443 8.5176 15.9531 9.56502 16.1611C10.6041 16.3691 11.6915 16.2614 12.6739 15.8547C13.66 15.447 14.4948 14.7608 15.0882 13.8731C15.6815 12.9863 15.9954 11.9528 15.9954 10.884C15.9944 9.44662 15.4336 8.09648 14.4177 7.08062C13.401 6.06476 12.0508 5.50483 10.6152 5.50391C9.54738 5.50391 8.51388 5.81776 7.62617 6.41112C6.73845 7.00355 6.05317 7.83926 5.6446 8.8254ZM7.90381 8.17262C8.44238 7.63405 9.12117 7.27098 9.86774 7.12333C10.6087 6.97383 11.3841 7.0509 12.0833 7.33969C12.7862 7.63126 13.3815 8.12062 13.8049 8.75205C14.2283 9.38533 14.4512 10.1226 14.4512 10.8831C14.4502 11.9073 14.051 12.8703 13.3267 13.5936C12.6033 14.3179 11.6404 14.7172 10.6162 14.7181C9.85474 14.7181 9.11838 14.4953 8.4851 14.0718C7.85274 13.6503 7.36431 13.0541 7.07274 12.3503C6.78117 11.6464 6.70595 10.8803 6.85453 10.1347C7.0031 9.38905 7.36617 8.71026 7.90381 8.17262Z\"\n                                        fill=\"black\"\n                                    />\n                                    <path\n                                        d=\"M15.3435 5.67383C15.4763 5.92176 15.6927 6.11769 15.9517 6.22448C16.2117 6.33219 16.5033 6.34705 16.7726 6.26441C17.041 6.18269 17.275 6.00998 17.4319 5.77505C17.5879 5.54198 17.6585 5.25876 17.6315 4.97833C17.6037 4.69883 17.4792 4.43512 17.2805 4.23733L17.2787 4.23455C17.0484 4.00612 16.7429 3.87891 16.417 3.87891C16.1356 3.87891 15.8607 3.97733 15.6435 4.15655C15.4262 4.33576 15.2757 4.58648 15.2219 4.86133C15.168 5.13526 15.2107 5.42498 15.3435 5.67383Z\"\n                                        fill=\"black\"\n                                    />\n                                </svg>\n                            </a>\n                        }\n                        @if (\n                            normalizeText(item.name) == 'twitter' ||\n                            normalizeText(item.label) == 'twitter'\n                        ) {\n                            <a\n                                background=\"#515050\"\n                                [href]=\"item?.url\"\n                                [linkType]=\"item?.linkType ?? 'external'\"\n                                class=\"m-icon twitter\"\n                            >\n                                <svg\n                                    width=\"22\"\n                                    height=\"22\"\n                                    viewBox=\"0 0 24 24\"\n                                    fill=\"none\"\n                                    xmlns=\"http://www.w3.org/2000/svg\"\n                                >\n                                    <path\n                                        d=\"M18.9 2H22l-6.8 7.8L23 22h-6.6l-5.2-6.7L5.3 22H2l7.3-8.4L1 2h6.7l4.7 6 6.5-6ZM17.8 20h1.7L6.1 3.9H4.3L17.8 20Z\"\n                                        fill=\"black\"\n                                    />\n                                </svg>\n                            </a>\n                        }\n                        @if (\n                            normalizeText(item.name) == 'tiktok' ||\n                            normalizeText(item.label) == 'tiktok'\n                        ) {\n                            <a\n                                background=\"#515050\"\n                                [href]=\"item?.url\"\n                                [linkType]=\"item?.linkType ?? 'external'\"\n                                class=\"m-icon tiktok\"\n                            >\n                                <svg\n                                    width=\"22\"\n                                    height=\"22\"\n                                    viewBox=\"0 0 24 24\"\n                                    fill=\"none\"\n                                    xmlns=\"http://www.w3.org/2000/svg\"\n                                >\n                                    <path\n                                        d=\"M14 2h2.3c.3 2.1 1.5 3.7 3.7 4.4V8.6c-1.7 0-3.1-.5-4.3-1.4v7.1c0 3-2.4 5.7-5.7 5.7S4.3 17.3 4.3 14.3c0-3 2.4-5.7 5.7-5.7.3 0 .6 0 .9.1v2.4c-.3-.1-.6-.2-.9-.2-1.7 0-3.1 1.4-3.1 3.1 0 1.7 1.4 3.1 3.1 3.1 1.8 0 3.1-1.3 3.1-3.6V2Z\"\n                                        fill=\"black\"\n                                    />\n                                </svg>\n                            </a>\n                        }\n                        @if (\n                            normalizeText(item.name) == 'blue' ||\n                            normalizeText(item.label) == 'blue'\n                        ) {\n                            <a\n                                background=\"#66C3C9\"\n                                [href]=\"item?.url\"\n                                [linkType]=\"item?.linkType ?? 'external'\"\n                                class=\"m-icon blue\"\n                            >\n                                <svg\n                                    width=\"22\"\n                                    height=\"22\"\n                                    viewBox=\"0 0 22 22\"\n                                    fill=\"none\"\n                                    xmlns=\"http://www.w3.org/2000/svg\"\n                                >\n                                    <path\n                                        d=\"M21.2299 6.04339C21.2281 4.50196 20.6263 3.05153 19.5362 1.96139C18.4461 0.872174 16.9956 0.271388 15.4542 0.269531H5.77478C4.23336 0.27046 2.78386 0.872174 1.69371 1.96139C0.603571 3.05246 0.00185714 4.50196 0 6.04339V15.7228C0.00185714 17.2642 0.602643 18.7137 1.69371 19.8048C2.78386 20.8949 4.23336 21.4967 5.77478 21.4985H15.4542C16.9956 21.4967 18.4451 20.8959 19.5362 19.8057C20.6263 18.7147 21.2281 17.2652 21.2299 15.7237V6.04339ZM19.6857 15.7228C19.6848 16.8529 19.2437 17.9142 18.4461 18.7137C17.6475 19.5132 16.5852 19.9534 15.4551 19.9543H5.77478C4.64471 19.9534 3.58243 19.5132 2.78478 18.7137C1.98621 17.9161 1.54514 16.8538 1.54421 15.7247V6.04339C1.54607 4.91331 1.98714 3.85196 2.78478 3.05432C3.58243 2.25574 4.64378 1.8156 5.77478 1.81374H15.4542C16.5843 1.81467 17.6466 2.25482 18.4451 3.05432C19.2437 3.85103 19.6848 4.91331 19.6857 6.04339V15.7228Z\"\n                                        fill=\"black\"\n                                    />\n                                    <path\n                                        d=\"M5.6446 8.8254C5.23603 9.81155 5.13017 10.8859 5.33817 11.9333C5.54617 12.9798 6.0541 13.9316 6.80995 14.6893C7.56488 15.4443 8.5176 15.9531 9.56502 16.1611C10.6041 16.3691 11.6915 16.2614 12.6739 15.8547C13.66 15.447 14.4948 14.7608 15.0882 13.8731C15.6815 12.9863 15.9954 11.9528 15.9954 10.884C15.9944 9.44662 15.4336 8.09648 14.4177 7.08062C13.401 6.06476 12.0508 5.50483 10.6152 5.50391C9.54738 5.50391 8.51388 5.81776 7.62617 6.41112C6.73845 7.00355 6.05317 7.83926 5.6446 8.8254ZM7.90381 8.17262C8.44238 7.63405 9.12117 7.27098 9.86774 7.12333C10.6087 6.97383 11.3841 7.0509 12.0833 7.33969C12.7862 7.63126 13.3815 8.12062 13.8049 8.75205C14.2283 9.38533 14.4512 10.1226 14.4512 10.8831C14.4502 11.9073 14.051 12.8703 13.3267 13.5936C12.6033 14.3179 11.6404 14.7172 10.6162 14.7181C9.85474 14.7181 9.11838 14.4953 8.4851 14.0718C7.85274 13.6503 7.36431 13.0541 7.07274 12.3503C6.78117 11.6464 6.70595 10.8803 6.85453 10.1347C7.0031 9.38905 7.36617 8.71026 7.90381 8.17262Z\"\n                                        fill=\"black\"\n                                    />\n                                    <path\n                                        d=\"M15.3435 5.67383C15.4763 5.92176 15.6927 6.11769 15.9517 6.22448C16.2117 6.33219 16.5033 6.34705 16.7726 6.26441C17.041 6.18269 17.275 6.00998 17.4319 5.77505C17.5879 5.54198 17.6585 5.25876 17.6315 4.97833C17.6037 4.69883 17.4792 4.43512 17.2805 4.23733L17.2787 4.23455C17.0484 4.00612 16.7429 3.87891 16.417 3.87891C16.1356 3.87891 15.8607 3.97733 15.6435 4.15655C15.4262 4.33576 15.2757 4.58648 15.2219 4.86133C15.168 5.13526 15.2107 5.42498 15.3435 5.67383Z\"\n                                        fill=\"black\"\n                                    />\n                                </svg>\n                            </a>\n                        }\n                        <!--  <a\n                            class=\"m-icon\"\n                            [style.background-color]=\"icon.background\"\n                            [href]=\"icon.url\"\n                            [attr.target]=\"icon.target || '_self'\"\n                            [attr.aria-label]=\"icon.label\"\n                            [attr.rel]=\"\n                                (icon.target || '_self') === '_blank'\n                                    ? 'noopener noreferrer'\n                                    : null\n                            \"\n                        >\n                            <svg\n                                width=\"22\"\n                                height=\"22\"\n                                viewBox=\"0 0 22 22\"\n                                fill=\"none\"\n                                xmlns=\"http://www.w3.org/2000/svg\"\n                                aria-hidden=\"true\"\n                                focusable=\"false\"\n                            >\n                                <path\n                                    d=\"M21.2299 6.04339C21.2281 4.50196 20.6263 3.05153 19.5362 1.96139C18.4461 0.872174 16.9956 0.271388 15.4542 0.269531H5.77478C4.23336 0.27046 2.78386 0.872174 1.69371 1.96139C0.603571 3.05246 0.00185714 4.50196 0 6.04339V15.7228C0.00185714 17.2642 0.602643 18.7137 1.69371 19.8048C2.78386 20.8949 4.23336 21.4967 5.77478 21.4985H15.4542C16.9956 21.4967 18.4451 20.8959 19.5362 19.8057C20.6263 18.7147 21.2281 17.2652 21.2299 15.7237V6.04339ZM19.6857 15.7228C19.6848 16.8529 19.2437 17.9142 18.4461 18.7137C17.6475 19.5132 16.5852 19.9534 15.4551 19.9543H5.77478C4.64471 19.9534 3.58243 19.5132 2.78478 18.7137C1.98621 17.9161 1.54514 16.8538 1.54421 15.7247V6.04339C1.54607 4.91331 1.98714 3.85196 2.78478 3.05432C3.58243 2.25574 4.64378 1.8156 5.77478 1.81374H15.4542C16.5843 1.81467 17.6466 2.25482 18.4451 3.05432C19.2437 3.85103 19.6848 4.91331 19.6857 6.04339V15.7228Z\"\n                                    fill=\"black\"\n                                />\n                                <path\n                                    d=\"M5.6446 8.8254C5.23603 9.81155 5.13017 10.8859 5.33817 11.9333C5.54617 12.9798 6.0541 13.9316 6.80995 14.6893C7.56488 15.4443 8.5176 15.9531 9.56502 16.1611C10.6041 16.3691 11.6915 16.2614 12.6739 15.8547C13.66 15.447 14.4948 14.7608 15.0882 13.8731C15.6815 12.9863 15.9954 11.9528 15.9954 10.884C15.9944 9.44662 15.4336 8.09648 14.4177 7.08062C13.401 6.06476 12.0508 5.50483 10.6152 5.50391C9.54738 5.50391 8.51388 5.81776 7.62617 6.41112C6.73845 7.00355 6.05317 7.83926 5.6446 8.8254ZM7.90381 8.17262C8.44238 7.63405 9.12117 7.27098 9.86774 7.12333C10.6087 6.97383 11.3841 7.0509 12.0833 7.33969C12.7862 7.63126 13.3815 8.12062 13.8049 8.75205C14.2283 9.38533 14.4512 10.1226 14.4512 10.8831C14.4502 11.9073 14.051 12.8703 13.3267 13.5936C12.6033 14.3179 11.6404 14.7172 10.6162 14.7181C9.85474 14.7181 9.11838 14.4953 8.4851 14.0718C7.85274 13.6503 7.36431 13.0541 7.07274 12.3503C6.78117 11.6464 6.70595 10.8803 6.85453 10.1347C7.0031 9.38905 7.36617 8.71026 7.90381 8.17262Z\"\n                                    fill=\"black\"\n                                />\n                                <path\n                                    d=\"M15.3435 5.67383C15.4763 5.92176 15.6927 6.11769 15.9517 6.22448C16.2117 6.33219 16.5033 6.34705 16.7726 6.26441C17.041 6.18269 17.275 6.00998 17.4319 5.77505C17.5879 5.54198 17.6585 5.25876 17.6315 4.97833C17.6037 4.69883 17.4792 4.43512 17.2805 4.23733L17.2787 4.23455C17.0484 4.00612 16.7429 3.87891 16.417 3.87891C16.1356 3.87891 15.8607 3.97733 15.6435 4.15655C15.4262 4.33576 15.2757 4.58648 15.2219 4.86133C15.168 5.13526 15.2107 5.42498 15.3435 5.67383Z\"\n                                    fill=\"black\"\n                                />\n                            </svg>\n                        </a> -->\n                    }\n                </div>\n                @if (texts?.description ?? texts?.subtitle) {\n                    <div class=\"m-subtitle\">\n                        {{ texts?.description ?? texts?.subtitle }}\n                    </div>\n                }\n            </div>\n        </div>\n    </section>\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({ name: 'findByOrder', standalone: true })\nexport class FindByOrderPipe implements PipeTransform {\n    transform(items: any[] | null | undefined, order: number) {\n        return items?.find((item) => item.order === order);\n    }\n}\n","import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n    AfterViewInit,\n    Component,\n    ElementRef,\n    inject,\n    Input,\n    OnDestroy,\n    PLATFORM_ID,\n    ViewChild,\n    ViewEncapsulation,\n} from '@angular/core';\nimport { BabylonLinkTypeDirective } from '../../../../directives/link-type/link-type.directive';\nimport {\n    BabylonButtonI,\n    BabylonItemI,\n    BabylonMultimediaI,\n    BabylonTextInfoI,\n} from '../../../../interfaces';\nimport { FindByOrderPipe } from '../../../../pipes/babylon-order-button.pipe';\nimport { getFirstImageByTagFromMultimedia } from '../../../../utils/mutimedia.utils';\n\n@Component({\n    selector: 'c2-txt-svg-img-cta',\n    standalone: true,\n    imports: [CommonModule, FindByOrderPipe, BabylonLinkTypeDirective],\n    templateUrl: './c2-txt-svg-img-cta.component.html',\n    styleUrl: './c2-txt-svg-img-cta.component.scss',\n    encapsulation: ViewEncapsulation.None,\n})\nexport class C2TxtSvgImgCtaComponent implements AfterViewInit, OnDestroy {\n    @Input() texts?: BabylonTextInfoI;\n    @Input() multimedia?: BabylonMultimediaI;\n    @Input() buttons?: BabylonButtonI[];\n    @Input() items?: BabylonItemI[];\n\n    tagName: string = 'C2TxtSvgImgCta';\n\n    platformId = inject(PLATFORM_ID);\n\n    @ViewChild('faqSection') private faqSection?: ElementRef<HTMLElement>;\n    private resizeTimeoutId?: ReturnType<typeof setTimeout>;\n    private mutationObserver?: MutationObserver;\n    private readonly handleResize = (): void => {\n        if (typeof window === 'undefined') {\n            return;\n        }\n        clearTimeout(this.resizeTimeoutId);\n        this.resizeTimeoutId = setTimeout(() => this.moveTopPanel(), 150);\n    };\n\n    ngAfterViewInit(): void {\n        this.moveTopPanel();\n        this.initializeResizeListener();\n        this.initializeMutationObserver();\n    }\n\n    ngOnDestroy(): void {\n        if (typeof window !== 'undefined') {\n            window.removeEventListener('resize', this.handleResize);\n        }\n        clearTimeout(this.resizeTimeoutId);\n        this.mutationObserver?.disconnect();\n    }\n\n    trackByIndex(index: number): number {\n        return index;\n    }\n\n    private moveTopPanel(): void {\n        if (typeof window === 'undefined') {\n            return;\n        }\n        const root = this.faqSection?.nativeElement;\n        const topPanel = root?.querySelector<HTMLElement>('.m-top');\n        const content = root?.querySelector<HTMLElement>('.m-content');\n        const container = root?.querySelector<HTMLElement>('.mdl-container');\n\n        if (!root || !topPanel || !content || !container) {\n            return;\n        }\n\n        const isDesktop = window.matchMedia('(min-width: 1080px)').matches;\n\n        if (isDesktop) {\n            if (topPanel.parentElement !== content) {\n                content.insertBefore(topPanel, content.firstElementChild);\n            }\n            topPanel.style.position = 'relative';\n            return;\n        }\n\n        if (topPanel.parentElement !== root) {\n            root.insertBefore(topPanel, container);\n        }\n        topPanel.style.position = '';\n    }\n\n    private initializeResizeListener(): void {\n        if (typeof window === 'undefined') {\n            return;\n        }\n        window.addEventListener('resize', this.handleResize);\n    }\n\n    private initializeMutationObserver(): void {\n        if (!isPlatformBrowser(this.platformId)) return;\n        if (!this.faqSection?.nativeElement) {\n            return;\n        }\n\n        this.mutationObserver?.disconnect();\n        this.mutationObserver = new MutationObserver(() => this.moveTopPanel());\n        this.mutationObserver.observe(this.faqSection.nativeElement, {\n            childList: true,\n            subtree: true,\n        });\n    }\n\n    getFirstImageByTag(tagName: string) {\n        return getFirstImageByTagFromMultimedia(this.multimedia, tagName);\n    }\n}\n","<section class=\"mdl-md019\" #faqSection>\n    <div class=\"mdl-container\">\n        <div class=\"m-content\">\n            @if (texts?.title) {\n                <div class=\"m-top\">\n                    <div class=\"m-titulo\">{{ texts?.title }}</div>\n                </div>\n            }\n            @if (getFirstImageByTag(tagName); as img) {\n                <div class=\"m-center\">\n                    <div class=\"m-img\">\n                        <img\n                            [src]=\"\n                                img.img?.src ||\n                                'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                            \"\n                            [alt]=\"img.img?.alt\"\n                            loading=\"lazy\"\n                        />\n                    </div>\n                </div>\n            }\n            <div class=\"m-bottom\">\n                @if (multimedia?.imagenes?.[0]; as img) {\n                    <div class=\"m-img\">\n                        <img\n                            [src]=\"\n                                img.img?.src ||\n                                'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                            \"\n                            [alt]=\"img.img?.alt\"\n                            loading=\"lazy\"\n                        />\n                    </div>\n                }\n                @if (texts?.subtitle) {\n                    <div class=\"m-texto\">\n                        {{ texts?.subtitle }}\n                    </div>\n                }\n            </div>\n        </div>\n        @if (items) {}\n        <div class=\"m-listadofaqs\">\n            @for (item of items; track $index) {\n                <div class=\"faq-item\">\n                    <div class=\"faq-title\" *ngIf=\"item.title\">\n                        {{ item.title }}\n                    </div>\n                    <div class=\"faq-question\" *ngIf=\"item.title\">\n                        {{ item.title }}\n                    </div>\n                    <div class=\"faq-answer\">\n                        {{ item.description }}\n                    </div>\n                    @if (buttons | findByOrder: $index; as btn) {\n                        <ng-container>\n                            <a\n                                class=\"m-button-sm\"\n                                [href]=\"btn.url\"\n                                [linkType]=\"btn.linkType\"\n                                [attr.target]=\"btn.target || '_self'\"\n                                [attr.aria-label]=\"btn.label\"\n                            >\n                                <span>{{ btn.label }}</span>\n                            </a>\n                        </ng-container>\n                    }\n                </div>\n            }\n            <!--  <ng-container *ngIf=\"content.footerButton as footerButton\">\n                <a\n                    *ngIf=\"footerButton.url; else footerButtonTemplate\"\n                    class=\"m-button-sm\"\n                    [ngClass]=\"footerButton.variant\"\n                    [href]=\"footerButton.url\"\n                    [attr.target]=\"footerButton.target || '_self'\"\n                    [attr.aria-label]=\"\n                        footerButton.ariaLabel || footerButton.label\n                    \"\n                    [attr.rel]=\"\n                        (footerButton.target || '_self') === '_blank'\n                            ? 'noopener noreferrer'\n                            : null\n                    \"\n                >\n                    <span>{{ footerButton.label }}</span>\n                </a>\n                <ng-template #footerButtonTemplate>\n                    <button\n                        type=\"button\"\n                        class=\"m-button-sm\"\n                        [ngClass]=\"footerButton.variant\"\n                        [attr.aria-label]=\"\n                            footerButton.ariaLabel || footerButton.label\n                        \"\n                    >\n                        <span>{{ footerButton.label }}</span>\n                    </button>\n                </ng-template>\n            </ng-container> -->\n        </div>\n    </div>\n</section>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport {\n    BabylonBodyExtra,\n    BabylonRoomDetailI,\n    BabylonTextInfoI,\n} from '../../../../interfaces';\nimport { BabylonHotelStylesItem } from '../../../../interfaces/babylon-hotel-styles.interface';\nimport { Utils } from '../../../../utils';\n\n@Component({\n    selector: 'c2-txt-mdh005',\n    standalone: true,\n    imports: [CommonModule],\n    templateUrl: './c2-txt-mdh005.component.html',\n    styleUrl: './c2-txt-mdh005.component.scss',\n})\nexport class C2TxtMdh005Component {\n    @Input() texts?: BabylonTextInfoI;\n    @Input() rooms?: BabylonRoomDetailI[];\n    @Input() styles?: BabylonHotelStylesItem;\n    @Input() hotelType?: BabylonBodyExtra;\n    @Input() hotelCategory?: BabylonBodyExtra;\n    @Input() paddingTop?: string = '18rem';\n\n    trackByIndex(index: number): number {\n        return index;\n    }\n\n    /*     get keyIcons(): number[] {\n        const count = this.content.tags?.keyIconsCount ?? 0;\n        return count > 0 ? Array.from({ length: count }, (_, idx) => idx) : [];\n    } */\n\n    getNumber(text: string): number[] {\n        return Utils.extractNumberRange(text);\n    }\n\n    showIfSup(value?: string | null): string {\n        const regex = /\\b(SUP|superior)\\b/i;\n\n        return regex.test(value ?? '') ? 'SUP' : '';\n    }\n}\n","<!-- COMENTARIO CONEXIÓN: Añadir clase p-top para páginas sin hero -->\n@if (texts || rooms?.[0]) {\n    <section class=\"mdl-mdh005 p-top\" [style.--paddingTop]=\"paddingTop\">\n        <!-- [class.p-top]=\"content.withTopSpacing\"\n        [class.text-center]=\"content.centerAlign\" -->\n        <div class=\"mdl-container\">\n            <div class=\"m-left\">\n                @if (rooms?.[0]?.texts?.additional1 ?? texts?.pretitle) {\n                    <div class=\"m-pretitulo\">\n                        {{ rooms?.[0]?.texts?.additional1 ?? texts?.pretitle }}\n                    </div>\n                }\n                @if (\n                    rooms?.[0]?.texts?.title ??\n                    rooms?.[0]?.texts?.name ??\n                    texts?.title\n                ) {\n                    <div class=\"m-titulo\">\n                        {{\n                            rooms?.[0]?.texts?.title ??\n                                rooms?.[0]?.texts?.name ??\n                                texts?.title\n                        }}\n                    </div>\n                }\n            </div>\n\n            @if (rooms?.[0]?.texts?.additional2 ?? texts?.description) {\n                <div class=\"m-right\">\n                    <div class=\"m-texto\">\n                        {{\n                            rooms?.[0]?.texts?.additional2 ?? texts?.description\n                        }}\n                    </div>\n                </div>\n            }\n\n            @if (!rooms?.[0]) {\n                <div\n                    class=\"m-tags\"\n                    [ngClass]=\"{\n                        'no-margin-left':\n                            rooms?.[0]?.texts?.additional2 ??\n                            texts?.description,\n                    }\"\n                >\n                    @if (texts?.hotelCategory || (hotelType && hotelCategory)) {\n                        <span\n                            class=\"m-rating\"\n                            [style.--arrow-color]=\"styles?.primary ?? '#000'\"\n                            [style.--arrow-hover-color]=\"\n                                styles?.primaryHover ??\n                                styles?.primary ??\n                                '#000'\n                            \"\n                        >\n                            @if (\n                                texts?.hotelType === 'Hotel' ||\n                                hotelType?.bodyextra?.nameIdentifier === 'Hotel'\n                            ) {\n                                <div class=\"category\">\n                                    @for (\n                                        item of getNumber(\n                                            texts?.hotelCategory ??\n                                                hotelCategory?.bodyextra\n                                                    ?.nameIdentifier ??\n                                                ''\n                                        );\n                                        track $index\n                                    ) {\n                                        <svg\n                                            xmlns=\"http://www.w3.org/2000/svg\"\n                                            width=\"20\"\n                                            height=\"20\"\n                                            viewBox=\"0 0 20 20\"\n                                        >\n                                            <g fill=\"none\" fill-rule=\"evenodd\">\n                                                <g>\n                                                    <g>\n                                                        <g\n                                                            transform=\"translate(-1404.000000, -5922.000000) translate(191.000000, 5865.000000) translate(1109.000000, 57.000000)\"\n                                                        >\n                                                            <g>\n                                                                <path\n                                                                    fill=\"#fff\"\n                                                                    fill-opacity=\"1\"\n                                                                    fill-rule=\"nonzero\"\n                                                                    d=\"M10 0l2.294 7.104c.034.106.133.178.245.178L20 7.267l-6.046 4.374v.001c-.09.066-.128.182-.093.289l2.322 7.095-6.032-4.4c-.09-.065-.213-.065-.303 0l-6.029 4.4 2.322-7.095H6.14c.035-.107-.003-.223-.094-.289L0 7.268l7.461.015.001-.001c.112 0 .211-.072.245-.178L10 0z\"\n                                                                    transform=\"translate(104.000000, 0.000000)\"\n                                                                />\n                                                            </g>\n                                                        </g>\n                                                    </g>\n                                                </g>\n                                            </g>\n                                        </svg>\n                                    }\n                                </div>\n                            }\n\n                            @if (\n                                texts?.hotelType === 'Apartamento' ||\n                                texts?.hotelType === 'Apartment' ||\n                                hotelType?.bodyextra?.nameIdentifier ===\n                                    'Apartamento' ||\n                                hotelType?.bodyextra?.nameIdentifier ===\n                                    'Apartment'\n                            ) {\n                                <div class=\"category\">\n                                    @for (\n                                        item of getNumber(\n                                            texts?.hotelCategory ??\n                                                hotelCategory?.bodyextra\n                                                    ?.nameIdentifier ??\n                                                ''\n                                        );\n                                        track $index\n                                    ) {\n                                        <svg\n                                            width=\"20\"\n                                            height=\"20\"\n                                            viewBox=\"0 0 20 20\"\n                                            fill=\"none\"\n                                            xmlns=\"http://www.w3.org/2000/svg\"\n                                        >\n                                            <g transform=\"translate(2 2)\">\n                                                <path\n                                                    d=\"M0.146296 4.26479L1.14015 2.01692C1.31289 1.62559 1.62559 1.31289 2.01692 1.14015L4.26479 0.146297C4.58174 0.00641826 4.93356 -0.0343944 5.27412 0.0292127C5.61467 0.0928198 5.92805 0.257876 6.17314 0.50273L7.9475 2.27839C8.1606 2.49155 8.31388 2.75701 8.39197 3.04813C8.47006 3.33925 8.4702 3.64578 8.39239 3.93698L7.93579 5.64109L12.866 10.5713C12.9085 10.6136 12.9422 10.6639 12.9652 10.7193C12.9882 10.7746 13 10.834 13 10.8939V12.5447C12.9993 12.6652 12.9511 12.7807 12.8659 12.8659C12.7807 12.9511 12.6652 12.9993 12.5447 13H10.8939C10.7926 12.9998 10.6942 12.9659 10.6142 12.9038C10.5341 12.8416 10.477 12.7547 10.4516 12.6566L10.2045 11.6796L9.3303 11.5131C9.24322 11.4968 9.16282 11.4553 9.09903 11.3938C9.03523 11.3323 8.99082 11.2535 8.97127 11.1671L8.73321 10.1173L7.89026 10.0367C7.78479 10.0274 7.68608 9.9808 7.61188 9.90528L5.64109 7.93579L3.93697 8.39239C3.6458 8.47047 3.33919 8.47046 3.04802 8.39236C2.75685 8.31426 2.4914 8.16082 2.27839 7.9475L0.502729 6.17314C0.257875 5.92805 0.0928202 5.61467 0.029213 5.27412C-0.0343943 4.93357 0.00641727 4.58174 0.146296 4.26479ZM3.6703 5.08953C3.81061 5.22968 3.98932 5.32508 4.18385 5.36369C4.37837 5.40229 4.57997 5.38236 4.76317 5.30641C4.94636 5.23047 5.10294 5.10191 5.21309 4.937C5.32324 4.7721 5.38203 4.57823 5.38203 4.37991C5.38203 4.1816 5.32324 3.98773 5.21309 3.82283C5.10294 3.65792 4.94636 3.52936 4.76317 3.45342C4.57997 3.37747 4.37837 3.35754 4.18385 3.39614C3.98932 3.43475 3.81061 3.53015 3.6703 3.6703C3.57689 3.76336 3.50277 3.87395 3.45219 3.99572C3.40162 4.1175 3.37558 4.24806 3.37558 4.37991C3.37558 4.51177 3.40162 4.64233 3.45219 4.76411C3.50277 4.88588 3.57689 4.99647 3.6703 5.08953Z\"\n                                                    fill=\"#fff\"\n                                                    fill-opacity=\"1\"\n                                                />\n                                            </g>\n                                        </svg>\n                                    }\n                                </div>\n                            }\n                            <p class=\"m-title-sup\">\n                                {{\n                                    showIfSup(\n                                        texts?.hotelCategory ??\n                                            hotelCategory?.bodyextra\n                                                ?.nameIdentifier\n                                    )\n                                }}\n                            </p>\n                        </span>\n                    }\n                    @if (texts?.onlyAdults) {\n                        <span>\n                            {{ texts?.onlyAdults }}\n                        </span>\n                    }\n                </div>\n            }\n        </div>\n    </section>\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { BabylonLinkTypeDirective } from '../../../../directives/link-type/link-type.directive';\nimport { BabylonMultimediaI } from '../../../../interfaces';\n\n@Component({\n    selector: 'c3-txt-img-cta',\n    standalone: true,\n    imports: [CommonModule, BabylonLinkTypeDirective],\n    templateUrl: './c3-txt-img-cta.component.html',\n    styleUrl: './c3-txt-img-cta.component.scss',\n})\nexport class C3TxtImgCtaComponent {\n    @Input() multimedia?: BabylonMultimediaI;\n}\n","@if (multimedia) {\n    <section class=\"mdl-mdh018\">\n        <div class=\"mdl-container\">\n            @if (multimedia.staticImagenes?.[0]; as left) {\n                <div class=\"m-left\">\n                    <div class=\"m-img\">\n                        <img\n                            [src]=\"\n                                left.img?.src ||\n                                'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                            \"\n                            [alt]=\"left.img?.alt\"\n                            loading=\"lazy\"\n                        />\n                    </div>\n                    <div class=\"m-content\">\n                        @if (left.title) {\n                            <div class=\"m-text\">\n                                {{ left.title }}\n                            </div>\n                        }\n                        @if (left.buttons?.[0]; as button) {\n                            <a\n                                class=\"m-button-sm\"\n                                [href]=\"button.url\"\n                                [linkType]=\"button.linkType\"\n                                [attr.target]=\"button.target || '_self'\"\n                                [attr.rel]=\"\n                                    (button.target || '_self') === '_blank'\n                                        ? 'noopener noreferrer'\n                                        : null\n                                \"\n                                [attr.aria-label]=\"button.label\"\n                            >\n                                <span>{{ button.label }}</span>\n                            </a>\n                        }\n                    </div>\n                </div>\n            }\n            @if (multimedia.imagenes?.[0]; as right) {\n                <div class=\"m-right\">\n                    <div class=\"m-img\">\n                        <img\n                            [src]=\"\n                                right.img?.src ||\n                                'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                            \"\n                            [alt]=\"right.img?.alt\"\n                            loading=\"lazy\"\n                        />\n                    </div>\n                    <div class=\"m-content\">\n                        @if (right.title) {\n                            <div class=\"m-title\">{{ right.title }}</div>\n                        }\n                        @if (right.description) {\n                            <div class=\"m-text\">\n                                {{ right.description }}\n                            </div>\n                        }\n                    </div>\n                </div>\n            }\n        </div>\n    </section>\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, computed, inject, Input } from '@angular/core';\nimport { BabylonLinkTypeDirective } from '../../../../directives/link-type/link-type.directive';\nimport { BabylonMultimediaI, BabylonTextInfoI } from '../../../../interfaces';\nimport { ScreenSizerService } from '../../../../services';\n\n@Component({\n    selector: 'ces-c4-c1-img-txt',\n    standalone: true,\n    imports: [CommonModule, BabylonLinkTypeDirective],\n    templateUrl: './c4-c1-img-txt.component.html',\n    styleUrl: './c4-c1-img-txt.component.scss',\n})\nexport class C4C1ImgTxtComponent {\n    /* @Input() data: C4C1ImgTxtContent = componentData; */\n    @Input() identifier?: string;\n    @Input() multimedia?: BabylonMultimediaI;\n    @Input() texts?: BabylonTextInfoI;\n\n    private screenSizer = inject(ScreenSizerService);\n\n    public activeImage = computed(() => {\n        const isMobile = this.screenSizer.maxMediumTablet();\n\n        const mobileImgs = this.multimedia?.mobileImagenes;\n        const desktopImgs = this.multimedia?.imagenes;\n        if (isMobile && mobileImgs && mobileImgs.length > 0) {\n            return mobileImgs[0];\n        }\n\n        if (desktopImgs && desktopImgs.length > 0) {\n            return desktopImgs[0];\n        }\n        return null;\n    });\n}\n","<section class=\"mdl-h08\" [id]=\"identifier\">\n    <div class=\"mdl-container\">\n        <div class=\"m-top\">\n            <div class=\"m-content\">\n                @if (texts) {\n                    @if (texts.title) {\n                        <h3 class=\"m-titulo\" [innerHTML]=\"texts.title\"></h3>\n                    }\n                    @if (texts.description) {\n                        <div\n                            class=\"m-texto\"\n                            [innerHTML]=\"texts.description\"\n                        ></div>\n                    }\n                }\n                <img src=\"/assets/babylon/images/icons/mapa.svg\" alt=\"map\" />\n            </div>\n        </div>\n        @if (activeImage(); as imgData) {\n            <div class=\"m-bottom\">\n                <a\n                    class=\"img-link\"\n                    [href]=\"imgData.links?.[0]?.url\"\n                    [linkType]=\"imgData.links?.[0]?.linkType\"\n                >\n                    <img\n                        [src]=\"\n                            imgData.img?.src ||\n                            'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                        \"\n                        [alt]=\"imgData.img?.alt\"\n                    />\n                </a>\n            </div>\n        }\n    </div>\n</section>\n","import { CommonModule } from '@angular/common';\nimport { Component, computed, inject, Input } from '@angular/core';\nimport { BabylonLinkTypeDirective } from '../../../../directives/link-type/link-type.directive';\nimport {\n    BabylonButtonI,\n    BabylonMultimediaI,\n    BabylonTextInfoI,\n} from '../../../../interfaces';\nimport { ScreenSizerService } from '../../../../services';\nimport { BabylonAdvInfoI } from '../../../core';\n\n@Component({\n    selector: 'ces-c4-c1-img-txt-c',\n    standalone: true,\n    imports: [CommonModule, BabylonLinkTypeDirective],\n    templateUrl: './c4-c1-img-txt-c.component.html',\n    styleUrl: './c4-c1-img-txt-c.component.scss',\n})\nexport class C4C1ImgTxtCComponent {\n    /* @Input() data: C4C1ImgTxtCContent = componentData; */\n    @Input() multimedia?: BabylonMultimediaI;\n    @Input() texts?: BabylonTextInfoI;\n    @Input() buttons?: BabylonButtonI[];\n    @Input() items?: BabylonAdvInfoI[];\n\n    private screenSizer = inject(ScreenSizerService);\n\n    public activeImage = computed(() => {\n        const isMobile = this.screenSizer.maxMediumTablet();\n\n        const mobileImgs = this.multimedia?.mobileImagenes;\n        const desktopImgs = this.multimedia?.imagenes;\n        if (isMobile && mobileImgs && mobileImgs.length > 0) {\n            return mobileImgs[0];\n        }\n\n        if (desktopImgs && desktopImgs.length > 0) {\n            return desktopImgs[0];\n        }\n        return null;\n    });\n}\n","<section class=\"mdl-h03\">\n    <div class=\"mdl-container\">\n        <div class=\"m-imagenes\">\n            @if (multimedia) {\n                @if (activeImage(); as imgData) {\n                    <img\n                        [src]=\"\n                            imgData.img?.src ||\n                            'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                        \"\n                        [alt]=\"imgData.img?.alt\"\n                        class=\"img-responsive\"\n                    />\n                }\n            }\n            @if (buttons?.[0]; as btn) {\n                <div class=\"m-floatbutton\">\n                    <a\n                        [href]=\"btn.url\"\n                        [linkType]=\"btn.linkType\"\n                        type=\"button\"\n                        class=\"m-button-clean\"\n                        [attr.aria-label]=\"btn.label ?? btn.name\"\n                    >\n                        {{ btn.label ?? btn.name }}\n                        <svg\n                            width=\"50\"\n                            height=\"6\"\n                            viewBox=\"0 0 50 6\"\n                            fill=\"none\"\n                            xmlns=\"http://www.w3.org/2000/svg\"\n                        >\n                            <path\n                                d=\"M45.875 0L49.875 2.8L45.875 5.6V0Z\"\n                                fill=\"#B7985D\"\n                            />\n                            <path\n                                d=\"M48.875 2.80078H0.375\"\n                                stroke=\"#B7985D\"\n                                stroke-width=\"0.75\"\n                                stroke-linecap=\"round\"\n                            />\n                        </svg>\n                    </a>\n                </div>\n            }\n        </div>\n        @if (texts || items) {\n            <div class=\"m-foot\">\n                <div class=\"m-content\">\n                    <div class=\"m-bottom\">\n                        <div class=\"m-textos\">\n                            @if (texts?.title) {\n                                <h2 class=\"m-titulo\">{{ texts?.title }}</h2>\n                            }\n                            @if (items?.length) {\n                                <div class=\"m-texto\">\n                                    <ul>\n                                        @for (item of items; track $index) {\n                                            <li>{{ item.title }}</li>\n                                        }\n                                    </ul>\n                                </div>\n                            }\n                        </div>\n                    </div>\n                </div>\n            </div>\n        }\n    </div>\n</section>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { BabylonTextInfoI } from '../../../../interfaces';\n\n@Component({\n    selector: 'ces-c4-c1-txt',\n    standalone: true,\n    imports: [CommonModule],\n    templateUrl: './c4-c1-txt.component.html',\n    styleUrl: './c4-c1-txt.component.scss',\n})\nexport class C4C1TxtComponent {\n    //@Input() items?: C4C1TxtItem[] = c4c1txtData.items;\n    @Input() texts?: BabylonTextInfoI;\n}\n","<section class=\"mdl-h06\">\n    @if (texts) {\n        <div class=\"mdl-container\">\n            @if (texts.title) {\n                <h3 class=\"m-titulo\" [innerHTML]=\"texts.title\"></h3>\n            }\n            @if (texts.description) {\n                <div class=\"m-texto\" [innerHTML]=\"texts.description\"></div>\n            }\n        </div>\n    }\n</section>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { BabylonLinkTypeDirective } from '../../../../directives/link-type/link-type.directive';\nimport {\n    BabylonButtonI,\n    BabylonMultimediaI,\n    BabylonSocialMediaI,\n    BabylonTextInfoI,\n} from '../../../../interfaces';\n\n@Component({\n    selector: 'ces-c4-fo-link-svg',\n    standalone: true,\n    imports: [CommonModule, BabylonLinkTypeDirective],\n    templateUrl: './c4-fo-link-svg.component.html',\n    styleUrl: './c4-fo-link-svg.component.scss',\n    encapsulation: ViewEncapsulation.None,\n})\nexport class C4FoLinkSvgComponent {\n    /*  @Input() data: C4FoLinkSvgContent = defaultData; */\n    @Input() texts?: BabylonTextInfoI;\n    @Input() multimedia?: BabylonMultimediaI;\n    @Input() footerLinks?: BabylonButtonI[];\n    @Input() socialMedia?: BabylonSocialMediaI[];\n\n    encodeText(text: string | undefined): string {\n        return text ? encodeURIComponent(text) : '';\n    }\n}\n","<section class=\"mdl-f01\">\n    <div class=\"mdl-container\">\n        <div class=\"m-address\">\n            @if (texts?.addresstitle) {\n                <div class=\"m-title\">{{ texts?.addresstitle }}</div>\n            }\n            @if (texts?.address) {\n                <a\n                    [href]=\"\n                        'https://www.google.com/maps/search/?api=1&query=' +\n                        encodeText(texts?.address)\n                    \"\n                    target=\"_blank\"\n                    rel=\"noopener noreferrer\"\n                    ><div class=\"m-text\" [innerHTML]=\"texts?.address\"></div\n                ></a>\n            }\n        </div>\n        <div class=\"m-content\">\n            @if (footerLinks?.length) {\n                <div class=\"m-left\">\n                    <ul>\n                        @for (item of footerLinks?.slice(0, 5); track $index) {\n                            <li>\n                                <a\n                                    [href]=\"item?.url + (item?.vars ?? '')\"\n                                    [linkType]=\"item?.linkType\"\n                                    >{{ item?.label }}</a\n                                >\n                            </li>\n                        }\n                    </ul>\n                    <ul>\n                        @for (item of footerLinks?.slice(5, 9); track $index) {\n                            <li>\n                                <a\n                                    [href]=\"item?.url + (item?.vars ?? '')\"\n                                    [linkType]=\"item?.linkType\"\n                                    >{{ item?.label }}</a\n                                >\n                            </li>\n                        }\n\n                        @if (socialMedia?.length) {\n                            <li class=\"m-rrss\">\n                                @for (\n                                    social of socialMedia;\n                                    track social.icon\n                                ) {\n                                    <a\n                                        [href]=\"social?.url\"\n                                        [linkType]=\"'external'\"\n                                    >\n                                        <img [src]=\"social?.icon\" />\n                                    </a>\n                                }\n                            </li>\n                        }\n                    </ul>\n                </div>\n            }\n            @if (multimedia?.logo?.length) {\n                <div class=\"m-right\">\n                    <img\n                        [src]=\"\n                            multimedia?.logo?.[0]?.img?.src ||\n                            'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                        \"\n                        [alt]=\"multimedia?.logo?.[0]?.img?.alt\"\n                    />\n                </div>\n            }\n        </div>\n        <div class=\"m-legal\">\n            <ul>\n                @for (item of footerLinks?.slice(9); track $index) {\n                    @if (item) {\n                        <li>\n                            <a\n                                [href]=\"item?.url + (item?.vars ?? '')\"\n                                [linkType]=\"item?.linkType\"\n                                >{{ item?.label }}</a\n                            >\n                        </li>\n                    }\n                }\n            </ul>\n        </div>\n    </div>\n</section>\n","import { CommonModule } from '@angular/common';\nimport {\n    Component,\n    EventEmitter,\n    Input,\n    OnChanges,\n    Output,\n    SimpleChanges,\n} from '@angular/core';\nimport { FormBuilder, ReactiveFormsModule, Validators } from '@angular/forms';\nimport {\n    BabylonButtonI,\n    BabylonContactInfoI,\n    ConsultTypeI,\n} from '../../../../interfaces';\nimport { BabylonHotelGlobalItem } from '../../../../interfaces/babylon-hotel.interface';\nexport interface ContactFormPayload {\n    consultTypeId?: string | number | null;\n    name: string;\n    lastname: string;\n    email: string;\n    phone: string;\n    message: string;\n    privacy: boolean;\n}\n@Component({\n    selector: 'ces-c4-for-c2-txt',\n    standalone: true,\n    imports: [CommonModule, ReactiveFormsModule],\n    templateUrl: './c4-for-c2-txt.component.html',\n    styleUrl: './c4-for-c2-txt.component.scss',\n})\nexport class C4ForC2TxtComponent implements OnChanges {\n    @Input() identifier?: string;\n    @Input() texts?: BabylonContactInfoI;\n    @Input() hotels?: BabylonHotelGlobalItem[];\n    @Input() consultType?: ConsultTypeI;\n    @Input() buttons?: BabylonButtonI[];\n\n    @Output() submitForm = new EventEmitter<ContactFormPayload>();\n\n    private fb = new FormBuilder();\n    submitted = false;\n\n    form = this.fb.group({\n        consultTypeId: [''], // required condicional si hay dropdown\n        name: ['', [Validators.required, Validators.minLength(2)]],\n        lastname: ['', [Validators.required, Validators.minLength(2)]],\n        email: ['', [Validators.required, Validators.email]],\n        phone: [\n            '',\n            [Validators.required, Validators.pattern(/^[0-9+\\s()-]{6,}$/)],\n        ],\n        message: ['', [Validators.required, Validators.minLength(5)]],\n        privacy: [false], // requiredTrue condicional si hay texto de condiciones\n    });\n\n    ngOnChanges(changes: SimpleChanges): void {\n        // Dropdown: requerido solo si realmente lo muestras\n        const consultCtrl = this.form.controls.consultTypeId;\n        if (this.consultType?.options?.length) {\n            consultCtrl.setValidators([Validators.required]);\n        } else {\n            consultCtrl.clearValidators();\n            consultCtrl.setValue('');\n        }\n        consultCtrl.updateValueAndValidity({ emitEvent: false });\n\n        // Checkbox privacidad: requerido solo si se muestra\n        const privacyCtrl = this.form.controls.privacy;\n        if (this.texts?.conditions) {\n            privacyCtrl.setValidators([Validators.requiredTrue]);\n        } else {\n            privacyCtrl.clearValidators();\n            privacyCtrl.setValue(false);\n        }\n        privacyCtrl.updateValueAndValidity({ emitEvent: false });\n    }\n\n    isInvalid(controlName: keyof typeof this.form.controls): boolean {\n        const c = this.form.controls[controlName];\n        return c.invalid && (c.touched || this.submitted);\n    }\n\n    onSubmit(): void {\n        this.submitted = true;\n        if (this.form.invalid) {\n            this.form.markAllAsTouched();\n            return;\n        }\n\n        const raw = this.form.getRawValue();\n\n        const payload: ContactFormPayload = {\n            consultTypeId:\n                (this.consultType?.props?.length ??\n                this.consultType?.options?.length)\n                    ? raw.consultTypeId || null\n                    : null,\n            name: (raw.name ?? '').trim(),\n            lastname: (raw.lastname ?? '').trim(),\n            email: (raw.email ?? '').trim(),\n            phone: (raw.phone ?? '').trim(),\n            message: (raw.message ?? '').trim(),\n            privacy: !!raw.privacy,\n        };\n\n        this.submitForm.emit(payload);\n\n        this.form.reset({\n            consultTypeId: '',\n            name: '',\n            lastname: '',\n            email: '',\n            phone: '',\n            message: '',\n            privacy: false,\n        });\n        this.submitted = false;\n    }\n}\n","<section class=\"mdl-h09\" [id]=\"identifier\">\n    <div class=\"mdl-container\">\n        @if (texts) {\n            <div class=\"m-left\">\n                @if (texts.title) {\n                    <h3 class=\"m-titulo\" [innerHTML]=\"texts.title\"></h3>\n                }\n                @if (texts.description) {\n                    <div class=\"m-texto\" [innerHTML]=\"texts.description\"></div>\n                }\n            </div>\n        }\n        <div class=\"m-right\">\n            <div class=\"consulta-form\">\n                <form [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\" novalidate>\n                    @if (consultType?.props ?? consultType?.options; as opts) {\n                        <div class=\"form-group\">\n                            <label>{{ texts?.dropdownTitle }}</label>\n                            <select\n                                formControlName=\"consultTypeId\"\n                                [class.is-invalid]=\"isInvalid('consultTypeId')\"\n                            >\n                                <option value=\"\" selected disabled>\n                                    {{ texts?.dropdownPlaceholder }}\n                                </option>\n                                @for (option of opts; track option) {\n                                    <option [value]=\"option.Id ?? option.code\">\n                                        {{ option.name }}\n                                    </option>\n                                }\n                            </select>\n                        </div>\n                    }\n\n                    <div class=\"form-row\">\n                        <div class=\"form-group\">\n                            @if (texts?.inputName) {\n                                <label for=\"name\">{{ texts?.inputName }}</label>\n                                <input\n                                    type=\"text\"\n                                    id=\"name\"\n                                    formControlName=\"name\"\n                                    [placeholder]=\"texts?.inputNamePlaceHolder\"\n                                    [class.is-invalid]=\"isInvalid('name')\"\n                                />\n                            }\n\n                            @if (texts?.inputlastname || texts?.inputSurnames) {\n                                <label for=\"lastname\">{{\n                                    texts?.inputlastname ?? texts?.inputSurnames\n                                }}</label>\n                                <input\n                                    type=\"text\"\n                                    id=\"lastname\"\n                                    formControlName=\"lastname\"\n                                    [placeholder]=\"\n                                        texts?.inputlastnamePlaceHolder ??\n                                        texts?.inputSurnamesPlaceHolder\n                                    \"\n                                    [class.is-invalid]=\"isInvalid('lastname')\"\n                                />\n                            }\n                        </div>\n                    </div>\n\n                    <div class=\"form-row\">\n                        <div class=\"form-group\">\n                            @if (texts?.inputEmail) {\n                                <label for=\"email\">{{\n                                    texts?.inputEmail\n                                }}</label>\n                                <input\n                                    type=\"email\"\n                                    id=\"email\"\n                                    formControlName=\"email\"\n                                    [placeholder]=\"texts?.inputEmailPlaceHolder\"\n                                    [class.is-invalid]=\"isInvalid('email')\"\n                                />\n                            }\n                        </div>\n\n                        <div class=\"form-group\">\n                            @if (texts?.inputPhone) {\n                                <label for=\"phone\">{{\n                                    texts?.inputPhone\n                                }}</label>\n                                <input\n                                    type=\"tel\"\n                                    id=\"phone\"\n                                    formControlName=\"phone\"\n                                    [placeholder]=\"texts?.inputPhonePlaceHolder\"\n                                    [class.is-invalid]=\"isInvalid('phone')\"\n                                />\n                            }\n                        </div>\n                    </div>\n\n                    @if (texts?.inputMessage) {\n                        <div class=\"form-group\">\n                            <label for=\"message\">{{\n                                texts?.inputMessage\n                            }}</label>\n                            <textarea\n                                id=\"message\"\n                                formControlName=\"message\"\n                                [placeholder]=\"texts?.inputMessagePlaceHolder\"\n                                [class.is-invalid]=\"isInvalid('message')\"\n                            ></textarea>\n                        </div>\n                    }\n\n                    <div class=\"form-footer\">\n                        @if (texts?.conditions) {\n                            <label class=\"privacidad\">\n                                <input\n                                    type=\"checkbox\"\n                                    formControlName=\"privacy\"\n                                    [class.is-invalid]=\"isInvalid('privacy')\"\n                                />\n                                <span\n                                    class=\"privacidad__box\"\n                                    aria-hidden=\"true\"\n                                ></span>\n                                <span class=\"privacidad__texto\">\n                                    <a\n                                        [href]=\"buttons?.[0]?.url\"\n                                        target=\"_blank\"\n                                        class=\"link-terminos\"\n                                        >{{ texts?.conditions }}</a\n                                    ></span\n                                >\n                            </label>\n                        }\n\n                        @if (buttons?.length) {\n                            <button\n                                type=\"submit\"\n                                class=\"m-button-clean enviar\"\n                                [disabled]=\"form.invalid\"\n                                [attr.aria-label]=\"\n                                    buttons?.[0]?.label || buttons?.[0]?.name\n                                \"\n                            >\n                                {{ buttons?.[0]?.label || buttons?.[0]?.name }}\n                                <svg\n                                    width=\"50\"\n                                    height=\"6\"\n                                    viewBox=\"0 0 50 6\"\n                                    fill=\"none\"\n                                    xmlns=\"http://www.w3.org/2000/svg\"\n                                >\n                                    <path\n                                        d=\"M45.875 0L49.875 2.8L45.875 5.6V0Z\"\n                                        fill=\"#B7985D\"\n                                    />\n                                    <path\n                                        d=\"M48.875 2.80078H0.375\"\n                                        stroke=\"#B7985D\"\n                                        stroke-width=\"0.75\"\n                                        stroke-linecap=\"round\"\n                                    />\n                                </svg>\n                            </button>\n                        }\n                    </div>\n                </form>\n            </div>\n        </div>\n    </div>\n</section>\n","import { CommonModule } from '@angular/common';\nimport { Component, computed, inject, Input } from '@angular/core';\nimport { BabylonMultimediaI, BabylonTextInfoI } from '../../../../interfaces';\nimport { ScreenSizerService } from '../../../../services';\n\n@Component({\n    selector: 'ces-c4-he-img-txt',\n    standalone: true,\n    imports: [CommonModule],\n    templateUrl: './c4-he-img-txt.component.html',\n    styleUrl: './c4-he-img-txt.component.scss',\n})\nexport class C4HeImgTxtComponent {\n    //@Input() items?: C4HeImgTxt[] = C4HeImgTxtData.items;\n    @Input() multimedia?: BabylonMultimediaI;\n    @Input() texts?: BabylonTextInfoI;\n\n    private screenSizer = inject(ScreenSizerService);\n\n    public activeImage = computed(() => {\n        const isMobile = this.screenSizer.maxMediumTablet();\n\n        const mobileImgs = this.multimedia?.mobileImagenes;\n        const desktopImgs = this.multimedia?.imagenes;\n        if (isMobile && mobileImgs && mobileImgs.length > 0) {\n            return mobileImgs[0];\n        }\n\n        if (desktopImgs && desktopImgs.length > 0) {\n            return desktopImgs[0];\n        }\n        return null;\n    });\n}\n","<section class=\"mdl-h01\">\n    @if (multimedia) {\n        <div class=\"m-imagen\">\n            @if (activeImage(); as imgData) {\n                <img\n                    [src]=\"\n                        imgData.img?.src ||\n                        'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                    \"\n                    [alt]=\"imgData.img?.alt\"\n                    class=\"img-responsive\"\n                />\n            }\n        </div>\n    }\n    @if (texts) {\n        <div class=\"mdl-container\">\n            <div class=\"m-content\">\n                <div class=\"m-top\"></div>\n                <div class=\"m-bottom\">\n                    <div class=\"m-textos\">\n                        @if (texts.title) {\n                            <h1 class=\"m-titulo\">{{ texts.title }}</h1>\n                        }\n                        @if (texts.description) {\n                            <div\n                                class=\"m-texto\"\n                                [innerHTML]=\"texts.description\"\n                            ></div>\n                        }\n                    </div>\n                </div>\n            </div>\n        </div>\n    }\n</section>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { BabylonMultimediaI, BabylonTextInfoI } from '../../../../interfaces';\n\n@Component({\n    selector: 'ces-c4-lis-c2-img-txt',\n    standalone: true,\n    imports: [CommonModule],\n    templateUrl: './c4-lis-c2-img-txt.component.html',\n    styleUrl: './c4-lis-c2-img-txt.component.scss',\n})\nexport class C4LisC2ImgTxtComponent {\n    //@Input() items?: C4LisC2ImgTxtItem[] = c4LisC2ImgTxtData.items;\n    @Input() texts?: BabylonTextInfoI;\n    @Input() multimedia?: BabylonMultimediaI;\n}\n","<section class=\"mdl-h07\">\n    @if (multimedia?.imagenes) {\n        <div class=\"mdl-container\">\n            <div class=\"m-bottom\">\n                @for (item of multimedia?.imagenes; track $index) {\n                    <div class=\"m-item\">\n                        <div class=\"m-imagen\">\n                            <img\n                                [src]=\"\n                                    item.img?.src ||\n                                    'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                \"\n                                [alt]=\"item.img?.alt\"\n                            />\n                        </div>\n                        @if (item.title) {\n                            <h4 class=\"m-titulo\" [innerHTML]=\"item.title\"></h4>\n                        }\n                        @if (item.description) {\n                            <div\n                                class=\"m-texto\"\n                                [innerHTML]=\"item.description\"\n                            ></div>\n                        }\n                    </div>\n                }\n            </div>\n        </div>\n    }\n</section>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { BabylonLinkTypeDirective } from '../../../../directives/link-type/link-type.directive';\nimport { BabylonButtonI, BabylonMultimediaI } from '../../../../interfaces';\nimport { BabylonRoomInfoI } from '../../../core';\nimport { ListRoomsItem } from './list-rooms-interfaces';\n\nconst mapListRoomsItems = (items: any[]): ListRoomsItem[] => {\n    return items.map((item) => ({\n        ...item,\n        image:\n            item.image && !Array.isArray(item.image)\n                ? [item.image]\n                : item.image,\n        link: item.link && !Array.isArray(item.link) ? [item.link] : item.link,\n    }));\n};\n\n@Component({\n    selector: 'ces-list-rooms',\n    standalone: true,\n    imports: [BabylonLinkTypeDirective, CommonModule],\n    templateUrl: './list-rooms.component.html',\n    styleUrl: './list-rooms.component.scss',\n})\nexport class ListRoomsComponent {\n    /*   @Input() titleLink?:  linkInterface | undefined =\n    listRoomsData.titleLink as linkInterface;\n\n  @Input() items?: ListRoomsItem[] | undefined =\n    mapListRoomsItems(listRoomsData.items); */\n\n    @Input() links?: BabylonButtonI[];\n    @Input() items?: BabylonRoomInfoI[];\n    @Input() multimedia?: BabylonMultimediaI;\n    @Input() identifier?: string;\n\n    get normalizedItems() {\n        const source = this.multimedia?.imagenes || this.items || [];\n        return source.map((item: any) => {\n            const isImageI = 'img' in item || 'src' in item;\n\n            return {\n                src: isImageI\n                    ? item.img?.src || item.src\n                    : item.images?.[0]?.src,\n                alt: isImageI\n                    ? item.img?.alt || item.alt\n                    : item.images?.[0]?.alt,\n                title: isImageI ? item.title : item.texts?.name,\n                pretitle: isImageI ? item.pretitle : undefined,\n                subtitle: isImageI ? item.subtitle : undefined,\n                description: isImageI\n                    ? item.description\n                    : item.texts?.description,\n                buttons: item.buttons,\n                links: item.links,\n            };\n        });\n    }\n}\n","<section class=\"mdl-h05\" [id]=\"identifier ?? 'C4ListC2ImgTxtC'\">\n    <div class=\"mdl-container\">\n        <div class=\"m-top\">\n            @if (links?.length) {\n                <a\n                    [href]=\"links?.[0]?.url\"\n                    [linkType]=\"links?.[0]?.linkType\"\n                    class=\"m-button-clean\"\n                    [title]=\"links?.[0]?.label\"\n                >\n                    {{ links?.[0]?.label }}\n                    <svg\n                        width=\"50\"\n                        height=\"6\"\n                        viewBox=\"0 0 50 6\"\n                        fill=\"none\"\n                        xmlns=\"http://www.w3.org/2000/svg\"\n                    >\n                        <path\n                            d=\"M45.875 0L49.875 2.8L45.875 5.6V0Z\"\n                            fill=\"#B7985D\"\n                        />\n                        <path\n                            d=\"M48.875 2.80078H0.375\"\n                            stroke=\"#B7985D\"\n                            stroke-width=\"0.75\"\n                            stroke-linecap=\"round\"\n                        />\n                    </svg>\n                </a>\n            }\n        </div>\n\n        @if (normalizedItems.length) {\n            <div class=\"m-bottom\">\n                @for (item of normalizedItems; track $index) {\n                    <a class=\"m-item\">\n                        <div class=\"m-imagen\">\n                            <a\n                                class=\"img-link\"\n                                [href]=\"\n                                    item.links?.[0]?.url ||\n                                    item.buttons?.[0]?.url\n                                \"\n                                [title]=\"item.links?.[0]?.label || item.title\"\n                                [linkType]=\"\n                                    item.links?.[0]?.linkType ||\n                                    item.buttons?.[0]?.linkType\n                                \"\n                            >\n                                <img [src]=\"item.src\" [alt]=\"item.alt\" />\n                            </a>\n                        </div>\n                        <div class=\"m-titulo-wrap\">\n                            @if (item.pretitle) {\n                                <p class=\"m-pretitulo\">{{ item.pretitle }}</p>\n                            }\n                            <h4 class=\"m-titulo\">\n                                {{ item.title }}\n                            </h4>\n                            @if (item.subtitle) {\n                                <p class=\"m-subtitulo\">{{ item.subtitle }}</p>\n                            }\n                            @if (item.description) {\n                                <p class=\"m-descripcion\">\n                                    {{ item.description }}\n                                </p>\n                            }\n                            <div class=\"m-line\"></div>\n                            @if (item.buttons?.length) {\n                                @for (item of item.buttons; track $index) {\n                                    <button\n                                        role=\"button\"\n                                        [ngClass]=\"{\n                                            'm-button': $index % 2 === 0,\n                                            'm-underline': $index % 2 !== 0,\n                                        }\"\n                                        [href]=\"item.url\"\n                                        [title]=\"item.label\"\n                                        [linkType]=\"item.linkType\"\n                                    >\n                                        {{ item.label }}\n                                    </button>\n                                }\n                            }\n                        </div>\n                    </a>\n                }\n            </div>\n        }\n    </div>\n</section>\n","import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n    Component,\n    ElementRef,\n    EventEmitter,\n    HostListener,\n    Inject,\n    Input,\n    Output,\n    PLATFORM_ID,\n    Renderer2,\n    ViewChild,\n    ViewEncapsulation,\n} from '@angular/core';\nimport { NavigationStart, Router } from '@angular/router';\nimport { filter, Subscription } from 'rxjs';\nimport { BabylonLinkTypeDirective } from '../../../../directives/link-type/link-type.directive';\nimport { LogoType } from '../../../../Enum';\nimport {\n    BabylonButtonI,\n    BabylonImageI,\n    BabylonMenuButtonI,\n    BabylonMenuInfoI,\n    BabylonTextInfoI,\n} from '../../../../interfaces';\nimport {\n    BabylonEngineModalI,\n    BabylonEngineModalV3Component,\n    BabylonLanguageModalI,\n    BabylonLanguageModalItem,\n} from '../../../core';\n\n@Component({\n    selector: 'ces-c4-me-txt-svg-cta',\n    standalone: true,\n    imports: [\n        CommonModule,\n        BabylonLinkTypeDirective,\n        BabylonEngineModalV3Component,\n    ],\n    templateUrl: './c4-me-txt-svg-cta.component.html',\n    styleUrl: './c4-me-txt-svg-cta.component.scss',\n    encapsulation: ViewEncapsulation.None,\n})\nexport class C4MeTxtSvgCtaComponent {\n    @Input() multipleMotorsModal?: boolean;\n    @Input() logos?: Record<LogoType, BabylonImageI | undefined>;\n    @Input() linkLogo?: BabylonButtonI;\n    @Input() menu?: BabylonMenuButtonI[];\n    @Input() menuInfo?: BabylonMenuInfoI;\n    @Input() btnBook?: BabylonButtonI;\n    @Input() texts?: BabylonTextInfoI;\n    @Input() languages?: BabylonLanguageModalI;\n    @Input() engine?: BabylonEngineModalI;\n    @Input() linkHome?: string;\n\n    @Input() ownBookModal?: boolean = true;\n\n    stickyHeader: boolean = false;\n    menuOpen: boolean = false;\n    bookModalOpen: boolean = false;\n\n    @Output() modalClick = new EventEmitter<string>();\n    @Output() openModalMultMotors = new EventEmitter<void>();\n    @Output() openEngine = new EventEmitter();\n\n    @ViewChild('burgerMenu') burgerMenu!: ElementRef;\n    @ViewChild('bookModal') bookModal!: ElementRef;\n    @ViewChild('mCont') mCont!: ElementRef;\n\n    @Output() languageSelect = new EventEmitter<BabylonLanguageModalItem>();\n\n    private navSub?: Subscription;\n    private isBrowser: boolean = false;\n\n    constructor(\n        private renderer: Renderer2,\n        private router: Router,\n        @Inject(PLATFORM_ID) platformId: object\n    ) {\n        this.isBrowser = isPlatformBrowser(platformId);\n\n        this.navSub = this.router.events\n            .pipe(\n                filter(\n                    (e): e is NavigationStart => e instanceof NavigationStart\n                )\n            )\n            .subscribe(() => this.closeMenuOnNav());\n    }\n\n    @HostListener('window:scroll', [])\n    onWindowScroll() {\n        this.stickyHeader = window.scrollY > window.innerHeight / 2;\n    }\n\n    toggleMenu() {\n        if (this.bookModalOpen) this.toggleBookModal();\n        this.menuOpen = !this.menuOpen;\n        this.applyMenuClasses(this.menuOpen);\n    }\n\n    private closeMenuOnNav(): void {\n        if (!this.isBrowser) return;\n        if (!this.menuOpen) return;\n\n        this.menuOpen = false;\n        this.applyMenuClasses(false);\n\n        this.modalClick.emit('close');\n    }\n\n    private applyMenuClasses(isOpen: boolean): void {\n        if (!this.isBrowser) return;\n        const mContEl = this.mCont?.nativeElement;\n\n        if (isOpen) {\n            this.renderer.addClass(document.body, 'noscroll');\n            this.renderer.addClass(document.documentElement, 'noscroll');\n            if (mContEl) this.renderer.addClass(mContEl, 'stickyv2');\n        } else {\n            this.renderer.removeClass(document.body, 'noscroll');\n            this.renderer.removeClass(document.documentElement, 'noscroll');\n            if (mContEl) this.renderer.removeClass(mContEl, 'stickyv2');\n        }\n    }\n\n    ngAfterViewInit(): void {}\n\n    openModalMultipleMotors(): void {\n        this.openModalMultMotors.emit();\n    }\n\n    openEngineModal(): void {\n        if (!this.ownBookModal) {\n            this.openEngine.emit();\n        } else {\n            this.toggleBookModal();\n        }\n    }\n\n    toggleBookModal() {\n        if (this.menuOpen) this.toggleMenu();\n        this.bookModalOpen = !this.bookModalOpen;\n        this.applyBookModalClasses(this.bookModalOpen);\n    }\n\n    private closeBookModalOnNav(): void {\n        if (!this.isBrowser) return;\n        if (!this.bookModalOpen) return;\n\n        this.bookModalOpen = false;\n        this.applyBookModalClasses(false);\n\n        this.modalClick.emit('close');\n    }\n\n    private applyBookModalClasses(isOpen: boolean): void {\n        if (!this.isBrowser) return;\n        const mContEl = this.mCont?.nativeElement;\n\n        if (isOpen) {\n            this.renderer.addClass(document.body, 'noscroll');\n            this.renderer.addClass(document.documentElement, 'noscroll');\n            if (mContEl) this.renderer.addClass(mContEl, 'stickyv2');\n        } else {\n            this.renderer.removeClass(document.body, 'noscroll');\n            this.renderer.removeClass(document.documentElement, 'noscroll');\n            if (mContEl) this.renderer.removeClass(mContEl, 'stickyv2');\n        }\n    }\n\n    selectLanguage(language: BabylonLanguageModalItem): void {\n        if (language !== this.languages?.selected) {\n            this.languageSelect.emit(language);\n        }\n    }\n\n    getFormattedUrl(link: any): string {\n        if (!link?.url) return '';\n\n        if (link.vars) {\n            const cleanUrl = link.url.endsWith('/')\n                ? link.url.slice(0, -1)\n                : link.url;\n            return cleanUrl + link.vars;\n        }\n\n        return link.url + (link.vars || '');\n    }\n}\n","<section class=\"mdl-m01\">\n    <div\n        class=\"m-cont\"\n        #mCont\n        [ngClass]=\"{ sticky: stickyHeader, stickyv2: menuOpen }\"\n    >\n        <div class=\"mdl-container\">\n            <div class=\"m-left\">\n                <div class=\"m-openclose\">\n                    <button\n                        class=\"m-open\"\n                        role=\"button\"\n                        (click)=\"toggleMenu()\"\n                        *ngIf=\"!menuOpen && !bookModalOpen\"\n                    >\n                        <img\n                            src=\"/assets/babylon/images/icons/menuburguer.svg\"\n                            alt=\"Menu\"\n                        />\n                    </button>\n                    <button\n                        class=\"m-close\"\n                        role=\"button\"\n                        (click)=\"\n                            menuOpen\n                                ? toggleMenu()\n                                : bookModalOpen\n                                  ? toggleBookModal()\n                                  : null\n                        \"\n                        *ngIf=\"menuOpen || bookModalOpen\"\n                    >\n                        <img\n                            src=\"/assets/babylon/images/icons/close.svg\"\n                            alt=\"Close\"\n                        />\n                    </button>\n                </div>\n                @if (texts?.title) {\n                    <div class=\"m-text\">{{ texts?.title }}</div>\n                }\n                @if (logos?.logoMobile) {\n                    <a\n                        [href]=\"linkLogo?.url ?? linkHome\"\n                        aria-label=\"logo\"\n                        class=\"m-icono\"\n                    >\n                        <img\n                            [src]=\"logos?.logoMobile?.src\"\n                            [alt]=\"logos?.logoMobile?.alt ?? 'logo'\"\n                        />\n                    </a>\n                }\n            </div>\n            @if (logos?.logo) {\n                <a\n                    role=\"button\"\n                    [href]=\"linkLogo?.url ?? linkHome\"\n                    [attr.aria-label]=\"linkLogo?.label\"\n                    class=\"m-center\"\n                >\n                    <img\n                        [src]=\"logos?.logo?.src\"\n                        [alt]=\"logos?.logo?.alt ?? 'logo'\"\n                    />\n                </a>\n            }\n            <div class=\"m-right\">\n                @if (texts?.bookText && !menuOpen) {\n                    <a\n                        role=\"button\"\n                        class=\"m-button\"\n                        [attr.aria-label]=\"texts?.bookText\"\n                        (click)=\"openEngineModal()\"\n                    >\n                        {{ texts?.bookText }}\n                    </a>\n                }\n            </div>\n        </div>\n    </div>\n</section>\n<section class=\"mdl-burguermenu\" #burgerMenu [ngClass]=\"{ show: menuOpen }\">\n    @if (menu?.length) {\n        <ul class=\"m-menu\">\n            @for (link of menu; track $index) {\n                <li>\n                    <a\n                        role=\"button\"\n                        [attr.aria-label]=\"link.label\"\n                        [linkType]=\"link.linkType\"\n                        [modalClick]=\"modalClick\"\n                        [href]=\"getFormattedUrl(link)\"\n                        (anchorClicked)=\"toggleMenu()\"\n                    >\n                        {{ link?.label }}\n                    </a>\n                </li>\n            }\n            @if (languages?.items?.length) {\n                <ul class=\"m-idiomas\">\n                    @for (item of languages?.items; track $index) {\n                        <li\n                            [ngClass]=\"{\n                                selected: item === languages?.selected,\n                            }\"\n                        >\n                            <a (click)=\"selectLanguage(item)\">{{\n                                item?.code\n                            }}</a>\n                        </li>\n                    }\n                </ul>\n            }\n        </ul>\n    }\n</section>\n\n<section class=\"mdl-book\" #bookModal [ngClass]=\"{ show: bookModalOpen }\">\n    <lib-babylon-engine-modal-v3\n        [engine]=\"engine\"\n    ></lib-babylon-engine-modal-v3>\n</section>\n","import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n    AfterViewInit,\n    Component,\n    CUSTOM_ELEMENTS_SCHEMA,\n    ElementRef,\n    inject,\n    Input,\n    PLATFORM_ID,\n    ViewChild,\n} from '@angular/core';\nimport 'swiper';\nimport Swiper, { Autoplay, EffectFade, Navigation, Pagination } from 'swiper';\nimport { SwiperOptions } from 'swiper/types';\nimport { BabylonMultimediaI, BabylonTexts } from '../../../../interfaces';\n\nSwiper.use([Navigation, Pagination, Autoplay, EffectFade]);\n\n@Component({\n    selector: 'ces-h04-slider-text',\n    standalone: true,\n    imports: [CommonModule],\n    templateUrl: './h04-slider-text.component.html',\n    styleUrl: './h04-slider-text.component.scss',\n    schemas: [CUSTOM_ELEMENTS_SCHEMA],\n})\nexport class H04SliderTextComponent implements AfterViewInit {\n    @ViewChild('swiperContainer') swiperContainer!: ElementRef;\n    swiper?: Swiper;\n\n    /*  @Input() data: H04SliderText = h04SliderTextData; */\n    @Input() multimedia?: BabylonMultimediaI;\n    @Input() texts?: BabylonTexts;\n\n    platformId = inject(PLATFORM_ID);\n\n    ngAfterViewInit(): void {\n        if (!isPlatformBrowser(this.platformId)) return;\n        const swiperOptions: SwiperOptions = {\n            loop: true,\n            pagination: {\n                el: '.swiper-pagination',\n                clickable: true,\n            },\n            navigation: {\n                nextEl: '.m-swiper-button.next',\n                prevEl: '.m-swiper-button.prev',\n            },\n            autoplay: {\n                delay: 5000,\n                disableOnInteraction: false,\n            },\n            effect: 'fade',\n            slidesPerView: 1,\n        };\n        this.swiper = new Swiper(\n            this.swiperContainer.nativeElement,\n            swiperOptions\n        );\n    }\n}\n","<section class=\"mdl-h04\">\n    <div class=\"mdl-container\">\n        @if (multimedia?.imagenes?.length) {\n            <div class=\"m-imagenes swiper\" #swiperContainer>\n                <div class=\"swiper-wrapper\">\n                    @for (item of multimedia?.imagenes; track $index) {\n                        <div class=\"swiper-slide\">\n                            <img\n                                [src]=\"\n                                    item.img?.src ||\n                                    'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                \"\n                                [alt]=\"item.img?.alt\"\n                            />\n                        </div>\n                    }\n                </div>\n                <div class=\"swiper-pagination\"></div>\n            </div>\n        }\n\n        @if (texts) {\n            <div class=\"m-foot\">\n                <div class=\"m-content\">\n                    <div class=\"m-bottom\">\n                        <div class=\"m-textos\">\n                            <button\n                                type=\"button\"\n                                class=\"m-swiper-button prev fill\"\n                                aria-label=\"Next slide\"\n                            >\n                                <svg\n                                    width=\"8\"\n                                    height=\"14\"\n                                    viewBox=\"0 0 8 14\"\n                                    fill=\"none\"\n                                    xmlns=\"http://www.w3.org/2000/svg\"\n                                >\n                                    <path\n                                        d=\"M6.84717 0.5L0.707031 6.64014L6.84717 12.7798\"\n                                        stroke=\"#B7985D\"\n                                        stroke-linecap=\"round\"\n                                    />\n                                </svg>\n                            </button>\n                            <button\n                                type=\"button\"\n                                class=\"m-swiper-button next fill\"\n                                aria-label=\"Previous slide\"\n                            >\n                                <svg\n                                    width=\"8\"\n                                    height=\"14\"\n                                    viewBox=\"0 0 8 14\"\n                                    fill=\"none\"\n                                    xmlns=\"http://www.w3.org/2000/svg\"\n                                >\n                                    <path\n                                        d=\"M0.500488 0.5L6.64062 6.64014L0.500488 12.7798\"\n                                        stroke=\"#B7985D\"\n                                        stroke-linecap=\"round\"\n                                    />\n                                </svg>\n                            </button>\n                            @if (texts.title) {\n                                <h3\n                                    class=\"m-titulo\"\n                                    [innerHTML]=\"texts.title\"\n                                ></h3>\n                            }\n                            @if (texts.description) {\n                                <div\n                                    class=\"m-texto\"\n                                    [innerHTML]=\"texts.description\"\n                                ></div>\n                            }\n                        </div>\n                    </div>\n                </div>\n            </div>\n        }\n    </div>\n</section>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { BabylonLinkTypeDirective } from '../../../../directives/link-type/link-type.directive';\nimport {\n    BabylonButtonI,\n    BabylonMultimediaI,\n    BabylonTexts,\n} from '../../../../interfaces';\n\n@Component({\n    selector: 'ces-c4-sli-c2-img-txt-c',\n    standalone: true,\n    imports: [CommonModule, BabylonLinkTypeDirective],\n    templateUrl: './c4-sli-c2-img-txt-c.component.html',\n    styleUrl: './c4-sli-c2-img-txt-c.component.scss',\n})\nexport class C4SliC2ImgTxtCComponent {\n    /*  @Input() data: C4SliC2ImgTxtCContent = componentData; */\n    @Input() multimedia?: BabylonMultimediaI;\n    @Input() texts?: BabylonTexts;\n    @Input() buttons?: BabylonButtonI[];\n}\n","<section class=\"mdl-h02\">\n    <div class=\"m-imagenes\">\n        @if (multimedia?.imagenes?.length) {\n            @for (image of multimedia?.imagenes; track $index) {\n                <img\n                    [src]=\"\n                        image.img?.src ||\n                        'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                    \"\n                    [alt]=\"image.img?.alt\"\n                />\n            }\n        }\n        @if (buttons?.length) {\n            <div class=\"m-posicionamiento\">\n                <div class=\"m-floatbutton\">\n                    <a\n                        [href]=\"buttons?.[0]?.url\"\n                        [linkType]=\"buttons?.[0]?.linkType\"\n                        type=\"button\"\n                        class=\"m-button-clean\"\n                        [attr.aria-label]=\"\n                            buttons?.[0]?.label || buttons?.[0]?.name\n                        \"\n                    >\n                        {{ buttons?.[0]?.label || buttons?.[0]?.name }}\n                        <svg\n                            width=\"50\"\n                            height=\"6\"\n                            viewBox=\"0 0 50 6\"\n                            fill=\"none\"\n                            xmlns=\"http://www.w3.org/2000/svg\"\n                        >\n                            <path\n                                d=\"M45.875 0L49.875 2.8L45.875 5.6V0Z\"\n                                fill=\"#B7985D\"\n                            />\n                            <path\n                                d=\"M48.875 2.80078H0.375\"\n                                stroke=\"#B7985D\"\n                                stroke-width=\"0.75\"\n                                stroke-linecap=\"round\"\n                            />\n                        </svg>\n                    </a>\n                </div>\n            </div>\n        }\n    </div>\n    @if (texts) {\n        <div class=\"mdl-container\">\n            <div class=\"m-content\">\n                <div class=\"m-bottom\">\n                    <div class=\"m-textos\">\n                        @if (texts.title) {\n                            <h2 class=\"m-titulo\" [innerHTML]=\"texts.title\"></h2>\n                        }\n                        @if (texts.description) {}\n                        <div\n                            class=\"m-texto\"\n                            [innerHTML]=\"texts.description\"\n                        ></div>\n                    </div>\n                </div>\n            </div>\n        </div>\n    }\n</section>\n","import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n    AfterViewInit,\n    Component,\n    ElementRef,\n    inject,\n    Input,\n    OnDestroy,\n    PLATFORM_ID,\n    ViewChild,\n    ViewEncapsulation,\n} from '@angular/core';\nimport 'swiper';\nimport Swiper, { Autoplay, EffectFade, Navigation, Pagination } from 'swiper';\nimport { SwiperOptions } from 'swiper/types';\nimport { BabylonLinkTypeDirective } from '../../../../directives/link-type/link-type.directive';\nimport { BabylonItemI, BabylonTexts } from '../../../../interfaces';\n\nSwiper.use([Navigation, Pagination, Autoplay, EffectFade]);\n\n@Component({\n    selector: 'ces-c4-sli-c2-txt-img',\n    standalone: true,\n    imports: [CommonModule, BabylonLinkTypeDirective],\n    templateUrl: './c4-sli-c2-txt-img.component.html',\n    styleUrl: './c4-sli-c2-txt-img.component.scss',\n    encapsulation: ViewEncapsulation.None,\n})\nexport class C4SliC2TxtImgComponent implements AfterViewInit, OnDestroy {\n    @ViewChild('swiperRoot') swiperRoot!: ElementRef<HTMLElement>;\n    /* @Input() data: C4SliC2TxtImgContent = defaultData; */\n    @Input() items?: BabylonItemI[];\n    @Input() texts?: BabylonTexts;\n\n    private swiper?: Swiper;\n    private readonly platformId = inject(PLATFORM_ID);\n\n    ngAfterViewInit(): void {\n        if (!isPlatformBrowser(this.platformId)) return;\n        const rootEl = this.swiperRoot.nativeElement;\n        const nextEl = rootEl.querySelector(\n            '.swiper-button-next.desktop'\n        ) as HTMLElement | null;\n        const prevEl = rootEl.querySelector(\n            '.swiper-button-prev.desktop'\n        ) as HTMLElement | null;\n\n        const swiperOptions: SwiperOptions = {\n            slidesPerView: 1,\n            spaceBetween: 100,\n            loop: true,\n            navigation: {\n                nextEl: nextEl || undefined,\n                prevEl: prevEl || undefined,\n            },\n            breakpoints: {\n                768: {\n                    slidesPerView: 1,\n                },\n                1024: {\n                    slidesPerView: 1,\n                },\n            },\n        };\n\n        this.swiper = new Swiper(rootEl, swiperOptions);\n    }\n\n    slideNext(): void {\n        this.swiper?.slideNext();\n    }\n\n    slidePrev(): void {\n        this.swiper?.slidePrev();\n    }\n\n    ngOnDestroy(): void {\n        if (!isPlatformBrowser(this.platformId)) return;\n        this.swiper?.destroy(true, true);\n    }\n}\n","<section class=\"mdl-experiencias\">\n    <div class=\"container\">\n        @if (texts) {\n            <div class=\"header-module\">\n                @if (texts.title || texts.subtitle) {\n                    <h2 [innerHTML]=\"texts.title\">\n                        <br />\n                        <span [innerHTML]=\"texts.subtitle\"></span>\n                    </h2>\n                }\n                @if (texts.description) {\n                    <p [innerText]=\"texts.description\"></p>\n                }\n            </div>\n        }\n\n        @if (items?.length) {\n            <div class=\"swiper experiencias-swiper\" #swiperRoot>\n                <div class=\"swiper-wrapper\">\n                    @for (slide of items; track $index) {\n                        @if (slide) {\n                            <div class=\"swiper-slide experiencia\">\n                                <div class=\"content-slide\">\n                                    <div class=\"imagen\">\n                                        <img\n                                            [src]=\"\n                                                slide.img?.src ||\n                                                'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                            \"\n                                            [alt]=\"slide.img?.alt\"\n                                        />\n                                    </div>\n                                    <div class=\"arrows-navigation\">\n                                        <div\n                                            class=\"swiper-button-prev mobile prev fill\"\n                                            role=\"button\"\n                                            tabindex=\"0\"\n                                            (click)=\"slidePrev()\"\n                                        >\n                                            <svg\n                                                width=\"8\"\n                                                height=\"14\"\n                                                viewBox=\"0 0 8 14\"\n                                                fill=\"none\"\n                                                xmlns=\"http://www.w3.org/2000/svg\"\n                                            >\n                                                <path\n                                                    d=\"M6.84717 0.5L0.707031 6.64014L6.84717 12.7798\"\n                                                    stroke=\"#B7985D\"\n                                                    stroke-linecap=\"round\"\n                                                />\n                                            </svg>\n                                        </div>\n                                        <div\n                                            class=\"swiper-button-next mobile prev fill\"\n                                            role=\"button\"\n                                            tabindex=\"0\"\n                                            (click)=\"slideNext()\"\n                                        >\n                                            <svg\n                                                width=\"8\"\n                                                height=\"14\"\n                                                viewBox=\"0 0 8 14\"\n                                                fill=\"none\"\n                                                xmlns=\"http://www.w3.org/2000/svg\"\n                                            >\n                                                <path\n                                                    d=\"M0.500488 0.5L6.64062 6.64014L0.500488 12.7798\"\n                                                    stroke=\"#B7985D\"\n                                                    stroke-linecap=\"round\"\n                                                />\n                                            </svg>\n                                        </div>\n                                    </div>\n                                    @if (slide.texts) {\n                                        <div class=\"texto\">\n                                            @if (slide.texts.title) {\n                                                <h3\n                                                    [innerHTML]=\"\n                                                        slide.texts.title\n                                                    \"\n                                                ></h3>\n                                            }\n                                            @if (slide.texts.subtitle) {\n                                                <h4\n                                                    [innerHTML]=\"\n                                                        slide.texts.subtitle\n                                                    \"\n                                                ></h4>\n                                            }\n\n                                            @if (slide.texts.description) {\n                                                <div class=\"content-texto\">\n                                                    <p\n                                                        class=\"m-texto\"\n                                                        [innerHTML]=\"\n                                                            slide.texts\n                                                                .description\n                                                        \"\n                                                    ></p>\n                                                </div>\n                                            }\n                                            @if (slide.buttons?.length) {\n                                                <a\n                                                    [href]=\"\n                                                        slide.buttons?.[0]?.url\n                                                    \"\n                                                    [linkType]=\"\n                                                        slide.buttons?.[0]\n                                                            ?.linkType\n                                                    \"\n                                                    class=\"m-button-clean\"\n                                                    [attr.aria-label]=\"\n                                                        slide.buttons?.[0]\n                                                            ?.label ||\n                                                        slide.buttons?.[0]?.name\n                                                    \"\n                                                >\n                                                    {{\n                                                        slide.buttons?.[0]\n                                                            ?.label ||\n                                                            slide.buttons?.[0]\n                                                                ?.name\n                                                    }}\n                                                    <svg\n                                                        width=\"50\"\n                                                        height=\"6\"\n                                                        viewBox=\"0 0 50 6\"\n                                                        fill=\"none\"\n                                                        xmlns=\"http://www.w3.org/2000/svg\"\n                                                    >\n                                                        <path\n                                                            d=\"M45.875 0L49.875 2.8L45.875 5.6V0Z\"\n                                                            fill=\"#B7985D\"\n                                                        ></path>\n                                                        <path\n                                                            d=\"M48.875 2.80078H0.375\"\n                                                            stroke=\"#B7985D\"\n                                                            stroke-width=\"0.75\"\n                                                            stroke-linecap=\"round\"\n                                                        ></path>\n                                                    </svg>\n                                                </a>\n                                            }\n                                        </div>\n                                    }\n                                </div>\n                            </div>\n                        }\n                    }\n                </div>\n\n                <div class=\"swiper-button-prev desktop\"></div>\n                <div class=\"swiper-button-next desktop\"></div>\n            </div>\n        }\n    </div>\n</section>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { BabylonIconInfoI, BabylonTextInfoI } from '../../../../interfaces';\nimport { BabylonHotelStylesItem } from '../../../../interfaces/babylon-hotel-styles.interface';\n\nexport interface C4TxtSvgItem {\n    icon: string;\n    title: string;\n    subtitle?: string;\n}\n\nexport interface C4TxtSvgContent {\n    title: string;\n    items: C4TxtSvgItem[];\n}\n\n@Component({\n    selector: 'c4-txt-svg',\n    standalone: true,\n    encapsulation: ViewEncapsulation.None,\n    imports: [CommonModule],\n    templateUrl: './c4-txt-svg.component.html',\n    styleUrl: './c4-txt-svg.component.scss',\n})\nexport class C4TxtSvgComponent {\n    @Input() texts?: BabylonTextInfoI;\n    @Input() items?: BabylonIconInfoI[];\n    @Input() styles?: BabylonHotelStylesItem;\n\n    /* @Input() content: C4TxtSvgContent = DEFAULT_CONTENT; */\n\n    trackByTitle(index: number, item: C4TxtSvgItem): string {\n        return item.title ?? `${index}`;\n    }\n}\n","<section class=\"mdl-prova col\">\n    <div class=\"mdl-container\">\n        @if (texts?.title) {\n            <div class=\"m-left\">\n                <div class=\"m-titulo\">{{ texts?.title }}</div>\n            </div>\n        }\n        @if (items?.length) {\n            <div class=\"m-right\">\n                @for (item of items; track $index) {\n                    <div class=\"m-item\">\n                        @if (item) {\n                            <div class=\"m-icono\">\n                                <i\n                                    class=\"icon--svg\"\n                                    [ngClass]=\"item.icon\"\n                                    [style.--arrow-color]=\"\n                                        styles?.primary ?? '#000'\n                                    \"\n                                    [style.--arrow-hover-color]=\"\n                                        styles?.primaryHover ??\n                                        styles?.primary ??\n                                        '#000'\n                                    \"\n                                ></i>\n                                <!-- <img [src]=\"item.icon\" [alt]=\"item.title\" /> -->\n                            </div>\n                            <div class=\"m-content\">\n                                @if (item.label) {\n                                    <div class=\"m-titulo\">{{ item.label }}</div>\n                                }\n                                @if (item.description) {\n                                    <div class=\"m-subtitulo\">\n                                        {{ item.description }}\n                                    </div>\n                                }\n                            </div>\n                        }\n                    </div>\n                }\n            </div>\n        }\n    </div>\n</section>\n","import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n    AfterViewInit,\n    Component,\n    ElementRef,\n    inject,\n    Input,\n    OnChanges,\n    OnDestroy,\n    PLATFORM_ID,\n    SimpleChanges,\n    ViewEncapsulation,\n} from '@angular/core';\nimport Swiper, { Navigation } from 'swiper';\nimport { BabylonLinkTypeDirective } from '../../../../directives/link-type/link-type.directive';\nimport {\n    BabylonButtonI,\n    BabylonImageI,\n    BabylonItemI,\n    BabylonTextInfoI,\n} from '../../../../interfaces';\nimport { BabylonHotelStylesItem } from '../../../../interfaces/babylon-hotel-styles.interface';\nimport { getFirstImageByTagFromImages } from '../../../../utils/mutimedia.utils';\n\nSwiper.use([Navigation]);\n\nexport interface CarC2TxtCtaLink {\n    label: string;\n    url?: string;\n    target?: string;\n    ariaLabel?: string;\n}\n\nexport interface CarC2TxtCtaButton extends CarC2TxtCtaLink {\n    variant?: 'red' | 'blue' | 'green' | 'underline' | 'default';\n}\n\nexport interface CarC2TxtCtaIconCard {\n    icon?: string;\n    text: string;\n}\n\nexport interface CarC2TxtCtaCard {\n    title: string;\n    image?: string;\n    tag?: string;\n    logo?: string;\n    primaryButton?: CarC2TxtCtaButton;\n    secondaryButton?: CarC2TxtCtaButton;\n    iconCard?: CarC2TxtCtaIconCard;\n}\n\nexport interface CarC2TxtCtaContent {\n    title: string;\n    description?: string;\n    topLink?: CarC2TxtCtaLink;\n    cards: CarC2TxtCtaCard[];\n}\n\n@Component({\n    selector: 'car-c2-txt-cta',\n    standalone: true,\n    encapsulation: ViewEncapsulation.None,\n    imports: [CommonModule, BabylonLinkTypeDirective],\n    templateUrl: './car-c2-txt-cta.component.html',\n    styleUrl: './car-c2-txt-cta.component.scss',\n})\nexport class CarC2TxtCtaComponent\n    implements AfterViewInit, OnChanges, OnDestroy\n{\n    @Input() texts?: BabylonTextInfoI;\n    @Input() items?: BabylonItemI[];\n    @Input() buttons?: BabylonButtonI[];\n    @Input() styles?: BabylonHotelStylesItem;\n    @Input() showArrowsAlways?: boolean = true;\n    /*  @Input() content: CarC2TxtCtaContent = DEFAULT_CONTENT; */\n\n    tagName: string = 'CarC2TxtCta';\n\n    showPrev = false;\n    showNext = false;\n\n    arrowsReady = false;\n    private viewInited = false;\n\n    private swiperInstance?: Swiper;\n\n    private readonly platformId = inject(PLATFORM_ID);\n\n    constructor(private host: ElementRef<HTMLElement>) {}\n\n    ngAfterViewInit(): void {\n        if (!isPlatformBrowser(this.platformId)) return;\n        this.viewInited = true;\n        this.initSwiper();\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if (!isPlatformBrowser(this.platformId)) return;\n        if (changes['items']) {\n            queueMicrotask(() => {\n                if (!this.swiperInstance) this.tryInitSwiper();\n                else this.recalc();\n            });\n        }\n    }\n\n    ngOnDestroy(): void {\n        if (!isPlatformBrowser(this.platformId)) return;\n        this.destroySwiper();\n    }\n\n    trackByCard(index: number, card: CarC2TxtCtaCard): string {\n        return card.title ?? `${index}`;\n    }\n\n    private tryInitSwiper(): void {\n        if (!this.viewInited) return;\n        if (this.swiperInstance) return;\n\n        const container = this.host.nativeElement.querySelector(\n            '.mdl-mdh011 .swiper-container'\n        );\n\n        if (!container) {\n            requestAnimationFrame(() => this.tryInitSwiper());\n            return;\n        }\n\n        this.initSwiper();\n    }\n\n    private updateArrowsVisibility(): void {\n        const s = this.swiperInstance;\n        if (!s) return;\n\n        const locked =\n            (s as any).isLocked === true || (s.snapGrid?.length ?? 0) <= 1;\n\n        if (locked) {\n            this.showPrev = false;\n            this.showNext = false;\n            return;\n        }\n\n        if (!this.showArrowsAlways) {\n            this.showPrev = !s.isBeginning;\n            this.showNext = !s.isEnd;\n        } else {\n            this.showPrev = true;\n            this.showNext = true;\n        }\n    }\n\n    private initSwiper(): void {\n        const container = this.host.nativeElement.querySelector(\n            '.mdl-mdh011 .swiper-container'\n        );\n        if (!container) return;\n\n        const nextButton =\n            this.host.nativeElement.querySelector('.mdl-mdh011 .next');\n        const prevButton =\n            this.host.nativeElement.querySelector('.mdl-mdh011 .prev');\n\n        this.swiperInstance = new Swiper(container as HTMLElement, {\n            slidesPerView: 2,\n            loop: false,\n            navigation:\n                nextButton && prevButton\n                    ? {\n                          nextEl: nextButton as HTMLElement,\n                          prevEl: prevButton as HTMLElement,\n                      }\n                    : undefined,\n            simulateTouch: true,\n            grabCursor: true,\n            spaceBetween: 70,\n            breakpoints: {\n                0: { slidesPerView: 1 },\n                770: { slidesPerView: 2 },\n                1024: { spaceBetween: 60 },\n                1366: { spaceBetween: 70 },\n            },\n\n            observer: true,\n            observeParents: true,\n            observeSlideChildren: true,\n            on: {\n                init: () => this.updateArrowsVisibility(),\n                slideChange: () => this.updateArrowsVisibility(),\n                reachBeginning: () => this.updateArrowsVisibility(),\n                reachEnd: () => this.updateArrowsVisibility(),\n                fromEdge: () => this.updateArrowsVisibility(),\n                resize: () => this.updateArrowsVisibility(),\n                observerUpdate: () => this.updateArrowsVisibility(),\n            },\n        });\n\n        this.recalc();\n    }\n\n    private recalc(): void {\n        const s = this.swiperInstance;\n        if (!s) return;\n\n        requestAnimationFrame(() => {\n            s.update();\n            this.updateArrowsVisibility();\n            s.navigation?.update();\n\n            requestAnimationFrame(() => {\n                s.update();\n                this.updateArrowsVisibility();\n                s.navigation?.update();\n\n                this.arrowsReady = true;\n            });\n        });\n    }\n\n    private destroySwiper(): void {\n        if (this.swiperInstance) {\n            this.swiperInstance.destroy(true, true);\n            this.swiperInstance = undefined;\n        }\n    }\n\n    private rebuildSwiper(): void {\n        this.destroySwiper();\n        setTimeout(() => this.initSwiper());\n    }\n\n    getFirstImageByTag(tagName: string, imagenes: BabylonImageI[]) {\n        return getFirstImageByTagFromImages(imagenes, tagName);\n    }\n}\n","<section class=\"mdl-mdh011\">\n    <div class=\"mdl-container\">\n        <div class=\"m-content-top\">\n            @if (texts) {\n                @if (texts.title) {\n                    <div class=\"m-title\">{{ texts.title }}</div>\n                }\n                @if (texts.description) {\n                    <div class=\"m-text\" [innerHTML]=\"texts.description\"></div>\n                }\n            }\n            @if (buttons?.[0]; as btn) {\n                <a\n                    class=\"m-underline-red\"\n                    [href]=\"btn.url\"\n                    [linkType]=\"btn.linkType\"\n                    [attr.target]=\"btn.target\"\n                    [attr.rel]=\"\n                        (btn.target || '_self') === '_blank'\n                            ? 'noopener noreferrer'\n                            : null\n                    \"\n                    [attr.aria-label]=\"btn.label\"\n                >\n                    {{ btn.label }}\n                </a>\n            }\n        </div>\n\n        @if (items) {\n            <div class=\"m-cards-container\">\n                <div class=\"swiper\">\n                    <div class=\"swiper-container\">\n                        <div class=\"swiper-wrapper\">\n                            @for (card of items; track $index) {\n                                <div class=\"swiper-slide\">\n                                    @if (card.multimedia?.imagenes) {\n                                        @if (\n                                            getFirstImageByTag(\n                                                tagName,\n                                                card.multimedia?.imagenes ?? []\n                                            ) ?? card.multimedia?.imagenes?.[0];\n                                            as img\n                                        ) {\n                                            <ng-container>\n                                                <a\n                                                    class=\"link-container\"\n                                                    [href]=\"\n                                                        card.links?.[0]?.url\n                                                    \"\n                                                    [linkType]=\"\n                                                        card.links?.[0]\n                                                            ?.linkType\n                                                    \"\n                                                    [attr.aria-label]=\"\n                                                        card.links?.[0]?.label\n                                                    \"\n                                                >\n                                                    <div\n                                                        class=\"m-card-top\"\n                                                        [style.background-image]=\"\n                                                            'url(' +\n                                                            img.img?.src +\n                                                            ')'\n                                                        \"\n                                                    >\n                                                        @if (\n                                                            card.texts\n                                                                ?.additional1\n                                                        ) {\n                                                            <div\n                                                                class=\"tag-container\"\n                                                            >\n                                                                <div\n                                                                    class=\"m-tag\"\n                                                                    [style.--arrow-color]=\"\n                                                                        styles?.primary ??\n                                                                        '#000'\n                                                                    \"\n                                                                    [style.--arrow-hover-color]=\"\n                                                                        styles?.primaryHover ??\n                                                                        styles?.primary ??\n                                                                        '#000'\n                                                                    \"\n                                                                >\n                                                                    {{\n                                                                        card.title ||\n                                                                            card\n                                                                                .texts\n                                                                                ?.additional1\n                                                                    }}\n                                                                </div>\n                                                            </div>\n                                                        }\n                                                    </div>\n                                                </a>\n                                            </ng-container>\n                                        }\n                                    }\n\n                                    <div class=\"m-content\">\n                                        @if (card.texts?.name) {\n                                            <div class=\"m-title\">\n                                                {{ card.texts?.name }}\n                                            </div>\n                                        }\n                                        <!--    <img\n                                            *ngIf=\"card.logo\"\n                                            class=\"m-logo\"\n                                            [src]=\"card.logo\"\n                                            [alt]=\"card.title\"\n                                            loading=\"lazy\"\n                                        /> -->\n                                        @if (card.buttons) {\n                                            @for (\n                                                btn of card.buttons;\n                                                track $index\n                                            ) {\n                                                <a\n                                                    [ngClass]=\"\n                                                        $index % 2 === 0\n                                                            ? 'm-button-sm'\n                                                            : 'm-but m-underline'\n                                                    \"\n                                                    [href]=\"btn?.url\"\n                                                    [attr.target]=\"btn?.target\"\n                                                    [attr.rel]=\"\n                                                        (btn?.target ||\n                                                            '_self') ===\n                                                        '_blank'\n                                                            ? 'noopener noreferrer'\n                                                            : null\n                                                    \"\n                                                    [attr.aria-label]=\"\n                                                        btn?.label\n                                                    \"\n                                                    [style.--color]=\"\n                                                        styles?.primary ??\n                                                        '#ff4338'\n                                                    \"\n                                                    [style.--hover-color]=\"\n                                                        styles?.primaryHover ??\n                                                        styles?.primary ??\n                                                        '#ed3b37'\n                                                    \"\n                                                >\n                                                    <span>{{\n                                                        btn?.label\n                                                    }}</span>\n                                                </a>\n                                            }\n                                        }\n                                    </div>\n                                </div>\n                            }\n                        </div>\n                    </div>\n\n                    <div\n                        class=\"m-swiper-button prev\"\n                        [class.is-hidden]=\"!arrowsReady || !showPrev\"\n                        [style.--arrow-color]=\"styles?.primary\"\n                        [style.--arrow-hover-color]=\"styles?.primaryHover\"\n                    >\n                        <svg\n                            width=\"7\"\n                            height=\"12\"\n                            viewBox=\"0 0 7 12\"\n                            fill=\"none\"\n                            xmlns=\"http://www.w3.org/2000/svg\"\n                        >\n                            <path\n                                d=\"M0.28467 5.31548L5.34843 0.281695C5.53052 0.100676 5.77712 -0.000650459 6.03398 3.77247e-06C6.29084 0.000657051 6.53692 0.103239 6.71808 0.285182C6.89924 0.467126 7.00065 0.713526 7 0.970178C6.99934 1.22683 6.89668 1.47271 6.71459 1.65373L2.32693 5.98705L6.7116 10.3463C6.89369 10.5273 6.99635 10.7732 6.99701 11.0298C6.99766 11.2865 6.89625 11.5329 6.71509 11.7148C6.53392 11.8968 6.28784 11.9993 6.03099 12C5.77413 12.0007 5.52753 11.8993 5.34544 11.7183L0.283673 6.68651C0.101853 6.50457 -0.000186192 6.25791 7.39071e-07 6.00079C0.00018767 5.74367 0.102586 5.49716 0.28467 5.31548Z\"\n                                fill=\"white\"\n                            />\n                        </svg>\n                    </div>\n\n                    <div\n                        class=\"m-swiper-button next\"\n                        [class.is-hidden]=\"!arrowsReady || !showNext\"\n                        [style.--arrow-color]=\"styles?.primary\"\n                        [style.--arrow-hover-color]=\"styles?.primaryHover\"\n                    >\n                        <svg\n                            width=\"7\"\n                            height=\"12\"\n                            viewBox=\"0 0 7 12\"\n                            fill=\"none\"\n                            xmlns=\"http://www.w3.org/2000/svg\"\n                        >\n                            <path\n                                d=\"M6.71533 5.31548L1.65157 0.281695C1.46948 0.100676 1.22288 -0.000650459 0.966022 3.77247e-06C0.709163 0.000657051 0.463085 0.103239 0.281921 0.285182C0.100757 0.467126 -0.000651881 0.713526 2.66678e-06 0.970178C0.000657215 1.22683 0.103322 1.47271 0.285411 1.65373L4.67307 5.98705L0.288403 10.3463C0.106314 10.5273 0.00364923 10.7732 0.0029947 11.0298C0.00234018 11.2865 0.103749 11.5329 0.284913 11.7148C0.466077 11.8968 0.712156 11.9993 0.969015 12C1.22587 12.0007 1.47247 11.8993 1.65456 11.7183L6.71633 6.68651C6.89815 6.50457 7.00019 6.25791 7 6.00079C6.99981 5.74367 6.89741 5.49716 6.71533 5.31548Z\"\n                                fill=\"white\"\n                            />\n                        </svg>\n                    </div>\n                </div>\n            </div>\n        }\n    </div>\n</section>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { BabylonLinkTypeDirective } from '../../../../directives/link-type/link-type.directive';\nimport { BabylonImageI, BabylonItemI } from '../../../../interfaces';\nimport { BabylonStyleGlobalItem } from '../../../../interfaces/babylon-style.interface';\nimport { getFirstImageByTagFromImages } from '../../../../utils/mutimedia.utils';\n\nexport interface LisC2ImgTxtCv4Button {\n    label: string;\n    url?: string;\n    target?: string;\n    ariaLabel?: string;\n    variant?: 'red' | 'default';\n}\n\nexport interface LisC2ImgTxtCv4Card {\n    image: string;\n    title: string;\n    primaryButton: LisC2ImgTxtCv4Button;\n    secondaryButton: LisC2ImgTxtCv4Button;\n}\n\nexport interface LisC2ImgTxtCv4Content {\n    cards: LisC2ImgTxtCv4Card[];\n}\n\n@Component({\n    selector: 'lis-c2-img-txt-cv4',\n    standalone: true,\n    encapsulation: ViewEncapsulation.None,\n    imports: [CommonModule, BabylonLinkTypeDirective],\n    templateUrl: './lis-c2-img-txt-cv4.component.html',\n    styleUrl: './lis-c2-img-txt-cv4.component.scss',\n})\nexport class LisC2ImgTxtCv4Component {\n    @Input() items?: BabylonItemI[];\n    @Input() styles?: BabylonStyleGlobalItem;\n\n    tagName: string = 'LisC2ImgTxtCv4';\n\n    trackByCard(index: number, card: LisC2ImgTxtCv4Card): string {\n        return card.title ?? `${index}`;\n    }\n\n    getFirstImageByTag(tagName: string, images: BabylonImageI[]) {\n        return getFirstImageByTagFromImages(images, tagName);\n    }\n}\n","@if (items) {\n    <section class=\"mdl-mdh003-v2\">\n        <div class=\"mdl-container\">\n            <div class=\"m-cards-container\">\n                @for (item of items; track $index) {\n                    <div class=\"m-card\">\n                        <a\n                            class=\"link-container\"\n                            [href]=\"item.links?.[0]?.url\"\n                            [linkType]=\"item.links?.[0]?.linkType\"\n                            [attr.aria-label]=\"item.links?.[0]?.label\"\n                        >\n                            <div\n                                class=\"m-card-top\"\n                                [style.background-image]=\"\n                                    'url(' +\n                                    (getFirstImageByTag(\n                                        tagName,\n                                        item.multimedia?.imagenes ?? []\n                                    )?.img?.src ??\n                                        item.multimedia?.imagenes?.[0]?.img\n                                            ?.src) +\n                                    ')'\n                                \"\n                            ></div>\n                        </a>\n                        <div class=\"m-content\">\n                            @if (item.texts?.title ?? item.texts?.name) {\n                                <div class=\"m-title\">\n                                    {{ item.texts?.title ?? item.texts?.name }}\n                                </div>\n                            }\n                            @if (item.buttons) {\n                                @for (btn of item.buttons; track $index) {\n                                    <a\n                                        class=\"m-button-sm\"\n                                        [ngClass]=\"{\n                                            red: $index % 2 === 0,\n                                            'm-button-sm': $index % 2 === 0,\n                                            'm-but m-underline-red':\n                                                $index % 2 !== 0,\n                                        }\"\n                                        [href]=\"btn.url\"\n                                        [linkType]=\"btn.linkType\"\n                                        [attr.target]=\"btn.target || '_self'\"\n                                        [attr.aria-label]=\"btn.label\"\n                                        [attr.rel]=\"\n                                            (btn.target || '_self') === '_blank'\n                                                ? 'noopener noreferrer'\n                                                : null\n                                        \"\n                                        [style.--btn-primary-dynamic]=\"\n                                            styles?.primary\n                                        \"\n                                        [style.--btn-hover-dynamic]=\"\n                                            styles?.primaryHover\n                                        \"\n                                    >\n                                        <span>{{ btn.label }}</span>\n                                    </a>\n                                }\n                            }\n                        </div>\n                    </div>\n                }\n            </div>\n        </div>\n    </section>\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, inject, Input } from '@angular/core';\nimport { BabylonLinkTypeDirective } from '../../../../directives/link-type/link-type.directive';\nimport { BabylonButtonI, BabylonTextInfoI } from '../../../../interfaces';\nimport { BabylonHotelGlobalItem } from '../../../../interfaces/babylon-hotel.interface';\nimport { SITE_CONFIG_SERVICE_TOKEN } from '../../../../services/mapper/mapper.service.token';\nimport { Utils } from '../../../../utils';\nimport { LisC1ImgTxtGroup } from './lis-c1-img-txt.interfaces';\n\n@Component({\n    selector: 'lis-c1-img-txt',\n    standalone: true,\n    imports: [CommonModule, BabylonLinkTypeDirective],\n    templateUrl: './lis-c1-img-txt.component.html',\n    styleUrl: './lis-c1-img-txt.component.scss',\n})\nexport class LisC1ImgTxtComponent {\n    private readonly siteSvc = inject(SITE_CONFIG_SERVICE_TOKEN);\n\n    @Input() texts?: BabylonTextInfoI;\n    @Input() hotels?: BabylonHotelGlobalItem[];\n    @Input() items?: BabylonHotelGlobalItem[];\n    @Input() links?: BabylonButtonI[];\n    @Input() buttons?: BabylonButtonI[];\n\n    private openGroupIndexes = new Set<number>();\n\n    get dropdownGroups(): LisC1ImgTxtGroup[] {\n        const source = this.hotels ?? this.items ?? [];\n        const grouped = new Map<string, BabylonHotelGlobalItem[]>();\n\n        source.forEach((hotel) => {\n            const type = (hotel.hoteltype ?? '').trim();\n            if (!type) return;\n            if (!grouped.has(type)) grouped.set(type, []);\n            grouped.get(type)!.push(hotel);\n        });\n\n        const groups = Array.from(grouped.entries()).map(([type, hotels]) => ({\n            type,\n            hotels: [...hotels].sort((a, b) => (a.order ?? 9999) - (b.order ?? 9999)),\n        }));\n\n        const base = groups.slice(0, 3).map((group, index) => ({\n            type: group.type,\n            label: this.links?.[index]?.label || group.type,\n            hotels: group.hotels,\n        }));\n\n        while (base.length < 3) {\n            const index = base.length;\n            base.push({\n                type: '',\n                label: this.links?.[index]?.label || '',\n                hotels: [],\n            });\n        }\n\n        return base;\n    }\n\n    toggleGroup(index: number): void {\n        if (this.openGroupIndexes.has(index)) {\n            this.openGroupIndexes.delete(index);\n            return;\n        }\n        this.openGroupIndexes.add(index);\n    }\n\n    isGroupOpen(index: number): boolean {\n        return this.openGroupIndexes.has(index);\n    }\n\n    getHotelName(hotel: BabylonHotelGlobalItem): string {\n        return hotel.texts?.name || hotel.texts?.title || hotel.name || '';\n    }\n\n    getHotelImage(hotel: BabylonHotelGlobalItem): string | undefined {\n        const multimedia: any = hotel.multimedia as any;\n        const images: any = (hotel as any).images;\n        const img: any = (hotel as any).img;\n\n        // Formato mapeado (habitual en Babylon)\n        const mappedImg =\n            multimedia?.imagenes?.[0] ??\n            images?.[0] ??\n            img;\n        const mappedSrc =\n            mappedImg?.img?.src ??\n            mappedImg?.img?.original ??\n            mappedImg?.src ??\n            mappedImg?.original ??\n            mappedImg?.path?.webp ??\n            mappedImg?.path?.original;\n        if (mappedSrc) {\n            return this.normalizeImageUrl(mappedSrc);\n        }\n\n        // Formato crudo API: multimedia[0].path.webp/original\n        const rawImg =\n            (Array.isArray(multimedia) ? multimedia[0] : undefined) ??\n            (Array.isArray(images) ? images[0] : undefined);\n        const rawSrc =\n            rawImg?.path?.webp ??\n            rawImg?.path?.original ??\n            rawImg?.webp ??\n            rawImg?.original ??\n            rawImg?.thumbnails?.[1366]?.webp ??\n            rawImg?.thumbnails?.[1280]?.webp ??\n            rawImg?.thumbnails?.[1024]?.webp ??\n            rawImg?.thumbnails?.[768]?.webp ??\n            rawImg?.thumbnails?.[540]?.webp ??\n            rawImg?.thumbnails?.[375]?.webp ??\n            rawImg?.thumbnails?.[1366]?.original ??\n            rawImg?.thumbnails?.[1280]?.original ??\n            rawImg?.thumbnails?.[1024]?.original ??\n            rawImg?.thumbnails?.[768]?.original ??\n            rawImg?.thumbnails?.[540]?.original ??\n            rawImg?.thumbnails?.[375]?.original;\n\n        const normalized = this.normalizeImageUrl(rawSrc);\n        return normalized;\n    }\n\n    getHotelImageAlt(hotel: BabylonHotelGlobalItem): string {\n        const multimedia: any = hotel.multimedia as any;\n        const mappedAlt =\n            multimedia?.imagenes?.[0]?.img?.alt ??\n            (hotel as any)?.images?.[0]?.img?.alt ??\n            (hotel as any)?.img?.alt;\n        const rawAlt =\n            (Array.isArray(multimedia) ? multimedia[0]?.alt : undefined) ??\n            (Array.isArray((hotel as any)?.images)\n                ? (hotel as any).images[0]?.alt\n                : undefined);\n        return (\n            mappedAlt ||\n            rawAlt ||\n            this.getHotelName(hotel) ||\n            'hotel'\n        );\n    }\n\n    getHotelSubtitle(hotel: BabylonHotelGlobalItem): string {\n        const additional1 = ((hotel as any)?.texts?.additional1 ?? '').trim();\n        if (additional1) return additional1;\n        return hotel.hoteltype || hotel.city || '';\n    }\n\n    getHotelCategoryCount(hotel: BabylonHotelGlobalItem): number {\n        return Utils.extractNumberRange(hotel.hotelcategory ?? '')?.length ?? 0;\n    }\n\n    getStars(hotel: BabylonHotelGlobalItem): number[] {\n        return Array.from(\n            { length: this.getHotelCategoryCount(hotel) },\n            (_, index) => index\n        );\n    }\n\n    getPrimaryHotelButton(hotel: BabylonHotelGlobalItem): BabylonButtonI | undefined {\n        return hotel.buttons?.[0] ?? hotel.links?.[0];\n    }\n\n    getSecondaryHotelButton(hotel: BabylonHotelGlobalItem): BabylonButtonI | undefined {\n        return hotel.buttons?.[1] ?? hotel.links?.[1];\n    }\n\n    trackGroup(index: number): number {\n        return index;\n    }\n\n    trackHotel(_index: number, hotel: BabylonHotelGlobalItem): number | string {\n        return hotel.id ?? hotel.name ?? _index;\n    }\n\n    trackStar(index: number): number {\n        return index;\n    }\n\n    isApartment(hotelType: string | undefined): boolean {\n        return Utils.isApartment(hotelType);\n    }\n\n    showIfSup(value?: string | null): string {\n\n        return Utils.showIfSup(value);\n    }\n\n    private normalizeImageUrl(src?: string): string | undefined {\n        if (!src) return undefined;\n\n        // Ya es una URL absoluta o especial\n        if (/^(https?:)?\\/\\//i.test(src) || /^(data|blob):/i.test(src)) {\n            return src;\n        }\n\n        const cleanSrc = src.replace(/^\\/+/, '');\n        const cdnBase = (this.siteSvc?.cdnImagesInstant ?? '').toString();\n        if (!cdnBase) return src;\n\n        const cleanBase = cdnBase.endsWith('/') ? cdnBase : `${cdnBase}/`;\n        return `${cleanBase}${cleanSrc}`;\n    }\n}\n","<section class=\"mdl-LisC1ImgTxt\">\n    <div class=\"mdl-container\">\n        <div class=\"m-head\">\n            <div class=\"m-left\">\n                @if (texts?.pretitle) {\n                    <span>{{ texts?.pretitle }}</span>\n                }\n                @if (texts?.title) {\n                    {{ texts?.title }}\n                }\n            </div>\n            @if (texts?.description) {\n                <div class=\"m-right\" [innerHTML]=\"texts?.description\"></div>\n            }\n        </div>\n\n        <div class=\"m-content\">\n            @for (group of dropdownGroups; track trackGroup($index)) {\n                <div\n                    class=\"m-item\"\n                    [ngClass]=\"{\n                        'm-open': isGroupOpen($index),\n                        'm-close': !isGroupOpen($index),\n                    }\"\n                >\n                    <button\n                        class=\"m-buttonD\"\n                        type=\"button\"\n                        [attr.aria-expanded]=\"isGroupOpen($index)\"\n                        (click)=\"toggleGroup($index)\"\n                    >\n                        <div class=\"m-titulo\">{{ group.label }}</div>\n                        <svg\n                            width=\"32\"\n                            height=\"32\"\n                            viewBox=\"0 0 32 32\"\n                            fill=\"none\"\n                            xmlns=\"http://www.w3.org/2000/svg\"\n                        >\n                            <line\n                                x1=\"0.5\"\n                                y1=\"15.5\"\n                                x2=\"31.5\"\n                                y2=\"15.5\"\n                                stroke=\"#393637\"\n                                stroke-linecap=\"round\"\n                            />\n                            <line\n                                x1=\"16.5117\"\n                                y1=\"0.5\"\n                                x2=\"16.5117\"\n                                y2=\"31.5\"\n                                stroke=\"#393637\"\n                                stroke-linecap=\"round\"\n                            />\n                        </svg>\n                    </button>\n\n                    <div\n                        class=\"m-listado\"\n                        [style.height]=\"isGroupOpen($index) ? 'auto' : '0px'\"\n                    >\n                        @for (hotel of group.hotels; track trackHotel($index, hotel)) {\n                            <div class=\"m-item-list\">\n                                @if (getHotelImage(hotel)) {\n                                    @if (getPrimaryHotelButton(hotel); as imageBtn) {\n                                        <a\n                                            class=\"m-imagen-link\"\n                                            [href]=\"imageBtn.url\"\n                                            [linkType]=\"imageBtn.linkType\"\n                                            [attr.target]=\"imageBtn.target || '_self'\"\n                                            [attr.rel]=\"\n                                                (imageBtn.target || '_self') === '_blank'\n                                                    ? 'noopener noreferrer'\n                                                    : null\n                                            \"\n                                        >\n                                            <div class=\"m-imagen\">\n                                                <img\n                                                    [src]=\"getHotelImage(hotel)\"\n                                                    [alt]=\"getHotelImageAlt(hotel)\"\n                                                    loading=\"lazy\"\n                                                />\n                                            </div>\n                                        </a>\n                                    } @else {\n                                        <div class=\"m-imagen\">\n                                            <img\n                                                [src]=\"getHotelImage(hotel)\"\n                                                [alt]=\"getHotelImageAlt(hotel)\"\n                                                loading=\"lazy\"\n                                            />\n                                        </div>\n                                    }\n                                }\n\n                                @if (getHotelName(hotel)) {\n                                    <div class=\"m-titulo\">\n                                        {{ getHotelName(hotel) }}\n                                    </div>\n                                }\n\n                                @if (getHotelSubtitle(hotel)) {\n                                    <div class=\"m-subtitulo\">\n                                        {{ getHotelSubtitle(hotel) }}\n                                    </div>\n                                }\n\n                                @if (getHotelCategoryCount(hotel)) {\n\n                                    <div class=\"category\">\n                                        @for (star of getStars(hotel); track trackStar($index)) {\n                                          @if (hotel?.hoteltype && isApartment(hotel.hoteltype)) {\n\n                                              <div class=\"m-keys\">\n                                                <svg\n                                                      width=\"13\"\n                                                      height=\"13\"\n                                                      viewBox=\"0 0 13 13\"\n                                                      fill=\"none\"\n                                                      xmlns=\"http://www.w3.org/2000/svg\"\n                                                  >\n                                                      <path\n                                                          d=\"M0.146296 4.26479L1.14015 2.01692C1.31289 1.62559 1.62559 1.31289 2.01692 1.14015L4.26479 0.146297C4.58174 0.00641826 4.93356 -0.0343944 5.27412 0.0292127C5.61467 0.0928198 5.92805 0.257876 6.17314 0.50273L7.9475 2.27839C8.1606 2.49155 8.31388 2.75701 8.39197 3.04813C8.47006 3.33925 8.4702 3.64578 8.39239 3.93698L7.93579 5.64109L12.866 10.5713C12.9085 10.6136 12.9422 10.6639 12.9652 10.7193C12.9882 10.7746 13 10.834 13 10.8939V12.5447C12.9993 12.6652 12.9511 12.7807 12.8659 12.8659C12.7807 12.9511 12.6652 12.9993 12.5447 13H10.8939C10.7926 12.9998 10.6942 12.9659 10.6142 12.9038C10.5341 12.8416 10.477 12.7547 10.4516 12.6566L10.2045 11.6796L9.3303 11.5131C9.24322 11.4968 9.16282 11.4553 9.09903 11.3938C9.03523 11.3323 8.99082 11.2535 8.97127 11.1671L8.73321 10.1173L7.89026 10.0367C7.78479 10.0274 7.68608 9.9808 7.61188 9.90528L5.64109 7.93579L3.93697 8.39239C3.6458 8.47047 3.33919 8.47046 3.04802 8.39236C2.75685 8.31426 2.4914 8.16082 2.27839 7.9475L0.502729 6.17314C0.257875 5.92805 0.0928202 5.61467 0.029213 5.27412C-0.0343943 4.93357 0.00641727 4.58174 0.146296 4.26479ZM3.6703 5.08953C3.81061 5.22968 3.98932 5.32508 4.18385 5.36369C4.37837 5.40229 4.57997 5.38236 4.76317 5.30641C4.94636 5.23047 5.10294 5.10191 5.21309 4.937C5.32324 4.7721 5.38203 4.57823 5.38203 4.37991C5.38203 4.1816 5.32324 3.98773 5.21309 3.82283C5.10294 3.65792 4.94636 3.52936 4.76317 3.45342C4.57997 3.37747 4.37837 3.35754 4.18385 3.39614C3.98932 3.43475 3.81061 3.53015 3.6703 3.6703C3.57689 3.76336 3.50277 3.87395 3.45219 3.99572C3.40162 4.1175 3.37558 4.24806 3.37558 4.37991C3.37558 4.51177 3.40162 4.64233 3.45219 4.76411C3.50277 4.88588 3.57689 4.99647 3.6703 5.08953Z\"\n                                                          fill=\"#393637\"\n                                                          fill-opacity=\"1\"\n                                                      />\n                                                  </svg>\n\n                                              </div>\n\n                                        }\n                                        @else {\n                                           <div class=\"m-stars\">\n                                              <svg\n                                                  width=\"12\"\n                                                  height=\"11\"\n                                                  viewBox=\"0 0 12 11\"\n                                                  fill=\"none\"\n                                                  xmlns=\"http://www.w3.org/2000/svg\"\n                                              >\n                                                  <path\n                                                      d=\"M6 0L7.416 4.2H12L8.292 6.8L9.708 11L6 8.4L2.292 11L3.708 6.8L0 4.2H4.584L6 0Z\"\n                                                      fill=\"#393637\"\n                                                  />\n                                              </svg>\n                                            </div>\n                                        }\n                                      }\n                                       {{ showIfSup(hotel?.hotelcategory) }}\n                                    </div>\n\n                                }\n\n                                <div class=\"m-buttons\">\n                                    @if (getPrimaryHotelButton(hotel); as primaryBtn) {\n                                        <a\n                                            class=\"m-button1\"\n                                            [href]=\"primaryBtn.url\"\n                                            [linkType]=\"primaryBtn.linkType\"\n                                            [attr.target]=\"primaryBtn.target || '_self'\"\n                                            [attr.rel]=\"\n                                                (primaryBtn.target || '_self') ===\n                                                '_blank'\n                                                    ? 'noopener noreferrer'\n                                                    : null\n                                            \"\n                                        >\n                                            {{ primaryBtn.label }}\n                                        </a>\n                                    }\n\n                                    @if (getSecondaryHotelButton(hotel); as secondaryBtn) {\n                                        <a\n                                            class=\"m-button2\"\n                                            [href]=\"secondaryBtn.url\"\n                                            [linkType]=\"secondaryBtn.linkType\"\n                                            [attr.target]=\"secondaryBtn.target || '_self'\"\n                                            [attr.rel]=\"\n                                                (secondaryBtn.target || '_self') ===\n                                                '_blank'\n                                                    ? 'noopener noreferrer'\n                                                    : null\n                                            \"\n                                        >\n                                            {{ secondaryBtn.label }}\n                                        </a>\n                                    }\n                                </div>\n                            </div>\n                        }\n                    </div>\n                </div>\n            }\n        </div>\n\n        <div class=\"m-foot\">\n            @if (texts?.additional) {\n                <div class=\"m-texto\">{{ texts?.additional }}</div>\n            }\n            @if (buttons?.[0]; as ctaBtn) {\n                <a\n                    class=\"m-buttonfoot\"\n                    [href]=\"ctaBtn.url\"\n                    [linkType]=\"ctaBtn.linkType\"\n                    [attr.target]=\"ctaBtn.target || '_self'\"\n                    [attr.rel]=\"\n                        (ctaBtn.target || '_self') === '_blank'\n                            ? 'noopener noreferrer'\n                            : null\n                    \"\n                >\n                    {{ ctaBtn.label }}\n                </a>\n            }\n        </div>\n    </div>\n</section>\n","\nexport interface FilterParams {\n  items: BabylonGlobalItem[];\n  selectedHotelType: string;\n  selectedDestination: string;\n  selectedBrand: string;\n  additional1LikeMarca?: boolean;\n}\n\nexport function filteredItems({\n  items = [],\n  selectedHotelType = '',\n  selectedDestination = '',\n  selectedBrand = '',\n  additional1LikeMarca = false,\n}: FilterParams): BabylonGlobalItem[] {\n  return items.filter((it) => {\n    const itemHotelType = (it as any)?.hoteltype ?? '';\n    const itemBrand = getItemBrand(it, additional1LikeMarca);\n\n    const hotelTypeOk =\n      !selectedHotelType ||\n      canonicalSlug(itemHotelType) === canonicalSlug(selectedHotelType);\n\n    const destinationOk =\n      !selectedDestination ||\n      (((it as any)?.destinations ?? []) as any[]).some(\n        (d) => Utils.toSlug(d?.name ?? '').toLowerCase() === Utils.toSlug(selectedDestination).toLowerCase()\n      );\n\n    const brandOk =\n      !selectedBrand ||\n      Utils.toSlug(itemBrand) === Utils.toSlug(selectedBrand);\n\n    return hotelTypeOk && destinationOk && brandOk;\n  });\n}\nimport { Utils } from '.';\nimport { BabylonGlobalItem } from '../interfaces/babylon-global-item.interface';\n\nexport interface FilterOptionsResult {\n  hotelTypeOptions: string[];\n  destinationOptions: string[];\n  brandOptions: string[];\n  filterSlugToLabel: Map<string, string>;\n  destinationSlugToLabel: Map<string, string>;\n  brandSlugToLabel: Map<string, string>;\n  filterLabelToSlug: Map<string, string>;\n  destinationLabelToSlug: Map<string, string>;\n  brandLabelToSlug: Map<string, string>;\n}\n\nexport function getItemBrand(it: any, additional1LikeMarca: boolean): string {\n  if (additional1LikeMarca) return (it?.texts?.additional1 ?? '').trim();\n  return (it?.marca ?? it?.brand ?? it?.group ?? '').trim();\n}\n\nexport function canonicalSlug(value: string): string {\n  let s = Utils.toSlug(value);\n  if (!s) return '';\n  if (s.length > 3 && s.endsWith('es')) {\n    const base = s.slice(0, -2);\n    if (base.endsWith('c')) return base.slice(0, -1) + 'z';\n    return base;\n  }\n  if (s.length > 3 && s.endsWith('s')) return s.slice(0, -1);\n  return s;\n}\n\nexport function buildFilterOptions(\n  items: BabylonGlobalItem[] = [],\n  additional1LikeMarca: boolean = false\n): FilterOptionsResult {\n  const hotelTypeOptions = Array.from(\n    new Set(\n      items\n        .map((i) => (i as any)?.hoteltype)\n        .filter(Boolean)\n        .map((v: string) => v.trim())\n    )\n  ).sort((a, b) => a.localeCompare(b));\n\n  // Mantener valores originales pero deduplicar por lowercase\n  const destinationMap = new Map<string, string>();\n\n  items\n    .flatMap((i) => ((i as any)?.destinations ?? []).map((d: any) => d?.name))\n    .filter(Boolean)\n    .forEach((v: string) => {\n      const trimmed = v.trim();\n      const key = trimmed.toLowerCase();\n      if (!destinationMap.has(key)) {\n        destinationMap.set(key, trimmed);\n      }\n    });\n\n  const destinationOptions = Array.from(destinationMap.values())\n    .sort((a, b) => a.localeCompare(b));\n\n  const brandOptions = Array.from(\n    new Set(items.map((i) => getItemBrand(i, additional1LikeMarca)).filter(Boolean))\n  ).sort((a, b) => a.localeCompare(b));\n\n  const filterSlugToLabel = new Map<string, string>();\n  const destinationSlugToLabel = new Map<string, string>();\n  const brandSlugToLabel = new Map<string, string>();\n  const filterLabelToSlug = new Map<string, string>();\n  const destinationLabelToSlug = new Map<string, string>();\n  const brandLabelToSlug = new Map<string, string>();\n\n  const usedFilter = new Set<string>();\n  const usedDest = new Set<string>();\n  const usedBrand = new Set<string>();\n\n  for (const label of hotelTypeOptions) {\n    const base = canonicalSlug(label);\n    const slug = Utils.uniqueSlug(base, usedFilter);\n    filterSlugToLabel.set(slug, label);\n    filterLabelToSlug.set(label, slug);\n  }\n  for (const label of destinationOptions) {\n    const base = Utils.toSlug(label) || 'destination';\n    const slug = Utils.uniqueSlug(base, usedDest);\n    destinationSlugToLabel.set(slug, label);\n    destinationLabelToSlug.set(label, slug);\n  }\n  for (const label of brandOptions) {\n    const base = Utils.toSlug(label) || 'brand';\n    const slug = Utils.uniqueSlug(base, usedBrand);\n    brandSlugToLabel.set(slug, label);\n    brandLabelToSlug.set(label, slug);\n  }\n\n  return {\n    hotelTypeOptions,\n    destinationOptions,\n    brandOptions,\n    filterSlugToLabel,\n    destinationSlugToLabel,\n    brandSlugToLabel,\n    filterLabelToSlug,\n    destinationLabelToSlug,\n    brandLabelToSlug,\n  };\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, ViewEncapsulation, inject } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { BabylonButtonI, BabylonImageI, BabylonTextInfoI } from '../../../../interfaces';\nimport { buildFilterOptions, filteredItems, getItemBrand } from '../../../../utils/filter.utils';\nimport { BabylonLinkTypeDirective } from '../../../../directives/link-type/link-type.directive';\nimport { BabylonCurrencyPipe } from '../../../../pipes/babylon-currency.pipe';\n\nimport { OnChanges, SimpleChanges, OnInit, OnDestroy, ChangeDetectorRef } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { Subscription } from 'rxjs';\nimport { BabylonGlobalItem } from '../../../../interfaces/babylon-global-item.interface';\nimport { getFirstImageByTagFromImages } from '../../../../utils/mutimedia.utils';\nimport { normalizeGlobalItems } from '../../../../utils/normalize-items.utils';\nimport { Utils } from '../../../../utils';\n\n@Component({\n    selector: 'lis-c2-img-txt-cta-v4',\n    standalone: true,\n    imports: [\n        CommonModule,\n        BabylonLinkTypeDirective,\n        BabylonCurrencyPipe,\n        FormsModule,\n    ],\n    templateUrl: './lis-c2-img-txt-cta-v4.component.html',\n    styleUrl: './lis-c2-img-txt-cta-v4.component.scss',\n    encapsulation: ViewEncapsulation.Emulated,\n})\nexport class LisC2ImgTxtCtaV4Component implements OnChanges, OnInit, OnDestroy {\n    @Input() texts?: BabylonTextInfoI;\n    @Input() items?: BabylonGlobalItem[];\n    @Input() links?: BabylonButtonI[];\n    @Input() additional1LikeMarca?: boolean = false;\n    @Input() showCleanFilters: boolean = true;\n    @Input() showFilters: boolean = true; // to show or hide filters section\n\n    tagName: string = 'LisC2ImgTxtCtaV4';\n\n    selectedHotelType: string = '';\n    selectedDestination: string = '';\n    selectedBrand: string = '';\n    selectedExperienceType: string = '';\n\n    hotelTypeOptions: string[] = [];\n    destinationOptions: string[] = [];\n    brandOptions: string[] = [];\n    experienceTypeOptions: string[] = [];\n\n    filterLabelToSlug = new Map<string, string>();\n    destinationLabelToSlug = new Map<string, string>();\n    brandLabelToSlug = new Map<string, string>();\n\n    private route = inject(ActivatedRoute);\n    private cdr = inject(ChangeDetectorRef);\n    private qpSub?: Subscription;\n    private pendingDestination?: string;\n\n    // Items filtrados sin normalizar (usados para lógica)\n    private _filteredItemsRaw: BabylonGlobalItem[] = [];\n\n    private findAndSelectDestination(destinationName: string): void {\n        const normalizedName = destinationName.toLowerCase().trim();\n\n        // Primero buscar en el array de strings de destinos\n        let found = this.destinationOptions?.find(\n            (destination) => destination.toLowerCase().trim() === normalizedName\n        );\n\n        if (found) {\n            this.selectedDestination = found;\n            this.updateFilteredItems();\n        }\n    }\n\n    /**\n     * Devuelve el label del botón en la posición index, buscando en item.buttons[index].label\n     * y si no existe, en item.multimedia.imagenes[0].buttons[index].label\n     */\n    private getButton(item: BabylonGlobalItem, index: number): BabylonButtonI | undefined {\n        return item?.multimedia?.imagenes?.[0]?.buttons?.[index] ?? item?.buttons?.[index];\n    }\n\n    getButtonLabel(item: BabylonGlobalItem, index: number): string | undefined {\n        const button = this.getButton(item, index);\n        return button?.label ?? button?.name ?? button?.vars;\n    }\n\n    getButtonUrl(item: BabylonGlobalItem, index: number): string | undefined {\n        return this.buildMenuUrl(this.getButton(item, index));\n    }\n\n    getButtonLinkType(item: BabylonGlobalItem, index: number): any {\n        return this.getButton(item, index)?.linkType;\n    }\n\n    getHotelStars(item: BabylonGlobalItem): number {\n        const rawHotelCategory = item?.hotelcategory?.toString().trim() ?? '';\n        const match = rawHotelCategory.match(/\\d+/);\n        if (!match) return 0;\n\n        const stars = Number.parseInt(match[0], 10);\n        if (!Number.isFinite(stars) || stars <= 0) return 0;\n\n        return Math.min(stars, 5);\n    }\n\n    isApartment(hotelType: string | undefined): boolean {\n        return Utils.isApartment(hotelType);\n    }\n\n    showIfSup(value?: string | null): string {\n      return Utils.showIfSup(value);\n    }\n\n    getHotelStarIndexes(item: BabylonGlobalItem): number[] {\n        return Array.from({ length: this.getHotelStars(item) }, (_, index) => index);\n    }\n\n    buildMenuUrl(item: BabylonButtonI | undefined): string {\n      if (!item?.url) return '';\n\n      const baseUrl = item.url.replace(/\\/+$/, '');\n      const destination = (item.vars ?? '').toString().trim();\n\n      if (!destination) return baseUrl;\n\n      const slug = Utils.toSlug(destination);\n      if (!slug) return baseUrl;\n\n      return `${baseUrl}?destinations=${destination}`;\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if (changes['items']) {\n            const opts = buildFilterOptions(\n                this.items ?? [],\n                this.additional1LikeMarca ?? false\n            );\n            this.hotelTypeOptions = opts.hotelTypeOptions;\n            this.destinationOptions = opts.destinationOptions;\n\n            // Rellenar brandOptions usando getItemBrand para coherencia\n            const brands = new Set<string>();\n            const experienceTypes = new Set<string>();\n            (this.items ?? []).forEach((it) => {\n                const brand = getItemBrand(\n                    it,\n                    this.additional1LikeMarca ?? false\n                );\n                if (brand) brands.add(brand);\n                if (it.events) it.events.forEach((exp) => {\n                    if (exp && typeof exp.name === 'string' && exp.name.trim() !== '') {\n                        experienceTypes.add(exp.name);\n                    }\n                });\n            });\n            this.brandOptions = Array.from(brands);\n            this.experienceTypeOptions = Array.from(experienceTypes);\n            this.filterLabelToSlug = opts.filterLabelToSlug;\n            this.destinationLabelToSlug = opts.destinationLabelToSlug;\n            this.brandLabelToSlug = opts.brandLabelToSlug;\n\n            // Solo resetear si no hay un destino pendiente de la URL\n            if (!this.pendingDestination) {\n                this.selectedHotelType = '';\n                this.selectedDestination = '';\n                this.selectedBrand = '';\n                this.selectedExperienceType = '';\n            } else {\n                // Si hay un destino pendiente de la URL, intenta seleccionarlo ahora\n                this.findAndSelectDestination(this.pendingDestination);\n            }\n\n            // Actualizar items filtrados\n            this.updateFilteredItems();\n        }\n    }\n\n    ngOnInit(): void {\n        // Suscribirse a los cambios de query params\n        this.qpSub = this.route.queryParamMap.subscribe((params) => {\n            const destinationsParam = params.get('destinations');\n\n            if (destinationsParam) {\n                const decodedDestination = decodeURIComponent(destinationsParam);\n                this.pendingDestination = decodedDestination;\n\n                // Si ya tenemos destinationOptions, buscar y seleccionar\n                if (this.destinationOptions && this.destinationOptions.length > 0) {\n                    this.findAndSelectDestination(decodedDestination);\n                } else {\n                }\n\n                this.cdr.markForCheck();\n            }\n        });\n    }\n\n    ngOnDestroy(): void {\n        this.qpSub?.unsubscribe();\n    }\n\n    /**\n     * Devuelve un array normalizado de BabylonGlobalItem\n     */\n    get normalizedItems(): BabylonGlobalItem[] {\n        return normalizeGlobalItems(this.items);\n    }\n\n    getFirstImageByTag(tagName: string, imagenes: BabylonImageI[]) {\n        return getFirstImageByTagFromImages(imagenes, tagName);\n    }\n\n    get filteredItems() {\n        // Devolver los items filtrados normalizados\n        return normalizeGlobalItems(this._filteredItemsRaw);\n    }\n\n    private updateFilteredItems(): void {\n        let items = filteredItems({\n            items: this.items ?? [],\n            selectedHotelType: this.selectedHotelType,\n            selectedDestination: this.selectedDestination,\n            selectedBrand: this.selectedBrand,\n            additional1LikeMarca: this.additional1LikeMarca ?? false,\n        });\n        if (this.selectedExperienceType) {\n            items = items.filter((item) => item.events?.some((exp) => exp?.name === this.selectedExperienceType));\n        }\n\n        this._filteredItemsRaw = items;\n        this.cdr.markForCheck();\n    }\n\n    get hasActiveFilters(): boolean {\n        return [\n            this.selectedHotelType,\n            this.selectedDestination,\n            this.selectedBrand,\n            this.selectedExperienceType,\n        ].some((v) => v && v !== '');\n    }\n\n    onHotelTypeChange(value: string | undefined) {\n        this.selectedHotelType = value ?? '';\n        this.updateFilteredItems();\n    }\n\n    onDestinationChange(value: string | undefined) {\n        this.selectedDestination = value ?? '';\n        this.updateFilteredItems();\n    }\n\n    onBrandChange(value: string | undefined) {\n        this.selectedBrand = value ?? '';\n        this.updateFilteredItems();\n    }\n\n    onExperienceTypeChange(value: string | undefined) {\n        this.selectedExperienceType = value ?? '';\n        this.updateFilteredItems();\n    }\n\n    clearFilters() {\n        this.selectedHotelType = '';\n        this.selectedDestination = '';\n        this.selectedBrand = '';\n        this.selectedExperienceType = '';\n        this.updateFilteredItems();\n    }\n\n    trackFilter(index: number): number {\n        return index;\n    }\n    trackOption(index: number): number {\n        return index;\n    }\n    trackOffer(item: BabylonGlobalItem, index: number): string | number {\n        return item?.id ?? item?.texts?.name ?? item?.texts?.title ?? index;\n    }\n}\n","<section class=\"mdl-LisC1ImgTxt\">\n    <div class=\"mdl-container\">\n        <div class=\"m-content\">\n            <div class=\"m-top\">\n                <div class=\"m-left\">\n                    @if (texts?.title) {\n                        <div class=\"m-titulo\" [innerHTML]=\"texts?.title\"></div>\n                    }\n                    @if (texts?.subtitle) {\n                        <div\n                            class=\"m-subtitulo\"\n                            [innerHTML]=\"texts?.subtitle\"\n                        ></div>\n                    }\n                </div>\n\n                @if (showFilters) {\n                    <div class=\"m-right\">\n                        <div class=\"selectors\">\n                            <fieldset class=\"select-field\">\n                                @if (texts?.marca) {\n                                    <legend>{{ texts?.marca }}</legend>\n                                }\n                                <select\n                                    [(ngModel)]=\"selectedBrand\"\n                                    (ngModelChange)=\"onBrandChange($event)\"\n                                >\n                                    <option value=\"\">{{ texts?.marca }}</option>\n                                    @for (\n                                        opt of brandOptions;\n                                        track trackOption($index)\n                                    ) {\n                                        <option [value]=\"opt\">{{ opt }}</option>\n                                    }\n                                </select>\n                            </fieldset>\n\n                            <fieldset class=\"select-field\">\n                                @if (texts?.destinations) {\n                                    <legend>{{ texts?.destinations }}</legend>\n                                }\n                                <select\n                                    [(ngModel)]=\"selectedDestination\"\n                                    (ngModelChange)=\"\n                                        onDestinationChange($event)\n                                    \"\n                                >\n                                    <option value=\"\">\n                                        {{ texts?.destinations }}\n                                    </option>\n                                    @for (\n                                        opt of destinationOptions;\n                                        track trackOption($index)\n                                    ) {\n                                        <option [value]=\"opt\">{{ opt }}</option>\n                                    }\n                                </select>\n                            </fieldset>\n\n                            @if (experienceTypeOptions?.length) {\n                                <fieldset class=\"select-field\">\n                                    <legend>{{ texts?.events }}</legend>\n                                    <select\n                                        [(ngModel)]=\"selectedExperienceType\"\n                                        (ngModelChange)=\"\n                                            onExperienceTypeChange($event)\n                                        \"\n                                    >\n                                        <option value=\"\">\n                                            {{ texts?.events }}\n                                        </option>\n                                        @for (\n                                            opt of experienceTypeOptions;\n                                            track trackOption($index)\n                                        ) {\n                                            <option [value]=\"opt\">\n                                                {{ opt }}\n                                            </option>\n                                        }\n                                    </select>\n                                </fieldset>\n                            }\n                        </div>\n                    </div>\n                }\n            </div>\n\n            <div class=\"m-item m-open\">\n                <div class=\"m-listado\">\n                    @for (item of filteredItems; track item) {\n                        <div class=\"m-item-list\">\n                            <a\n                                [href]=\"getButtonUrl(item, 1)\"\n                                [linkType]=\"getButtonLinkType(item, 1)\"\n                            >\n                                <div class=\"m-imagen\">\n                                    @if (\n                                        getFirstImageByTag(\n                                            tagName,\n                                            item?.multimedia?.imagenes ?? []\n                                        ) ?? item?.multimedia?.imagenes?.[0];\n                                        as img\n                                    ) {\n                                        <img\n                                            [src]=\"\n                                                img?.img?.src ||\n                                                'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                            \"\n                                            [attr.alt]=\"\n                                                img?.img?.alt ??\n                                                (item?.texts?.title ||\n                                                    item?.texts?.name ||\n                                                    '')\n                                            \"\n                                        />\n                                    }\n                                </div>\n\n                                @if (item?.texts?.title || item?.texts?.name) {\n                                    <div\n                                        class=\"m-titulo\"\n                                        [innerHTML]=\"\n                                            item?.texts?.title ||\n                                            item?.texts?.name\n                                        \"\n                                    ></div>\n                                }\n\n                                @if (item?.texts?.additional1) {\n                                    <div\n                                        class=\"m-subtitulo\"\n                                        [innerHTML]=\"item?.texts?.additional1\"\n                                    ></div>\n                                }\n                                <div class=\"category\">\n                                    @if (getHotelStars(item)) {\n                                        @if (isApartment(item?.hoteltype)) {\n                                            <div\n                                                [attr.aria-label]=\"\n                                                    getHotelStars(item) +\n                                                    ' estrellas'\n                                                \"\n                                            >\n                                                <div class=\"m-keys\">\n                                                    @for (\n                                                        star of getHotelStarIndexes(\n                                                            item\n                                                        );\n                                                        track star\n                                                    ) {\n                                                        <svg\n                                                            width=\"13\"\n                                                            height=\"13\"\n                                                            viewBox=\"0 0 13 13\"\n                                                            fill=\"none\"\n                                                            xmlns=\"http://www.w3.org/2000/svg\"\n                                                        >\n                                                            <path\n                                                                d=\"M0.146296 4.26479L1.14015 2.01692C1.31289 1.62559 1.62559 1.31289 2.01692 1.14015L4.26479 0.146297C4.58174 0.00641826 4.93356 -0.0343944 5.27412 0.0292127C5.61467 0.0928198 5.92805 0.257876 6.17314 0.50273L7.9475 2.27839C8.1606 2.49155 8.31388 2.75701 8.39197 3.04813C8.47006 3.33925 8.4702 3.64578 8.39239 3.93698L7.93579 5.64109L12.866 10.5713C12.9085 10.6136 12.9422 10.6639 12.9652 10.7193C12.9882 10.7746 13 10.834 13 10.8939V12.5447C12.9993 12.6652 12.9511 12.7807 12.8659 12.8659C12.7807 12.9511 12.6652 12.9993 12.5447 13H10.8939C10.7926 12.9998 10.6942 12.9659 10.6142 12.9038C10.5341 12.8416 10.477 12.7547 10.4516 12.6566L10.2045 11.6796L9.3303 11.5131C9.24322 11.4968 9.16282 11.4553 9.09903 11.3938C9.03523 11.3323 8.99082 11.2535 8.97127 11.1671L8.73321 10.1173L7.89026 10.0367C7.78479 10.0274 7.68608 9.9808 7.61188 9.90528L5.64109 7.93579L3.93697 8.39239C3.6458 8.47047 3.33919 8.47046 3.04802 8.39236C2.75685 8.31426 2.4914 8.16082 2.27839 7.9475L0.502729 6.17314C0.257875 5.92805 0.0928202 5.61467 0.029213 5.27412C-0.0343943 4.93357 0.00641727 4.58174 0.146296 4.26479ZM3.6703 5.08953C3.81061 5.22968 3.98932 5.32508 4.18385 5.36369C4.37837 5.40229 4.57997 5.38236 4.76317 5.30641C4.94636 5.23047 5.10294 5.10191 5.21309 4.937C5.32324 4.7721 5.38203 4.57823 5.38203 4.37991C5.38203 4.1816 5.32324 3.98773 5.21309 3.82283C5.10294 3.65792 4.94636 3.52936 4.76317 3.45342C4.57997 3.37747 4.37837 3.35754 4.18385 3.39614C3.98932 3.43475 3.81061 3.53015 3.6703 3.6703C3.57689 3.76336 3.50277 3.87395 3.45219 3.99572C3.40162 4.1175 3.37558 4.24806 3.37558 4.37991C3.37558 4.51177 3.40162 4.64233 3.45219 4.76411C3.50277 4.88588 3.57689 4.99647 3.6703 5.08953Z\"\n                                                                fill=\"#393637\"\n                                                                fill-opacity=\"1\"\n                                                            />\n                                                        </svg>\n                                                    }\n                                                </div>\n                                            </div>\n                                        } @else {\n                                            <div\n                                                class=\"m-stars\"\n                                                [attr.aria-label]=\"\n                                                    getHotelStars(item) +\n                                                    ' estrellas'\n                                                \"\n                                            >\n                                                @for (\n                                                    star of getHotelStarIndexes(\n                                                        item\n                                                    );\n                                                    track star\n                                                ) {\n                                                    <svg\n                                                        width=\"12\"\n                                                        height=\"11\"\n                                                        viewBox=\"0 0 12 11\"\n                                                        fill=\"none\"\n                                                        xmlns=\"http://www.w3.org/2000/svg\"\n                                                    >\n                                                        <path\n                                                            d=\"M6 0L7.416 4.2H12L8.292 6.8L9.708 11L6 8.4L2.292 11L3.708 6.8L0 4.2H4.584L6 0Z\"\n                                                            fill=\"#393637\"\n                                                        />\n                                                    </svg>\n                                                }\n                                            </div>\n                                        }\n                                    }\n                                    <div class=\"sup-category\">\n                                        {{ showIfSup(item?.hotelcategory) }}\n                                    </div>\n                                </div>\n                            </a>\n\n                            <div class=\"m-buttons\">\n                                @if (getButtonLabel(item, 0); as button1Label) {\n                                    <a\n                                        class=\"m-button1\"\n                                        [href]=\"getButtonUrl(item, 0)\"\n                                        [linkType]=\"getButtonLinkType(item, 0)\"\n                                    >\n                                        {{ button1Label }}\n                                    </a>\n                                }\n\n                                @if (getButtonLabel(item, 1); as button2Label) {\n                                    <a\n                                        class=\"m-button2\"\n                                        [href]=\"getButtonUrl(item, 1)\"\n                                        [linkType]=\"getButtonLinkType(item, 1)\"\n                                    >\n                                        {{ button2Label }}\n                                    </a>\n                                }\n                            </div>\n                        </div>\n                    }\n                </div>\n            </div>\n\n            @if (!filteredItems?.length && texts?.notFound) {\n                <div class=\"m-foot\">\n                    <div class=\"m-texto\" [innerHTML]=\"texts?.notFound\"></div>\n                </div>\n            }\n        </div>\n    </div>\n</section>\n","import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n    AfterViewInit,\n    Component,\n    ElementRef,\n    Inject,\n    Input,\n    OnChanges,\n    OnDestroy,\n    PLATFORM_ID,\n    SimpleChanges,\n    ViewChild,\n    ViewEncapsulation,\n} from '@angular/core';\nimport { Fancybox } from '@fancyapps/ui';\nimport { BabylonImageI, BabylonTextInfoI } from '../../../../interfaces';\nimport { BabylonStyleGlobalItem } from '../../../../interfaces/babylon-style.interface';\n\nexport interface GalleryFilterItem {\n    id: number;\n    text: string;\n    all?: boolean;\n    room?: boolean; // Indica si es un filtro de habitación específica (Hijo)\n    rooms?: boolean; // Indica si es la categoría principal \"Habitaciones\" (Padre)\n}\n\nexport interface GalleryImageItem {\n    filter: number;\n    img: BabylonImageI & { name?: string };\n    title?: string;\n}\n\nexport interface BabylonGloablsGalleryFilter {\n    leftSide?: boolean;\n    rightSide?: boolean;\n    filters: GalleryFilterItem[];\n    images: GalleryImageItem[];\n}\n\nexport interface LisC2TxtImgContent {\n    lensIcon: string;\n}\n\nconst DEFAULT_CONTENT: LisC2TxtImgContent = {\n    categories: [{ label: 'todos', value: 'all' }],\n    rooms: [{ id: '', label: '' }],\n    items: [\n        {\n            category: '',\n            roomId: '',\n            image: '',\n            link: '',\n            caption: '',\n            fancyboxGroup: '',\n            fancyboxCaption: '',\n        },\n    ],\n    footerHighlight: '',\n    footerComplement: '',\n    lensIcon: '/assets/babylon/svg/icons/lens.svg',\n} as LisC2TxtImgContent;\n\n@Component({\n    selector: 'lis-c2-txt-img',\n    standalone: true,\n    encapsulation: ViewEncapsulation.None,\n    imports: [CommonModule],\n    templateUrl: './lis-c2-txt-img.component.html',\n    styleUrl: './lis-c2-txt-img.component.scss',\n})\nexport class LisC2TxtImgComponent\n    implements AfterViewInit, OnChanges, OnDestroy\n{\n    @Input() content: LisC2TxtImgContent = DEFAULT_CONTENT;\n    @Input() filters?: BabylonGloablsGalleryFilter;\n    @Input() texts?: BabylonTextInfoI;\n    @Input() styles?: BabylonStyleGlobalItem;\n\n    @Input() nofiters?: boolean = false;\n\n    @ViewChild('categoriesModal') categoriesModal?: ElementRef<HTMLElement>;\n    @ViewChild('roomsModal') roomsModal?: ElementRef<HTMLElement>;\n\n    /** null => Todas */\n    selectedFilterId: number | null = null;\n    private galleryBound = false;\n\n    constructor(\n        private host: ElementRef<HTMLElement>,\n        @Inject(PLATFORM_ID) private platformId: Object\n    ) {}\n\n    ngAfterViewInit(): void {\n        if (isPlatformBrowser(this.platformId)) {\n            // Usamos setTimeout para enviarlo al final de la cola de ejecución\n            // Esto da tiempo a Angular a terminar la hidratación antes de que Fancybox toque el DOM\n            setTimeout(() => {\n                this.bindGallery();\n            }, 100);\n        }\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if (changes['filters'] && !changes['filters'].firstChange) {\n            this.setDefaultSelection();\n            queueMicrotask(() => this.bindGallery());\n        }\n    }\n\n    ngOnDestroy(): void {\n        this.unbindGallery();\n        this.closeModals();\n    }\n\n    /** ✅ ID del filtro padre \"Habitaciones\" */\n    get roomsFilterId(): number | null {\n        const f = this.filters?.filters?.find((x) => !!x.rooms);\n        return typeof f?.id === 'number' ? f.id : null;\n    }\n\n    /** ✅ Existe filtro padre habitaciones */\n    get hasRoomsFilter(): boolean {\n        if (this.nofiters) return false;\n        return this.roomsFilterId != null;\n    }\n\n    /** ✅ ID del filtro \"Todas\" */\n    private get allFilterId(): number | null {\n        const f = this.filters?.filters?.find((x) => !!x.all);\n        return typeof f?.id === 'number' ? f.id : null;\n    }\n\n    private setDefaultSelection(): void {\n        const allId = this.allFilterId;\n        if (allId != null) {\n            this.selectedFilterId = null;\n            return;\n        }\n        const first = this.filters?.filters?.[0]?.id ?? null;\n        this.selectedFilterId = first;\n    }\n\n    /** * ✅ MODIFICADO: Obtiene los filtros reales de habitaciones\n     * Filtra aquellos items que tengan la propiedad `room: true`\n     */\n    get roomOptions(): GalleryFilterItem[] {\n        return this.filters?.filters?.filter((f) => !!f.room) ?? [];\n    }\n\n    /** ✅ Lógica de filtrado actualizada */\n    get filteredImages(): GalleryImageItem[] {\n        const imgs = this.filters?.images ?? [];\n\n        // 1. Si es null, mostramos todo\n        if (this.selectedFilterId == null) return imgs;\n\n        // 2. Si el filtro seleccionado es el PADRE \"Habitaciones\"\n        // Debemos mostrar todas las imágenes que pertenezcan a CUALQUIER hijo tipo 'room'\n        if (this.selectedFilterId === this.roomsFilterId) {\n            const roomChildIds = this.roomOptions.map((r) => r.id);\n            return imgs.filter((i) => roomChildIds.includes(Number(i.filter)));\n        }\n\n        // 3. Filtrado estándar (Categorías normales o una Habitación específica seleccionada)\n        return imgs.filter(\n            (i) => Number(i.filter) === Number(this.selectedFilterId)\n        );\n    }\n\n    /** ✅ Click filtro (desktop/general) */\n    filterBy(filter: GalleryFilterItem): void {\n        // Caso \"Todas\"\n        if (filter.all) {\n            this.selectedFilterId = null;\n            this.closeModals();\n            return;\n        }\n\n        // Caso \"Habitaciones\" (Padre) -> Abrir modal\n        if (filter.rooms) {\n            this.selectedFilterId = filter.id; // Marcamos el padre como activo\n            this.openRoomsModal();\n            return;\n        }\n\n        // Caso Filtro Normal o Habitación específica (si estuviera en la barra principal)\n        this.selectedFilterId = filter.id;\n        this.closeModals();\n    }\n\n    /** ✅ Click desde el modal de categorías (mobile) */\n    filterFromModal(filter: GalleryFilterItem): void {\n        this.closeModals();\n        this.filterBy(filter);\n    }\n\n    /** * ✅ MODIFICADO: Selección de habitación desde el modal\n     * Ahora recibe el ID del filtro real, no un string\n     */\n    selectRoom(filterId: number): void {\n        this.selectedFilterId = filterId;\n        this.closeModals();\n    }\n\n    openCategoriesModal(): void {\n        this.openInlineModal(this.categoriesModal?.nativeElement);\n    }\n\n    openRoomsModal(): void {\n        this.openInlineModal(this.roomsModal?.nativeElement);\n    }\n\n    closeModals(): void {\n        Fancybox.close();\n    }\n\n    /** * Checkea si el filtro está activo.\n     * Si es habitaciones, está activo si el seleccionado es el padre O cualquiera de sus hijos.\n     */\n    isFilterActive(filter: GalleryFilterItem): boolean {\n        if (filter.all) return this.selectedFilterId == null;\n\n        // Si el filtro es \"Habitaciones\" (padre), lo marcamos activo si\n        // el ID seleccionado es él mismo O si el ID seleccionado es uno de sus hijos (rooms)\n        if (filter.rooms) {\n            const isSelf = this.selectedFilterId === filter.id;\n            const isChild = this.roomOptions.some(\n                (r) => r.id === this.selectedFilterId\n            );\n            return isSelf || isChild;\n        }\n\n        return this.selectedFilterId === filter.id;\n    }\n\n    getFancyboxGroup(): string {\n        return `gallery-${this.selectedFilterId ?? 'all'}`;\n    }\n\n    trackByIndex(index: number): number {\n        return index;\n    }\n\n    // ... Fancybox logic (sin cambios) ...\n    private bindGallery(): void {\n        this.unbindGallery();\n        const hostElement = this.host.nativeElement;\n        if (!hostElement.querySelector('[data-fancybox]')) return;\n        Fancybox.bind(hostElement, '[data-fancybox]', {\n            Hash: false,\n            dragToClose: false,\n            placeFocusBack: false,\n            autoFocus: false,\n            hideScrollbar: false,\n        } as any);\n        this.galleryBound = true;\n    }\n\n    private unbindGallery(): void {\n        if (!this.galleryBound) return;\n        Fancybox.unbind(this.host.nativeElement);\n        this.galleryBound = false;\n    }\n\n    private openInlineModal(content?: HTMLElement): void {\n        if (!content) return;\n        const selector = content.id ? `#${content.id}` : null;\n        if (!selector) return;\n        content.removeAttribute('hidden');\n        Fancybox.close();\n        Fancybox.show([{ src: selector, type: 'inline' }], {\n            dragToClose: false,\n            hideScrollbar: true,\n            on: { destroy: () => content.setAttribute('hidden', '') },\n        });\n    }\n\n    get categoryOptions(): GalleryFilterItem[] {\n        return this.filters?.filters?.filter((f) => !f.rooms && !f.room) ?? [];\n    }\n    get desktopFilterOptions(): GalleryFilterItem[] {\n        if (this.nofiters) return [];\n        return this.filters?.filters?.filter((f) => !f.room) ?? [];\n    }\n}\n","@if (filters?.filters?.length) {\n    <section class=\"mdl-mdh002galeria\">\n        <div class=\"mdl-container\" [ngClass]=\"{ border: !nofiters }\">\n            <div class=\"m-filters\">\n                <!-- DESKTOP -->\n                @if (!nofiters) {\n                    <div class=\"m-desktop-filters\">\n                        <div\n                            class=\"m-filter\"\n                            *ngFor=\"let f of desktopFilterOptions\"\n                            (click)=\"filterBy(f)\"\n                            [class.active]=\"isFilterActive(f)\"\n                        >\n                            {{ f.text }}\n                        </div>\n                    </div>\n\n                    <!-- MOBILE -->\n                    <div class=\"m-mobile-filters\">\n                        <div class=\"m-select\" (click)=\"openCategoriesModal()\">\n                            @if (texts?.categories) {\n                                <div>{{ texts?.categories }}</div>\n                            }\n                            <svg\n                                width=\"17\"\n                                height=\"11\"\n                                viewBox=\"0 0 17 11\"\n                                fill=\"none\"\n                                xmlns=\"http://www.w3.org/2000/svg\"\n                            >\n                                <g opacity=\"0.5\">\n                                    <path\n                                        d=\"M16.0193 0H0V0.804475H16.0193V0Z\"\n                                        fill=\"#515050\"\n                                    />\n                                    <path\n                                        d=\"M16.0193 4.67969H0V5.4846H16.0193V4.67969Z\"\n                                        fill=\"#515050\"\n                                    />\n                                    <path\n                                        d=\"M16.0193 9.36328H0V10.1678H16.0193V9.36328Z\"\n                                        fill=\"#515050\"\n                                    />\n                                </g>\n                            </svg>\n                        </div>\n\n                        @if (hasRoomsFilter) {\n                            <div class=\"m-select\" (click)=\"openRoomsModal()\">\n                                @if (texts?.rooms) {\n                                    <div>{{ texts?.rooms }}</div>\n                                }\n                                <svg\n                                    width=\"17\"\n                                    height=\"11\"\n                                    viewBox=\"0 0 17 11\"\n                                    fill=\"none\"\n                                    xmlns=\"http://www.w3.org/2000/svg\"\n                                >\n                                    <g opacity=\"0.5\">\n                                        <path\n                                            d=\"M16.0193 0H0V0.804475H16.0193V0Z\"\n                                            fill=\"#515050\"\n                                        />\n                                        <path\n                                            d=\"M16.0193 4.67969H0V5.4846H16.0193V4.67969Z\"\n                                            fill=\"#515050\"\n                                        />\n                                        <path\n                                            d=\"M16.0193 9.36328H0V10.1678H16.0193V9.36328Z\"\n                                            fill=\"#515050\"\n                                        />\n                                    </g>\n                                </svg>\n                            </div>\n                        }\n                    </div>\n                }\n            </div>\n\n            <!-- GRID -->\n            @if (filteredImages?.length) {\n                <div class=\"m-gal-grid\">\n                    <div\n                        class=\"m-gal-item\"\n                        *ngFor=\"\n                            let item of filteredImages;\n                            trackBy: trackByIndex\n                        \"\n                    >\n                        <a\n                            class=\"m-media\"\n                            [href]=\"\n                                item.img?.src ||\n                                'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                            \"\n                            [attr.data-fancybox]=\"getFancyboxGroup()\"\n                            [attr.data-caption]=\"item.title ?? ''\"\n                        >\n                            <img\n                                [src]=\"\n                                    item.img?.src ||\n                                    'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                \"\n                                [alt]=\"item.img?.alt || ''\"\n                            />\n                        </a>\n\n                        <div class=\"m-item-footer\">\n                            <span>{{ item.title || '' }}</span>\n                            <div class=\"m-icon\">\n                                <!-- <img [src]=\"content.lensIcon\" alt=\"name\" /> -->\n                                <svg\n                                    width=\"50\"\n                                    height=\"50\"\n                                    viewBox=\"0 0 40 40\"\n                                    fill=\"none\"\n                                    xmlns=\"http://www.w3.org/2000/svg\"\n                                >\n                                    <rect\n                                        width=\"50\"\n                                        height=\"50\"\n                                        [attr.fill]=\"\n                                            styles?.primary ?? '#FF4338'\n                                        \"\n                                    />\n                                    <path\n                                        d=\"M29.1792 27.9773L23.7219 22.5176L23.5868 22.4243C23.5567 22.4015 23.5367 22.3677 23.5314 22.3303C23.526 22.2929 23.5356 22.2549 23.5582 22.2246C24.6088 20.8364 25.0937 19.1014 24.9151 17.3697C24.7365 15.638 23.9077 14.0385 22.5959 12.894C21.2841 11.7495 19.587 11.1452 17.847 11.203C16.1071 11.2609 14.4539 11.9766 13.221 13.2057C11.9881 14.4349 11.2674 16.0859 11.2042 17.8257C11.1411 19.5654 11.7402 21.2644 12.8807 22.5796C14.0213 23.8949 15.6182 24.7286 17.3494 24.9125C19.0806 25.0963 20.817 24.6167 22.2084 23.5703C22.2423 23.5471 22.2827 23.5353 22.3238 23.5367C22.3438 23.5396 22.363 23.5467 22.3801 23.5575C22.3972 23.5684 22.4118 23.5828 22.4228 23.5997L27.9685 29.1888C28.1287 29.3465 28.3446 29.4347 28.5694 29.4344H28.6872L28.6987 29.4246C28.8808 29.3972 29.049 29.311 29.1775 29.179C29.3355 29.019 29.4243 28.8033 29.4246 28.5785C29.4249 28.3537 29.3367 28.1377 29.1792 27.9773ZM18.1074 12.988C19.1214 12.988 20.1125 13.2887 20.9556 13.852C21.7987 14.4153 22.4558 15.216 22.8438 16.1527C23.2318 17.0895 23.3333 18.1203 23.1355 19.1147C22.9377 20.1092 22.4494 21.0227 21.7325 21.7397C21.0155 22.4566 20.102 22.9449 19.1076 23.1427C18.1131 23.3405 17.0823 23.239 16.1456 22.851C15.2088 22.4629 14.4081 21.8059 13.8448 20.9628C13.2815 20.1197 12.9808 19.1285 12.9808 18.1146C12.9847 16.7561 13.5261 15.4544 14.4867 14.4938C15.4472 13.5333 16.749 12.9919 18.1074 12.988Z\"\n                                        fill=\"white\"\n                                    />\n                                </svg>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            } @else {\n                @if (texts?.notFound) {\n                    <div class=\"m-empty\" [innerHTML]=\"texts?.notFound\"></div>\n                }\n            }\n\n            @if (texts?.title) {\n                <div class=\"m-footer\" [innerHTML]=\"texts?.title\"></div>\n            }\n        </div>\n\n        <!-- MODAL categorías (mobile) -->\n        <div\n            #categoriesModal\n            class=\"m-modal-content\"\n            id=\"categories-filter-modal\"\n            role=\"dialog\"\n            aria-modal=\"true\"\n            hidden\n        >\n            <button\n                type=\"button\"\n                class=\"m-close\"\n                (click)=\"closeModals()\"\n                aria-label=\"Cerrar\"\n                [style.--cl-color]=\"styles?.primary\"\n            >\n                ×\n            </button>\n\n            <div class=\"m-container\">\n                <div class=\"m-right\">\n                    <div class=\"m-content\">\n                        @if (texts?.categories) {\n                            <span>{{ texts?.categories }}</span>\n                        }\n                        <button\n                            type=\"button\"\n                            *ngFor=\"let f of categoryOptions\"\n                            (click)=\"filterFromModal(f)\"\n                            [class.active]=\"isFilterActive(f)\"\n                        >\n                            {{ f.text }}\n                        </button>\n                    </div>\n                </div>\n            </div>\n        </div>\n\n        <!-- MODAL habitaciones -->\n        <div\n            #roomsModal\n            class=\"m-modal-content\"\n            id=\"rooms-filter-modal\"\n            role=\"dialog\"\n            aria-modal=\"true\"\n            hidden\n        >\n            <button\n                type=\"button\"\n                class=\"m-close\"\n                (click)=\"closeModals()\"\n                aria-label=\"Cerrar\"\n                [style.--cl-color]=\"styles?.primary\"\n                m-icon\n            >\n                ×\n            </button>\n\n            <div class=\"m-container\">\n                <div class=\"m-left\">\n                    <div class=\"m-content\">\n                        @if (texts?.rooms) {\n                            <span>{{ texts?.rooms }}</span>\n                        }\n                    </div>\n                </div>\n\n                <div class=\"m-right\">\n                    <div class=\"m-content\">\n                        @if (roomOptions?.length) {\n                            <button\n                                type=\"button\"\n                                (click)=\"selectRoom(roomsFilterId!)\"\n                                [class.active]=\"\n                                    selectedFilterId === roomsFilterId\n                                \"\n                            >\n                                {{ texts?.all || 'All' }}\n                            </button>\n\n                            <button\n                                type=\"button\"\n                                *ngFor=\"let room of roomOptions\"\n                                (click)=\"selectRoom(room.id)\"\n                                [class.active]=\"selectedFilterId === room.id\"\n                            >\n                                {{ room.text }}\n                            </button>\n                        }\n                    </div>\n                </div>\n            </div>\n        </div>\n    </section>\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { BabylonLinkTypeDirective } from '../../../../directives/link-type/link-type.directive';\nimport { BabylonImageI } from '../../../../interfaces';\nimport { BabylonOfferDetailV2I } from '../../../../interfaces/babylon-offer-detail-v2.interface';\nimport { BabylonCurrencyPipe } from '../../../../pipes/babylon-currency.pipe';\nimport { getFirstImageByTagFromImages } from '../../../../utils/mutimedia.utils';\nimport { LisC2TxtImgSvgCContent } from './lis-c2-txt-img-svg-c.interfaces';\n\n@Component({\n    selector: 'lis-c2-txt-img-svg-c',\n    standalone: true,\n    imports: [CommonModule, BabylonCurrencyPipe, BabylonLinkTypeDirective],\n    templateUrl: './lis-c2-txt-img-svg-c.component.html',\n    styleUrl: './lis-c2-txt-img-svg-c.component.scss',\n})\nexport class LisC2TxtImgSvgCComponent {\n    private readonly fallbackContent: LisC2TxtImgSvgCContent = {\n        title: '',\n        description: '',\n        offers: [\n            {\n                title: '',\n                subtitle: '',\n                metricLabel: '',\n                metricValue: '',\n                primaryButton: {\n                    label: '',\n                },\n                secondaryButton: {\n                    label: '',\n                },\n                tag: '',\n                image: {\n                    url: '',\n                    alt: '',\n                },\n                floatIcon: {\n                    url: '',\n                    alt: '',\n                },\n                duplicateFloatIcon: false,\n                reverse: false,\n            },\n        ],\n    } as LisC2TxtImgSvgCContent;\n\n    /*  @Input() content: LisC2TxtImgSvgCContent = this.fallbackContent; */\n\n    @Input() offers?: BabylonOfferDetailV2I[];\n    @Input() startReverse?: boolean = false;\n\n    tagName = 'LisC2TxtImgSvgC';\n    tagNamePNG = 'LisC2TxtImgSvgCPNG';\n\n    trackByIndex(index: number): number {\n        return index;\n    }\n\n    getFirstImageByTag(tagName: string, imagenes: BabylonImageI[]) {\n        return getFirstImageByTagFromImages(imagenes, tagName);\n    }\n}\n","<section class=\"mdl-md005\">\n    <div class=\"mdl-container\">\n        <!--     <div class=\"m-content-top\">\n            <h2 class=\"m-title\">{{ content.title }}</h2>\n            <div class=\"m-text\">\n                {{ content.description }}\n            </div>\n        </div> -->\n\n        @if (offers) {\n            @for (item of offers; track $index) {\n                <div\n                    class=\"m-oferta-item\"\n                    [class.reverse]=\"$index % 2 !== 0\"\n                    [ngClass]=\"{ 'no-margin-top': $index === 0 }\"\n                >\n                    <div class=\"mdl-content\">\n                        <div class=\"m-left\">\n                            <div class=\"m-content\">\n                                <div class=\"m-top\">\n                                    @if (item.texts?.title ?? item.name) {\n                                        <div class=\"m-title\">\n                                            {{ item.texts?.title ?? item.name }}\n                                        </div>\n                                    }\n                                    @if (item.texts?.subtitle) {\n                                        <div class=\"m-texto\">\n                                            {{ item.texts?.subtitle }}\n                                        </div>\n                                    }\n                                </div>\n                                <div class=\"m-bottom\">\n                                    <div class=\"m-left\">\n                                        @if (item.texts?.additional2) {\n                                            <div class=\"m-texto\">\n                                                {{ item.texts?.additional2 }}\n                                            </div>\n                                        }\n                                        <div class=\"m-precio\">\n                                            @if (item.price) {\n                                                {{ item.price\n                                                }}{{\n                                                    item?.currency ?? 'EUR'\n                                                        | currencySymbol\n                                                }}\n                                            } @else if (item.discount) {\n                                                {{ item.discount }} %\n                                            }\n                                        </div>\n                                    </div>\n                                    @if (item.buttons || item.links) {\n                                        <div class=\"m-right\">\n                                            @for (\n                                                btn of item?.buttons;\n                                                track $index\n                                            ) {\n                                                <a\n                                                    [ngClass]=\"{\n                                                        'm-button-sm':\n                                                            $index % 2 === 0,\n                                                        'm-underline':\n                                                            $index % 2 !== 0,\n                                                    }\"\n                                                    [href]=\"btn.url\"\n                                                    [linkType]=\"btn.linkType\"\n                                                    [attr.aria-label]=\"\n                                                        btn.label\n                                                    \"\n                                                >\n                                                    <span>{{ btn.label }}</span>\n                                                </a>\n                                            }\n                                            @for (\n                                                btn of item?.links;\n                                                track $index\n                                            ) {\n                                                <a\n                                                    [ngClass]=\"{\n                                                        'm-button-sm':\n                                                            $index % 2 !== 0,\n                                                        'm-underline':\n                                                            $index % 2 === 0,\n                                                    }\"\n                                                    [href]=\"btn.url\"\n                                                    [linkType]=\"btn.linkType\"\n                                                    [attr.aria-label]=\"\n                                                        btn.label\n                                                    \"\n                                                >\n                                                    <span>{{ btn.label }}</span>\n                                                </a>\n                                            }\n                                        </div>\n                                    }\n                                </div>\n                            </div>\n                        </div>\n                        @if (\n                            item.multimedia &&\n                                getFirstImageByTag(tagName, item.multimedia);\n                            as img\n                        ) {\n                            <div class=\"m-right\">\n                                @if (img.title) {\n                                    <div class=\"m-tag\">\n                                        {{ img.title }}\n                                    </div>\n                                }\n                                <img\n                                    [src]=\"\n                                        img.img?.src ||\n                                        'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                    \"\n                                    [alt]=\"img.img?.alt\"\n                                    loading=\"lazy\"\n                                />\n                                <!--  <img\n                                    *ngIf=\"offer.floatIcon\"\n                                    class=\"m-floatimg\"\n                                    [src]=\"offer.floatIcon.url\"\n                                    [alt]=\"offer.floatIcon.alt\"\n                                    loading=\"lazy\"\n                                /> -->\n                            </div>\n                        }\n                    </div>\n                    @if (\n                        item.multimedia &&\n                            getFirstImageByTag(tagNamePNG, item.multimedia);\n                        as img\n                    ) {\n                        <img\n                            class=\"m-floatimg\"\n                            [src]=\"\n                                img.img?.src ||\n                                'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                            \"\n                            [alt]=\"img.img?.alt\"\n                            loading=\"lazy\"\n                        />\n                    }\n                </div>\n            }\n        }\n    </div>\n</section>\n","import { CommonModule } from '@angular/common';\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { BabylonLinkTypeDirective } from '../../../../directives/link-type/link-type.directive';\nimport {\n    BabylonButtonI,\n    BabylonContactInfoI,\n    BabylonMultimediaI,\n    BabylonTextInfoI,\n} from '../../../../interfaces';\nimport { ConsultI } from '../../../../interfaces/babylon-consult.interface';\nimport { BabylonHotelGlobalItem } from '../../../../interfaces/babylon-hotel.interface';\nimport {\n    LisC3TxtImgCtContent,\n    LisC3TxtImgCtFormPayload,\n} from './lis-c3-txt-img-ct.interfaces';\n\nconst defaultContent = {\n    sectionTitle: '',\n    description: '',\n    heroImage: {\n        url: '',\n        alt: '',\n    },\n    floatImage: {\n        url: '/assets/babylon/svg/others/mosaico.png',\n        alt: '',\n    },\n    selects: [\n        {\n            name: '',\n            placeholder: '',\n            required: false,\n            fullWidth: false,\n            options: [{ label: '', value: '' }],\n        },\n    ],\n    fields: [\n        {\n            name: '',\n            label: '',\n            type: 'text',\n            required: false,\n            icon: '',\n        },\n    ],\n    textareaLabel: '',\n    textareaName: 'message',\n    requiredHint: '',\n    legalCheckboxes: [\n        {\n            name: '',\n            label: '',\n            required: false,\n        },\n    ],\n    submitLabel: '',\n    note: '',\n};\n\n@Component({\n    selector: 'lis-c3-txt-img-ct',\n    standalone: true,\n    imports: [CommonModule, BabylonLinkTypeDirective],\n    templateUrl: './lis-c3-txt-img-ct.component.html',\n    styleUrl: './lis-c3-txt-img-ct.component.scss',\n})\nexport class LisC3TxtImgCtComponent {\n    private readonly fallbackContent: LisC3TxtImgCtContent =\n        defaultContent as LisC3TxtImgCtContent;\n\n    @Input() content: LisC3TxtImgCtContent = this.fallbackContent;\n\n    @Input() texts?: BabylonTextInfoI;\n    @Input() multimedia?: BabylonMultimediaI;\n    @Input() contactInfo?: BabylonContactInfoI;\n    @Input() consultTypes?: ConsultI;\n    @Input() hotels?: BabylonHotelGlobalItem[];\n    @Input() buttons?: BabylonButtonI[];\n    @Output() formSubmit = new EventEmitter<LisC3TxtImgCtFormPayload>();\n\n    submitAttempted = false;\n    isSubmitting = false;\n    submitError: string | null = null;\n\n    isFormValid = false;\n\n    trackByIndex(index: number): number {\n        return index;\n    }\n\n    handleSubmit(event: Event): void {\n        event.preventDefault();\n\n        this.submitAttempted = true;\n        this.submitError = null;\n\n        const form = event.target as HTMLFormElement | null;\n        if (!form) return;\n\n        // Fuerza a que el navegador calcule validity correctamente\n        // (y marque :invalid si tienes estilos nativos)\n        this.isFormValid = form.checkValidity();\n\n        if (!this.isFormValid) {\n            // Si quieres que el navegador “enfoque” el primer inválido:\n            form.reportValidity?.();\n            return;\n        }\n\n        const payload = this.buildPayload(form);\n\n        this.isSubmitting = true;\n\n        this.formSubmit.emit(payload);\n\n        // UX: éxito + reset\n        form.reset();\n\n        // reset flags\n        this.isSubmitting = false;\n        this.isFormValid = false;\n        this.submitAttempted = false;\n    }\n\n    private buildPayload(form: HTMLFormElement): LisC3TxtImgCtFormPayload {\n        const formData = new FormData(form);\n\n        const payload: LisC3TxtImgCtFormPayload = {};\n        formData.forEach((value, key) => {\n            // normaliza strings\n            const v = typeof value === 'string' ? value.trim() : value;\n\n            // checkbox -> boolean (FormData devuelve \"on\")\n            if (v === 'on') {\n                payload[key] = true as any;\n            } else {\n                payload[key] = v as any;\n            }\n        });\n\n        // Extra útil: guardar timestamp y origen si quieres\n        payload['submittedAt'] = new Date().toISOString() as any;\n\n        return payload;\n    }\n\n    get sortedHotels(): BabylonHotelGlobalItem[] {\n        const list = this.hotels ?? [];\n        return [...list].sort(\n            (a: any, b: any) => (a.order ?? 0) - (b.order ?? 0)\n        );\n    }\n}\n","@if (contactInfo) {\n    <section class=\"mdl-md004\">\n        @if (multimedia) {\n            <img\n                class=\"m-float\"\n                [src]=\"\n                    multimedia.staticImagenes?.[0]?.img?.src ??\n                    '/assets/babylon/svg/others/mosaico.png'\n                \"\n                [alt]=\"multimedia.staticImagenes?.[0]?.img?.alt ?? 'alegria'\"\n                loading=\"lazy\"\n            />\n        }\n        <div class=\"mdl-container\">\n            <div class=\"m-left\">\n                @if (contactInfo.title) {\n                    <h2 class=\"m-title\">{{ contactInfo.title }}</h2>\n                }\n                @if (multimedia?.imagenes?.[0]; as img) {\n                    <div class=\"m-img\">\n                        <img\n                            [src]=\"\n                                img.img?.src ||\n                                'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                            \"\n                            [alt]=\"img.img?.alt\"\n                            loading=\"lazy\"\n                        />\n                    </div>\n                }\n            </div>\n\n            <div class=\"m-right\">\n                <div class=\"m-form-container\">\n                    @if (contactInfo.description) {\n                        <div class=\"m-title\">\n                            {{ contactInfo.description }}\n                        </div>\n                    }\n\n                    <form (submit)=\"handleSubmit($event)\" novalidate>\n                        <div class=\"m-inputs-container\">\n                            @if (hotels?.length) {\n                                <div class=\"m-input\">\n                                    <!-- clase:full  para q sea largo el input -->\n                                    <select name=\"hotelId\" required>\n                                        <option selected disabled value=\"\">\n                                            @if (contactInfo.hotelDropTitle) {\n                                                {{ contactInfo.hotelDropTitle }}\n                                            }\n                                        </option>\n\n                                        @for (h of sortedHotels; track h.id) {\n                                            <option [value]=\"h.id\">\n                                                {{ h.name }}\n                                            </option>\n                                        }\n                                    </select>\n\n                                    <svg\n                                        width=\"11\"\n                                        height=\"6\"\n                                        viewBox=\"0 0 11 6\"\n                                        fill=\"none\"\n                                        xmlns=\"http://www.w3.org/2000/svg\"\n                                    >\n                                        <path\n                                            d=\"M4.87252 5.756L0.258221 1.41563C0.0922871 1.25955 -0.000596046 1.04818 3.8147e-06 0.82802C0.000602722 0.607855 0.094636 0.39693 0.261417 0.241647C0.428199 0.0863637 0.654065 -0.000558332 0.88933 2.69906e-06C1.12459 0.000563731 1.34999 0.0885619 1.51592 0.244639L5.48813 4.00549L9.48408 0.247203C9.65001 0.0911261 9.87541 0.00312796 10.1107 0.00256693C10.3459 0.0020059 10.5718 0.088928 10.7386 0.244211C10.9054 0.399495 10.9994 0.610419 11 0.830584C11.0006 1.05075 10.9077 1.26212 10.7418 1.4182L6.12931 5.75685C5.96252 5.9127 5.73641 6.00016 5.50072 6C5.26503 5.99984 5.03906 5.91207 4.87252 5.756Z\"\n                                            fill=\"#515050\"\n                                        />\n                                    </svg>\n                                </div>\n                            }\n                            @if (consultTypes?.options?.length) {\n                                <div class=\"m-input\">\n                                    <select name=\"consultType\" required>\n                                        <option selected disabled value=\"\">\n                                            @if (contactInfo.dropdownTitle) {\n                                                {{ contactInfo.dropdownTitle }}\n                                            }\n                                        </option>\n\n                                        @for (\n                                            opt of consultTypes?.options;\n                                            track $index\n                                        ) {\n                                            <option [value]=\"opt.consultTypeId\">\n                                                {{ opt.name }}\n                                            </option>\n                                        }\n                                    </select>\n\n                                    <svg\n                                        width=\"11\"\n                                        height=\"6\"\n                                        viewBox=\"0 0 11 6\"\n                                        fill=\"none\"\n                                        xmlns=\"http://www.w3.org/2000/svg\"\n                                    >\n                                        <path\n                                            d=\"M4.87252 5.756L0.258221 1.41563C0.0922871 1.25955 -0.000596046 1.04818 3.8147e-06 0.82802C0.000602722 0.607855 0.094636 0.39693 0.261417 0.241647C0.428199 0.0863637 0.654065 -0.000558332 0.88933 2.69906e-06C1.12459 0.000563731 1.34999 0.0885619 1.51592 0.244639L5.48813 4.00549L9.48408 0.247203C9.65001 0.0911261 9.87541 0.00312796 10.1107 0.00256693C10.3459 0.0020059 10.5718 0.088928 10.7386 0.244211C10.9054 0.399495 10.9994 0.610419 11 0.830584C11.0006 1.05075 10.9077 1.26212 10.7418 1.4182L6.12931 5.75685C5.96252 5.9127 5.73641 6.00016 5.50072 6C5.26503 5.99984 5.03906 5.91207 4.87252 5.756Z\"\n                                            fill=\"#515050\"\n                                        />\n                                    </svg>\n                                </div>\n                            }\n                            <!-- Name -->\n                            @if (contactInfo.inputName) {\n                                <div class=\"m-input\">\n                                    <span>{{ contactInfo.inputName }}</span>\n                                    <input\n                                        [attr.name]=\"'nombre'\"\n                                        [type]=\"'text'\"\n                                        [required]=\"true\"\n                                        placeholder=\"\"\n                                        minlength=\"2\"\n                                    />\n                                    <svg\n                                        width=\"12\"\n                                        height=\"14\"\n                                        viewBox=\"0 0 12 14\"\n                                        fill=\"none\"\n                                        xmlns=\"http://www.w3.org/2000/svg\"\n                                    >\n                                        <g>\n                                            <path\n                                                d=\"M11.0253 9.12893C10.4087 8.51049 9.58738 8.16992 8.71198 8.16992H3.26716C2.39299 8.16992 1.57169 8.51049 0.953871 9.12893C0.335435 9.74675 -0.00452016 10.5681 -0.00390542 11.4422V12.8033C-0.00390542 13.1063 0.241993 13.3529 0.545679 13.3529C0.848134 13.3529 1.09465 13.107 1.09465 12.8033V11.4422C1.09465 10.8619 1.32087 10.3154 1.73153 9.90474C2.14033 9.4947 2.68623 9.26848 3.26778 9.26848H8.71321C9.29415 9.26848 9.84004 9.49409 10.2495 9.90474C10.6601 10.3142 10.8857 10.8607 10.8857 11.4422V12.8033C10.8857 13.1063 11.1316 13.3529 11.4353 13.3529C11.7378 13.3529 11.9843 13.107 11.9843 12.8033V11.4422C11.9843 10.5681 11.6437 9.74675 11.0253 9.12893Z\"\n                                                fill=\"#515050\"\n                                            />\n                                            <path\n                                                d=\"M5.98982 6.54337C7.7941 6.54337 9.2615 5.07597 9.2615 3.27168C9.2615 1.4674 7.7941 0 5.98982 0C4.18554 0 2.71875 1.4674 2.71875 3.27168C2.71875 5.07597 4.18554 6.54337 5.98982 6.54337ZM5.98982 1.09794C7.18858 1.09794 8.16357 2.07293 8.16357 3.27168C8.16357 4.47044 7.18858 5.44543 5.98982 5.44543C4.79168 5.44543 3.81669 4.47044 3.81669 3.27168C3.81669 2.07293 4.79168 1.09794 5.98982 1.09794Z\"\n                                                fill=\"#515050\"\n                                            />\n                                        </g>\n                                    </svg>\n                                </div>\n                            }\n                            <!-- Code -->\n                            @if (contactInfo.inputSurnames) {\n                                <div class=\"m-input\">\n                                    <span>{{ contactInfo.inputSurnames }}</span>\n                                    <input\n                                        [attr.name]=\"'surname'\"\n                                        [type]=\"'text'\"\n                                        [required]=\"true\"\n                                        placeholder=\"\"\n                                        minlength=\"2\"\n                                    />\n                                    <svg\n                                        width=\"12\"\n                                        height=\"14\"\n                                        viewBox=\"0 0 12 14\"\n                                        fill=\"none\"\n                                        xmlns=\"http://www.w3.org/2000/svg\"\n                                    >\n                                        <g>\n                                            <path\n                                                d=\"M11.0253 9.12893C10.4087 8.51049 9.58738 8.16992 8.71198 8.16992H3.26716C2.39299 8.16992 1.57169 8.51049 0.953871 9.12893C0.335435 9.74675 -0.00452016 10.5681 -0.00390542 11.4422V12.8033C-0.00390542 13.1063 0.241993 13.3529 0.545679 13.3529C0.848134 13.3529 1.09465 13.107 1.09465 12.8033V11.4422C1.09465 10.8619 1.32087 10.3154 1.73153 9.90474C2.14033 9.4947 2.68623 9.26848 3.26778 9.26848H8.71321C9.29415 9.26848 9.84004 9.49409 10.2495 9.90474C10.6601 10.3142 10.8857 10.8607 10.8857 11.4422V12.8033C10.8857 13.1063 11.1316 13.3529 11.4353 13.3529C11.7378 13.3529 11.9843 13.107 11.9843 12.8033V11.4422C11.9843 10.5681 11.6437 9.74675 11.0253 9.12893Z\"\n                                                fill=\"#515050\"\n                                            />\n                                            <path\n                                                d=\"M5.98982 6.54337C7.7941 6.54337 9.2615 5.07597 9.2615 3.27168C9.2615 1.4674 7.7941 0 5.98982 0C4.18554 0 2.71875 1.4674 2.71875 3.27168C2.71875 5.07597 4.18554 6.54337 5.98982 6.54337ZM5.98982 1.09794C7.18858 1.09794 8.16357 2.07293 8.16357 3.27168C8.16357 4.47044 7.18858 5.44543 5.98982 5.44543C4.79168 5.44543 3.81669 4.47044 3.81669 3.27168C3.81669 2.07293 4.79168 1.09794 5.98982 1.09794Z\"\n                                                fill=\"#515050\"\n                                            />\n                                        </g>\n                                    </svg>\n                                </div>\n                            }\n                            <!-- Email -->\n                            @if (contactInfo.inputEmail) {\n                                <div class=\"m-input\">\n                                    <span>{{ contactInfo.inputEmail }}</span>\n                                    <input\n                                        [attr.name]=\"'email'\"\n                                        [type]=\"'email'\"\n                                        [required]=\"true\"\n                                        placeholder=\"\"\n                                        pattern=\"^[^\\s@]+@[^\\s@]+\\.[^\\s@]{2,}$\"\n                                    />\n                                    <svg\n                                        width=\"16\"\n                                        height=\"13\"\n                                        viewBox=\"0 0 16 13\"\n                                        fill=\"none\"\n                                        xmlns=\"http://www.w3.org/2000/svg\"\n                                    >\n                                        <path\n                                            d=\"M13.7149 12.7352H2.28514C1.67446 12.7352 1.10053 12.4976 0.669461 12.0657C0.237581 11.6338 0 11.0599 0 10.4492V2.29411C0 2.28758 0 2.28023 0 2.2737C0.00326564 1.66793 0.240847 1.09889 0.669461 0.669461C1.10053 0.237581 1.67446 0 2.28514 0H13.7149C14.3255 0 14.8995 0.237581 15.3305 0.669461C15.7592 1.09889 15.9967 1.66793 16 2.2737C16 2.28023 16 2.28758 16 2.29411V10.4492C16 11.0599 15.7624 11.6338 15.3305 12.0657C14.8995 12.4976 14.3255 12.7352 13.7149 12.7352ZM1.30544 3.50484V10.4484C1.30544 10.7064 1.40993 10.9587 1.5928 11.1407C1.77813 11.326 2.02387 11.4281 2.28593 11.4281H13.7157C13.9728 11.4281 14.2259 11.3236 14.4088 11.1407C14.5917 10.9587 14.6962 10.7064 14.6962 10.4484V3.50484L8.36331 7.7265C8.14451 7.87345 7.85793 7.87345 7.63913 7.7265L1.30544 3.50484ZM1.35686 1.96999L8 6.39901L14.6431 1.96999C14.595 1.82957 14.5158 1.70058 14.408 1.59282C14.2251 1.40994 13.9728 1.30544 13.7149 1.30544H2.28514C2.02389 1.30544 1.77733 1.40749 1.59201 1.59282C1.48424 1.70058 1.40503 1.82957 1.35686 1.96999Z\"\n                                            fill=\"#515050\"\n                                        />\n                                    </svg>\n                                </div>\n                            }\n                            <!-- Telf -->\n                            @if (contactInfo.inputPhone) {\n                                <div class=\"m-input\">\n                                    <span>{{ contactInfo.inputPhone }}</span>\n                                    <input\n                                        [attr.name]=\"'phone'\"\n                                        [type]=\"'tel'\"\n                                        [required]=\"true\"\n                                        placeholder=\"\"\n                                        pattern=\"^[0-9+\\-\\s()]{7,}$\"\n                                    />\n                                    <svg\n                                        width=\"12\"\n                                        height=\"14\"\n                                        viewBox=\"0 0 12 14\"\n                                        fill=\"none\"\n                                        xmlns=\"http://www.w3.org/2000/svg\"\n                                    >\n                                        <g>\n                                            <path\n                                                d=\"M11.0253 9.12893C10.4087 8.51049 9.58738 8.16992 8.71198 8.16992H3.26716C2.39299 8.16992 1.57169 8.51049 0.953871 9.12893C0.335435 9.74675 -0.00452016 10.5681 -0.00390542 11.4422V12.8033C-0.00390542 13.1063 0.241993 13.3529 0.545679 13.3529C0.848134 13.3529 1.09465 13.107 1.09465 12.8033V11.4422C1.09465 10.8619 1.32087 10.3154 1.73153 9.90474C2.14033 9.4947 2.68623 9.26848 3.26778 9.26848H8.71321C9.29415 9.26848 9.84004 9.49409 10.2495 9.90474C10.6601 10.3142 10.8857 10.8607 10.8857 11.4422V12.8033C10.8857 13.1063 11.1316 13.3529 11.4353 13.3529C11.7378 13.3529 11.9843 13.107 11.9843 12.8033V11.4422C11.9843 10.5681 11.6437 9.74675 11.0253 9.12893Z\"\n                                                fill=\"#515050\"\n                                            />\n                                            <path\n                                                d=\"M5.98982 6.54337C7.7941 6.54337 9.2615 5.07597 9.2615 3.27168C9.2615 1.4674 7.7941 0 5.98982 0C4.18554 0 2.71875 1.4674 2.71875 3.27168C2.71875 5.07597 4.18554 6.54337 5.98982 6.54337ZM5.98982 1.09794C7.18858 1.09794 8.16357 2.07293 8.16357 3.27168C8.16357 4.47044 7.18858 5.44543 5.98982 5.44543C4.79168 5.44543 3.81669 4.47044 3.81669 3.27168C3.81669 2.07293 4.79168 1.09794 5.98982 1.09794Z\"\n                                                fill=\"#515050\"\n                                            />\n                                        </g>\n                                    </svg>\n                                </div>\n                            }\n\n                            <div class=\"m-input\">\n                                @if (contactInfo.inputMessage) {\n                                    <span>{{ contactInfo.inputMessage }}</span>\n                                    <textarea\n                                        rows=\"14\"\n                                        [placeholder]=\"\n                                            contactInfo.inputMessagePlaceHolder ??\n                                            ''\n                                        \"\n                                        [attr.name]=\"'mensaje'\"\n                                        required\n                                        minlength=\"10\"\n                                    ></textarea>\n                                }\n                            </div>\n                        </div>\n\n                        <div class=\"m-footer\">\n                            <div class=\"m-legal\">\n                                <div class=\"m-row\">\n                                    <small></small>\n                                    @if (contactInfo.errorRequired) {\n                                        <span>{{\n                                            contactInfo.errorRequired\n                                        }}</span>\n                                    }\n                                    <!--      @if (submitAttempted && !isFormValid) {\n                                        <span>{{\n                                            contactInfo.errorRequired\n                                        }}</span>*\n\n                                    @if (submitError) {\n                                        <span>{{ submitError }}</span>\n                                    } -->\n                                </div>\n                                @if (contactInfo.conditions) {\n                                    <div class=\"m-row\">\n                                        <label>\n                                            <input\n                                                type=\"checkbox\"\n                                                [attr.name]=\"'checkbox'\"\n                                                [required]=\"true\"\n                                            />\n                                            @if (buttons?.[0]; as btn) {\n                                                <a\n                                                    [href]=\"btn.url\"\n                                                    [linkType]=\"btn.linkType\"\n                                                >\n                                                    <span>{{\n                                                        contactInfo.conditions\n                                                    }}</span>\n                                                </a>\n                                            } @else {\n                                                <span>{{\n                                                    contactInfo.conditions\n                                                }}</span>\n                                            }\n                                        </label>\n                                    </div>\n                                }\n                                @if (contactInfo.conditions2) {\n                                    <div class=\"m-row\">\n                                        <label>\n                                            <input\n                                                type=\"checkbox\"\n                                                [attr.name]=\"'checkbox2'\"\n                                                [required]=\"false\"\n                                            />\n                                            <span>{{\n                                                contactInfo.conditions2\n                                            }}</span>\n                                        </label>\n                                    </div>\n                                }\n                            </div>\n                            @if (buttons?.[0]; as btn) {\n                                <button\n                                    type=\"submit\"\n                                    class=\"m-button-sm\"\n                                    [disabled]=\"isSubmitting\"\n                                >\n                                    <span>{{ btn?.label }}</span>\n                                </button>\n                            }\n                        </div>\n\n                        @if (contactInfo.note) {\n                            <div class=\"m-note\">\n                                {{ contactInfo.note }}\n                            </div>\n                        }\n                    </form>\n\n                    @if (multimedia?.imagenes?.[0]; as img) {\n                        <div class=\"m-img\">\n                            <img\n                                [src]=\"\n                                    img.img?.src ||\n                                    'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                \"\n                                [alt]=\"img.img?.alt\"\n                                loading=\"lazy\"\n                            />\n                        </div>\n                    }\n                </div>\n            </div>\n        </div>\n    </section>\n}\n","/**\n * LisC4TxtDesCtaComponent\n * ----------------------\n *\n * Componente de listado con sistema de filtros sincronizado con la URL.\n *\n * FILOSOFÍA\n * ----------\n * - El componente es AGNÓSTICO al dominio (no hardcodea \"hotel\", \"apartamento\", marcas, etc.).\n * - Todo lo que se filtra proviene de STRINGS enviados por backend (ya traducidos).\n * - La URL siempre trabaja con SLUGS normalizados (sin tildes, espacios ni caracteres raros).\n *\n * FILTROS SOPORTADOS (actuales)\n * -----------------------------\n * - filter       -> tipo principal (ej: hoteles, apartamentos, villas, etc.)\n * - destination  -> destino (por nombre)\n * - brand        -> marca / grupo\n *\n * CÓMO FUNCIONA\n * -------------\n * 1. Las opciones de filtros se construyen dinámicamente a partir de `items`.\n * 2. Cada opción tiene:\n *    - label: texto real mostrado al usuario\n *    - slug : versión normalizada usada en la URL\n * 3. Al navegar con query params:\n *    - Se leen los slugs de la URL\n *    - Se resuelven a labels reales cuando los items están disponibles\n * 4. El filtrado interno SIEMPRE compara por slug (no por texto crudo).\n *\n * NORMALIZACIÓN\n * -------------\n * - Se usa `Utils.toSlug()` para normalizar textos (tildes, espacios, símbolos).\n * - Para el filtro principal (`filter`) se aplica además una singularización genérica\n *   (hoteles -> hotel, apartamentos -> apartamento), SIN traducciones ni diccionarios.\n *\n * EXTENDER CON NUEVOS FILTROS\n * --------------------------\n * Para añadir un nuevo filtro (ej: category, experience, rating):\n *\n * 1. Añadir un nuevo queryParam (ej: `category`)\n * 2. Crear:\n *    - selectedCategory\n *    - categoryOptions\n *    - categorySlugToLabel / categoryLabelToSlug\n * 3. Construir opciones en `buildFilterOptions()`\n * 4. Resolver desde URL en `resolvePendingFromMaps()`\n * 5. Aplicar condición en `filteredItems`\n * 6. Sincronizar en `syncQueryParams()`\n *\n * IMPORTANTE\n * ----------\n * - NUNCA comparar por texto directo.\n * - NUNCA meter valores crudos en la URL.\n * - Todo filtro nuevo debe pasar por slug.\n *\n * Con esto el componente es reutilizable entre proyectos,\n * idiomas y configuraciones distintas sin cambios estructurales.\n */\n\nimport { CommonModule } from '@angular/common';\nimport {\n    ChangeDetectorRef,\n    Component,\n    inject,\n    Input,\n    OnChanges,\n    OnDestroy,\n    OnInit,\n    SimpleChanges,\n    ViewEncapsulation,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Subscription } from 'rxjs';\nimport { BabylonLinkTypeDirective } from '../../../../directives/link-type/link-type.directive';\nimport {\n    BabylonButtonI,\n    BabylonImageI,\n    BabylonTextInfoI,\n} from '../../../../interfaces';\nimport { BabylonDestinationI } from '../../../../interfaces/babylon-destination.interface';\nimport { BabylonGlobalExperience } from '../../../../interfaces/babylon-global-experience.interface';\nimport { BabylonHotelGlobalItem } from '../../../../interfaces/babylon-hotel.interface';\nimport { Utils } from '../../../../utils';\nimport { getFirstImageByTagFromImages } from '../../../../utils/mutimedia.utils';\n\n@Component({\n    selector: 'lis-c4-txt-des-cta',\n    standalone: true,\n    encapsulation: ViewEncapsulation.None,\n    imports: [CommonModule, BabylonLinkTypeDirective, FormsModule],\n    templateUrl: './lis-c4-txt-des-cta.component.html',\n    styleUrl: './lis-c4-txt-des-cta.component.scss',\n})\nexport class LisC4TxtDesCtaComponent implements OnInit, OnChanges, OnDestroy {\n    @Input() texts?: BabylonTextInfoI;\n    @Input() items?: BabylonHotelGlobalItem[];\n    @Input() links?: BabylonButtonI[];\n    @Input() additional1LikeMarca?: boolean = false;\n    @Input() showCleanFilters: boolean = true;\n\n    @Input() experiences?: BabylonGlobalExperience[];\n    @Input() destinations?: BabylonDestinationI[];\n    @Input() showDestinations?: boolean = false;\n    @Input() showFilters?: boolean = true;\n    @Input() maxColumns?: number = 4;\n\n    tagName: string = 'LisC4TxtDesCta';\n\n    // UI labels seleccionados (lo que se muestra en los selects)\n    // En URL se guardan slugs.\n    selectedHotelType: string = ''; // => queryParam \"filter\"\n    selectedDestination: string = ''; // => queryParam \"destination\"\n    selectedBrand: string = ''; // => queryParam \"brand\"\n    selectedExperience: string = '';\n\n    hotelTypeOptions: string[] = [];\n    destinationOptions: string[] = [];\n    brandOptions: string[] = [];\n    experienceOptions: string[] = [];\n\n    private pendingFilterSlug: string | null = null;\n    private pendingDestinationSlug: string | null = null;\n    private pendingBrandSlug: string | null = null;\n    private pendingExperienceSlug: string | null = null;\n\n    // slug -> label (hidratar selects desde URL)\n    private filterSlugToLabel = new Map<string, string>();\n    private destinationSlugToLabel = new Map<string, string>();\n    private brandSlugToLabel = new Map<string, string>();\n    private experienceSlugToLabel = new Map<string, string>();\n\n    // label -> slug (escritura estable)\n    private filterLabelToSlug = new Map<string, string>();\n    private destinationLabelToSlug = new Map<string, string>();\n    private brandLabelToSlug = new Map<string, string>();\n    private experienceLabelToSlug = new Map<string, string>();\n\n    private readonly route = inject(ActivatedRoute);\n    private readonly router = inject(Router);\n    private qpSub?: Subscription;\n    private readonly cdr = inject(ChangeDetectorRef);\n\n    private isSyncingFromUrl = false;\n\n    ngOnInit(): void {\n        this.qpSub = this.route.queryParamMap.subscribe((params) => {\n            this.isSyncingFromUrl = true;\n\n            const filterSlug = params.get('filter') ?? '';\n            const destinationSlug = params.get('destination') ?? '';\n            const brandSlug = params.get('brand') ?? '';\n            const experienceSlug = params.get('experience') ?? '';\n\n            this.resolvePendingFromMaps();\n\n            this.pendingFilterSlug = params.get('filter');\n            this.pendingDestinationSlug = params.get('destination');\n            this.pendingBrandSlug = params.get('brand');\n            this.pendingExperienceSlug = params.get('experience');\n\n            this.resolvePendingFromMaps();\n\n            // Si aún no hay maps (items no llegó), intenta fallback (mantener algo decente)\n            // Nota: no navegamos aquí.\n            if (!this.selectedHotelType && filterSlug)\n                this.selectedHotelType = filterSlug;\n            if (!this.selectedDestination && destinationSlug)\n                this.selectedDestination = destinationSlug;\n            if (!this.selectedBrand && brandSlug)\n                this.selectedBrand = brandSlug;\n            if (!this.selectedExperience && experienceSlug)\n                this.selectedExperience = experienceSlug;\n\n            this.cdr.markForCheck();\n            queueMicrotask(() => (this.isSyncingFromUrl = false));\n        });\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if (changes['items']) {\n            this.buildFilterOptions();\n\n            // rehidrata desde URL ya con maps listos (sin navegar)\n            const qp = this.route.snapshot.queryParamMap;\n            const filterSlug = qp.get('filter') ?? '';\n            const destinationSlug = qp.get('destination') ?? '';\n            const brandSlug = qp.get('brand') ?? '';\n            const experienceSlug = qp.get('experience') ?? '';\n\n            this.isSyncingFromUrl = true;\n\n            this.selectedHotelType =\n                this.filterSlugToLabel.get(filterSlug) ?? '';\n            this.selectedDestination =\n                this.destinationSlugToLabel.get(destinationSlug) ?? '';\n            this.selectedBrand = this.brandSlugToLabel.get(brandSlug) ?? '';\n            this.selectedExperience =\n                this.experienceSlugToLabel.get(experienceSlug) ?? '';\n\n            this.forceOptionMatch();\n            this.cdr.markForCheck();\n            this.cdr.detectChanges();\n            queueMicrotask(() => (this.isSyncingFromUrl = false));\n        }\n    }\n\n    ngOnDestroy(): void {\n        this.qpSub?.unsubscribe();\n    }\n\n    private buildFilterOptions(): void {\n        const items = this.items ?? [];\n        const experiences = this.experiences ?? [];\n\n        this.hotelTypeOptions = Array.from(\n            new Set(\n                items\n                    .map((i) => (i as any)?.hoteltype)\n                    .filter(Boolean)\n                    .map((v: string) => v.trim())\n            )\n        ).sort((a, b) => a.localeCompare(b));\n\n        this.destinationOptions = Array.from(\n            new Set(\n                items\n                    .flatMap((i) =>\n                        ((i as any)?.destinations ?? []).map(\n                            (d: any) => d?.name\n                        )\n                    )\n                    .filter(Boolean)\n                    .map((v: string) => v.trim())\n            )\n        ).sort((a, b) => a.localeCompare(b));\n\n        this.brandOptions = Array.from(\n            new Set(items.map((i) => this.getItemBrand(i)).filter(Boolean))\n        ).sort((a, b) => a.localeCompare(b));\n\n        this.experienceOptions = Array.from(\n            new Set(experiences.map((e) => e.nameIdentifier)?.filter(Boolean))\n        ).sort((a, b) => a.localeCompare(b));\n\n        // Reset maps\n        this.filterSlugToLabel.clear();\n        this.destinationSlugToLabel.clear();\n        this.brandSlugToLabel.clear();\n        this.experienceSlugToLabel.clear();\n\n        this.filterLabelToSlug.clear();\n        this.destinationLabelToSlug.clear();\n        this.brandLabelToSlug.clear();\n        this.experienceLabelToSlug.clear();\n\n        // used sets para sufijos -2 -3...\n        const usedFilter = new Set<string>();\n        const usedDest = new Set<string>();\n        const usedBrand = new Set<string>();\n        const usedExperience = new Set<string>();\n\n        // FILTER (query param \"filter\") => slug CANÓNICO (singular genérico)\n        for (const label of this.hotelTypeOptions) {\n            const base = this.canonicalSlug(label);\n            const slug = Utils.uniqueSlug(base, usedFilter);\n            this.filterSlugToLabel.set(slug, label);\n            this.filterLabelToSlug.set(label, slug);\n        }\n\n        // DESTINATIONS\n        for (const label of this.destinationOptions) {\n            const base = Utils.toSlug(label) || 'destination';\n            const slug = Utils.uniqueSlug(base, usedDest);\n            this.destinationSlugToLabel.set(slug, label);\n            this.destinationLabelToSlug.set(label, slug);\n        }\n\n        // BRANDS\n        for (const label of this.brandOptions) {\n            const base = Utils.toSlug(label) || 'brand';\n            const slug = Utils.uniqueSlug(base, usedBrand);\n            this.brandSlugToLabel.set(slug, label);\n            this.brandLabelToSlug.set(label, slug);\n        }\n\n        for (const label of this.experienceOptions) {\n            const base = Utils.toSlug(label) || 'experience';\n            const slug = Utils.uniqueSlug(base, usedExperience);\n            this.experienceSlugToLabel.set(slug, label);\n            this.experienceLabelToSlug.set(label, slug);\n        }\n    }\n\n    private getItemBrand(it: any): string {\n        if (this.additional1LikeMarca)\n            return (it?.texts?.additional1 ?? '').trim();\n        return (it?.marca ?? it?.brand ?? it?.group ?? '').trim();\n    }\n\n    // ----------------------\n    // FILTRADO\n    // ----------------------\n\n    get filteredItems(): BabylonHotelGlobalItem[] {\n        const items = this.items ?? [];\n        if (!this.showFilters) {\n            return items;\n        }\n\n        let validHotelIdsForExperience: number[] = [];\n        if (this.selectedExperience && this.experiences) {\n            const targetExp = this.experiences.find(\n                (e) => e.nameIdentifier === this.selectedExperience\n            );\n            if (targetExp && targetExp.hotels) {\n                validHotelIdsForExperience = targetExp.hotels.map(\n                    (h: any) => h.id\n                );\n            }\n        }\n        return items.filter((it) => {\n            const itemHotelType = (it as any)?.hoteltype ?? '';\n            const itemBrand = this.getItemBrand(it);\n            const itemId = (it as any)?.id;\n\n            const hotelTypeOk =\n                !this.selectedHotelType ||\n                this.canonicalSlug(itemHotelType) ===\n                    this.canonicalSlug(this.selectedHotelType);\n\n            const destinationOk =\n                !this.selectedDestination ||\n                (((it as any)?.destinations ?? []) as any[]).some(\n                    (d) =>\n                        Utils.toSlug(d?.name ?? '') ===\n                        Utils.toSlug(this.selectedDestination)\n                );\n\n            const brandOk =\n                !this.selectedBrand ||\n                Utils.toSlug(itemBrand) === Utils.toSlug(this.selectedBrand);\n\n            const experienceOk =\n                !this.selectedExperience ||\n                validHotelIdsForExperience.includes(itemId);\n\n            return hotelTypeOk && destinationOk && brandOk && experienceOk;\n        });\n    }\n\n    get hasActiveFilters(): boolean {\n        return !!(\n            this.selectedHotelType ||\n            this.selectedDestination ||\n            this.selectedBrand ||\n            this.selectedExperience\n        );\n    }\n\n    // ----------------------\n    // HANDLERS UI\n    // ----------------------\n\n    onHotelTypeChange(value: string | undefined) {\n        this.selectedHotelType = value ?? '';\n        if (this.isSyncingFromUrl) return;\n        this.syncQueryParams();\n    }\n\n    onDestinationChange(value: string) {\n        this.selectedDestination = value ?? '';\n        if (this.isSyncingFromUrl) return;\n        this.syncQueryParams();\n    }\n\n    onBrandChange(value: string) {\n        this.selectedBrand = value ?? '';\n        if (this.isSyncingFromUrl) return;\n        this.syncQueryParams();\n    }\n\n    onExperienceChange(value: string) {\n        this.selectedExperience = value ?? '';\n        if (this.isSyncingFromUrl) return;\n        this.syncQueryParams();\n    }\n\n    clearFilters() {\n        this.selectedHotelType = '';\n        this.selectedDestination = '';\n        this.selectedBrand = '';\n        this.selectedExperience = '';\n        this.syncQueryParams(true);\n    }\n\n    // ----------------------\n    // URL SYNC (SIEMPRE SLUG)\n    // ----------------------\n\n    private syncQueryParams(clearAll = false) {\n        const qp = clearAll\n            ? { filter: null, destination: null, brand: null }\n            : {\n                  filter: this.selectedHotelType\n                      ? (this.filterLabelToSlug.get(this.selectedHotelType) ??\n                        this.canonicalSlug(this.selectedHotelType))\n                      : null,\n\n                  destination: this.selectedDestination\n                      ? (this.destinationLabelToSlug.get(\n                            this.selectedDestination\n                        ) ?? Utils.toSlug(this.selectedDestination))\n                      : null,\n\n                  brand: this.selectedBrand\n                      ? (this.brandLabelToSlug.get(this.selectedBrand) ??\n                        Utils.toSlug(this.selectedBrand))\n                      : null,\n\n                  experience: this.selectedExperience\n                      ? (this.experienceLabelToSlug.get(\n                            this.selectedExperience\n                        ) ?? Utils.toSlug(this.selectedExperience))\n                      : null,\n              };\n\n        this.router.navigate([], {\n            relativeTo: this.route,\n            queryParams: qp,\n            replaceUrl: true,\n        });\n\n        this.cdr.markForCheck();\n    }\n\n    // ----------------------\n    // CANONICAL SLUG (sin traductor)\n    // - Garantiza singular/plural genérico\n    // ----------------------\n\n    private canonicalSlug(value: string): string {\n        let s = Utils.toSlug(value);\n        if (!s) return '';\n\n        // Regla -es (hoteles -> hotel, luces -> luz, peces -> pez)\n        if (s.length > 3 && s.endsWith('es')) {\n            const base = s.slice(0, -2);\n            if (base.endsWith('c')) return base.slice(0, -1) + 'z';\n            return base;\n        }\n\n        // Regla -s (apartamentos -> apartamento)\n        if (s.length > 3 && s.endsWith('s')) return s.slice(0, -1);\n\n        return s;\n    }\n\n    // ----------------------\n    // UI utils\n    // ----------------------\n\n    getKeysArray(count: number | undefined): number[] {\n        return count ? Array.from({ length: count }) : [];\n    }\n\n    trackByIndex(index: number): number {\n        return index;\n    }\n\n    getFirstImageByTag(tagName: string, imagenes: BabylonImageI[]) {\n        return getFirstImageByTagFromImages(imagenes, tagName) ?? imagenes?.[0];\n    }\n\n    getNumber(text: string): number[] {\n        return Utils.extractNumberRange(text);\n    }\n\n    showIfSup(value?: string | null): string {\n        const regex = /\\b(SUP|superior)\\b/i;\n\n        return regex.test(value ?? '') ? 'SUP' : '';\n    }\n\n    private resolvePendingFromMaps(): void {\n        if (this.pendingFilterSlug != null) {\n            const slug = this.canonicalSlug(this.pendingFilterSlug);\n\n            const label = this.filterSlugToLabel.get(slug);\n            if (label) {\n                this.selectedHotelType = label;\n                this.pendingFilterSlug = null;\n            }\n        }\n\n        // DESTINATION\n        if (this.pendingDestinationSlug != null) {\n            const slug = Utils.toSlug(this.pendingDestinationSlug);\n            const label = this.destinationSlugToLabel.get(slug);\n            if (label) {\n                this.selectedDestination = label;\n                this.pendingDestinationSlug = null;\n            }\n        }\n\n        // BRAND\n        if (this.pendingBrandSlug != null) {\n            const slug = Utils.toSlug(this.pendingBrandSlug);\n            const label = this.brandSlugToLabel.get(slug);\n            if (label) {\n                this.selectedBrand = label;\n                this.pendingBrandSlug = null;\n            }\n        }\n\n        //EXPERIENCES\n        if (this.pendingExperienceSlug != null) {\n            const slug = Utils.toSlug(this.pendingExperienceSlug);\n            const label = this.experienceSlugToLabel.get(slug);\n            if (label) {\n                this.selectedExperience = label;\n                this.pendingExperienceSlug = null;\n            }\n        }\n    }\n\n    private forceOptionMatch(): void {\n        if (this.selectedHotelType) {\n            const wanted = this.canonicalSlug(this.selectedHotelType);\n            const match = this.hotelTypeOptions.find(\n                (o) => this.canonicalSlug(o) === wanted\n            );\n            this.selectedHotelType = match ?? '';\n        }\n\n        if (this.selectedBrand) {\n            const wanted = Utils.toSlug(this.selectedBrand);\n            const match = this.brandOptions.find(\n                (o) => Utils.toSlug(o) === wanted\n            );\n            this.selectedBrand = match ?? '';\n        }\n\n        if (this.selectedDestination) {\n            const wanted = Utils.toSlug(this.selectedDestination);\n            const match = this.destinationOptions.find(\n                (o) => Utils.toSlug(o) === wanted\n            );\n            this.selectedDestination = match ?? '';\n        }\n\n        if (this.selectedExperience) {\n            const wanted = Utils.toSlug(this.selectedExperience);\n            const match = this.experienceOptions.find(\n                (o) => Utils.toSlug(o) === wanted\n            );\n            this.selectedExperience = match ?? '';\n        }\n    }\n\n    getButtonUrl(btn: BabylonButtonI, item: any, index: number): string {\n        const urlBase = btn.url || '';\n\n        // Si no es el primer botón, devolvemos la URL base sin alterar\n        if (index !== 0) {\n            return urlBase;\n        }\n\n        // Buscamos el identificador (priorizamos nameIdentifier, luego name para destinos)\n        const identifier =\n            item?.nameIdentifier ?? item?.name_identifier ?? item?.name;\n\n        if (!identifier) {\n            return urlBase;\n        }\n\n        const separator = urlBase.includes('?') ? '&' : '?';\n\n        // 1. Lógica para EXPERIENCIAS\n        // Entra si el type es 'experience' o si tiene un nameIdentifier pero no tiene type (fallback)\n        if (\n            item?.type === 'experience' ||\n            (!item?.type && (item?.nameIdentifier || item?.name_identifier))\n        ) {\n            return `${urlBase}${separator}experience=${identifier}`;\n        }\n\n        // 2. Lógica para DESTINOS\n        if (item?.type === 'destination') {\n            // Usamos tu Utils para normalizar espacios y mayúsculas (ej: \"Andorra la Vella\" -> \"andorra-la-vella\")\n            const destinationSlug = Utils.toSlug(identifier);\n            return `${urlBase}${separator}destination=${destinationSlug}`;\n        }\n\n        return urlBase;\n    }\n}\n","@if (items?.length) {\n    <section class=\"mdl-md002\">\n        <div class=\"mdl-container\">\n            <div class=\"m-content-top\">\n                @if (texts?.title) {\n                    <h2 class=\"m-title\" [innerHTML]=\"texts?.title\"></h2>\n                }\n                @if (showFilters) {\n                    <div class=\"m-selects\">\n                        @if (hasActiveFilters && showCleanFilters) {\n                            <button\n                                type=\"button\"\n                                class=\"m-clear\"\n                                (click)=\"clearFilters()\"\n                            >\n                                {{ texts?.cleanFilters ?? 'Limpiar filtros' }}\n                            </button>\n                        }\n                        <div class=\"m-select\">\n                            <select\n                                #BrandSel\n                                [attr.aria-label]=\"texts?.marca ?? 'marca'\"\n                                [(ngModel)]=\"selectedBrand\"\n                                (ngModelChange)=\"onBrandChange($event)\"\n                            >\n                                <option value=\"\">\n                                    {{ texts?.marca ?? 'All' }}\n                                </option>\n                                @for (opt of brandOptions; track $index) {\n                                    <option [value]=\"opt\">{{ opt }}</option>\n                                }\n                            </select>\n                        </div>\n                        @if (experienceOptions.length > 0) {\n                            <div class=\"m-select\">\n                                <select\n                                    #ExperienceSel\n                                    aria-label=\"Experiencias\"\n                                    [(ngModel)]=\"selectedExperience\"\n                                    (ngModelChange)=\"onExperienceChange($event)\"\n                                >\n                                    <option value=\"\">Experiencias</option>\n                                    @for (\n                                        opt of experienceOptions;\n                                        track $index\n                                    ) {\n                                        <option [value]=\"opt\">{{ opt }}</option>\n                                    }\n                                </select>\n                            </div>\n                        }\n                        <!--   <div class=\"m-select\">\n                            <select\n                                #hotelTypeSel\n                                [attr.aria-label]=\"\n                                    texts?.hotelType ?? 'hoteles'\n                                \"\n                                [(ngModel)]=\"selectedHotelType\"\n                                (ngModelChange)=\"onHotelTypeChange($event)\"\n                            >\n                                <option value=\"\">{{ texts?.hotelType }}</option>\n                                @for (opt of hotelTypeOptions; track $index) {\n                                    <option [value]=\"opt\">{{ opt }}</option>\n                                }\n                            </select>\n                        </div> -->\n\n                        <div class=\"m-select\">\n                            <select\n                                #Destination\n                                [attr.aria-label]=\"\n                                    texts?.destinations ?? 'destinos'\n                                \"\n                                [(ngModel)]=\"selectedDestination\"\n                                (ngModelChange)=\"onDestinationChange($event)\"\n                            >\n                                <option value=\"\">\n                                    {{ texts?.destinations }}\n                                </option>\n                                @for (opt of destinationOptions; track $index) {\n                                    <option [value]=\"opt\">{{ opt }}</option>\n                                }\n                            </select>\n                        </div>\n                    </div>\n                }\n            </div>\n\n            <div\n                class=\"m-cards-container\"\n                [style.--maxColumns]=\"maxColumns ?? 4\"\n            >\n                @if (filteredItems?.length) {\n                    @for (item of filteredItems; track $index) {\n                        <div\n                            class=\"m-card\"\n                            [ngClass]=\"{\n                                cardempty:\n                                    !getFirstImageByTag(\n                                        tagName,\n                                        item?.images ??\n                                            item?.multimedia?.imagenes ??\n                                            []\n                                    ) &&\n                                    !(\n                                        item.images?.[0] ??\n                                        item?.multimedia?.imagenes?.[0]\n                                    ),\n                            }\"\n                        >\n                            @if (\n                                getFirstImageByTag(\n                                    tagName,\n                                    item.images ??\n                                        item?.multimedia?.imagenes ??\n                                        []\n                                ) ??\n                                    item.images?.[0] ??\n                                    item?.multimedia?.imagenes?.[0];\n                                as img\n                            ) {\n                                <a\n                                    class=\"link-container\"\n                                    [href]=\"item.links?.[0]?.url\"\n                                    [linkType]=\"item.links?.[0]?.linkType\"\n                                    [disablePointerNone]=\"true\"\n                                >\n                                    <div\n                                        class=\"m-card-top\"\n                                        [style.background-image]=\"\n                                            'url(' + img.img?.src + ')'\n                                        \"\n                                    >\n                                        <div class=\"m-tag-left\">\n                                            @if (item.hoteltype) {\n                                                {{ item.hoteltype }}\n                                            }\n                                            <div class=\"m-keys\">\n                                                @if (\n                                                    (item?.hoteltype ===\n                                                        'Hotel' ||\n                                                        item?.hoteltype ===\n                                                            'Hôtel') &&\n                                                    item?.hotelcategory\n                                                ) {\n                                                    <div class=\"category\">\n                                                        @for (\n                                                            item of getNumber(\n                                                                item?.hotelcategory ??\n                                                                    ''\n                                                            );\n                                                            track $index\n                                                        ) {\n                                                            <svg\n                                                                xmlns=\"http://www.w3.org/2000/svg\"\n                                                                width=\"20\"\n                                                                height=\"20\"\n                                                                viewBox=\"0 0 20 20\"\n                                                            >\n                                                                <g\n                                                                    fill=\"none\"\n                                                                    fill-rule=\"evenodd\"\n                                                                >\n                                                                    <g>\n                                                                        <g>\n                                                                            <g\n                                                                                transform=\"translate(-1404.000000, -5922.000000) translate(191.000000, 5865.000000) translate(1109.000000, 57.000000)\"\n                                                                            >\n                                                                                <g>\n                                                                                    <path\n                                                                                        fill=\"#fff\"\n                                                                                        fill-opacity=\"1\"\n                                                                                        fill-rule=\"nonzero\"\n                                                                                        d=\"M10 0l2.294 7.104c.034.106.133.178.245.178L20 7.267l-6.046 4.374v.001c-.09.066-.128.182-.093.289l2.322 7.095-6.032-4.4c-.09-.065-.213-.065-.303 0l-6.029 4.4 2.322-7.095H6.14c.035-.107-.003-.223-.094-.289L0 7.268l7.461.015.001-.001c.112 0 .211-.072.245-.178L10 0z\"\n                                                                                        transform=\"translate(104.000000, 0.000000)\"\n                                                                                    />\n                                                                                </g>\n                                                                            </g>\n                                                                        </g>\n                                                                    </g>\n                                                                </g>\n                                                            </svg>\n                                                        }\n                                                    </div>\n                                                }\n\n                                                @if (\n                                                    (item?.hoteltype ===\n                                                        'Apartamento' ||\n                                                        item?.hoteltype ===\n                                                            'Appartement') &&\n                                                    item?.hotelcategory\n                                                ) {\n                                                    <div class=\"category\">\n                                                        @for (\n                                                            item of getNumber(\n                                                                item?.hotelcategory ??\n                                                                    ''\n                                                            );\n                                                            track $index\n                                                        ) {\n                                                            <svg\n                                                                width=\"13\"\n                                                                height=\"13\"\n                                                                viewBox=\"0 0 13 13\"\n                                                                fill=\"none\"\n                                                                xmlns=\"http://www.w3.org/2000/svg\"\n                                                            >\n                                                                <path\n                                                                    d=\"M0.146296 4.26479L1.14015 2.01692C1.31289 1.62559 1.62559 1.31289 2.01692 1.14015L4.26479 0.146297C4.58174 0.00641826 4.93356 -0.0343944 5.27412 0.0292127C5.61467 0.0928198 5.92805 0.257876 6.17314 0.50273L7.9475 2.27839C8.1606 2.49155 8.31388 2.75701 8.39197 3.04813C8.47006 3.33925 8.4702 3.64578 8.39239 3.93698L7.93579 5.64109L12.866 10.5713C12.9085 10.6136 12.9422 10.6639 12.9652 10.7193C12.9882 10.7746 13 10.834 13 10.8939V12.5447C12.9993 12.6652 12.9511 12.7807 12.8659 12.8659C12.7807 12.9511 12.6652 12.9993 12.5447 13H10.8939C10.7926 12.9998 10.6942 12.9659 10.6142 12.9038C10.5341 12.8416 10.477 12.7547 10.4516 12.6566L10.2045 11.6796L9.3303 11.5131C9.24322 11.4968 9.16282 11.4553 9.09903 11.3938C9.03523 11.3323 8.99082 11.2535 8.97127 11.1671L8.73321 10.1173L7.89026 10.0367C7.78479 10.0274 7.68608 9.9808 7.61188 9.90528L5.64109 7.93579L3.93697 8.39239C3.6458 8.47047 3.33919 8.47046 3.04802 8.39236C2.75685 8.31426 2.4914 8.16082 2.27839 7.9475L0.502729 6.17314C0.257875 5.92805 0.0928202 5.61467 0.029213 5.27412C-0.0343943 4.93357 0.00641727 4.58174 0.146296 4.26479ZM3.6703 5.08953C3.81061 5.22968 3.98932 5.32508 4.18385 5.36369C4.37837 5.40229 4.57997 5.38236 4.76317 5.30641C4.94636 5.23047 5.10294 5.10191 5.21309 4.937C5.32324 4.7721 5.38203 4.57823 5.38203 4.37991C5.38203 4.1816 5.32324 3.98773 5.21309 3.82283C5.10294 3.65792 4.94636 3.52936 4.76317 3.45342C4.57997 3.37747 4.37837 3.35754 4.18385 3.39614C3.98932 3.43475 3.81061 3.53015 3.6703 3.6703C3.57689 3.76336 3.50277 3.87395 3.45219 3.99572C3.40162 4.1175 3.37558 4.24806 3.37558 4.37991C3.37558 4.51177 3.40162 4.64233 3.45219 4.76411C3.50277 4.88588 3.57689 4.99647 3.6703 5.08953Z\"\n                                                                    fill=\"#fff\"\n                                                                    fill-opacity=\"1\"\n                                                                />\n                                                            </svg>\n                                                        }\n                                                    </div>\n                                                }\n                                            </div>\n                                            {{ showIfSup(item?.hotelcategory) }}\n                                        </div>\n                                        @if (item?.texts?.additional2) {\n                                            <div\n                                                class=\"m-tag-right\"\n                                                [ngClass]=\"{\n                                                    'left-mode':\n                                                        !item.hoteltype,\n                                                }\"\n                                                [style.backgroundColor]=\"\n                                                    item?.styles?.primary ??\n                                                    '#ff4338'\n                                                \"\n                                            >\n                                                {{ item?.texts?.additional2 }}\n                                            </div>\n                                        }\n                                    </div>\n                                </a>\n                                <div class=\"m-content\">\n                                    @if (\n                                        item.texts?.title || item.texts?.name\n                                    ) {\n                                        <div class=\"m-title\">\n                                            {{\n                                                item.texts?.title ??\n                                                    item.texts?.name\n                                            }}\n                                        </div>\n                                    }\n\n                                    <div class=\"m-subtitle\">\n                                        @if (item.locality) {\n                                            {{ item.locality }}\n                                        }\n                                        @if (item.locality && item.province) {\n                                            -\n                                        }\n                                        @if (item.province) {\n                                            {{ item.province }}\n                                        }\n                                    </div>\n\n                                    @if (item.buttons?.length) {\n                                        @for (\n                                            btn of item.buttons;\n                                            track $index\n                                        ) {\n                                            <a\n                                                class=\"m-btn\"\n                                                [ngClass]=\"{\n                                                    'm-button-sm':\n                                                        $index % 2 === 0,\n                                                    'm-but m-underline':\n                                                        $index % 2 !== 0,\n                                                }\"\n                                                [style.--btn-primary-dynamic]=\"\n                                                    item.styles?.primary\n                                                \"\n                                                [style.--btn-hover-dynamic]=\"\n                                                    item.styles?.primaryHover\n                                                \"\n                                                [href]=\"\n                                                    getButtonUrl(\n                                                        btn,\n                                                        item,\n                                                        $index\n                                                    )\n                                                \"\n                                                [attr.target]=\"\n                                                    btn.target || '_self'\n                                                \"\n                                                [linkType]=\"btn.linkType\"\n                                                [attr.aria-label]=\"btn.label\"\n                                            >\n                                                <span>{{ btn.label }}</span>\n                                            </a>\n                                        }\n                                    }\n                                </div>\n                            }\n                        </div>\n                    }\n                } @else {\n                    <div class=\"m-empty\">\n                        {{\n                            texts?.notFound ??\n                                'No se encontraron resultados con esos filtros.'\n                        }}\n                    </div>\n                }\n            </div>\n        </div>\n    </section>\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { BabylonItemI, BabylonTextInfoI } from '../../../../interfaces';\nimport { getFirstImageByTagFromImages } from '../../../../utils/mutimedia.utils';\n\nexport interface SliC1ImgSvgContent {\n    image: string;\n    tagText: string;\n    icon: string;\n}\n\n@Component({\n    selector: 'sli-c1-img-svg',\n    standalone: true,\n    encapsulation: ViewEncapsulation.None,\n    imports: [CommonModule],\n    templateUrl: './sli-c1-img-svg.component.html',\n    styleUrl: './sli-c1-img-svg.component.scss',\n})\nexport class SliC1ImgSvgComponent {\n    @Input() texts?: BabylonTextInfoI;\n    @Input() items?: BabylonItemI[];\n    @Input() nohover?: boolean = false;\n\n    tagName: string = 'SliC1ImgSvg';\n\n    getFirstImageByTag(tagName: string, imagenes: any[]) {\n        return getFirstImageByTagFromImages(imagenes, tagName);\n    }\n}\n","<section class=\"mdl-mdh012\">\n    <div class=\"mdl-container\">\n        @if (items?.[0]; as img) {\n            <img\n                [src]=\"\n                    img?.img?.src ||\n                    'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                \"\n                [alt]=\"img?.img?.alt || img?.title || 'image'\"\n            />\n        }\n        <div class=\"m-tag\">\n            @if (items?.[0]?.title ?? texts?.title) {\n                <div class=\"m-texto\">\n                    {{ items?.[0]?.title ?? texts?.title }}\n                </div>\n            }\n        </div>\n        @if (getFirstImageByTag(tagName, items ?? []); as img) {\n            <div class=\"m-icono\">\n                <img\n                    [src]=\"\n                        img?.img?.src ||\n                        'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                    \"\n                    [alt]=\"img?.img?.alt || img?.title || 'image'\"\n                />\n            </div>\n        }\n        <div class=\"m-marco\"></div>\n    </div>\n</section>\n","import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n    AfterViewInit,\n    Component,\n    ElementRef,\n    inject,\n    Input,\n    OnChanges,\n    OnDestroy,\n    OnInit,\n    PLATFORM_ID,\n    SimpleChanges,\n    ViewChild,\n} from '@angular/core';\nimport Swiper, { Autoplay, Navigation } from 'swiper';\nimport {\n    BabylonImageI,\n    BabylonMultimediaI,\n    BabylonRoomDetailI,\n} from '../../../../interfaces';\nimport { BabylonStyleGlobalItem } from '../../../../interfaces/babylon-style.interface';\nimport {\n    getFirstImageByTagFromMultimedia,\n    getImagesByTagFromMultimedia,\n} from '../../../../utils/mutimedia.utils';\n\n@Component({\n    selector: 'sli-c2-img',\n    standalone: true,\n    imports: [CommonModule],\n    templateUrl: './sli-c2-img.component.html',\n    styleUrl: './sli-c2-img.component.scss',\n})\nexport class SliC2ImgComponent\n    implements OnInit, AfterViewInit, OnChanges, OnDestroy\n{\n    @Input() multimedia?: BabylonMultimediaI;\n    @Input() reverse?: boolean = false;\n    @Input() rooms?: BabylonRoomDetailI[];\n    @Input() styles?: BabylonStyleGlobalItem;\n\n    tagName: string = 'SliC2Img';\n    tagNameVertical: string = 'SliC2ImgVertical';\n\n    imagesSlider: BabylonImageI[] = [];\n\n    private readonly platformId = inject(PLATFORM_ID);\n\n    @ViewChild('swiperContainer')\n    private swiperContainer?: ElementRef<HTMLDivElement>;\n    @ViewChild('nextButton') private nextButton?: ElementRef<HTMLButtonElement>;\n    @ViewChild('prevButton') private prevButton?: ElementRef<HTMLButtonElement>;\n\n    private swiperInstance?: Swiper;\n\n    ngOnInit(): void {\n        this.imagesSlider =\n            this.multimedia?.imagenes ??\n            this.getImagesByTag(this.tagName, this.rooms?.[0]?.multimedia) ??\n            this.rooms?.[0]?.multimedia?.imagenes ??\n            [];\n    }\n\n    ngAfterViewInit(): void {\n        if (!isPlatformBrowser(this.platformId)) return;\n        this.setupSwiper();\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if (!isPlatformBrowser(this.platformId)) return;\n        if (changes['content'] && !changes['content'].firstChange) {\n            this.setupSwiper();\n        }\n\n        if (this.imagesSlider.length == 0) {\n            this.imagesSlider =\n                this.multimedia?.imagenes ??\n                this.getImagesByTag(\n                    this.tagName,\n                    this.rooms?.[0]?.multimedia\n                ) ??\n                this.rooms?.[0]?.multimedia?.imagenes ??\n                [];\n        }\n    }\n\n    ngOnDestroy(): void {\n        if (!isPlatformBrowser(this.platformId)) return;\n        this.destroySwiper();\n    }\n\n    trackByIndex(index: number): number {\n        return index;\n    }\n\n    private setupSwiper(): void {\n        queueMicrotask(() => {\n            if (!this.swiperContainer) {\n                return;\n            }\n\n            this.destroySwiper();\n\n            const autoplayDelay = this.resolveAutoplayDelay();\n\n            this.swiperInstance = new Swiper(\n                this.swiperContainer.nativeElement,\n                {\n                    modules: [Navigation, Autoplay],\n                    slidesPerView: 'auto',\n                    spaceBetween: 20,\n                    loop: false,\n                    speed: 750,\n                    freeMode: false,\n                    autoplay: autoplayDelay\n                        ? {\n                              delay: autoplayDelay,\n                              disableOnInteraction: false,\n                          }\n                        : false,\n                    navigation: {\n                        nextEl: this.nextButton?.nativeElement ?? undefined,\n                        prevEl: this.prevButton?.nativeElement ?? undefined,\n                    },\n                }\n            );\n        });\n    }\n\n    private resolveAutoplayDelay(): number | null {\n        const value = Number(5000);\n        if (!Number.isFinite(value) || value <= 0) {\n            return null;\n        }\n\n        return Math.floor(value);\n    }\n\n    private destroySwiper(): void {\n        this.swiperInstance?.destroy(true, true);\n        this.swiperInstance = undefined;\n    }\n\n    getImagesByTag(tagName: string, multimedia: any) {\n        return getImagesByTagFromMultimedia(multimedia, tagName);\n    }\n\n    getFirstImageByTag(tagName: string, multimedia: any) {\n        return getFirstImageByTagFromMultimedia(multimedia, tagName);\n    }\n}\n","<!-- COMENTARIO CONEXIÓN: Añadir clase 'reverse' para invertir la posición del slide -->\n@if (multimedia || rooms?.[0]?.multimedia) {\n    <section class=\"mdl-mdh007mdh008\" [class.reverse]=\"reverse\">\n        <div class=\"mdl-container\">\n            @if (multimedia || rooms?.[0]?.multimedia) {\n                @if (\n                    multimedia?.staticImagenes?.[0] ??\n                        getFirstImageByTag(\n                            tagNameVertical,\n                            rooms?.[0]?.multimedia\n                        );\n                    as staticImage\n                ) {\n                    <div class=\"m-img\">\n                        <img\n                            [src]=\"\n                                staticImage?.img?.src ||\n                                'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                            \"\n                            [alt]=\"staticImage?.img?.alt\"\n                            loading=\"lazy\"\n                        />\n                    </div>\n                }\n                @if (\n                    (multimedia?.imagenes ||\n                        rooms?.[0]?.multimedia?.imagenes) &&\n                    imagesSlider.length > 0\n                ) {\n                    <div class=\"swiper-container\">\n                        <div class=\"swiper-overflow swiper\" #swiperContainer>\n                            <div class=\"swiper-wrapper\">\n                                @for (slide of imagesSlider; track $index) {\n                                    <div class=\"swiper-slide\">\n                                        <img\n                                            [src]=\"\n                                                slide?.img?.src ||\n                                                'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                            \"\n                                            [alt]=\"slide?.img?.alt ?? 'image'\"\n                                        />\n                                    </div>\n                                }\n                            </div>\n                        </div>\n\n                        <button\n                            #nextButton\n                            type=\"button\"\n                            class=\"m-swiper-button next\"\n                            aria-label=\"Siguiente imagen\"\n                            [style.--arrow-color]=\"styles?.primary ?? '#ff4338'\"\n                            [style.--arrow-hover-color]=\"\n                                styles?.primaryHover ??\n                                styles?.primary ??\n                                '#ed3b37'\n                            \"\n                        >\n                            <svg\n                                width=\"7\"\n                                height=\"12\"\n                                viewBox=\"0 0 7 12\"\n                                fill=\"none\"\n                                xmlns=\"http://www.w3.org/2000/svg\"\n                            >\n                                <path\n                                    d=\"M6.71533 5.31548L1.65157 0.281695C1.46948 0.100676 1.22288 -0.000650459 0.966022 3.77247e-06C0.709163 0.000657051 0.463085 0.103239 0.281921 0.285182C0.100757 0.467126 -0.000651881 0.713526 2.66678e-06 0.970178C0.000657215 1.22683 0.103322 1.47271 0.285411 1.65373L4.67307 5.98705L0.288403 10.3463C0.106314 10.5273 0.00364923 10.7732 0.0029947 11.0298C0.00234018 11.2865 0.103749 11.5329 0.284913 11.7148C0.466077 11.8968 0.712156 11.9993 0.969015 12C1.22587 12.0007 1.47247 11.8993 1.65456 11.7183L6.71633 6.68651C6.89815 6.50457 7.00019 6.25791 7 6.00079C6.99981 5.74367 6.89741 5.49716 6.71533 5.31548Z\"\n                                    fill=\"white\"\n                                ></path>\n                            </svg>\n                        </button>\n                        <button\n                            #prevButton\n                            type=\"button\"\n                            class=\"m-swiper-button prev\"\n                            aria-label=\"Imagen anterior\"\n                            [style.--arrow-color]=\"styles?.primary ?? '#ff4338'\"\n                            [style.--arrow-hover-color]=\"\n                                styles?.primaryHover ??\n                                styles?.primary ??\n                                '#ed3b37'\n                            \"\n                        >\n                            <svg\n                                width=\"7\"\n                                height=\"12\"\n                                viewBox=\"0 0 7 12\"\n                                fill=\"none\"\n                                xmlns=\"http://www.w3.org/2000/svg\"\n                            >\n                                <path\n                                    d=\"M0.28467 5.31548L5.34843 0.281695C5.53052 0.100676 5.77712 -0.000650459 6.03398 3.77247e-06C6.29084 0.000657051 6.53692 0.103239 6.71808 0.285182C6.89924 0.467126 7.00065 0.713526 7 0.970178C6.99934 1.22683 6.89668 1.47271 6.71459 1.65373L2.32693 5.98705L6.7116 10.3463C6.89369 10.5273 6.99635 10.7732 6.99701 11.0298C6.99766 11.2865 6.89625 11.5329 6.71509 11.7148C6.53392 11.8968 6.28784 11.9993 6.03099 12C5.77413 12.0007 5.52753 11.8993 5.34544 11.7183L0.283673 6.68651C0.101853 6.50457 -0.000186192 6.25791 7.39071e-07 6.00079C0.00018767 5.74367 0.102586 5.49716 0.28467 5.31548Z\"\n                                    fill=\"white\"\n                                ></path>\n                            </svg>\n                        </button>\n                    </div>\n                }\n            }\n        </div>\n    </section>\n}\n","import { isPlatformBrowser } from '@angular/common';\nimport {\n    AfterViewInit,\n    Directive,\n    PLATFORM_ID,\n    inject,\n} from '@angular/core';\nimport { Utils } from '../../utils';\n\n@Directive({\n    selector: '[babylonSwiperCssLoader]',\n    standalone: true,\n})\nexport class BabylonSwiperCssLoaderDirective implements AfterViewInit {\n    private readonly platform = inject(PLATFORM_ID);\n\n    ngAfterViewInit(): void {\n        if (!isPlatformBrowser(this.platform)) return;\n        Utils.loadStyle$('assets/babylon/css/swiper-bundle.min.css').subscribe();\n    }\n}\n","import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n  AfterViewInit,\n  Component,\n  ElementRef,\n  inject,\n  Input,\n  NgZone,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  PLATFORM_ID,\n  SimpleChanges,\n  ViewChild,\n  ViewEncapsulation\n} from '@angular/core';\nimport Swiper from 'swiper';\nimport { Autoplay, Pagination } from 'swiper';\nimport { BabylonSwiperCssLoaderDirective } from '../../../../directives/babylon-sliders/babylon-swiper-css-loader.directive';\nimport { BabylonLinkTypeDirective } from '../../../../directives/link-type/link-type.directive';\nimport { BabylonButtonI, BabylonItemI, BabylonTextInfoI } from '../../../../interfaces';\nimport {\n  SliC2ImgTxtAction,\n  SliC2ImgTxtButton,\n  SliC2ImgTxtImage,\n  SliC2ImgTxtMultimedia,\n  SliC2ImgTxtSlide,\n  SliC2ImgTxtViewModel\n} from './sli-c2-img-txt.interfaces';\n\n@Component({\n  selector: 'sli-c2-img-txt',\n  standalone: true,\n  imports: [CommonModule, BabylonSwiperCssLoaderDirective, BabylonLinkTypeDirective],\n  templateUrl: './sli-c2-img-txt.component.html',\n  styleUrl: './sli-c2-img-txt.component.scss',\n  encapsulation: ViewEncapsulation.Emulated\n})\nexport class SliC2ImgTxtComponent implements OnInit, AfterViewInit, OnChanges, OnDestroy {\n  private readonly platformId = inject(PLATFORM_ID);\n  private sliderInitialized = false;\n  private swiperInstance?: Swiper;\n\n  @Input() texts?: BabylonTextInfoI;\n  @Input() buttons?: BabylonButtonI[];\n  @Input() multimedia?: SliC2ImgTxtMultimedia;\n  @Input() items?: BabylonItemI[];\n  @Input() props?: {\n    texts?: BabylonTextInfoI;\n    buttons?: BabylonButtonI[];\n    multimedia?: SliC2ImgTxtMultimedia;\n    items?: BabylonItemI[];\n  };\n\n  @ViewChild('sectionSlider', { static: false }) sectionSlider?: ElementRef<HTMLElement>;\n  @ViewChild('sliderPagination', { static: false }) sliderPagination?: ElementRef<HTMLElement>;\n\n  readonly viewModel: SliC2ImgTxtViewModel = {\n    pretitle: undefined,\n    sideImage: undefined,\n    slides: [],\n    footerAction: undefined,\n    hasSlides: false\n  };\n\n  constructor(private readonly ngZone: NgZone) {}\n\n  get vm(): SliC2ImgTxtViewModel {\n    return this.viewModel;\n  }\n\n  ngOnInit(): void {\n    this.rebuildViewModel();\n  }\n\n  ngAfterViewInit(): void {\n    this.initSlider();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (!changes['texts'] && !changes['buttons'] && !changes['multimedia'] && !changes['items'] && !changes['props']) {\n      return;\n    }\n\n    this.rebuildViewModel();\n\n    if (!this.sliderInitialized || !isPlatformBrowser(this.platformId)) {\n      return;\n    }\n\n    this.destroySlider();\n    queueMicrotask(() => this.initSlider());\n  }\n\n  ngOnDestroy(): void {\n    this.destroySlider();\n  }\n\n  trackSlide(index: number): number {\n    return index;\n  }\n\n  private rebuildViewModel(): void {\n    const texts = this.texts ?? this.props?.texts;\n    const multimedia = this.multimedia ?? this.props?.multimedia;\n\n    this.viewModel.pretitle = texts?.pretitle?.trim() || texts?.title?.trim() || undefined;\n    this.viewModel.sideImage = this.resolveSideImage(multimedia);\n    this.viewModel.slides = this.resolveSlides(multimedia);\n    this.viewModel.footerAction = this.extractAction(this.resolveButtonsSource());\n    this.viewModel.hasSlides = this.viewModel.slides.length > 0;\n  }\n\n  private initSlider(): void {\n    if (this.sliderInitialized || !isPlatformBrowser(this.platformId) || !this.sectionSlider) {\n      return;\n    }\n\n    const slides = this.viewModel.slides;\n    if (!slides.length) {\n      return;\n    }\n\n    this.ngZone.runOutsideAngular(() => {\n      this.swiperInstance = new Swiper(this.sectionSlider!.nativeElement, {\n        modules: [Autoplay, Pagination],\n        loop: false,\n        slidesPerView: 1,\n        spaceBetween: 20,\n        speed: 600,\n        autoplay:\n          slides.length > 1\n            ? {\n                delay: 3000,\n                disableOnInteraction: false\n              }\n            : false,\n        pagination:\n          slides.length > 1 && this.sliderPagination\n            ? {\n                el: this.sliderPagination.nativeElement,\n                clickable: true,\n                type: 'bullets'\n              }\n            : false,\n        breakpoints: {\n          600: {\n            slidesPerView: 3,\n            spaceBetween: 25\n          },\n          1124: {\n            slidesPerView: 3,\n            spaceBetween: 55\n          }\n        }\n      });\n\n      this.sliderInitialized = true;\n    });\n  }\n\n  private destroySlider(): void {\n    if (!this.sliderInitialized || !this.swiperInstance) {\n      return;\n    }\n\n    this.swiperInstance.destroy(true, true);\n    this.swiperInstance = undefined;\n    this.sliderInitialized = false;\n  }\n\n  private resolveSideImage(multimedia?: SliC2ImgTxtMultimedia): { src: string; alt: string } | undefined {\n    // SOLO multimedia.imagen\n    const image = this.extractFirstImage(multimedia?.imagen);\n    const src = this.resolveImageSrc(image);\n\n    if (!src) {\n      return undefined;\n    }\n\n    return {\n      src,\n      alt: image?.img?.alt ?? image?.alt ?? ''\n    };\n  }\n\n  private extractFirstImage(value: unknown): SliC2ImgTxtImage | undefined {\n    if (Array.isArray(value)) {\n      return value[0] as SliC2ImgTxtImage | undefined;\n    }\n\n    if (value && typeof value === 'object') {\n      const candidate = value as Record<string, unknown>;\n      if ('path' in candidate || 'img' in candidate || 'thumbnails' in candidate) {\n        return value as SliC2ImgTxtImage;\n      }\n\n      const indexed = candidate['0'];\n      if (indexed && typeof indexed === 'object') {\n        return indexed as SliC2ImgTxtImage;\n      }\n    }\n\n    return undefined;\n  }\n\n  private resolveSlides(multimedia?: SliC2ImgTxtMultimedia): SliC2ImgTxtSlide[] {\n    // SOLO multimedia.imagenes\n    const multimediaSlides = this.mapImagesToSlides(multimedia?.imagenes);\n    if (multimediaSlides.length > 0) {\n      return multimediaSlides;\n    }\n\n    // si NO quieres que caiga a items, borra todo lo de aquí abajo\n    const itemsSource = this.items ?? this.props?.items;\n    return (\n      itemsSource\n        ?.map((item) => {\n          const image = (item?.multimedia as SliC2ImgTxtMultimedia | undefined)?.imagenes?.[0] as\n            | SliC2ImgTxtImage\n            | undefined;\n          const src = this.resolveImageSrc(image);\n          if (!src) {\n            return undefined;\n          }\n\n          const title =\n            image?.title?.trim() ||\n            item?.texts?.title?.trim() ||\n            item?.title?.trim() ||\n            item?.label?.trim() ||\n            undefined;\n          const action = this.extractAction(item?.buttons ?? image?.buttons) ?? {\n            label: title ?? '',\n            href: '#',\n            linkType: 'external_link',\n            target: '_self'\n          };\n\n          return {\n            src,\n            alt: image?.img?.alt ?? image?.alt ?? title ?? '',\n            title,\n            action\n          } as SliC2ImgTxtSlide;\n        })\n        .filter(Boolean) as SliC2ImgTxtSlide[]\n    ) ?? [];\n  }\n\n  private mapImagesToSlides(images?: SliC2ImgTxtImage[]): SliC2ImgTxtSlide[] {\n    if (!Array.isArray(images)) {\n      return [];\n    }\n\n    return images.reduce<SliC2ImgTxtSlide[]>((acc, image) => {\n      if (image?.active === false) {\n        return acc;\n      }\n\n      const src = this.resolveImageSrc(image);\n      if (!src) {\n        return acc;\n      }\n\n      const title = image?.title?.trim() || image?.nd_title?.trim() || undefined;\n      const action = this.extractAction(image?.buttons) ?? {\n        label: title ?? '',\n        href: '#',\n        linkType: 'external_link',\n        target: '_self'\n      };\n\n      acc.push({\n        src,\n        alt: image?.img?.alt ?? image?.alt ?? title ?? '',\n        title,\n        action\n      });\n\n      return acc;\n    }, []);\n  }\n\n  private resolveButtonsSource(): BabylonButtonI[] | undefined {\n    if (Array.isArray(this.buttons) && this.buttons.length) {\n      return this.buttons;\n    }\n\n    if (Array.isArray(this.props?.buttons) && this.props?.buttons.length) {\n      return this.props?.buttons;\n    }\n\n    const multimediaButtons = this.multimedia?.imagenes?.find((image) => image?.buttons?.length)?.buttons;\n    if (Array.isArray(multimediaButtons) && multimediaButtons.length) {\n      return multimediaButtons as BabylonButtonI[];\n    }\n\n    const propsMultimediaButtons = this.props?.multimedia?.imagenes?.find((image) => image?.buttons?.length)?.buttons;\n    if (Array.isArray(propsMultimediaButtons) && propsMultimediaButtons.length) {\n      return propsMultimediaButtons as BabylonButtonI[];\n    }\n\n    const itemsSource = this.items ?? this.props?.items;\n    const itemButtons = itemsSource?.find((item) => item?.buttons?.length)?.buttons;\n    if (Array.isArray(itemButtons) && itemButtons.length) {\n      return itemButtons;\n    }\n\n    return undefined;\n  }\n\n  private extractAction(buttons?: Array<SliC2ImgTxtButton | BabylonButtonI>): SliC2ImgTxtAction | undefined {\n    if (!Array.isArray(buttons) || buttons.length === 0) {\n      return undefined;\n    }\n\n    const button = buttons[0] as SliC2ImgTxtButton;\n\n    return {\n      label: button?.label?.trim() ?? '',\n      href: this.getFirstNonEmptyLink(button?.url, button?.link_value, button?.linkValue) ?? '#',\n      linkType: button?.linkType ?? button?.link_type ?? 'external_link',\n      target: button?.target ?? '_self'\n    };\n  }\n\n  private resolveImageSrc(image?: SliC2ImgTxtImage): string {\n    const rawSrc =\n      image?.img?.src ??\n      image?.src ??\n      image?.path?.webp ??\n      image?.path?.original ??\n      image?.thumbnails?.[1366]?.webp ??\n      image?.thumbnails?.[1280]?.webp ??\n      image?.thumbnails?.[1024]?.webp ??\n      image?.thumbnails?.[768]?.webp ??\n      image?.thumbnails?.[540]?.webp ??\n      image?.thumbnails?.[375]?.webp ??\n      image?.thumbnails?.[1366]?.original ??\n      image?.thumbnails?.[1280]?.original ??\n      image?.thumbnails?.[1024]?.original ??\n      image?.thumbnails?.[768]?.original ??\n      image?.thumbnails?.[540]?.original ??\n      image?.thumbnails?.[375]?.original ??\n      '';\n\n    if (!rawSrc || typeof rawSrc !== 'string') {\n      return '';\n    }\n\n    if (\n      rawSrc.startsWith('http://') ||\n      rawSrc.startsWith('https://') ||\n      rawSrc.startsWith('//') ||\n      rawSrc.startsWith('data:') ||\n      rawSrc.startsWith('blob:') ||\n      rawSrc.startsWith('/')\n    ) {\n      return rawSrc;\n    }\n\n    return `/${rawSrc}`;\n  }\n\n  private getFirstNonEmptyLink(...candidates: Array<string | undefined>): string | undefined {\n    return candidates.find((value) => typeof value === 'string' && value.trim().length > 0)?.trim();\n  }\n}\n","@if (vm.hasSlides) {\n  <section class=\"mdl-SliC2ImgTxt\">\n    <div class=\"mdl-container\">\n      @if (vm.sideImage; as sideImage) {\n        <div class=\"m-left\">\n          <img [src]=\"sideImage.src\" [alt]=\"sideImage.alt\" loading=\"lazy\" />\n        </div>\n      }\n\n      <div class=\"m-right\" [class.m-right-full]=\"!vm.sideImage\">\n        @if (vm.pretitle) {\n          <div class=\"m-titulo\" [innerHTML]=\"vm.pretitle\"></div>\n        }\n\n        <div class=\"swiper\" #sectionSlider babylonSwiperCssLoader>\n          <div class=\"swiper-wrapper\">\n            @for (slide of vm.slides; track trackSlide($index)) {\n              <a\n                class=\"swiper-slide\"\n                [href]=\"slide.action.href\"\n                [linkType]=\"slide.action.linkType\"\n                [attr.target]=\"slide.action.target\"\n                [attr.rel]=\"slide.action.target === '_blank' ? 'noopener noreferrer' : null\"\n                [attr.aria-label]=\"slide.action.label || slide.title || null\"\n              >\n                <div class=\"m-imagen\">\n                  <img [src]=\"slide.src\" [alt]=\"slide.alt\" loading=\"lazy\" />\n                </div>\n                @if (slide.title) {\n                  <div class=\"m-titulo\">{{ slide.title }}</div>\n                }\n              </a>\n            }\n          </div>\n\n          @if (vm.slides.length > 1) {\n            <div class=\"swiper-pagination\" #sliderPagination></div>\n          }\n        </div>\n\n        @if (vm.footerAction; as action) {\n          <div class=\"m-buttons\">\n            <a\n              class=\"m-buttonD\"\n              [href]=\"action.href\"\n              [linkType]=\"action.linkType\"\n              [attr.target]=\"action.target\"\n              [attr.rel]=\"action.target === '_blank' ? 'noopener noreferrer' : null\"\n            >\n              {{ action.label }}\n            </a>\n          </div>\n        }\n      </div>\n    </div>\n  </section>\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { SliC2ImgTxtCtaV3Content } from './sli-c2-img-txt-cta-v3.interfaces';\n\n@Component({\n    selector: 'sli-c2-img-txt-cta-v3',\n    standalone: true,\n    imports: [CommonModule],\n    templateUrl: './sli-c2-img-txt-cta-v3.component.html',\n    styleUrl: './sli-c2-img-txt-cta-v3.component.scss',\n})\nexport class SliC2ImgTxtCtaV3Component {\n    private readonly fallbackContent: SliC2ImgTxtCtaV3Content = {\n        title: '',\n        mainImage: {\n            url: '',\n            alt: '',\n        },\n        centralImage: {\n            url: '/assets/babylon/svg/icons/rewards.svg',\n            alt: '',\n        },\n        floatingImage: {\n            url: '/assets/babylon/svg/icons/hearts.svg',\n            alt: '',\n        },\n        description: '',\n        primaryButton: {\n            label: '',\n        },\n        secondaryButton: {\n            label: '',\n        },\n    } as SliC2ImgTxtCtaV3Content;\n\n    @Input() content: SliC2ImgTxtCtaV3Content = this.fallbackContent;\n\n    @Input() reverse?: boolean = false;\n}\n","<section class=\"mdl-mdh020\" [class.reverse]=\"reverse\">\n    <div class=\"mdl-container\">\n        <div class=\"m-titulo\">{{ content.title }}</div>\n\n        <img\n            *ngIf=\"content.centralImage\"\n            class=\"img-central\"\n            [src]=\"content.centralImage.url\"\n            [alt]=\"content.centralImage.alt\"\n            loading=\"lazy\"\n        />\n\n        <img\n            *ngIf=\"content.floatingImage\"\n            class=\"img-lateral\"\n            [src]=\"content.floatingImage.url\"\n            [alt]=\"content.floatingImage.alt\"\n            loading=\"lazy\"\n        />\n\n        <div class=\"m-content\">\n            <div class=\"m-left\">\n                <img\n                    [src]=\"content.mainImage.url\"\n                    [alt]=\"content.mainImage.alt\"\n                    loading=\"lazy\"\n                />\n            </div>\n            <div class=\"m-right\">\n                <div class=\"m-group\">\n                    <div class=\"m-texto\">\n                        {{ content.description }}\n                    </div>\n                    <div class=\"m-buttons\">\n                        <ng-container *ngIf=\"content.primaryButton as button\">\n                            <a\n                                *ngIf=\"button.url; else primaryButton\"\n                                class=\"m-button-sm\"\n                                [ngClass]=\"button.variant\"\n                                [href]=\"button.url\"\n                                [attr.target]=\"button.target || '_self'\"\n                                [attr.rel]=\"\n                                    (button.target || '_self') === '_blank'\n                                        ? 'noopener noreferrer'\n                                        : null\n                                \"\n                                [attr.aria-label]=\"\n                                    button.ariaLabel || button.label\n                                \"\n                            >\n                                <span>{{ button.label }}</span>\n                            </a>\n                            <ng-template #primaryButton>\n                                <button\n                                    type=\"button\"\n                                    class=\"m-button-sm\"\n                                    [ngClass]=\"button.variant\"\n                                    [attr.aria-label]=\"\n                                        button.ariaLabel || button.label\n                                    \"\n                                >\n                                    <span>{{ button.label }}</span>\n                                </button>\n                            </ng-template>\n                        </ng-container>\n\n                        <ng-container\n                            *ngIf=\"content.secondaryButton as secondary\"\n                        >\n                            <a\n                                *ngIf=\"secondary.url; else secondaryButton\"\n                                class=\"m-underline\"\n                                [href]=\"secondary.url\"\n                                [attr.target]=\"secondary.target || '_self'\"\n                                [attr.rel]=\"\n                                    (secondary.target || '_self') === '_blank'\n                                        ? 'noopener noreferrer'\n                                        : null\n                                \"\n                                [attr.aria-label]=\"\n                                    secondary.ariaLabel || secondary.label\n                                \"\n                            >\n                                {{ secondary.label }}\n                            </a>\n                            <ng-template #secondaryButton>\n                                <button\n                                    type=\"button\"\n                                    class=\"m-underline\"\n                                    [attr.aria-label]=\"\n                                        secondary.ariaLabel || secondary.label\n                                    \"\n                                >\n                                    {{ secondary.label }}\n                                </button>\n                            </ng-template>\n                        </ng-container>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n</section>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, ViewEncapsulation } from '@angular/core';\n\nexport interface SliC2ImgTxtCv5Button {\n    label: string;\n    url?: string;\n    target?: string;\n    ariaLabel?: string;\n    variant?: 'red' | 'default';\n}\n\nexport interface SliC2ImgTxtCv5Room {\n    image: string;\n    title: string;\n    features: string[];\n    description: string;\n    primaryButton: SliC2ImgTxtCv5Button;\n    secondaryButton: SliC2ImgTxtCv5Button;\n}\n\nexport interface SliC2ImgTxtCv5Content {\n    rooms: SliC2ImgTxtCv5Room[];\n}\n\nconst DEFAULT_CONTENT: SliC2ImgTxtCv5Content = {\n    rooms: [\n        {\n            image: '',\n            title: '',\n            features: [],\n            description: '',\n            primaryButton: {\n                label: '',\n                url: '',\n            },\n            secondaryButton: {\n                label: '',\n                url: '',\n            },\n        },\n    ],\n} as SliC2ImgTxtCv5Content;\n\n@Component({\n    selector: 'sli-c2-img-txt-cv5',\n    standalone: true,\n    encapsulation: ViewEncapsulation.None,\n    imports: [CommonModule],\n    templateUrl: './sli-c2-img-txt-cv5.component.html',\n    styleUrl: './sli-c2-img-txt-cv5.component.scss',\n})\nexport class SliC2ImgTxtCv5Component {\n    @Input() content: SliC2ImgTxtCv5Content = DEFAULT_CONTENT;\n\n    trackByRoom(index: number, room: SliC2ImgTxtCv5Room): string {\n        return room.title ?? `${index}`;\n    }\n}\n","<section class=\"mdl-mdh003\" *ngIf=\"content.rooms?.length\">\n  <div class=\"mdl-container\">\n    <div class=\"m-room\" *ngFor=\"let room of content.rooms; trackBy: trackByRoom; let idx = index\" [class.is-even]=\"idx % 2 === 1\">\n      <div class=\"m-room-container\">\n        <div class=\"m-img\">\n          <img [src]=\"room.image\" [alt]=\"room.title\" />\n        </div>\n        <div class=\"m-content\">\n          <div class=\"m-group\">\n            <div class=\"m-title\">{{ room.title }}</div>\n            <div class=\"m-features\" *ngIf=\"room.features?.length\">\n              <span *ngFor=\"let feature of room.features\">{{ feature }}</span>\n            </div>\n          </div>\n          <div class=\"m-text\">{{ room.description }}</div>\n          <div class=\"m-group\">\n            <a\n              class=\"m-button-sm\"\n              [ngClass]=\"{ red: room.primaryButton.variant !== 'default' }\"\n              [href]=\"room.primaryButton.url || '#'\"\n              [attr.target]=\"room.primaryButton.target || '_self'\"\n              [attr.aria-label]=\"room.primaryButton.ariaLabel || room.primaryButton.label\"\n              [attr.rel]=\"(room.primaryButton.target || '_self') === '_blank' ? 'noopener noreferrer' : null\"\n            >\n              <span>{{ room.primaryButton.label }}</span>\n            </a>\n            <a\n              class=\"m-underline-red\"\n              [href]=\"room.secondaryButton.url || '#'\"\n              [attr.target]=\"room.secondaryButton.target || '_self'\"\n              [attr.aria-label]=\"room.secondaryButton.ariaLabel || room.secondaryButton.label\"\n              [attr.rel]=\"(room.secondaryButton.target || '_self') === '_blank' ? 'noopener noreferrer' : null\"\n            >\n              <span>{{ room.secondaryButton.label }}</span>\n            </a>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</section>\n","import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n    AfterViewInit,\n    Component,\n    ElementRef,\n    inject,\n    Input,\n    OnChanges,\n    OnDestroy,\n    PLATFORM_ID,\n    SimpleChanges,\n    ViewChild,\n} from '@angular/core';\nimport Swiper, { Autoplay, EffectFade, Navigation, Pagination } from 'swiper';\nimport type { SwiperOptions } from 'swiper/types';\n\nSwiper.use([Navigation, Pagination, Autoplay, EffectFade]);\n\nimport { SliC2ImgV2Content } from './sli-c2-img-v2.interfaces';\n\n@Component({\n    selector: 'sli-c2-img-v2',\n    standalone: true,\n    imports: [CommonModule],\n    templateUrl: './sli-c2-img-v2.component.html',\n    styleUrl: './sli-c2-img-v2.component.scss',\n})\nexport class SliC2ImgV2Component\n    implements AfterViewInit, OnChanges, OnDestroy\n{\n    private platformId = inject(PLATFORM_ID);\n    private readonly fallbackContent: SliC2ImgV2Content = {\n        slidesPerView: 1,\n        reverseLayout: false,\n        autoplayDelayMs: 5000,\n        sideImage: {\n            url: '',\n            alt: '',\n        },\n        slides: [\n            {\n                imageUrl: '',\n                imageAlt: '',\n            },\n        ],\n    } as SliC2ImgV2Content;\n\n    @Input() content: SliC2ImgV2Content = this.fallbackContent;\n\n    @ViewChild('swiperContainer')\n    private swiperContainer?: ElementRef<HTMLDivElement>;\n    @ViewChild('nextButton') private nextButton?: ElementRef<HTMLButtonElement>;\n    @ViewChild('prevButton') private prevButton?: ElementRef<HTMLButtonElement>;\n\n    private swiperInstance?: Swiper;\n\n    ngAfterViewInit(): void {\n        if (!isPlatformBrowser(this.platformId)) return;\n        this.setupSwiper();\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if (!isPlatformBrowser(this.platformId)) return;\n        if (changes['content'] && !changes['content'].firstChange) {\n            this.setupSwiper();\n        }\n    }\n\n    ngOnDestroy(): void {\n        if (!isPlatformBrowser(this.platformId)) return;\n        this.destroySwiper();\n    }\n\n    trackByIndex(index: number): number {\n        return index;\n    }\n\n    private setupSwiper(): void {\n        if (!isPlatformBrowser(this.platformId)) return;\n        queueMicrotask(() => {\n            if (!this.swiperContainer) {\n                return;\n            }\n\n            this.destroySwiper();\n\n            const {\n                defaultSlides,\n                mobileSlides,\n                baseSpaceBetween,\n                autoplayDelay,\n            } = this.resolveSliderMetrics();\n\n            const options: SwiperOptions = {\n                modules: [Navigation, Autoplay],\n                slidesPerView: defaultSlides,\n                spaceBetween: baseSpaceBetween,\n                loop: false,\n                speed: 750,\n                freeMode: false,\n                autoplay: autoplayDelay\n                    ? {\n                          delay: autoplayDelay,\n                          disableOnInteraction: false,\n                      }\n                    : false,\n                navigation: {\n                    nextEl: this.nextButton?.nativeElement ?? undefined,\n                    prevEl: this.prevButton?.nativeElement ?? undefined,\n                },\n                breakpoints: this.buildBreakpoints(\n                    mobileSlides,\n                    defaultSlides,\n                    baseSpaceBetween\n                ),\n            };\n\n            this.swiperInstance = new Swiper(\n                this.swiperContainer.nativeElement,\n                options\n            );\n        });\n    }\n\n    private destroySwiper(): void {\n        if (!isPlatformBrowser(this.platformId)) return;\n        this.swiperInstance?.destroy(true, true);\n        this.swiperInstance = undefined;\n    }\n\n    private resolveSliderMetrics(): {\n        defaultSlides: number;\n        mobileSlides: number;\n        baseSpaceBetween: number;\n        autoplayDelay: number;\n    } {\n        const slidesLength = this.content.slides?.length ?? 1;\n        const configuredSlides = this.content.slidesPerView ?? slidesLength;\n        const normalizedSlides = this.normalizeSlides(configuredSlides);\n        const defaultSlides = normalizedSlides;\n        const mobileSlides =\n            normalizedSlides === 3\n                ? 2\n                : normalizedSlides === 2\n                  ? 1\n                  : normalizedSlides;\n        const baseSpaceBetween = normalizedSlides === 2 ? 71 : 50;\n        const autoplayDelay = this.content.autoplayDelayMs ?? 5000;\n\n        return {\n            defaultSlides,\n            mobileSlides,\n            baseSpaceBetween,\n            autoplayDelay,\n        };\n    }\n\n    private buildBreakpoints(\n        mobileSlides: number,\n        defaultSlides: number,\n        baseSpaceBetween: number\n    ) {\n        const scale = (value: number) => Math.round(baseSpaceBetween * value);\n\n        return {\n            0: {\n                slidesPerView: mobileSlides,\n                spaceBetween: scale(0.2),\n            },\n            375: {\n                slidesPerView: defaultSlides,\n                spaceBetween: scale(0.25),\n            },\n            540: {\n                slidesPerView: defaultSlides,\n                spaceBetween: scale(0.35),\n            },\n            768: {\n                slidesPerView: defaultSlides,\n                spaceBetween: scale(0.4),\n            },\n            1024: {\n                slidesPerView: defaultSlides,\n                spaceBetween: scale(0.8),\n            },\n            1280: {\n                slidesPerView: defaultSlides,\n                spaceBetween: scale(0.88),\n            },\n            1366: {\n                slidesPerView: defaultSlides,\n                spaceBetween: scale(0.95),\n            },\n            1680: {\n                slidesPerView: defaultSlides,\n                spaceBetween: baseSpaceBetween,\n            },\n        };\n    }\n\n    private normalizeSlides(value?: number): 1 | 2 | 3 {\n        const parsed = Number(value);\n        if (!Number.isFinite(parsed) || parsed < 1) {\n            return 1;\n        }\n\n        const clamped = Math.min(Math.max(Math.floor(parsed), 1), 3);\n        return clamped as 1 | 2 | 3;\n    }\n}\n","<!-- COMENTARIO CONEXIÓN: Añadir opción clase reverse para invertir la posición del slide -->\n<section class=\"mdl-mdh007mdh008\" [class.reverse]=\"content.reverseLayout\">\n  <div class=\"mdl-container\">\n    <div class=\"m-img\" *ngIf=\"content.sideImage as sideImage\">\n      <img [src]=\"sideImage.url\" [alt]=\"sideImage.alt\" loading=\"lazy\" />\n    </div>\n\n    <div class=\"swiper-container\" *ngIf=\"content.slides?.length\">\n      <div class=\"swiper-overflow swiper\" #swiperContainer>\n        <div class=\"swiper-wrapper\">\n          <div class=\"swiper-slide\" *ngFor=\"let slide of content.slides; trackBy: trackByIndex\">\n            <img [src]=\"slide.imageUrl\" [alt]=\"slide.imageAlt\" loading=\"lazy\" />\n          </div>\n        </div>\n      </div>\n\n      <button\n        #nextButton\n        type=\"button\"\n        class=\"m-swiper-button next\"\n        aria-label=\"Siguiente imagen\"\n      >\n        <svg width=\"7\" height=\"12\" viewBox=\"0 0 7 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n          <path\n            d=\"M6.71533 5.31548L1.65157 0.281695C1.46948 0.100676 1.22288 -0.000650459 0.966022 3.77247e-06C0.709163 0.000657051 0.463085 0.103239 0.281921 0.285182C0.100757 0.467126 -0.000651881 0.713526 2.66678e-06 0.970178C0.000657215 1.22683 0.103322 1.47271 0.285411 1.65373L4.67307 5.98705L0.288403 10.3463C0.106314 10.5273 0.00364923 10.7732 0.0029947 11.0298C0.00234018 11.2865 0.103749 11.5329 0.284913 11.7148C0.466077 11.8968 0.712156 11.9993 0.969015 12C1.22587 12.0007 1.47247 11.8993 1.65456 11.7183L6.71633 6.68651C6.89815 6.50457 7.00019 6.25791 7 6.00079C6.99981 5.74367 6.89741 5.49716 6.71533 5.31548Z\"\n            fill=\"white\"\n          ></path>\n        </svg>\n      </button>\n      <button\n        #prevButton\n        type=\"button\"\n        class=\"m-swiper-button prev\"\n        aria-label=\"Imagen anterior\"\n      >\n        <svg width=\"7\" height=\"12\" viewBox=\"0 0 7 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n          <path\n            d=\"M0.28467 5.31548L5.34843 0.281695C5.53052 0.100676 5.77712 -0.000650459 6.03398 3.77247e-06C6.29084 0.000657051 6.53692 0.103239 6.71808 0.285182C6.89924 0.467126 7.00065 0.713526 7 0.970178C6.99934 1.22683 6.89668 1.47271 6.71459 1.65373L2.32693 5.98705L6.7116 10.3463C6.89369 10.5273 6.99635 10.7732 6.99701 11.0298C6.99766 11.2865 6.89625 11.5329 6.71509 11.7148C6.53392 11.8968 6.28784 11.9993 6.03099 12C5.77413 12.0007 5.52753 11.8993 5.34544 11.7183L0.283673 6.68651C0.101853 6.50457 -0.000186192 6.25791 7.39071e-07 6.00079C0.00018767 5.74367 0.102586 5.49716 0.28467 5.31548Z\"\n            fill=\"white\"\n          ></path>\n        </svg>\n      </button>\n    </div>\n  </div>\n</section>\n","import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n    AfterViewInit,\n    Component,\n    ElementRef,\n    inject,\n    Input,\n    OnChanges,\n    OnDestroy,\n    PLATFORM_ID,\n    SimpleChanges,\n    ViewChild,\n    ViewEncapsulation,\n} from '@angular/core';\nimport Swiper, { Navigation } from 'swiper';\nimport { BabylonLinkTypeDirective } from '../../../../directives/link-type/link-type.directive';\nimport {\n    BabylonItemI,\n    BabylonMultimediaI,\n    BabylonTextInfoI,\n} from '../../../../interfaces';\nimport { BabylonStyleGlobalItem } from '../../../../interfaces/babylon-style.interface';\nSwiper.use([Navigation]);\n\nexport interface SliC2TxtCarImgCButton {\n    label: string;\n    url?: string;\n    target?: string;\n    ariaLabel?: string;\n}\n\nexport interface SliC2TxtCarImgCSlide {\n    mainImage: string;\n    detailImage: string;\n    title: string;\n    description: string;\n    button?: SliC2TxtCarImgCButton;\n}\n\nexport interface SliC2TxtCarImgCContent {\n    title: string;\n    reverse?: boolean;\n    slides: SliC2TxtCarImgCSlide[];\n}\n\n@Component({\n    selector: 'sli-c2-txt-car-img-c',\n    standalone: true,\n    encapsulation: ViewEncapsulation.None,\n    imports: [CommonModule, BabylonLinkTypeDirective],\n    templateUrl: './sli-c2-txt-car-img-c.component.html',\n    styleUrl: './sli-c2-txt-car-img-c.component.scss',\n})\nexport class SliC2TxtCarImgCComponent\n    implements AfterViewInit, OnChanges, OnDestroy\n{\n    @Input() items?: BabylonItemI[];\n    @Input() rightSide?: boolean;\n    @Input() texts?: BabylonTextInfoI;\n    @Input() multimedia?: BabylonMultimediaI;\n    @Input() styles?: BabylonStyleGlobalItem;\n\n    @ViewChild('swiperContainer')\n    private swiperContainer?: ElementRef<HTMLElement>;\n    @ViewChild('nextButton') private nextButton?: ElementRef<HTMLElement>;\n    @ViewChild('prevButton') private prevButton?: ElementRef<HTMLElement>;\n\n    private swiperInstance?: Swiper;\n\n    private readonly platformId = inject(PLATFORM_ID);\n\n    ngAfterViewInit(): void {\n        if (!isPlatformBrowser(this.platformId)) return;\n        this.initializeSwiper();\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if (!isPlatformBrowser(this.platformId)) return;\n\n        if (\n            (changes['items'] && !changes['items'].firstChange) ||\n            (changes['multimedia'] && !changes['multimedia'].firstChange)\n        ) {\n            this.initializeSwiper();\n        }\n    }\n    ngOnDestroy(): void {\n        if (!isPlatformBrowser(this.platformId)) return;\n        this.destroySwiper();\n    }\n\n    trackBySlide(index: number, slide: SliC2TxtCarImgCSlide): string {\n        return slide.title ?? `${index}`;\n    }\n\n    private initializeSwiper(): void {\n        queueMicrotask(() => {\n            if (!this.swiperContainer) {\n                return;\n            }\n\n            this.destroySwiper();\n            this.swiperInstance = new Swiper(\n                this.swiperContainer.nativeElement,\n                {\n                    slidesPerView: 1,\n                    spaceBetween: 20,\n                    navigation: {\n                        nextEl: this.nextButton?.nativeElement ?? undefined,\n                        prevEl: this.prevButton?.nativeElement ?? undefined,\n                    },\n                }\n            );\n        });\n    }\n\n    private destroySwiper(): void {\n        if (this.swiperInstance) {\n            this.swiperInstance.destroy(true, true);\n            this.swiperInstance = undefined;\n        }\n    }\n}\n","@if (items?.length) {\n    <section class=\"mdl-mdh015\" [ngClass]=\"{ reverse: rightSide }\">\n        <div class=\"mdl-container\">\n            <div class=\"swiper-container\">\n                @if (texts?.title) {\n                    <div class=\"m-title top-title\">\n                        <h1>{{ texts?.title }}</h1>\n                    </div>\n                }\n\n                <div class=\"swiper-overflow swiper\" #swiperContainer>\n                    <div class=\"swiper-wrapper\">\n                        @for (item of items; track $index) {\n                            <div class=\"swiper-slide\">\n                                <div class=\"slide-grid\">\n                                    @if (item.img) {\n                                        <img\n                                            class=\"img-right\"\n                                            [src]=\"item.img.src\"\n                                            [alt]=\"item.img.alt\"\n                                        />\n                                    }\n                                    <div class=\"m-right\">\n                                        @if (\n                                            multimedia?.staticImagenes?.[$index]\n                                        ) {\n                                            <div class=\"m-img\">\n                                                <img\n                                                    [src]=\"\n                                                        multimedia\n                                                            ?.staticImagenes?.[\n                                                            $index\n                                                        ]?.img?.src\n                                                    \"\n                                                    [alt]=\"\n                                                        multimedia\n                                                            ?.staticImagenes?.[\n                                                            $index\n                                                        ]?.img?.alt\n                                                    \"\n                                                />\n                                            </div>\n                                        }\n                                        <div class=\"m-content\">\n                                            @if (item.title) {\n                                                <div class=\"m-title\">\n                                                    <h3>{{ item.title }}</h3>\n                                                </div>\n                                            }\n                                            @if (item.description) {\n                                                <div class=\"m-text\">\n                                                    {{ item.description }}\n                                                </div>\n                                            }\n                                            @if (item.buttons?.[0]; as btn) {\n                                                <a\n                                                    class=\"m-button-sm\"\n                                                    [href]=\"btn.url\"\n                                                    [linkType]=\"btn.linkType\"\n                                                    [attr.target]=\"\n                                                        btn.target || '_self'\n                                                    \"\n                                                    [attr.aria-label]=\"\n                                                        btn.label\n                                                    \"\n                                                    [attr.rel]=\"\n                                                        (btn.target ||\n                                                            '_self') ===\n                                                        '_blank'\n                                                            ? 'noopener noreferrer'\n                                                            : null\n                                                    \"\n                                                >\n                                                    <span>{{ btn.label }}</span>\n                                                </a>\n                                                <!-- <ng-template #slideButton>\n                                                        <button\n                                                            type=\"button\"\n                                                            class=\"m-button-sm\"\n                                                            [attr.aria-label]=\"\n                                                                button.ariaLabel ||\n                                                                button.label\n                                                            \"\n                                                        >\n                                                            <span>{{\n                                                                button.label\n                                                            }}</span>\n                                                        </button>\n                                                    </ng-template> -->\n                                            }\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                        }\n                    </div>\n                </div>\n\n                <div\n                    class=\"m-swiper-button next\"\n                    #nextButton\n                    aria-label=\"Siguiente\"\n                    [style.--arrow-color]=\"styles?.primary ?? '#000'\"\n                    [style.--arrow-hover-color]=\"\n                        styles?.primaryHover ?? styles?.primary ?? '#000'\n                    \"\n                >\n                    <svg\n                        width=\"7\"\n                        height=\"12\"\n                        viewBox=\"0 0 7 12\"\n                        fill=\"none\"\n                        xmlns=\"http://www.w3.org/2000/svg\"\n                    >\n                        <path\n                            d=\"M6.71533 5.31548L1.65157 0.281695C1.46948 0.100676 1.22288 -0.000650459 0.966022 3.77247e-06C0.709163 0.000657051 0.463085 0.103239 0.281921 0.285182C0.100757 0.467126 -0.000651881 0.713526 2.66678e-06 0.970178C0.000657215 1.22683 0.103322 1.47271 0.285411 1.65373L4.67307 5.98705L0.288403 10.3463C0.106314 10.5273 0.00364923 10.7732 0.0029947 11.0298C0.00234018 11.2865 0.103749 11.5329 0.284913 11.7148C0.466077 11.8968 0.712156 11.9993 0.969015 12C1.22587 12.0007 1.47247 11.8993 1.65456 11.7183L6.71633 6.68651C6.89815 6.50457 7.00019 6.25791 7 6.00079C6.99981 5.74367 6.89741 5.49716 6.71533 5.31548Z\"\n                            fill=\"white\"\n                        />\n                    </svg>\n                </div>\n                <div\n                    class=\"m-swiper-button prev\"\n                    #prevButton\n                    aria-label=\"Anterior\"\n                    [style.--arrow-color]=\"styles?.primary ?? '#000'\"\n                    [style.--arrow-hover-color]=\"\n                        styles?.primaryHover ?? styles?.primary ?? '#000'\n                    \"\n                >\n                    <svg\n                        width=\"7\"\n                        height=\"12\"\n                        viewBox=\"0 0 7 12\"\n                        fill=\"none\"\n                        xmlns=\"http://www.w3.org/2000/svg\"\n                    >\n                        <path\n                            d=\"M0.28467 5.31548L5.34843 0.281695C5.53052 0.100676 5.77712 -0.000650459 6.03398 3.77247e-06C6.29084 0.000657051 6.53692 0.103239 6.71808 0.285182C6.89924 0.467126 7.00065 0.713526 7 0.970178C6.99934 1.22683 6.89668 1.47271 6.71459 1.65373L2.32693 5.98705L6.7116 10.3463C6.89369 10.5273 6.99635 10.7732 6.99701 11.0298C6.99766 11.2865 6.89625 11.5329 6.71509 11.7148C6.53392 11.8968 6.28784 11.9993 6.03099 12C5.77413 12.0007 5.52753 11.8993 5.34544 11.7183L0.283673 6.68651C0.101853 6.50457 -0.000186192 6.25791 7.39071e-07 6.00079C0.00018767 5.74367 0.102586 5.49716 0.28467 5.31548Z\"\n                            fill=\"white\"\n                        />\n                    </svg>\n                </div>\n            </div>\n        </div>\n    </section>\n}\n","import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    Component,\n    ElementRef,\n    Inject,\n    Input,\n    OnChanges,\n    OnDestroy,\n    PLATFORM_ID,\n    SimpleChanges,\n    ViewChild,\n} from '@angular/core';\nimport { BabylonLinkTypeDirective } from '../../../../directives/link-type/link-type.directive';\nimport { BabylonButtonI, BabylonTextInfoI } from '../../../../interfaces';\nimport { BabylonOfferDetailI } from '../../../../interfaces/babylon-offer-detail.interface';\nimport { BabylonCurrencyPipe } from '../../../../pipes/babylon-currency.pipe';\nimport { getFirstImageByTagFromImages } from '../../../../utils/mutimedia.utils';\n\n@Component({\n    selector: 'sli-c2-txt-img-svg-c',\n    standalone: true,\n    imports: [CommonModule, BabylonCurrencyPipe, BabylonLinkTypeDirective],\n    templateUrl: './sli-c2-txt-img-svg-c.component.html',\n    styleUrl: './sli-c2-txt-img-svg-c.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SliC2TxtImgSvgCComponent\n    implements AfterViewInit, OnChanges, OnDestroy\n{\n    @Input() offer?: BabylonOfferDetailI;\n    @Input() buttons?: BabylonButtonI[];\n    @Input() texts?: BabylonTextInfoI;\n\n    @ViewChild('stickyContainer')\n    private stickyContainer?: ElementRef<HTMLDivElement>;\n    @ViewChild('logoStopper') private logoStopper?: ElementRef<HTMLDivElement>;\n\n    private stickyInitialTop = 0;\n    private readonly viewportHandler = () => this.handleViewportChange();\n\n    tagImage = 'LisC2TxtImgSvgC';\n    tagImageVertical = 'SliC2TxtImgSvgCVertical';\n    tagImageLogo = 'SliC2TxtImgSvgCLogo';\n    tagImageSVG = 'SliC2TxtImgSvgCSVG';\n\n    constructor(@Inject(PLATFORM_ID) private readonly platformId: object) {}\n\n    private get isBrowser(): boolean {\n        return isPlatformBrowser(this.platformId);\n    }\n\n    ngAfterViewInit(): void {\n        this.computeStickyDefaults();\n        this.handleViewportChange();\n        this.bindViewportEvents();\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if (changes['content']) {\n            queueMicrotask(() => {\n                this.computeStickyDefaults();\n                this.handleViewportChange();\n            });\n        }\n    }\n\n    ngOnDestroy(): void {\n        if (!this.isBrowser) {\n            return;\n        }\n\n        window.removeEventListener('scroll', this.viewportHandler);\n        window.removeEventListener('resize', this.viewportHandler);\n    }\n\n    private bindViewportEvents(): void {\n        if (!this.isBrowser) {\n            return;\n        }\n\n        window.addEventListener('scroll', this.viewportHandler, {\n            passive: true,\n        });\n        window.addEventListener('resize', this.viewportHandler);\n    }\n\n    private computeStickyDefaults(): void {\n        if (!this.isBrowser) {\n            return;\n        }\n        const sticky = this.stickyContainer?.nativeElement;\n        if (!sticky) {\n            return;\n        }\n\n        const computedTop = getComputedStyle(sticky)?.top || '0';\n        this.stickyInitialTop = parseFloat(computedTop) || 0;\n\n        const container = sticky.closest('.m-left') as HTMLElement | null;\n        if (container && getComputedStyle(container)?.position === 'static') {\n            container.style.position = 'relative';\n        }\n    }\n\n    private handleViewportChange(): void {\n        if (!this.isBrowser) {\n            return;\n        }\n\n        const sticky = this.stickyContainer?.nativeElement;\n        const logo = this.logoStopper?.nativeElement;\n\n        if (!sticky || !logo) {\n            return;\n        }\n\n        const stickyRect = sticky.getBoundingClientRect();\n        const logoRect = logo.getBoundingClientRect();\n\n        if (stickyRect.bottom >= logoRect.top) {\n            sticky.style.position = 'absolute';\n            sticky.style.top = `${logo.offsetTop - sticky.offsetHeight}px`;\n        } else {\n            sticky.style.position = 'sticky';\n            sticky.style.top = `${this.stickyInitialTop}px`;\n        }\n    }\n\n    getFirstImageByTag(tagName: string) {\n        return getFirstImageByTagFromImages(\n            this.offer?.multimedia?.imagenes ?? [],\n            tagName\n        );\n    }\n}\n","<section class=\"mdl-md006\">\n    <div class=\"mdl-container\">\n        <div class=\"m-head\">\n            <div class=\"m-left-head\">\n                @if (\n                    getFirstImageByTag(tagImage) ??\n                        offer?.multimedia?.imagenes?.[0];\n                    as img\n                ) {\n                    <div\n                        class=\"m-pretitulo\"\n                        [style.--color]=\"offer?.style?.primary\"\n                    >\n                        {{ img?.title }}\n                    </div>\n                }\n                @if (offer?.title) {\n                    <h2 class=\"m-titulo\">{{ offer?.title }}</h2>\n                }\n                @if (offer?.pretitle) {\n                    <div class=\"m-subtitulo\">{{ offer?.pretitle }}</div>\n                }\n            </div>\n            <div class=\"m-right-head\">\n                <div class=\"m-content\">\n                    @if (offer?.labelDiscount) {\n                        <div class=\"m-preciotitulo\">\n                            {{ offer?.labelDiscount }}\n                        </div>\n                    }\n                    <div class=\"m-precio\">\n                        @if (offer?.price) {\n                            {{ offer?.price\n                            }}{{ offer?.currency ?? 'EUR' | currencySymbol }}\n                        } @else if (offer?.discount) {\n                            {{ offer?.discount }} %\n                        }\n                    </div>\n                    @if (offer?.button; as button) {\n                        <ng-container>\n                            <a\n                                class=\"m-button-sm\"\n                                [href]=\"button.url\"\n                                [linkType]=\"button.linkType\"\n                                [attr.target]=\"button.target || '_self'\"\n                                [attr.rel]=\"\n                                    (button.target || '_self') === '_blank'\n                                        ? 'noopener noreferrer'\n                                        : null\n                                \"\n                                [style.--color]=\"offer?.style?.primary\"\n                                [style.--colorHover]=\"\n                                    offer?.style?.primaryHover\n                                \"\n                                [attr.aria-label]=\"button.label\"\n                            >\n                                {{ button.label }}\n                            </a>\n                        </ng-container>\n                    }\n                </div>\n            </div>\n        </div>\n\n        <div class=\"m-contenido\">\n            <div class=\"m-left\">\n                <div class=\"m-imagesticky\" #stickyContainer>\n                    @if (getFirstImageByTag(tagImageVertical); as imgV) {\n                        <img\n                            class=\"m-sticky\"\n                            [src]=\"\n                                imgV?.img?.src ||\n                                'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                            \"\n                            [alt]=\"imgV?.img?.alt\"\n                            loading=\"lazy\"\n                        />\n                    }\n                    @if (getFirstImageByTag(tagImageLogo); as imgLogo) {\n                        <img\n                            class=\"m-offer\"\n                            [src]=\"\n                                imgLogo?.img?.src ||\n                                'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                            \"\n                            [alt]=\"imgLogo?.img?.alt\"\n                            loading=\"lazy\"\n                        />\n                    }\n                </div>\n                @if (getFirstImageByTag(tagImageSVG); as imgSVG) {\n                    <div class=\"m-logo\" #logoStopper>\n                        <img\n                            [src]=\"\n                                imgSVG?.img?.src ||\n                                'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                            \"\n                            [alt]=\"imgSVG?.img?.alt\"\n                            loading=\"lazy\"\n                        />\n                    </div>\n                }\n            </div>\n\n            <div class=\"m-right\">\n                <div class=\"m-image\">\n                    @if (\n                        getFirstImageByTag(tagImage) ??\n                            offer?.multimedia?.imagenes?.[0];\n                        as img\n                    ) {\n                        <img\n                            [src]=\"\n                                img?.img?.src ||\n                                'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                            \"\n                            [alt]=\"img?.img?.alt || img?.title || 'image'\"\n                            loading=\"lazy\"\n                        />\n                    }\n                </div>\n                @if (offer?.description) {\n                    <div class=\"m-texto\" [innerHTML]=\"offer?.description\"></div>\n                }\n                <div class=\"m-imagenmobile\">\n                    @if (getFirstImageByTag(tagImageVertical); as img) {\n                        <img\n                            class=\"m-imgmb\"\n                            [src]=\"\n                                img?.img?.src ||\n                                'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                            \"\n                            [alt]=\"img?.img?.alt || img?.title || 'image'\"\n                            loading=\"lazy\"\n                        />\n                    }\n                    @if (getFirstImageByTag(tagImageLogo); as imgLogo) {\n                        <img\n                            class=\"m-logo\"\n                            [src]=\"\n                                imgLogo?.img?.src ||\n                                'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                            \"\n                            [alt]=\"imgLogo?.img?.alt\"\n                            loading=\"lazy\"\n                        />\n                    }\n                </div>\n\n                <div class=\"m-listadofaqs\">\n                    @if (texts?.conditions) {\n                        <div\n                            class=\"faq-item-title\"\n                            [innerHTML]=\"texts?.conditions\"\n                        ></div>\n                    }\n                    @if (offer?.services) {\n                        @for (item of offer?.services; track $index) {\n                            <div class=\"faq-item\" [class.active]=\"$index === 0\">\n                                <div\n                                    class=\"faq-question\"\n                                    [innerHTML]=\"item.description ?? item.title\"\n                                ></div>\n                            </div>\n                        }\n                    }\n\n                    @if (offer?.button; as button) {\n                        <div class=\"m-extra-info\">\n                            <div class=\"m-row2\">\n                                <div class=\"m-content-row2\">\n                                    <a\n                                        class=\"m-button-sm\"\n                                        [href]=\"button.url\"\n                                        [linkType]=\"button.linkType\"\n                                        [attr.target]=\"button.target || '_self'\"\n                                        [attr.rel]=\"\n                                            (button.target || '_self') ===\n                                            '_blank'\n                                                ? 'noopener noreferrer'\n                                                : null\n                                        \"\n                                        [style.--color]=\"offer?.style?.primary\"\n                                        [style.--colorHover]=\"\n                                            offer?.style?.primaryHover\n                                        \"\n                                        [attr.aria-label]=\"button.label\"\n                                    >\n                                        {{ button.label }}\n                                    </a>\n                                </div>\n                            </div>\n                        </div>\n                    }\n\n                    @if (buttons?.[0]; as btn) {\n                        <div class=\"m-foot\">\n                            <a\n                                class=\"m-but m-underline-red\"\n                                [href]=\"btn.url\"\n                                [linkType]=\"btn.linkType\"\n                                [attr.target]=\"btn.target || '_self'\"\n                                [attr.rel]=\"\n                                    (btn.target || '_self') === '_blank'\n                                        ? 'noopener noreferrer'\n                                        : null\n                                \"\n                                [style.--color]=\"offer?.style?.primary\"\n                                [style.--colorHover]=\"\n                                    offer?.style?.primaryHover\n                                \"\n                                [attr.aria-label]=\"btn.label\"\n                            >\n                                {{ btn.label }}\n                            </a>\n                            <svg\n                                width=\"16\"\n                                height=\"12\"\n                                viewBox=\"0 0 16 12\"\n                                fill=\"none\"\n                                xmlns=\"http://www.w3.org/2000/svg\"\n                            >\n                                <path\n                                    opacity=\"0.7\"\n                                    d=\"M0.0457363 6.829C-0.0152636 6.683 -0.0152636 6.516 0.0457363 6.37C0.0767365 6.297 0.120737 6.229 0.176737 6.175L4.17574 2.175C4.40974 1.941 4.78874 1.941 5.02374 2.175C5.25874 2.409 5.25774 2.789 5.02374 3.024L2.04774 6H12.0997C14.4097 6 14.4997 5.798 14.4997 0.6C14.4997 0.268 14.7687 0 15.0997 0C15.4307 0 15.6997 0.268 15.6997 0.6C15.6997 5.537 15.6997 7.2 12.0987 7.2H2.04674L5.02374 10.177C5.25774 10.41 5.25774 10.791 5.02374 11.025C4.90674 11.142 4.75274 11.201 4.59974 11.201C4.44674 11.201 4.29274 11.142 4.17574 11.025L0.176737 7.026C0.120737 6.969 0.0777359 6.903 0.0457363 6.829Z\"\n                                    fill=\"#515050\"\n                                />\n                            </svg>\n                        </div>\n                    }\n                </div>\n            </div>\n        </div>\n    </div>\n</section>\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectorRef, Component, inject, Input, ViewEncapsulation, OnInit, OnDestroy } from '@angular/core';\nimport { BabylonButtonI, BabylonMultimediaI, BabylonTextInfoI } from '../../../../interfaces';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Utils } from '../../../../utils';\nimport { BabylonLinkTypeDirective } from '../../../../directives/link-type/link-type.directive';\nimport { Subscription } from 'rxjs';\n\n\n@Component({\n    selector: 'lis-c2-img-txt-cta-v3',\n    standalone: true,\n    imports: [CommonModule, BabylonLinkTypeDirective],\n    templateUrl: './lis-c2-img-txt-cta-v3.component.html',\n    styleUrl: './lis-c2-img-txt-cta-v3.component.scss',\n    encapsulation: ViewEncapsulation.Emulated,\n})\nexport class LisC2ImgTxtCtaV3Component implements OnInit, OnDestroy {\n    starsCount = 5;\n\n    @Input() texts?: BabylonTextInfoI;\n    @Input() multimedia?: BabylonMultimediaI;\n\n    private route = inject(ActivatedRoute);\n    private cdr = inject(ChangeDetectorRef);\n    private qpSub?: Subscription;\n\n    isSyncingFromUrl = false;\n    selectedHotelType?: string;\n    selectedDestination?: string;\n    selectedBrand?: string;\n    selectedExperience?: string;\n\n    pendingFilterSlug?: string;\n    pendingDestinationSlug?: string;\n    pendingBrandSlug?: string;\n    pendingExperienceSlug?: string;\n\n\n    trackCard(index: number): number {\n        return index;\n    }\n    getNumber(text: string): number[] {\n        return Utils.extractNumberRange(text);\n    }\n    trackStar(index: number): number {\n        return index;\n    }\n\n    getStars(count: number): number[] {\n        const value = Number(count) || 0;\n        return Array.from({ length: value }, (_, i) => i);\n\n      }\n\n\n    buildMenuUrl(item: BabylonButtonI | undefined): string {\n        if (!item?.url) return '';\n\n        const baseUrl = item.url.replace(/\\/+$/, '');\n        const destination = (item.vars ?? '').toString().trim();\n\n        if (!destination) return baseUrl;\n\n        const slug = Utils.toSlug(destination);\n        if (!slug) return baseUrl;\n\n        return `${baseUrl}?destinations=${destination}`;\n    }\n\n    ngOnInit(): void {\n        this.qpSub = this.route.queryParamMap.subscribe((params) => {\n            this.isSyncingFromUrl = true;\n\n            // Decodificar parámetros de la URL\n            const destinationsParam = params.get('destinations');\n            const decodedDestination = destinationsParam ? decodeURIComponent(destinationsParam) : '';\n\n            // Guardar el slug original para referencias\n            this.pendingDestinationSlug = decodedDestination || undefined;\n\n            // Buscar y seleccionar la coincidencia en los datos disponibles\n            if (decodedDestination) {\n                this.findAndSelectDestination(decodedDestination);\n            }\n\n            this.cdr.markForCheck();\n            queueMicrotask(() => (this.isSyncingFromUrl = false));\n        });\n    }\n\n    ngOnDestroy(): void {\n        this.qpSub?.unsubscribe();\n    }\n\n    private findAndSelectDestination(destinationName: string): void {\n        // Buscar en los datos disponibles (adaptar según tu estructura de datos)\n        // Ejemplo: si tienes un array de destinos en multimedia o texts\n\n        // Comparación exacta o insensible a mayúsculas\n        const normalizedName = destinationName.toLowerCase().trim();\n\n        // Seleccionar si coincide\n        if (normalizedName) {\n            this.selectedDestination = destinationName;\n\n            // Si tienes un array de opciones, puedes buscar en él:\n            // const found = this.destinationOptions?.find(\n            //     (d) => d.name.toLowerCase() === normalizedName\n            // );\n            // if (found) {\n            //     this.selectedDestination = found.id || found.name;\n            // }\n        }\n    }\n}\n","<div class=\"container-bg-\">\n    <div class=\"wrap-page-container start\">\n        <header class=\"global-header\">\n            <div class=\"big-wrapper\">\n                <div class=\"wrap-global-header visible p_left\">\n                    @if (texts?.title) {\n                        <h1 class=\"global-header-title\">{{ texts?.title }}</h1>\n                    }\n                    @if (texts?.description) {\n                        <p\n                            class=\"global-header-subtitle\"\n                            [innerHTML]=\"texts?.description\"\n                        ></p>\n                    }\n                </div>\n            </div>\n        </header>\n    </div>\n    <img\n        [src]=\"\n            multimedia?.logo?.[0]?.img?.src ||\n            'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n        \"\n        alt=\"Logo\"\n        class=\"logo-img\"\n    />\n\n    @if (multimedia?.imagenes && multimedia?.imagenes?.length) {\n        <section>\n            <div class=\"big-wrapper\">\n                <div class=\"hotel-list-colums\">\n                    @for (item of multimedia?.imagenes; track $index) {\n                        <div class=\"promo-room-module-element hotel-list-box\">\n                            <div class=\"wrap-promo-room-element\">\n                                <a\n                                    role=\"button\"\n                                    [href]=\"buildMenuUrl(item?.buttons?.[0])\"\n                                    [linkType]=\"item?.buttons?.[0]?.linkType\"\n                                >\n                                    <div\n                                        class=\"promo-element-media js-section-arrows-zone\"\n                                    >\n                                        <figure\n                                            class=\"promo-element-media_img responsive-resize\"\n                                            role=\"button\"\n                                            [attr.aria-label]=\"\n                                                item?.links?.[0]?.label\n                                            \"\n                                            [attr.data-filename]=\"\n                                                item?.links?.[0]?.label\n                                            \"\n                                            [style.background-image]=\"\n                                                'url(' + item?.img?.src + ')'\n                                            \"\n                                        ></figure>\n                                    </div>\n                                    <div class=\"promo-element-info\">\n                                        @if (item?.title) {\n                                            <p class=\"promo-element-info_title\">\n                                                {{ item?.title }}\n                                            </p>\n                                        }\n                                        @if (item?.subtitle) {\n                                            <p\n                                                class=\"promo-element-info_subtitle\"\n                                            >\n                                                {{ item?.subtitle }}\n                                            </p>\n                                        }\n                                    </div>\n                                </a>\n                                <div class=\"promo-element-foot\">\n                                    @if (item?.buttons?.length) {\n                                        <div class=\"promo-element-btns\">\n                                            <div class=\"invert-buttons-tablet\">\n                                                @for (\n                                                    btn of item?.buttons;\n                                                    track trackCard($index)\n                                                ) {\n                                                    <div class=\"btn-corp\">\n                                                        <a\n                                                            [href]=\"\n                                                                buildMenuUrl(\n                                                                    btn\n                                                                )\n                                                            \"\n                                                            [linkType]=\"\n                                                                btn?.linkType\n                                                            \"\n                                                            class=\"btn-corp-text\"\n                                                            >{{ btn?.label }}</a\n                                                        >\n                                                    </div>\n                                                }\n                                            </div>\n                                        </div>\n                                    }\n                                </div>\n                            </div>\n                        </div>\n                    }\n                </div>\n            </div>\n        </section>\n    }\n</div>\n","import { CommonModule } from '@angular/common';\nimport {\n    AfterViewInit,\n    Component,\n    ElementRef,\n    Input,\n    NgZone,\n    OnDestroy,\n    ViewChild,\n    ViewEncapsulation,\n} from '@angular/core';\nimport Swiper, { Autoplay, EffectFade, Navigation, Pagination } from 'swiper';\nimport { BabylonSwiperCssLoaderDirective } from '../../../../directives/babylon-sliders/babylon-swiper-css-loader.directive';\nimport { BabylonLinkTypeDirective } from '../../../../directives/link-type/link-type.directive';\nimport { BabylonImageI, BabylonTextInfoI } from '../../../../interfaces';\nimport { BabylonHotelGlobalItem } from '../../../../interfaces/babylon-hotel.interface';\nimport { Utils } from '../../../../utils';\nimport { getFirstImageByTagFromImages } from '../../../../utils/mutimedia.utils';\nimport { SliC4ImgTxtCtaContent } from './sli-c4-img-txt-cta.interfaces';\n\nconst defaultData: SliC4ImgTxtCtaContent = {\n    sectionClass: 'viewer-module',\n    wrapperClass: 'big-wrapper',\n    containerClass: 'wrap-viewer-module module-spacer border-bottom-line',\n    header: {\n        title: '',\n        subtitle: '',\n    },\n    slider: {\n        name: 'js-section-slider',\n        showButtons: true,\n        buttonsClass: 'btn-slide-circle',\n        showDots: false,\n        fade: false,\n        autoplay: false,\n        slidesPc: 4,\n        slidesLaptop: 3,\n        slidesTablet: 2,\n        slidesMobile: 1,\n    },\n    items: [\n        {\n            image: {\n                dataLazyimg: '',\n            },\n            title: '',\n            subtitle: '',\n            categoryIcons: [],\n            primaryButton: {\n                href: '',\n                text: '',\n            },\n            secondaryButton: {\n                href: '',\n                text: '',\n            },\n        },\n    ],\n};\n\n@Component({\n    selector: 'sli-c4-img-txt-cta',\n    standalone: true,\n    imports: [\n        CommonModule,\n        BabylonSwiperCssLoaderDirective,\n        BabylonLinkTypeDirective,\n    ],\n\n    templateUrl: './sli-c4-img-txt-cta.component.html',\n    styleUrl: './sli-c4-img-txt-cta.component.scss',\n    encapsulation: ViewEncapsulation.Emulated,\n})\nexport class SliC4ImgTxtCtaComponent implements AfterViewInit, OnDestroy {\n    private _data: SliC4ImgTxtCtaContent = defaultData;\n    private sliderInitialized = false;\n    private swiperInstance?: Swiper;\n\n    @Input() texts?: BabylonTextInfoI;\n    @Input() items?: BabylonHotelGlobalItem[];\n    tagName: string = 'SliC4ImgTxtCta';\n\n    @ViewChild('sectionSlider', { static: false })\n    sectionSlider?: ElementRef<HTMLElement>;\n    @ViewChild('sliderPrev', { static: false })\n    sliderPrev?: ElementRef<HTMLButtonElement>;\n    @ViewChild('sliderNext', { static: false })\n    sliderNext?: ElementRef<HTMLButtonElement>;\n    @ViewChild('sliderPagination', { static: false })\n    sliderPagination?: ElementRef<HTMLElement>;\n\n    constructor(private readonly ngZone: NgZone) {}\n\n    @Input()\n    set data(value: SliC4ImgTxtCtaContent) {\n        this._data = value ?? defaultData;\n        if (this.sliderInitialized) {\n            this.destroySlider();\n            this.initSlider();\n        }\n    }\n\n    ngOnInit(): void {\n        if (this.items) {\n            this.items = this.items.filter(\n                (item) =>\n                    Array.isArray(item.images) &&\n                    item.images.some((imgObj) => {\n                        if (imgObj?.img && typeof imgObj.img === 'object') {\n                            return !!imgObj.img.src;\n                        }\n                        return !!imgObj?.src;\n                    })\n            );\n        }\n    }\n    get data(): SliC4ImgTxtCtaContent {\n        return this._data;\n    }\n\n    ngAfterViewInit(): void {\n        this.initSlider();\n    }\n\n    ngOnDestroy(): void {\n        this.destroySlider();\n    }\n\n    trackItem(index: number): number {\n        return index;\n    }\n\n    trackIcon(index: number): number {\n        return index;\n    }\n\n    getFirstImageByTag(tagName: string, imagenes: BabylonImageI[]) {\n        return getFirstImageByTagFromImages(imagenes, tagName);\n    }\n\n    getNumber(text: string): number[] {\n        return Utils.extractNumberRange(text);\n    }\n    getRibbonColor(index: number): string {\n        const palette = ['#e30613', '#6a0dad', '#1a0a8f', '#008080'];\n        return palette[index % palette.length];\n    }\n\n    private initSlider(): void {\n        if (\n            this.sliderInitialized ||\n            typeof window === 'undefined' ||\n            !this.sectionSlider\n        ) {\n            return;\n        }\n\n        const sliderConfig = this.data.slider;\n        const maxSlidesPerView = Math.max(\n            sliderConfig.slidesPc,\n            sliderConfig.slidesLaptop,\n            sliderConfig.slidesTablet,\n            sliderConfig.slidesMobile\n        );\n        const hasMultipleSlides = this.items && this.items?.length > 1;\n        const shouldLoop =\n            hasMultipleSlides &&\n            this.items &&\n            this.items?.length > maxSlidesPerView;\n        const hasNavigation =\n            hasMultipleSlides &&\n            sliderConfig.showButtons &&\n            this.sliderPrev &&\n            this.sliderNext;\n        const hasPagination =\n            hasMultipleSlides && sliderConfig.showDots && this.sliderPagination;\n\n        this.ngZone.runOutsideAngular(() => {\n            this.swiperInstance = new Swiper(\n                this.sectionSlider!.nativeElement,\n                {\n                    modules: [Navigation, Pagination, Autoplay, EffectFade],\n                    slidesPerView: sliderConfig.slidesMobile,\n                    slidesPerGroup: sliderConfig.slidesMobile,\n                    speed: 300,\n                    loop: shouldLoop,\n                    autoHeight: false,\n                    effect: sliderConfig.fade ? 'fade' : 'slide',\n                    fadeEffect: sliderConfig.fade\n                        ? { crossFade: true }\n                        : undefined,\n                    autoplay: sliderConfig.autoplay\n                        ? {\n                              delay: 3000,\n                              disableOnInteraction: false,\n                          }\n                        : false,\n                    navigation: hasNavigation\n                        ? {\n                              nextEl: this.sliderNext!.nativeElement,\n                              prevEl: this.sliderPrev!.nativeElement,\n                          }\n                        : false,\n                    pagination: hasPagination\n                        ? {\n                              el: this.sliderPagination!.nativeElement,\n                              clickable: true,\n                          }\n                        : false,\n                    breakpoints: {\n                        768: {\n                            slidesPerView: sliderConfig.slidesTablet,\n                            slidesPerGroup: sliderConfig.slidesTablet,\n                        },\n                        1280: {\n                            slidesPerView: sliderConfig.slidesLaptop,\n                            slidesPerGroup: sliderConfig.slidesLaptop,\n                        },\n                        1680: {\n                            slidesPerView: sliderConfig.slidesPc,\n                            slidesPerGroup: sliderConfig.slidesPc,\n                        },\n                    },\n                }\n            );\n            this.sliderInitialized = true;\n        });\n    }\n\n    private destroySlider(): void {\n        if (!this.sliderInitialized || !this.swiperInstance) {\n            return;\n        }\n\n        this.swiperInstance.destroy(true, true);\n        this.swiperInstance = undefined;\n        this.sliderInitialized = false;\n    }\n}\n","<section class=\"viewer-module\" babylonSwiperCssLoader>\n    <div class=\"big-wrapper\">\n        <div class=\"wrap-viewer-module module-spacer border-bottom-line\">\n            <header class=\"viewer-module-header\">\n                @if (texts?.title) {\n                    <h2 class=\"viewer-module-header_title\">\n                        {{ texts?.title }}\n                    </h2>\n                }\n                @if (texts?.description) {\n                    <p\n                        class=\"viewer-module-header_subtitle\"\n                        [innerHTML]=\"texts?.description\"\n                    ></p>\n                }\n            </header>\n            <div\n                class=\"viewer-module-content js-active-slider\"\n                [attr.data-slider_name]=\"data.slider.name\"\n                [attr.data-slider_showbtns]=\"data.slider.showButtons\"\n                [attr.data-slider_btns]=\"data.slider.buttonsClass\"\n                [attr.data-slider_showdots]=\"data.slider.showDots\"\n                [attr.data-slider_fade]=\"data.slider.fade\"\n                [attr.data-slider_autoplay]=\"data.slider.autoplay\"\n                [attr.data-slides_pc]=\"data.slider.slidesPc\"\n                [attr.data-slides_laptop]=\"data.slider.slidesLaptop\"\n                [attr.data-slides_tablet]=\"data.slider.slidesTablet\"\n                [attr.data-slides_mobile]=\"data.slider.slidesMobile\"\n            >\n                <div\n                    class=\"viewer-module-arrows section-slider-arrows js-slider-arrows\"\n                >\n                    @if (items?.length && data.slider.showButtons) {\n                        <button\n                            class=\"swiper-btn swiper-arrow swiper-button-prev btn-slide-circle\"\n                            type=\"button\"\n                            aria-label=\"Anterior\"\n                            #sliderPrev\n                        ></button>\n\n                        <button\n                            class=\"swiper-btn swiper-arrow swiper-button-next btn-slide-circle\"\n                            type=\"button\"\n                            aria-label=\"Siguiente\"\n                            #sliderNext\n                        ></button>\n                    }\n                </div>\n\n                <div\n                    class=\"js-section-slider swiper\"\n                    #sectionSlider\n                    babylonSwiperCssLoader\n                >\n                    <div class=\"swiper-wrapper\">\n                        @for (item of items; track $index) {\n                            <div class=\"viewer-module-element swiper-slide\">\n                                <div class=\"wrap-viewer-element\">\n                                    @if (\n                                        getFirstImageByTag(\n                                            tagName,\n                                            item?.images ?? []\n                                        ) ?? item?.images?.[0];\n                                        as img\n                                    ) {\n                                        <a\n                                            [href]=\"item?.buttons?.[1]?.url\"\n                                            [linkType]=\"\n                                                item?.buttons?.[1]?.linkType\n                                            \"\n                                        >\n                                             <div\n                                                class=\"item-ribbon\"\n                                                [style.backgroundColor]=\"\n                                                    item?.styles?.primary ??\n                                                    '#ff4338'\n                                                \"\n                                            >\n                                                @if (item?.texts?.additional1) {\n                                                    {{\n                                                        item?.texts?.additional1\n                                                    }}\n                                                } @else {\n                                                    HOTEL\n                                                }\n                                            </div>\n                                            <div\n                                                class=\"rooms-element-media js-section-arrows-zone\"\n                                            >\n                                                <figure\n                                                    class=\"rooms-element-media_img\"\n                                                    role=\"img\"\n                                                    aria-label=\"\"\n                                                    [attr.data-lazyimg]=\"\n                                                        img?.img?.src\n                                                    \"\n                                                    [attr.data-src]=\"\n                                                        img?.img?.src\n                                                    \"\n                                                    [style.backgroundImage]=\"\n                                                        img?.img?.src\n                                                            ? 'url(' +\n                                                              img?.img?.src +\n                                                              ')'\n                                                            : null\n                                                    \"\n                                                ></figure>\n                                            </div>\n                                            <div class=\"rooms-element-info\">\n                                                <div class=\"room-title\">\n                                                    {{ item?.texts?.name }}\n                                                    @if (\n                                                        item?.texts?.additional2\n                                                    ) {\n                                                        <span>{{\n                                                            item?.texts\n                                                                ?.additional2\n                                                        }}</span>\n                                                    }\n                                                    <div class=\"room-category\">\n                                                        @if (\n                                                            item?.hoteltype ===\n                                                                'Hotel' &&\n                                                            item?.hotelcategory\n                                                        ) {\n                                                            @for (\n                                                                item of getNumber(\n                                                                    item?.hotelcategory ??\n                                                                        ''\n                                                                );\n                                                                track $index\n                                                            ) {\n                                                                <div\n                                                                    class=\"stars-background\"\n                                                                ></div>\n                                                            }\n                                                        }\n                                                        @if (\n                                                            item?.hoteltype ===\n                                                                'Apartamento' &&\n                                                            item?.hotelcategory\n                                                        ) {\n                                                            @for (\n                                                                item of getNumber(\n                                                                    item?.hotelcategory ??\n                                                                        ''\n                                                                );\n                                                                track $index\n                                                            ) {\n                                                                <div\n                                                                    class=\"keys-background\"\n                                                                ></div>\n                                                            }\n                                                        }\n                                                    </div>\n                                                </div>\n                                            </div>\n                                        </a>\n                                    }\n                                    <div class=\"rooms-element-btns\">\n                                        @if (item?.buttons?.length) {\n                                            @for (\n                                                btn of item?.buttons;\n                                                track $index\n                                            ) {\n                                                @if ($index % 2 === 0) {\n                                                    <div\n                                                        class=\"rooms-element-info_btn btn-corp\"\n                                                    >\n                                                        <a\n                                                            [href]=\"btn?.url\"\n                                                            target=\"_blank\"\n                                                            class=\"btn-corp-text\"\n                                                        >\n                                                            {{ btn?.label }}\n                                                        </a>\n                                                    </div>\n                                                } @else {\n                                                    <a\n                                                        [href]=\"btn?.url\"\n                                                        class=\"rooms-element-info_btn btn-linker toright\"\n                                                    >\n                                                        <p\n                                                            class=\"btn-linker-text\"\n                                                        >\n                                                            {{ btn?.label }}\n                                                        </p>\n                                                    </a>\n                                                }\n                                            }\n                                        }\n                                    </div>\n                                </div>\n                            </div>\n                        }\n                    </div>\n                    @if (items?.length && data.slider.showDots) {\n                        <div class=\"swiper-pagination\" #sliderPagination></div>\n                    }\n                </div>\n            </div>\n        </div>\n    </div>\n</section>\n","// utils-contact.ts\n// Utilidades para contacto en portada-home\n\nexport interface ContactMeta {\n  cssClass?: string;\n  href?: string;\n  target?: string;\n  rel?: string;\n}\n\n/**\n * Devuelve los metadatos de contacto para un link de contacto.\n * @param link Objeto de link de contacto\n */\nexport function getContactMeta(link: any): ContactMeta {\n  if (!link) return {};\n  // Ejemplo de lógica, personalizar según estructura real de link\n  return {\n    cssClass: link.cssClass || '',\n    href: link.href || link.url || null,\n    target: link.target || null,\n    rel: link.rel || null,\n  };\n}\n\n/**\n * Handler para click en contacto.\n * @param event Evento click\n * @param link Objeto de link de contacto\n */\nexport function onContactClick(event: Event, link: any): void {\n  // Ejemplo: prevenir acción si no hay href\n  if (!getContactMeta(link).href) {\n    event.preventDefault();\n    // Aquí puedes mostrar un mensaje, abrir modal, etc.\n  }\n  // Si hay lógica adicional, agregar aquí\n}\n","import { PortadaHomeSliderSettings } from './portada-home.interfaces';\n\nimport { CommonModule } from '@angular/common';\nimport {\n    AfterViewInit,\n    Component,\n    ElementRef,\n    Input,\n    NgZone,\n    OnDestroy,\n    Renderer2,\n    ViewChild,\n    ViewContainerRef,\n    ViewEncapsulation,\n    computed,\n    inject,\n} from '@angular/core';\nimport Swiper, { Autoplay, EffectFade, Navigation, Pagination } from 'swiper';\nimport { BabylonSwiperCssLoaderDirective } from '../../../../directives/babylon-sliders/babylon-swiper-css-loader.directive';\nimport { BabylonLinkTypeDirective } from '../../../../directives/link-type/link-type.directive';\nimport {\n    BabylonButtonI,\n    BabylonMultimediaI,\n    BabylonTextInfoI,\n} from '../../../../interfaces';\nimport { ScreenSizerService } from '../../../../services/screen-sizer';\nimport {\n    getContactMeta,\n    onContactClick,\n} from '../../../../utils/contact.utils';\nimport { PortadaHomeContent } from './portada-home.interfaces';\n\nconst defaultData = {\n    attachLinks: [\n        {\n            label: '',\n            dataSubnav: '',\n            iconClass: '',\n            href: '',\n        },\n    ],\n    topModule: {\n        logoHref: '/',\n        logoSrc: '',\n        slider: {\n            images: [\n                {\n                    backgroundImage: '',\n                    dataLazyimg: '',\n                    dataSection: '',\n                },\n            ],\n        },\n        cta: {\n            label: '',\n            href: '',\n            className: '',\n        },\n        title: '',\n        phrase: '',\n        buttons: [\n            {\n                label: '',\n                href: '',\n                className: '',\n            },\n        ],\n        links: [\n            {\n                label: '',\n                popupId: '',\n                className: '',\n                iconClass: '',\n                href: '',\n            },\n        ],\n        scroll: {\n            target: '',\n            spacer: '',\n        },\n    },\n    specialDiscount: {\n        prefix: '',\n        highlight: '',\n        highlightSuffix: '%',\n        suffix: '',\n        button: {\n            label: '',\n            href: '',\n            className: '',\n            target: '_blank',\n        },\n    },\n    newsletterPopup: {\n        title: '',\n        subtitle: '',\n        text: '',\n        placeholder: '',\n        checkboxLabel: '',\n        legalLabel: '',\n        legalHref: '',\n        imageSrc: '',\n        imageAlt: '',\n    },\n} as PortadaHomeContent;\n\nconst defaultSettings = {\n    name: 'top-module-slider',\n    arrowsClass: 'advantages-content-arrows',\n    showButtons: false,\n    buttonsClass: 'btn-slide-circle',\n    showDots: false,\n    fade: true,\n    autoplay: true,\n    slidesPc: 1,\n    slidesLaptop: 1,\n    slidesTablet: 1,\n    slidesMobile: 1,\n};\n\n@Component({\n    selector: 'portada-home',\n    standalone: true,\n    imports: [\n        CommonModule,\n        BabylonSwiperCssLoaderDirective,\n        BabylonLinkTypeDirective,\n    ],\n    templateUrl: './portada-home.component.html',\n    styleUrl: './portada-home.component.scss',\n    encapsulation: ViewEncapsulation.Emulated,\n})\nexport class PortadaHomeComponent implements AfterViewInit, OnDestroy {\n    scrollToContent(): void {\n        if (typeof window === 'undefined') return;\n        let el = document.querySelector('.start');\n        if (!el) {\n            // Busca la siguiente sección o main después del banner\n            const banner = document.querySelector('.top-module');\n            if (banner) {\n                el = banner.nextElementSibling;\n            }\n        }\n        if (el) {\n            const rect = (el as HTMLElement).getBoundingClientRect();\n            const scrollTop =\n                window.pageYOffset || document.documentElement.scrollTop;\n            window.scrollTo({\n                top: rect.top + scrollTop - 50,\n                behavior: 'smooth',\n            });\n        }\n    }\n    private _data: PortadaHomeContent = defaultData;\n    private sliderSettings: PortadaHomeSliderSettings = defaultSettings;\n    // Métodos utilitarios expuestos para el template\n    getContactMeta = getContactMeta;\n    onContactClick = onContactClick;\n    private cleanupFns: Array<() => void> = [];\n    private scheduleHandle: ReturnType<typeof setTimeout> | null = null;\n    private motorLock = false;\n\n    @Input() showDots: boolean = true;\n    @Input() showButtons: boolean = true;\n    @Input() multimedia?: BabylonMultimediaI;\n    @Input() buttons?: BabylonButtonI[];\n    @Input() texts?: BabylonTextInfoI;\n    @Input() links?: BabylonButtonI[];\n\n    @ViewChild('portadaSlider', { static: false })\n    portadaSlider?: ElementRef<HTMLElement>;\n    @ViewChild('sliderPrev', { static: false })\n    sliderPrev?: ElementRef<HTMLButtonElement>;\n    @ViewChild('sliderNext', { static: false })\n    sliderNext?: ElementRef<HTMLButtonElement>;\n    @ViewChild('sliderPagination', { static: false })\n    sliderPagination?: ElementRef<HTMLElement>;\n\n    private sliderInitialized = false;\n    private swiperInstance?: Swiper;\n\n    public screenSizer = inject(ScreenSizerService);\n\n    public activeSlides = computed(() => {\n        const isMobile = this.screenSizer.maxMediumTablet();\n        const mobileImgs = this.multimedia?.mobileImagenes;\n        const desktopImgs = this.multimedia?.imagenes;\n        if (isMobile && mobileImgs && mobileImgs.length > 0) {\n            return mobileImgs;\n        }\n        if (desktopImgs && desktopImgs.length > 0) {\n            return desktopImgs;\n        }\n        return [];\n    });\n    constructor(\n        private readonly renderer: Renderer2,\n        private readonly ngZone: NgZone,\n        private readonly viewContainerRef: ViewContainerRef\n    ) {}\n\n    @Input()\n    set data(value: PortadaHomeContent) {\n        this._data = value ?? defaultData;\n        this.sliderSettings = defaultSettings as PortadaHomeSliderSettings;\n        this.scheduleSetup();\n        if (this.sliderInitialized) {\n            this.destroySlider();\n            this.initSlider();\n        }\n    }\n\n    get sliderSettingsResolved(): PortadaHomeSliderSettings {\n        return defaultSettings as PortadaHomeSliderSettings;\n    }\n\n    get data(): PortadaHomeContent {\n        return this._data;\n    }\n\n    ngAfterViewInit(): void {\n        this.scheduleSetup();\n        this.initSlider();\n    }\n\n    ngOnDestroy(): void {\n        this.destroySlider();\n        this.cleanupInteractions();\n        if (this.scheduleHandle) {\n            clearTimeout(this.scheduleHandle);\n        }\n        if (this.motorLock && typeof document !== 'undefined') {\n            document.body.classList.remove('noscroll');\n        }\n    }\n\n    private scheduleSetup(): void {\n        if (this.scheduleHandle) {\n            clearTimeout(this.scheduleHandle);\n        }\n        this.scheduleHandle = setTimeout(() => {\n            this.scheduleHandle = null;\n            this.setupInteractions();\n        });\n    }\n\n    private setupInteractions(): void {\n        this.cleanupInteractions();\n\n        const host = this.viewContainerRef.element.nativeElement as HTMLElement;\n        if (!host) {\n            return;\n        }\n\n        this.setupKeyboardActivation(host);\n\n        const motor = host.querySelector('.motor-fixed');\n        const guestBox = host.querySelector('.motor-subox-guests');\n        const guestToggle = host.querySelector('.js-toggle-guests');\n\n        this.bindClick(host.querySelectorAll('.js-open-motor'), () => {\n            motor?.classList.add('open');\n            this.setBodyLock(true);\n        });\n        this.bindClick(host.querySelectorAll('.js-close-motor'), () => {\n            motor?.classList.remove('open');\n            this.setBodyLock(false);\n        });\n\n        const closeGuests = () => {\n            guestToggle?.classList.remove('active');\n            guestBox?.classList.remove('active');\n        };\n\n        this.bindClick(host.querySelectorAll('.js-toggle-guests'), () => {\n            guestToggle?.classList.toggle('active');\n            guestBox?.classList.toggle('active');\n        });\n        this.bindClick(host.querySelectorAll('.js-apply-guests'), closeGuests);\n        this.bindClick(\n            host.querySelectorAll(\n                '.motor-element-field:not(.js-toggle-guests)'\n            ),\n            closeGuests\n        );\n\n        this.bindClick(host.querySelectorAll('.js-open-room'), (event) => {\n            const trigger = event.currentTarget as HTMLElement;\n            const roomId = trigger?.getAttribute('data-room');\n            if (!roomId) {\n                return;\n            }\n            const room = host.querySelector(\n                `.motor-subox--room.${roomId}`\n            ) as HTMLElement | null;\n            if (!room) {\n                return;\n            }\n            const isOpen = room.classList.contains('open');\n\n            (\n                host.querySelectorAll(\n                    '.motor-subox--room.open'\n                ) as NodeListOf<HTMLElement>\n            ).forEach((element: HTMLElement) => {\n                element.classList.remove('open');\n                element.classList.add('close');\n            });\n\n            (\n                host.querySelectorAll(\n                    '.js-open-room.open'\n                ) as NodeListOf<HTMLElement>\n            ).forEach((btn: HTMLElement) => {\n                btn.classList.remove('open');\n                btn.classList.add('close');\n            });\n\n            if (!isOpen) {\n                room.classList.add('open');\n                room.classList.remove('close');\n                trigger.classList.add('open');\n                trigger.classList.remove('close');\n            } else {\n                room.classList.remove('open');\n                room.classList.add('close');\n                trigger.classList.remove('open');\n                trigger.classList.add('close');\n            }\n        });\n    }\n\n    private initSlider(): void {\n        if (\n            this.sliderInitialized ||\n            !this.portadaSlider ||\n            typeof window === 'undefined'\n        ) {\n            return;\n        }\n\n        const sliderConfig = this.sliderSettingsResolved;\n        const images = this.data.topModule.slider.images;\n        const maxSlidesPerView = Math.max(\n            sliderConfig.slidesPc,\n            sliderConfig.slidesLaptop,\n            sliderConfig.slidesTablet,\n            sliderConfig.slidesMobile\n        );\n        const hasMultipleSlides = images.length > 1;\n        const shouldLoop =\n            hasMultipleSlides && images.length > maxSlidesPerView;\n        const hasNavigation =\n            hasMultipleSlides &&\n            sliderConfig.showButtons &&\n            this.sliderPrev &&\n            this.sliderNext;\n        const hasPagination =\n            hasMultipleSlides && sliderConfig.showDots && this.sliderPagination;\n\n        this.ngZone.runOutsideAngular(() => {\n            this.swiperInstance = new Swiper(\n                this.portadaSlider!.nativeElement,\n                {\n                    modules: [Navigation, Pagination, Autoplay, EffectFade],\n                    slidesPerView: sliderConfig.slidesMobile,\n                    slidesPerGroup: sliderConfig.slidesMobile,\n                    speed: 300,\n                    loop: shouldLoop,\n                    autoHeight: true,\n                    effect: sliderConfig.fade ? 'fade' : 'slide',\n                    fadeEffect: sliderConfig.fade\n                        ? { crossFade: true }\n                        : undefined,\n                    autoplay: sliderConfig.autoplay\n                        ? {\n                              delay: 3000,\n                              disableOnInteraction: false,\n                          }\n                        : false,\n                    navigation: hasNavigation\n                        ? {\n                              nextEl: this.sliderNext!.nativeElement,\n                              prevEl: this.sliderPrev!.nativeElement,\n                          }\n                        : false,\n                    pagination: hasPagination\n                        ? {\n                              el: this.sliderPagination!.nativeElement,\n                              clickable: true,\n                          }\n                        : false,\n                    breakpoints: {\n                        768: {\n                            slidesPerView: sliderConfig.slidesTablet,\n                            slidesPerGroup: sliderConfig.slidesTablet,\n                        },\n                        1280: {\n                            slidesPerView: sliderConfig.slidesLaptop,\n                            slidesPerGroup: sliderConfig.slidesLaptop,\n                        },\n                        1680: {\n                            slidesPerView: sliderConfig.slidesPc,\n                            slidesPerGroup: sliderConfig.slidesPc,\n                        },\n                    },\n                }\n            );\n            this.sliderInitialized = true;\n        });\n    }\n\n    private destroySlider(): void {\n        if (!this.sliderInitialized || !this.swiperInstance) {\n            return;\n        }\n        this.swiperInstance.destroy(true, true);\n        this.swiperInstance = undefined;\n        this.sliderInitialized = false;\n    }\n\n    private setupKeyboardActivation(root: HTMLElement): void {\n        const focusables = root.querySelectorAll(\n            '[tabindex=\"0\"]'\n        ) as NodeListOf<HTMLElement>;\n        this.bindKey(focusables, (event) => {\n            if (event.key === 'Enter') {\n                (event.currentTarget as HTMLElement)?.click();\n            }\n        });\n    }\n\n    private bindClick(\n        elements: NodeListOf<Element>,\n        handler: (event: Event) => void\n    ): void {\n        elements.forEach((element) => {\n            this.cleanupFns.push(\n                this.renderer.listen(element, 'click', handler)\n            );\n        });\n    }\n\n    private bindKey(\n        elements: NodeListOf<Element>,\n        handler: (event: KeyboardEvent) => void\n    ): void {\n        elements.forEach((element) => {\n            this.cleanupFns.push(\n                this.renderer.listen(element, 'keyup', handler)\n            );\n        });\n    }\n\n    private cleanupInteractions(): void {\n        while (this.cleanupFns.length) {\n            const dispose = this.cleanupFns.pop();\n            try {\n                dispose?.();\n            } catch {\n                // ignore\n            }\n        }\n    }\n\n    private setBodyLock(lock: boolean): void {\n        if (typeof document === 'undefined') {\n            return;\n        }\n        this.motorLock = lock;\n        if (lock) {\n            document.body.classList.add('noscroll');\n        } else {\n            document.body.classList.remove('noscroll');\n        }\n    }\n}\n","<div class=\"portada-home\" #moduleRoot>\n\n    <aside class=\"attach-links hidden\">\n      <div class=\"wrap-attach-links\">\n      <!-- //TODO  encontrar uso de este bloque y eliminarlo si no se usa\n        @if (links?.length) {\n          @for (link of links; track $index) {\n            <div class=\"attach-links-element\">\n              @if ($index % 2 == 0 && link?.label ) {\n                <div class=\"wrap-attach-element js-open-submenu\" role=\"button\" tabindex=\"0\">\n                -->\n                  <!--[attr.data-submenu]=\"link.dataSubnav\" -->\n                  <!--<p class=\"attach-element-text\">{{ link.label }}</p>\n                </div>\n              -->\n              <!--}\n              @else if (link?.label ) {\n                <div class=\"wrap-attach-element\" role=\"button\" tabindex=\"0\">\n                  <p class=\"attach-element-text\">{{ link.label }}</p>\n                  @if (link?.icon) {\n                    <i class=\"attach-element-icon\" [ngClass]=\"link?.icon\"></i>\n                  }\n                </div>\n              }\n            </div>\n          }\n        }\n      -->\n      </div>\n    </aside>\n\n  <!-- ⬇️ sliderWrapper AQUÍ -->\n  <section\n    class=\"top-module js-active-slider\"\n    [attr.data-slider_name]=\"sliderSettingsResolved.name\"\n    [attr.data-slider_arrows]=\"sliderSettingsResolved.arrowsClass\"\n    [attr.data-slider_showbtns]=\"sliderSettingsResolved.showButtons\"\n    [attr.data-slider_btns]=\"sliderSettingsResolved.buttonsClass\"\n    [attr.data-slider_showdots]=\"sliderSettingsResolved.showDots\"\n    [attr.data-slider_fade]=\"sliderSettingsResolved.fade\"\n    [attr.data-slider_autoplay]=\"sliderSettingsResolved.autoplay\"\n    [attr.data-slides_pc]=\"sliderSettingsResolved.slidesPc\"\n    [attr.data-slides_laptop]=\"sliderSettingsResolved.slidesLaptop\"\n    [attr.data-slides_tablet]=\"sliderSettingsResolved.slidesTablet\"\n    [attr.data-slides_mobile]=\"sliderSettingsResolved.slidesMobile\"\n  >\n    <div class=\"wrap-top-module\">\n      @if ( multimedia?.logo?.length) {\n        <div class=\"top-module-logo\">\n          <a\n            role=\"button\"\n            [href]=\"multimedia?.logo?.[0]?.links?.[0]?.url\"\n            [linkType]=\"multimedia?.logo?.[0]?.links?.[0]?.linkType\"\n            >\n            <div class=\"wrap-top-logo\">\n              <img [src]=\"multimedia?.logo?.[0]?.src\" alt=\"logo\" class=\"top-logo-img\" />\n            </div>\n          </a>\n        </div>\n      }\n\n      <div class=\"top-module-arrows js-slider-arrows\" [ngClass]=\"sliderSettingsResolved.arrowsClass\">\n        @if (multimedia?.imagenes?.length && showButtons) {\n          <button\n            class=\"swiper-btn swiper-arrow swiper-button-prev\"\n            type=\"button\"\n            aria-label=\"Anterior\"\n            #sliderPrev\n          ></button>\n          <button\n            class=\"swiper-btn swiper-arrow swiper-button-next\"\n            type=\"button\"\n            aria-label=\"Siguiente\"\n            #sliderNext\n          ></button>\n        }\n      </div>\n      <!-- ⬇️ portadaSlider AQUÍ (elemento que swiper convertirá en carrusel) -->\n      <div class=\"top-module-slider swiper\" #portadaSlider babylonSwiperCssLoader>\n        <div class=\"swiper-wrapper\">\n          @for (slide of activeSlides(); track $index) {\n            <div class=\"top-slider-element swiper-slide\">\n              <div class=\"wrap-slider-element\">\n                <figure\n                  class=\"slider-element-img responsive-resize\"\n                  role=\"img\"\n                  [attr.aria-label]=\"slide?.title || 'Image'\"\n                  [attr.data-filename]=\"slide?.title\"\n                  [attr.data-src]=\"slide?.img?.src || slide?.src\"\n                  [style.backgroundImage]=\"(slide?.img?.src || slide?.src) ? 'url(' + (slide?.img?.src || slide?.src) + ')' : null\"\n                ></figure>\n              </div>\n            </div>\n          }\n        </div>\n        @if (multimedia?.imagenes?.length && sliderSettingsResolved.showDots) {\n          <div class=\"swiper-pagination\" #sliderPagination></div>\n        }\n      </div>\n\n      <div class=\"top-item-content\">\n        <div class=\"slider-button-mid\">\n          @if (buttons?.length) {\n            @for (btn of (buttons?.length ? buttons : multimedia?.imagenes?.[0]?.buttons); track btn.label) {\n              <div class=\"btn-corp btn-white\">\n                <a\n                  role=\"button\"\n                  [linkType]=\"btn?.linkType\"\n                  class=\"btn-corp-text\" [href]=\"btn?.url\">{{ btn?.label }}</a>\n              </div>\n            }\n          }\n        </div>\n        <div class=\"top-module-text\">\n\n          @if (texts?.pretitle || multimedia?.imagenes?.[0]?.title) {\n            <p class=\"top-module-text_title\" [innerHTML]=\"texts?.title\"></p>\n          }\n          @if (texts?.pretitle || multimedia?.imagenes?.[0]?.title) {\n            <p class=\"top-module-text_phrase\" [innerHTML]=\"texts?.pretitle\"></p>\n          }\n        </div>\n      </div>\n\n      <!--phone call-->\n      <div class=\"top-module-btns\">\n        @if (links?.length) {\n          <div class=\"top-module-btns_element btn-corp btn-white btn-small phone\">\n            <a\n              class=\"btn-corp-text\"\n              [ngClass]=\"getContactMeta(links?.[0]).cssClass\"\n              [attr.href]=\"getContactMeta(links?.[0]).href ?? null\"\n              [attr.target]=\"getContactMeta(links?.[0]).target ?? null\"\n              [attr.rel]=\"getContactMeta(links?.[0]).rel ?? null\"\n              role=\"button\"\n              (click)=\"onContactClick($event, links?.[0])\"\n              >\n              {{ links?.[0]?.label }}\n              </a>\n          </div>\n        }\n      </div>\n      <!--\n      <div class=\"top-module-links\">\n        <div class=\"wrap-top-links\">\n          @for (link of data.topModule.links; track link.label) {\n            @if (link.popupId) {\n              <div class=\"top-links-element js-toggle-popup\" [attr.data-popup]=\"link.popupId\" role=\"button\" tabindex=\"0\">\n                <div class=\"wrap-links-element\">\n                  <p class=\"links-element-text\">{{ link.label }}</p>\n                  @if (link.iconClass) {\n                    <i class=\"links-element-icon\" [ngClass]=\"link.iconClass\"></i>\n                  }\n                </div>\n              </div>\n            } @else {\n              <div class=\"top-links-element\">\n                <a [href]=\"link.href\">\n                  <div class=\"wrap-links-element\" [ngClass]=\"link.className\">\n                    @if (link.iconClass) {\n                      <i class=\"links-element-icon\" [ngClass]=\"link.iconClass\"></i>\n                    }\n                    <p class=\"links-element-text\">{{ link.label }}</p>\n                  </div>\n                </a>\n              </div>\n            }\n          }\n        </div>\n      </div>\n      -->\n      <div class=\"top-module-scroll\">\n        <div\n          class=\"wrap-top-scroll js-scrollto\"\n          data-scroll_to=\".start\"\n          scroll_spacer=\"50\"\n          role=\"button\"\n          tabindex=\"0\"\n          (click)=\"scrollToContent()\"\n        >\n          <svg\n            width=\"44\"\n            height=\"44\"\n            viewBox=\"0 0 44 44\"\n            fill=\"none\"\n            xmlns=\"http://www.w3.org/2000/svg\"\n                        >\n              <path\n                  d=\"M22 1C10.402 1 1 10.402 1 22C1 33.598 10.402 43 22 43C33.598 43 43 33.598 43 22C43 10.402 33.598 1 22 1Z\"\n                  fill=\"none\"\n                  stroke=\"white\"\n                  stroke-width=\"1\"\n              />\n              <path\n                  d=\"M21.2737 25.867L16.2217 20.789C16.04 20.6064 15.9383 20.3591 15.939 20.1016C15.9397 19.844 16.0426 19.5972 16.2252 19.4155C16.4078 19.2339 16.6551 19.1322 16.9127 19.1328C17.1703 19.1335 17.417 19.2364 17.5987 19.419L21.9477 23.819L26.3227 19.422C26.5044 19.2394 26.7512 19.1365 27.0087 19.1358C27.2663 19.1352 27.5136 19.2369 27.6982 19.4185C27.8788 19.6002 27.9818 19.847 27.9824 20.1046C27.9831 20.3621 27.8814 20.6094 27.6997 20.792L22.6497 25.868C22.4671 26.0504 22.2195 26.1527 21.9615 26.1525C21.7035 26.1523 21.456 26.0496 21.2737 25.867Z\"\n                  fill=\"white\"\n              />\n            </svg>\n          @if (texts?.scrolltext) {\n            <p class=\"top-scroll-text\">{{ texts?.scrolltext }}</p>\n          }\n        </div>\n      </div>\n    </div>\n    <!--\n    <div id=\"special-discount\" class=\"special-discount\">\n      <div class=\"special-discount-row\">\n        <div class=\"special-discount-col\">\n          <p>\n            {{ data.specialDiscount.prefix }}\n            <b>{{ data.specialDiscount.highlight }}</b><span>{{ data.specialDiscount.highlightSuffix }}</span>\n            {{ data.specialDiscount.suffix }}\n          </p>\n        </div>\n        <div class=\"special-discount-col-auto\">\n          <div class=\"special-discount_btn btn-corp btn-white\">\n            <a [href]=\"data.specialDiscount.button.href\" [attr.target]=\"data.specialDiscount.button.target\" class=\"btn-corp-text\">\n              {{ data.specialDiscount.button.label }}\n            </a>\n          </div>\n        </div>\n      </div>\n    </div>\n    -->\n  </section>\n  <!--\n  <aside id=\"newsletter\" class=\"popup-module\">\n    <div class=\"wrap-popup-module\">\n      <div class=\"popup-module-backmask popup-box-close js-toggle-popup\" data-popup=\"newsletter\"></div>\n      <div class=\"popup-module-box\">\n        <i class=\"popup-box-close btn-close js-toggle-popup\" data-popup=\"newsletter\"></i>\n        <div class=\"wrap-popup-box\">\n          <div class=\"popup-row\">\n            <div class=\"popup-col\">\n              <article>\n                <div class=\"row-flex pop-title-border-bottom text-left\">\n                  <div class=\"col-flex\">\n                    <p class=\"popup-box-title\">{{ data.newsletterPopup.title }}</p>\n                    <p class=\"popup-box-subtitle\">{{ data.newsletterPopup.subtitle }}</p>\n                  </div>\n                  <div class=\"col-flex\">\n                    <i class=\"popup-box-icon icon-mail-shape\"></i>\n                  </div>\n                </div>\n                <div class=\"popup-box-newsletter\">\n                  <div class=\"wrap-box-newsletter\">\n                    <p class=\"popup-box-text\">{{ data.newsletterPopup.text }}</p>\n                    <div class=\"popup-newsletter-input\">\n                      <div class=\"input-element button\">\n                        <div class=\"wrap-input-element\">\n                          <span class=\"input-element-text\">Introducir Email</span>\n                          <input type=\"email\" class=\"input-element-field\" [attr.placeholder]=\"data.newsletterPopup.placeholder\" />\n                          <button type=\"submit\" class=\"input-element-button\"></button>\n                        </div>\n                      </div>\n                    </div>\n                    <div class=\"popup-newsletter-checkbox\">\n                      <label class=\"checkbox-element\">\n                        <input class=\"checkbox-input\" type=\"checkbox\" name=\"conditions\" />\n                        <div class=\"checkbox-icon\"></div>\n                        <p class=\"checkbox-text\">\n                          {{ data.newsletterPopup.checkboxLabel }}\n                          <a [href]=\"data.newsletterPopup.legalHref\" target=\"_blank\" class=\"checkbox-text-link\">\n                            {{ data.newsletterPopup.legalLabel }}\n                          </a>\n                        </p>\n                      </label>\n                    </div>\n                  </div>\n                </div>\n              </article>\n            </div>\n            <div class=\"popup-col\">\n              <div class=\"box-img\">\n                <img [src]=\"data.newsletterPopup.imageSrc\" [alt]=\"data.newsletterPopup.imageAlt\" />\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </aside>\n  -->\n</div>\n","import { CommonModule } from '@angular/common';\nimport {\n    AfterViewInit,\n    ChangeDetectorRef,\n    Component,\n    ElementRef,\n    Input,\n    NgZone,\n    OnDestroy,\n    ViewChild,\n    ViewEncapsulation,\n} from '@angular/core';\nimport { BabylonSwiperCssLoaderDirective } from '../../../../directives/babylon-sliders/babylon-swiper-css-loader.directive';\nimport { BabylonLinkTypeDirective } from '../../../../directives/link-type/link-type.directive';\nimport {\n    ComplexModuleSliderConfig,\n    ComplexModuleSliderContent,\n} from './complex-module-slider-r-v2.interfaces';\n\nimport Swiper, { Autoplay, EffectFade, Navigation, Pagination } from 'swiper';\nimport {\n    BabylonButtonI,\n    BabylonMultimediaI,\n    BabylonTextInfoI,\n} from '../../../../interfaces';\n\nconst content = {\n    sectionClass:\n        'complex-module var--info-right hide-photo-responsive complex-space',\n    panoramic: {\n        backgroundImage: '',\n        role: 'img',\n        ariaLabel: '',\n        dataFilename: '',\n    },\n    snippet: {\n        lazyImage: '',\n        role: 'img',\n        ariaLabel: '',\n    },\n    info: {\n        pretitle: '',\n        title: '',\n        slider: {\n            name: 'js-complex-slider',\n            showButtons: true,\n            buttonsClass: 'btn-slide-circle',\n            showDots: false,\n            fade: true,\n            autoplay: true,\n            slidesPc: 1,\n            slidesLaptop: 1,\n            slidesTablet: 1,\n            slidesMobile: 1,\n            images: [\n                {\n                    backgroundImage: '',\n                    dataLazyimg: '',\n                    role: '',\n                    ariaLabel: '',\n                    dataFilename: '',\n                },\n            ],\n        },\n        text: '',\n        button: {\n            text: '',\n            href: '',\n        },\n    },\n};\n\nconst defaultSettings = {\n    name: 'js-complex-slider',\n    showButtons: true,\n    buttonsClass: 'btn-slide-circle',\n    showDots: false,\n    fade: true,\n    autoplay: true,\n    slidesPc: 1,\n    slidesLaptop: 1,\n    slidesTablet: 1,\n    slidesMobile: 1,\n} as ComplexModuleSliderConfig;\n\nconst defaultData: ComplexModuleSliderContent = {\n    ...content,\n    info: {\n        ...content.info,\n        slider: {\n            ...content.info.slider,\n            ...defaultSettings,\n        },\n    },\n};\n\n@Component({\n    selector: 'complex-module-slider-r-v2',\n    standalone: true,\n    imports: [\n        CommonModule,\n        BabylonSwiperCssLoaderDirective,\n        BabylonLinkTypeDirective,\n    ],\n    templateUrl: './complex-module-slider-r-v2.component.html',\n    styleUrl: './complex-module-slider-r-v2.component.scss',\n    encapsulation: ViewEncapsulation.Emulated,\n})\nexport class ComplexModuleSliderRV2Component\n    implements AfterViewInit, OnDestroy\n{\n    private _data: ComplexModuleSliderContent = defaultData;\n    private sliderSettings: ComplexModuleSliderConfig = defaultSettings;\n    private sliderInitialized = false;\n    private swiperInstance?: Swiper;\n    currentSlide = 1;\n    totalSlides = this.multimedia?.imagenes?.length ?? 0;\n\n    @ViewChild('mediaSlider', { static: false })\n    mediaSlider?: ElementRef<HTMLElement>;\n    @ViewChild('sliderPrev', { static: false })\n    sliderPrev?: ElementRef<HTMLButtonElement>;\n    @ViewChild('sliderNext', { static: false })\n    sliderNext?: ElementRef<HTMLButtonElement>;\n    @ViewChild('sliderPagination', { static: false })\n    sliderPagination?: ElementRef<HTMLElement>;\n\n    @Input() multimedia?: BabylonMultimediaI;\n    @Input() texts?: BabylonTextInfoI;\n    @Input() nextButton?: string;\n    @Input() backButton?: string;\n    @Input() buttons?: BabylonButtonI[];\n    @Input() hideSmallImage?: boolean = false;\n    @Input() roomText?: BabylonTextInfoI;\n    @Input() isRoom?: boolean = false;\n\n    constructor(\n        private readonly ngZone: NgZone,\n        private readonly cdr: ChangeDetectorRef\n    ) {}\n    @Input()\n    set data(value: ComplexModuleSliderContent) {\n        this._data = value ?? defaultData;\n        this.totalSlides = this.multimedia?.imagenes?.length ?? 0;\n        this.currentSlide = Math.min(this.currentSlide, this.totalSlides) || 1;\n        if (this.sliderInitialized) {\n            this.destroySlider();\n            this.initSlider();\n        }\n    }\n\n    isMultipleSlides(): boolean {\n        return (\n            Array.isArray(this.multimedia?.imagenes) &&\n            this.multimedia!.imagenes.length > 1\n        );\n    }\n    get sliderSettingsResolved(): ComplexModuleSliderConfig {\n        return defaultSettings as ComplexModuleSliderConfig;\n    }\n    get data(): ComplexModuleSliderContent {\n        return this._data;\n    }\n\n    ngAfterViewInit(): void {\n        this.initSlider();\n    }\n\n    ngAfterViewChecked(): void {\n        // Solo inicializar si no está inicializado y los elementos ViewChild existen\n        if (\n            !this.sliderInitialized &&\n            this.mediaSlider &&\n            (!this.isMultipleSlides() || (this.sliderPrev && this.sliderNext))\n        ) {\n            this.initSlider();\n        }\n    }\n\n    ngOnDestroy(): void {\n        this.destroySlider();\n    }\n\n    trackSlide(index: number): number {\n        return index;\n    }\n\n    formatCounter(value: number): string {\n        return value < 10 ? `0${value}` : `${value}`;\n    }\n\n    private initSlider(): void {\n        if (\n            this.sliderInitialized ||\n            typeof window === 'undefined' ||\n            !this.mediaSlider\n        ) {\n            return;\n        }\n\n        const sliderConfig = this.data.info.slider;\n        // Asegurar que autoplay es booleano para compatibilidad SSR y Swiper\n        const autoplayEnabled =\n            typeof sliderConfig.autoplay === 'string'\n                ? sliderConfig.autoplay === 'true'\n                : !!sliderConfig.autoplay;\n        const maxSlidesPerView = Math.max(\n            sliderConfig.slidesPc,\n            sliderConfig.slidesLaptop,\n            sliderConfig.slidesTablet,\n            sliderConfig.slidesMobile\n        );\n        const hasMultipleSlides = (this.multimedia?.imagenes?.length ?? 0) > 1;\n        const shouldLoop =\n            hasMultipleSlides &&\n            (this.multimedia?.imagenes?.length ?? 0) > maxSlidesPerView;\n        const hasNavigation =\n            hasMultipleSlides &&\n            sliderConfig.showButtons &&\n            this.sliderPrev &&\n            this.sliderNext;\n        const hasPagination =\n            hasMultipleSlides && sliderConfig.showDots && this.sliderPagination;\n\n        this.totalSlides = this.multimedia?.imagenes?.length ?? 0;\n        // Solo bloquear si hay navegación y faltan los botones\n        if (hasNavigation && (!this.sliderPrev || !this.sliderNext)) {\n            return;\n        }\n\n        this.ngZone.runOutsideAngular(() => {\n            this.swiperInstance = new Swiper(this.mediaSlider!.nativeElement, {\n                modules: [Navigation, Pagination, Autoplay, EffectFade],\n                slidesPerView: sliderConfig.slidesMobile,\n                slidesPerGroup: sliderConfig.slidesMobile,\n                speed: 300,\n                loop: shouldLoop,\n                autoHeight: true,\n                effect: sliderConfig.fade ? 'fade' : 'slide',\n                fadeEffect: sliderConfig.fade ? { crossFade: true } : undefined,\n                autoplay: autoplayEnabled\n                    ? {\n                          delay: 3000,\n                          disableOnInteraction: false,\n                      }\n                    : false,\n                navigation: hasNavigation\n                    ? {\n                          nextEl: this.sliderNext!.nativeElement,\n                          prevEl: this.sliderPrev!.nativeElement,\n                      }\n                    : false,\n                pagination: hasPagination\n                    ? {\n                          el: this.sliderPagination!.nativeElement,\n                          clickable: true,\n                      }\n                    : false,\n                breakpoints: {\n                    768: {\n                        slidesPerView: sliderConfig.slidesTablet,\n                        slidesPerGroup: sliderConfig.slidesTablet,\n                    },\n                    1280: {\n                        slidesPerView: sliderConfig.slidesLaptop,\n                        slidesPerGroup: sliderConfig.slidesLaptop,\n                    },\n                    1680: {\n                        slidesPerView: sliderConfig.slidesPc,\n                        slidesPerGroup: sliderConfig.slidesPc,\n                    },\n                },\n                on: {\n                    init: (swiper) => {\n                        this.ngZone.run(() => {\n                            this.totalSlides =\n                                this.multimedia?.imagenes?.length ?? 0;\n                            this.currentSlide = (swiper?.realIndex ?? 0) + 1;\n                            this.cdr.detectChanges();\n                        });\n                    },\n                    slideChange: (swiper) => {\n                        this.ngZone.run(() => {\n                            this.currentSlide = (swiper?.realIndex ?? 0) + 1;\n                            this.cdr.detectChanges();\n                        });\n                    },\n                },\n            });\n            this.sliderInitialized = true;\n        });\n    }\n\n    private destroySlider(): void {\n        if (!this.sliderInitialized || !this.swiperInstance) {\n            return;\n        }\n\n        this.swiperInstance.destroy(true, true);\n        this.swiperInstance = undefined;\n        this.sliderInitialized = false;\n    }\n}\n","<section\n    class=\"complex-module var--info-right hide-photo-responsive complex-space start\"\n>\n    <div class=\"big-wrapper\">\n        <div class=\"wrap-complex-module module-spacer\">\n            <div class=\"complex-module-box\">\n                @if (multimedia?.imagenes?.length) {\n                    <div class=\"complex-module-panoramic\">\n                        @if (multimedia?.imagenes?.[0]?.img?.src) {\n                            <figure\n                                class=\"complex-module-panoramic_img responsive-resize\"\n                                role=\"img\"\n                                [attr.aria-label]=\"\n                                    multimedia?.imagenes?.[0]?.img?.alt ?? null\n                                \"\n                                [attr.data-filename]=\"\n                                    multimedia?.imagenes?.[0]?.img?.alt ?? null\n                                \"\n                                [style.background-image]=\"\n                                    'url(' +\n                                    multimedia?.imagenes?.[0]?.img?.src +\n                                    ')'\n                                \"\n                            ></figure>\n                        }\n                        @if (\n                            multimedia?.imagenes?.[1]?.img?.src &&\n                            !hideSmallImage\n                        ) {\n                            <div class=\"complex-module-snippet\">\n                                <figure\n                                    class=\"complex-module-snippet_img\"\n                                    role=\"img\"\n                                    [attr.aria-label]=\"\n                                        multimedia?.imagenes?.[1]?.img?.alt ??\n                                        null\n                                    \"\n                                    [attr.data-lazyimg]=\"\n                                        multimedia?.imagenes?.[1]?.img?.src ??\n                                        null\n                                    \"\n                                    [style.background-image]=\"\n                                        'url(' +\n                                        multimedia?.imagenes?.[1]?.img?.src +\n                                        ')'\n                                    \"\n                                ></figure>\n                            </div>\n                        }\n                    </div>\n                }\n                <div class=\"complex-module-info\">\n                    <div class=\"wrap-complex-info\">\n                        @if (texts?.pretitle) {\n                            <p\n                                class=\"complex-info-pretitle\"\n                                [innerHTML]=\"texts?.pretitle\"\n                            ></p>\n                        }\n                        @if (texts?.title ?? roomText?.name) {\n                            <h2 class=\"complex-info-title\">\n                                {{ texts?.title ?? roomText?.name }}\n                            </h2>\n                        }\n                        @if (\n                            multimedia &&\n                            multimedia.imagenes &&\n                            multimedia.imagenes.length > 1\n                        ) {\n                            <div\n                                class=\"complex-info-media js-active-slider\"\n                                data-slider_name=\"js-complex-slider\"\n                                data-slider_showbtns=\"true\"\n                                data-slider_btns=\"btn-slide-circle\"\n                                data-slider_showdots=\"false\"\n                                data-slider_fade=\"true\"\n                                data-slider_autoplay=\"true\"\n                                data-slides_pc=\"1\"\n                                data-slides_laptop=\"1\"\n                                data-slides_tablet=\"1\"\n                                data-slides_mobile=\"1\"\n                            >\n                                <div\n                                    class=\"complex-info-media_arrows js-slider-arrows\"\n                                >\n                                    @if (isMultipleSlides()) {\n                                        <button\n                                            class=\"swiper-btn swiper-arrow swiper-button-prev btn-slide-circle\"\n                                            type=\"button\"\n                                            [attr.aria-label]=\"\n                                                backButton ?? 'Anterior'\n                                            \"\n                                            #sliderPrev\n                                        ></button>\n                                        <button\n                                            class=\"swiper-btn swiper-arrow swiper-button-next btn-slide-circle\"\n                                            type=\"button\"\n                                            [attr.aria-label]=\"\n                                                nextButton ?? 'Siguiente'\n                                            \"\n                                            #sliderNext\n                                        ></button>\n                                    }\n                                </div>\n                                <div class=\"complex-info-media_counter counter\">\n                                    <span class=\"counter-num actual\">{{\n                                        formatCounter(currentSlide)\n                                    }}</span>\n                                    <span class=\"counter-num total\">{{\n                                        formatCounter(totalSlides)\n                                    }}</span>\n                                </div>\n                                <div\n                                    class=\"js-complex-slider swiper\"\n                                    #mediaSlider\n                                    babylonSwiperCssLoader\n                                >\n                                    <div class=\"swiper-wrapper\">\n                                        @for (\n                                            slide of multimedia?.imagenes?.slice(\n                                                hideSmallImage ? 1 : 2\n                                            );\n                                            track trackSlide(\n                                                $index +\n                                                    (hideSmallImage ? 1 : 2)\n                                            )\n                                        ) {\n                                            <div\n                                                class=\"complex-info-media_element swiper-slide\"\n                                            >\n                                                <figure\n                                                    class=\"complex-info-media_img responsive-resize\"\n                                                    role=\"img\"\n                                                    [attr.aria-label]=\"\n                                                        slide?.img?.alt ?? null\n                                                    \"\n                                                    [attr.data-filename]=\"\n                                                        slide?.img?.alt ?? null\n                                                    \"\n                                                    [attr.data-src]=\"\n                                                        slide?.img?.src ||\n                                                        'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                                    \"\n                                                    [style.backgroundImage]=\"\n                                                        'url(' +\n                                                        slide?.img?.src +\n                                                        ')'\n                                                    \"\n                                                ></figure>\n                                            </div>\n                                        }\n                                    </div>\n                                    <!-- No dots, showDots es false en el JSON -->\n                                </div>\n                            </div>\n                        }\n                        <div class=\"complex-info-wrapper\">\n                            @if (texts?.description ?? roomText?.description) {\n                                <p\n                                    class=\"complex-info-text\"\n                                    [innerHTML]=\"\n                                        texts?.description ??\n                                        roomText?.description\n                                    \"\n                                ></p>\n                            }\n                            @if (\n                                buttons?.length && buttons?.[0]?.url && !isRoom\n                            ) {\n                                <div class=\"complex-info-btn btn-corp\">\n                                    <a\n                                        [href]=\"buttons?.[0]?.url\"\n                                        [linkType]=\"buttons?.[0]?.linkType\"\n                                        class=\"btn-corp-text\"\n                                    >\n                                        {{ buttons?.[0]?.label }}</a\n                                    >\n                                </div>\n                            }\n                            @if (\n                                buttons?.length && buttons?.[1]?.url && isRoom\n                            ) {\n                                <div class=\"complex-info-btn btn-corp\">\n                                    <a\n                                        [href]=\"buttons?.[1]?.url\"\n                                        [linkType]=\"buttons?.[1]?.linkType\"\n                                        class=\"btn-corp-text\"\n                                    >\n                                        {{ buttons?.[1]?.label }}</a\n                                    >\n                                </div>\n                            }\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n</section>\n","import { CommonModule } from '@angular/common';\nimport {\n    AfterViewInit,\n    Component,\n    ElementRef,\n    Input,\n    NgZone,\n    OnDestroy,\n    ViewChild,\n    ViewEncapsulation,\n} from '@angular/core';\nimport { BabylonSwiperCssLoaderDirective } from '../../../../directives/babylon-sliders/babylon-swiper-css-loader.directive';\nimport { BabylonLinkTypeDirective } from '../../../../directives/link-type/link-type.directive';\nimport {\n    CarCuImgTxtCtaContent,\n    CarCuImgTxtCtaSliderConfig,\n} from './car-cu-img-txt-cta.interfaces';\n\nimport Swiper, { Autoplay, EffectFade, Navigation, Pagination } from 'swiper';\nimport {\n    BabylonButtonI,\n    BabylonOfferItemI,\n    BabylonTextInfoI,\n} from '../../../../interfaces';\nimport { BabylonCurrencyPipe } from '../../../../pipes/babylon-currency.pipe';\n\nconst sliderSettingsJson = {\n    name: 'js-section-slider',\n    showButtons: true,\n    buttonsClass: 'btn-slide-circle',\n    showDots: false,\n    fade: false,\n    autoplay: true,\n    slidesPc: 2,\n    slidesLaptop: 2,\n    slidesTablet: 1,\n    slidesMobile: 1,\n};\n\nconst content = {\n    sectionClass: '',\n    wrapperClass: '',\n    containerClass: '',\n    header: {\n        title: '',\n        subtitle: '',\n        button: {\n            href: '',\n            text: '',\n        },\n    },\n    slider: {\n        name: 'js-section-slider',\n        showButtons: true,\n        buttonsClass: 'btn-slide-circle',\n        showDots: false,\n        fade: false,\n        autoplay: true,\n        slidesPc: 2,\n        slidesLaptop: 2,\n        slidesTablet: 1,\n        slidesMobile: 1,\n    },\n    items: [\n        {\n            linkHref: '',\n            image: {\n                role: '',\n                ariaLabel: '',\n                dataFilename: '',\n                dataLazyimg: '',\n                backgroundImage: '',\n            },\n            tag: '',\n            title: '',\n            subtitle: '',\n            price: {\n                sinceText: '',\n                value: '',\n                currency: '',\n            },\n            primaryButton: {\n                href: '',\n                text: '',\n            },\n            secondaryButton: {\n                href: '',\n                text: '',\n            },\n        },\n    ],\n};\n\nconst defaultSettings = sliderSettingsJson as CarCuImgTxtCtaSliderConfig;\nconst defaultData: CarCuImgTxtCtaContent = {\n    ...content,\n    slider: {\n        ...content.slider,\n        ...defaultSettings,\n    },\n};\n\n@Component({\n    selector: 'car-cu-img-txt-cta',\n    standalone: true,\n    imports: [\n        CommonModule,\n        BabylonSwiperCssLoaderDirective,\n        BabylonLinkTypeDirective,\n        BabylonCurrencyPipe,\n    ],\n    templateUrl: './car-cu-img-txt-cta.component.html',\n    styleUrl: './car-cu-img-txt-cta.component.scss',\n    encapsulation: ViewEncapsulation.Emulated,\n})\nexport class CarCuImgTxtCtaComponent implements AfterViewInit, OnDestroy {\n    private _data: CarCuImgTxtCtaContent = defaultData;\n    private sliderInitialized = false;\n    private swiperInstance?: Swiper;\n\n    @Input() items?: BabylonOfferItemI[];\n    @Input() texts?: BabylonTextInfoI;\n    @Input() buttons?: BabylonButtonI[];\n    @Input() offerTag?: string;\n    @Input() links?: BabylonButtonI[];\n\n    @ViewChild('sectionSlider', { static: false })\n    sectionSlider?: ElementRef<HTMLElement>;\n    @ViewChild('sliderPrev', { static: false })\n    sliderPrev?: ElementRef<HTMLButtonElement>;\n    @ViewChild('sliderNext', { static: false })\n    sliderNext?: ElementRef<HTMLButtonElement>;\n    @ViewChild('sliderPagination', { static: false })\n    sliderPagination?: ElementRef<HTMLElement>;\n\n    constructor(private readonly ngZone: NgZone) {}\n\n    @Input()\n    set data(value: CarCuImgTxtCtaContent) {\n        this._data = value ?? defaultData;\n        if (this.sliderInitialized) {\n            this.destroySlider();\n            this.initSlider();\n        }\n    }\n\n    get data(): CarCuImgTxtCtaContent {\n        return this._data;\n    }\n\n    ngAfterViewInit(): void {\n        this.initSlider();\n    }\n\n    ngOnDestroy(): void {\n        this.destroySlider();\n    }\n\n    trackItem(index: number): number {\n        return index;\n    }\n\n    private initSlider(): void {\n        if (\n            this.sliderInitialized ||\n            typeof window === 'undefined' ||\n            !this.sectionSlider\n        ) {\n            return;\n        }\n\n        const sliderConfig = this.data.slider;\n        const maxSlidesPerView = Math.max(\n            sliderConfig.slidesPc,\n            sliderConfig.slidesLaptop,\n            sliderConfig.slidesTablet,\n            sliderConfig.slidesMobile\n        );\n        const hasMultipleSlides = !!this.items?.length && this.items.length > 1;\n        const shouldLoop = !!(\n            hasMultipleSlides &&\n            this.items &&\n            this.items.length > maxSlidesPerView\n        );\n        const hasNavigation =\n            hasMultipleSlides &&\n            sliderConfig.showButtons &&\n            this.sliderPrev &&\n            this.sliderNext;\n        const hasPagination =\n            hasMultipleSlides && sliderConfig.showDots && this.sliderPagination;\n\n        this.ngZone.runOutsideAngular(() => {\n            this.swiperInstance = new Swiper(\n                this.sectionSlider!.nativeElement,\n                {\n                    modules: [Navigation, Pagination, Autoplay, EffectFade],\n                    slidesPerView: sliderConfig.slidesMobile,\n                    slidesPerGroup: sliderConfig.slidesMobile,\n                    speed: 300,\n                    loop: shouldLoop,\n                    autoHeight: true,\n                    effect: sliderConfig.fade ? 'fade' : 'slide',\n                    fadeEffect: sliderConfig.fade\n                        ? { crossFade: true }\n                        : undefined,\n                    autoplay: sliderConfig.autoplay\n                        ? {\n                              delay: 3000,\n                              disableOnInteraction: false,\n                          }\n                        : false,\n                    navigation: hasNavigation\n                        ? {\n                              //addIcons: false,\n                              nextEl: this.sliderNext!.nativeElement,\n                              prevEl: this.sliderPrev!.nativeElement,\n                          }\n                        : false,\n                    pagination: hasPagination\n                        ? {\n                              el: this.sliderPagination!.nativeElement,\n                              clickable: true,\n                          }\n                        : false,\n                    breakpoints: {\n                        768: {\n                            slidesPerView: sliderConfig.slidesTablet,\n                            slidesPerGroup: sliderConfig.slidesTablet,\n                        },\n                        1280: {\n                            slidesPerView: sliderConfig.slidesLaptop,\n                            slidesPerGroup: sliderConfig.slidesLaptop,\n                        },\n                        1680: {\n                            slidesPerView: sliderConfig.slidesPc,\n                            slidesPerGroup: sliderConfig.slidesPc,\n                        },\n                    },\n                }\n            );\n            this.sliderInitialized = true;\n        });\n    }\n\n    private destroySlider(): void {\n        if (!this.sliderInitialized || !this.swiperInstance) {\n            return;\n        }\n\n        this.swiperInstance.destroy(true, true);\n        this.swiperInstance = undefined;\n        this.sliderInitialized = false;\n    }\n}\n","<section [attr.class]=\"data.sectionClass\">\n    <div [attr.class]=\"data.wrapperClass\">\n        <div [attr.class]=\"data.containerClass\">\n            <header class=\"promo-module-header\">\n                @if (texts?.title) {\n                    <h2 class=\"promo-header-title\">{{ texts?.title }}</h2>\n                }\n                @if (texts?.description) {\n                    <p class=\"promo-header-subtitle\">\n                        {{ texts?.description }}\n                    </p>\n                }\n                @if (buttons?.[0]?.label) {\n                    <a\n                        [href]=\"buttons?.[0]?.url\"\n                        [linkType]=\"buttons?.[0]?.linkType\"\n                        class=\"promo-header-btn btn-linker toright\"\n                    >\n                        <p class=\"btn-linker-text\">{{ buttons?.[0]?.label }}</p>\n                    </a>\n                }\n            </header>\n            <div\n                class=\"promo-module-content js-active-slider\"\n                [attr.data-slider_name]=\"data.slider.name\"\n                [attr.data-slider_showbtns]=\"data.slider.showButtons\"\n                [attr.data-slider_btns]=\"data.slider.buttonsClass\"\n                [attr.data-slider_showdots]=\"data.slider.showDots\"\n                [attr.data-slider_fade]=\"data.slider.fade\"\n                [attr.data-slider_autoplay]=\"data.slider.autoplay\"\n                [attr.data-slides_pc]=\"data.slider.slidesPc\"\n                [attr.data-slides_laptop]=\"data.slider.slidesLaptop\"\n                [attr.data-slides_tablet]=\"data.slider.slidesTablet\"\n                [attr.data-slides_mobile]=\"data.slider.slidesMobile\"\n            >\n                <div\n                    class=\"promo-module-arrows section-slider-arrows js-slider-arrows\"\n                >\n                    @if ((items?.length ?? 0) > 2 && data.slider.showButtons) {\n                        <button\n                            class=\"swiper-btn swiper-arrow swiper-button-prev\"\n                            [ngClass]=\"data.slider.buttonsClass\"\n                            type=\"button\"\n                            aria-label=\"Anterior\"\n                            #sliderPrev\n                        ></button>\n                        <button\n                            class=\"swiper-btn swiper-arrow swiper-button-next\"\n                            [ngClass]=\"data.slider.buttonsClass\"\n                            type=\"button\"\n                            aria-label=\"Siguiente\"\n                            #sliderNext\n                        ></button>\n                    }\n                </div>\n                <div\n                    class=\"js-section-slider swiper\"\n                    #sectionSlider\n                    babylonSwiperCssLoader\n                    [ngClass]=\"{\n                        'single-slide-center': (items?.length ?? 0) === 1,\n                    }\"\n                >\n                    <div class=\"swiper-wrapper\">\n                        @for (item of items; track $index) {\n                            <div class=\"promo-module-element swiper-slide\">\n                                <div class=\"wrap-promo-element\">\n                                    <a\n                                        [href]=\"item?.buttons?.[1]?.url\"\n                                        [linkType]=\"\n                                            item?.buttons?.[1]?.linkType\n                                        \"\n                                    >\n                                        <div\n                                            class=\"promo-element-media js-section-arrows-zone\"\n                                        >\n                                            <figure\n                                                class=\"promo-element-media_img responsive-resize\"\n                                                role=\"img\"\n                                                [attr.aria-label]=\"\n                                                    item?.multimedia?.[0]?.title\n                                                \"\n                                                [attr.data-filename]=\"\n                                                    item?.multimedia?.[0]?.title\n                                                \"\n                                                [attr.data-src]=\"\n                                                    item?.multimedia?.[0]?.img\n                                                        ?.src ||\n                                                    'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                                \"\n                                                [style.backgroundImage]=\"\n                                                    item?.multimedia?.[0]?.img\n                                                        ?.src\n                                                        ? 'url(' +\n                                                          item?.multimedia?.[0]\n                                                              ?.img?.src +\n                                                          ')'\n                                                        : null\n                                                \"\n                                            ></figure>\n                                        </div>\n                                        <div class=\"promo-element-info\">\n                                            @if (item?.texts?.additional3) {\n                                                <span\n                                                    class=\"promo-element-info_tag\"\n                                                    >{{\n                                                        item?.texts?.additional3\n                                                    }}</span\n                                                >\n                                            }\n                                            @if (item?.texts?.title) {\n                                                <p\n                                                    class=\"promo-element-info_title\"\n                                                    [innerHTML]=\"\n                                                        item?.texts?.title\n                                                    \"\n                                                ></p>\n                                            }\n                                            @if (item?.texts?.subtitle) {\n                                                <p\n                                                    class=\"promo-element-info_subtitle\"\n                                                    [innerHTML]=\"\n                                                        item?.texts?.subtitle\n                                                    \"\n                                                ></p>\n                                            }\n                                        </div>\n                                    </a>\n                                    <div class=\"promo-element-foot\">\n                                        @if (item?.price) {\n                                            <div class=\"promo-element-price\">\n                                                <span\n                                                    class=\"promo-element-price_since\"\n                                                    >{{\n                                                        item?.texts?.additional1\n                                                    }}</span\n                                                >\n                                                <span\n                                                    class=\"promo-element-price_num\"\n                                                >\n                                                    {{ item?.price\n                                                    }}<small>{{\n                                                        item?.currency || 'EUR'\n                                                            | currencySymbol\n                                                    }}</small>\n                                                </span>\n                                            </div>\n                                        }\n                                        <div class=\"promo-element-btns\">\n                                            @if (item?.buttons?.[0]?.label) {\n                                                <div class=\"btn-corp\">\n                                                    <a\n                                                        [href]=\"\n                                                            item?.buttons?.[0]\n                                                                ?.url\n                                                        \"\n                                                        [linkType]=\"\n                                                            item?.buttons?.[0]\n                                                                ?.linkType\n                                                        \"\n                                                        class=\"btn-corp-text\"\n                                                        >{{\n                                                            item?.buttons?.[0]\n                                                                ?.label\n                                                        }}</a\n                                                    >\n                                                </div>\n                                            }\n                                            @if (item?.links?.[0]?.label) {\n                                                <a\n                                                    [href]=\"\n                                                        item?.links?.[0]?.url\n                                                    \"\n                                                    [linkType]=\"\n                                                        item?.links?.[0]\n                                                            ?.linkType\n                                                    \"\n                                                    class=\"btn-linker toright\"\n                                                >\n                                                    <p class=\"btn-linker-text\">\n                                                        {{\n                                                            item?.links?.[0]\n                                                                ?.label\n                                                        }}\n                                                    </p>\n                                                </a>\n                                            }\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                        }\n                    </div>\n                    @if (items?.length && data.slider.showDots) {\n                        <div class=\"swiper-pagination\" #sliderPagination></div>\n                    }\n                </div>\n            </div>\n        </div>\n    </div>\n</section>\n","import { CommonModule } from '@angular/common';\nimport {\n    AfterViewInit,\n    Component,\n    ElementRef,\n    Input,\n    NgZone,\n    OnDestroy,\n    ViewChild,\n    ViewEncapsulation,\n} from '@angular/core';\nimport Swiper, { Autoplay, EffectFade, Navigation, Pagination } from 'swiper';\nimport { BabylonLinkTypeDirective } from '../../../../directives/link-type/link-type.directive';\nimport {\n    BabylonButtonI,\n    BabylonMultimediaI,\n    BabylonSocialMediaI,\n    BabylonTextInfoI,\n} from '../../../../interfaces';\nimport { BabylonAddressItemI } from '../../../../interfaces/babylon-address-item.interface';\nimport { BabylonAdvantageItemI } from '../../../../interfaces/babylon-advantages-item.interface';\nimport { FoC4TxtSvgContent } from './fo-c4-txt-svg.interfaces';\n\nconst defaultData: FoC4TxtSvgContent = {\n    header: {\n        title: '',\n        topButton: {\n            text: '',\n            scrollTo: '',\n            scrollSpacer: '0',\n        },\n    },\n    hotels: [\n        {\n            href: '',\n            title: '',\n            address: ['', '', ''],\n        },\n    ],\n    infoCards: [\n        {\n            href: '',\n            iconClass: '',\n            title: '',\n            text: '',\n            buttonText: '',\n        },\n    ],\n    addressBlock: {\n        title: '',\n        iconClass: '',\n        lines: ['', '', ''],\n    },\n    contactBlock: {\n        title: '',\n        iconClass: '',\n        items: [\n            {\n                href: '',\n                text: '',\n                small: '',\n            },\n        ],\n    },\n    scheduleBlock: {\n        title: '',\n        iconClass: '',\n        lines: [],\n    },\n    newsletterCard: {\n        title: '',\n        iconClass: '',\n        text: '',\n        buttonText: '',\n    },\n    transferCard: {\n        href: '',\n        title: '',\n        iconClass: '',\n        text: '',\n        buttonText: '',\n    },\n    social: {\n        iconClass: '',\n        title: '',\n        links: [\n            {\n                href: '',\n                class: '',\n            },\n        ],\n    },\n    certificates: {\n        iconClass: '',\n        title: '',\n        sliderConfig: {\n            name: 'js-certificates-slider',\n            arrows: '',\n            showButtons: false,\n            buttonsClass: 'btn-slide-circle',\n            showDots: true,\n            fade: false,\n            autoplay: true,\n            slidesPc: 1,\n            slidesLaptop: 1,\n            slidesTablet: 1,\n            slidesMobile: 1,\n        },\n        items: [\n            {\n                src: '',\n                alt: 'tripadvisor certificate',\n                dataLazy: 'https://picsum.photos/150/150',\n                dataLazyimg: 'https://picsum.photos/150/150',\n            },\n            {\n                src: '',\n                alt: 'tripadvisor certificate',\n                dataLazy: 'https://picsum.photos/150/150',\n                dataLazyimg: 'https://picsum.photos/150/150',\n            },\n            {\n                src: '',\n                alt: 'tripadvisor certificate',\n                dataLazy: 'https://picsum.photos/150/150',\n                dataLazyimg: 'https://picsum.photos/150/150',\n            },\n            {\n                src: '',\n                alt: 'tripadvisor certificate',\n                dataLazy: 'https://picsum.photos/150/150',\n                dataLazyimg: 'https://picsum.photos/150/150',\n            },\n        ],\n    },\n    newsletterPopup: {\n        id: '',\n        title: '',\n        subtitle: '',\n        text: '',\n        inputLabel: '',\n        inputPlaceholder: '',\n        checkbox: {\n            text: '',\n            linkText: '',\n            linkHref: '',\n        },\n        image: {\n            src: '',\n            alt: '',\n        },\n        iconClass: '',\n    },\n};\n@Component({\n    selector: 'fo-c4-txt-svg',\n    standalone: true,\n    imports: [CommonModule, BabylonLinkTypeDirective],\n    templateUrl: './fo-c4-txt-svg.component.html',\n    styleUrl: './fo-c4-txt-svg.component.scss',\n    encapsulation: ViewEncapsulation.Emulated,\n})\nexport class FoC4TxtSvgComponent implements AfterViewInit, OnDestroy {\n    private _data: FoC4TxtSvgContent = defaultData;\n    newsletterOpen = false;\n    private sliderInitialized = false;\n    private swiperInstance?: Swiper;\n    private viewInitialized = false;\n    private initHandle: number | null = null;\n    private initRetries = 0;\n    private readonly maxInitRetries = 3;\n\n    @ViewChild('certificatesSlider', { static: false })\n    certificatesSlider?: ElementRef<HTMLElement>;\n    @ViewChild('certificatesPrev', { static: false })\n    certificatesPrev?: ElementRef<HTMLButtonElement>;\n    @ViewChild('certificatesNext', { static: false })\n    certificatesNext?: ElementRef<HTMLButtonElement>;\n    @ViewChild('certificatesPagination', { static: false })\n    certificatesPagination?: ElementRef<HTMLElement>;\n\n    constructor(private readonly ngZone: NgZone) {}\n\n    @Input() texts?: BabylonTextInfoI;\n    @Input() lists?: BabylonAdvantageItemI[];\n    @Input() footerLinks?: BabylonButtonI[];\n    @Input() socialMedia?: BabylonSocialMediaI[];\n    @Input() addressHotels?: BabylonAddressItemI[];\n    @Input() multimedia?: BabylonMultimediaI;\n    @Input() links?: BabylonButtonI[];\n\n    @Input()\n    set data(value: FoC4TxtSvgContent) {\n        this._data = value ?? defaultData;\n        if (this.sliderInitialized) {\n            this.destroySlider();\n            this.initSlider();\n        } else if (this.viewInitialized) {\n            this.initSlider();\n        }\n    }\n\n    get data(): FoC4TxtSvgContent {\n        return this._data;\n    }\n\n    ngAfterViewInit(): void {\n        this.viewInitialized = true;\n        this.initSlider();\n    }\n\n    ngOnDestroy(): void {\n        this.destroySlider();\n        if (this.initHandle) {\n            window.clearTimeout(this.initHandle);\n            this.initHandle = null;\n        }\n    }\n\n    toggleNewsletter(): void {\n        this.newsletterOpen = !this.newsletterOpen;\n    }\n\n    scrollTo(target: string, spacer: string): void {\n        if (typeof window === 'undefined' || typeof document === 'undefined') {\n            return;\n        }\n        const element = document.querySelector(target);\n        if (!element) {\n            return;\n        }\n        const offset = Number(spacer) || 0;\n        const top =\n            (element as HTMLElement).getBoundingClientRect().top +\n            window.scrollY -\n            offset;\n        window.scrollTo({ top, behavior: 'smooth' });\n    }\n\n    trackByIndex(index: number): number {\n        return index;\n    }\n\n    private initSlider(): void {\n        if (\n            this.sliderInitialized ||\n            typeof window === 'undefined' ||\n            !this.certificatesSlider\n        ) {\n            return;\n        }\n\n        const sliderElement = this.certificatesSlider?.nativeElement;\n        if (!(sliderElement instanceof Element) || !sliderElement.isConnected) {\n            return;\n        }\n        if (!sliderElement.querySelector('.swiper-wrapper')) {\n            const wrapper = document.createElement('div');\n            wrapper.classList.add('swiper-wrapper');\n            const slides = Array.from(sliderElement.children);\n            slides.forEach((child) => {\n                if (child instanceof HTMLElement) {\n                    child.classList.add('swiper-slide');\n                    wrapper.appendChild(child);\n                }\n            });\n            sliderElement.appendChild(wrapper);\n        }\n\n        const config = this.data.certificates.sliderConfig;\n        const maxSlidesPerView = Math.max(\n            config.slidesPc,\n            config.slidesLaptop,\n            config.slidesTablet,\n            config.slidesMobile\n        );\n        const hasMultipleSlides = this.data.certificates.items.length > 1;\n        const shouldLoop =\n            hasMultipleSlides &&\n            this.data.certificates.items.length > maxSlidesPerView;\n        const hasNavigation =\n            hasMultipleSlides &&\n            config.showButtons &&\n            this.certificatesPrev &&\n            this.certificatesNext;\n        const hasPagination =\n            hasMultipleSlides && config.showDots && this.certificatesPagination;\n\n        this.ngZone.runOutsideAngular(() => {\n            requestAnimationFrame(() => {\n                if (this.sliderInitialized || !sliderElement.isConnected) {\n                    return;\n                }\n                try {\n                    this.swiperInstance = new Swiper(sliderElement, {\n                        modules: [Navigation, Pagination, Autoplay, EffectFade],\n                        slidesPerView: config.slidesMobile,\n                        slidesPerGroup: config.slidesMobile,\n                        speed: 300,\n                        loop: shouldLoop,\n                        autoHeight: true,\n                        effect: config.fade ? 'fade' : 'slide',\n                        fadeEffect: config.fade\n                            ? { crossFade: true }\n                            : undefined,\n\n                        navigation: hasNavigation\n                            ? {\n                                  //addIcons: false,\n                                  nextEl: this.certificatesNext!.nativeElement,\n                                  prevEl: this.certificatesPrev!.nativeElement,\n                              }\n                            : false,\n                        pagination: hasPagination\n                            ? {\n                                  el: this.certificatesPagination!\n                                      .nativeElement,\n                                  clickable: true,\n                              }\n                            : false,\n                        breakpoints: {\n                            768: {\n                                slidesPerView: config.slidesTablet,\n                                slidesPerGroup: config.slidesTablet,\n                            },\n                            1280: {\n                                slidesPerView: config.slidesLaptop,\n                                slidesPerGroup: config.slidesLaptop,\n                            },\n                            1680: {\n                                slidesPerView: config.slidesPc,\n                                slidesPerGroup: config.slidesPc,\n                            },\n                        },\n                    });\n                    this.sliderInitialized = true;\n                    this.initRetries = 0;\n                } catch {\n                    this.scheduleInit();\n                }\n            });\n        });\n    }\n\n    /**\n     * Finds the item in links with the given order value.\n     * @param order The order number to search for.\n     * @returns The item with the matching order, or undefined if not found.\n     */\n    findLinkByOrder(order: string): any | undefined {\n        if (!this.links) return undefined;\n        let foundItem =\n            this.links.find((item) => item.order === order) ??\n            this.links?.[Number(order)];\n        return foundItem;\n    }\n\n    findLinkByIndex(order: number): any | undefined {\n        if (!this.links) return undefined;\n        let foundItem = this.links?.[order];\n        return foundItem;\n    }\n\n    private destroySlider(): void {\n        if (!this.sliderInitialized || !this.swiperInstance) {\n            return;\n        }\n\n        this.swiperInstance.destroy(true, true);\n        this.swiperInstance = undefined;\n        this.sliderInitialized = false;\n    }\n\n    private scheduleInit(): void {\n        if (this.sliderInitialized || this.initRetries >= this.maxInitRetries) {\n            return;\n        }\n        if (this.initHandle) {\n            return;\n        }\n        this.initRetries += 1;\n        this.initHandle = window.setTimeout(() => {\n            this.initHandle = null;\n            this.initSlider();\n        }, 0);\n    }\n}\n","@if (data) {\n    <!--\n    LIST PARAMETERS USAGE:\n    - The list is iterated to extract the title and icon for each section.\n    - The last item in the list will always be used for socialLinks, which are provided from a different input.\n    - Buttons must have an order and will correspond to the link of each list section.\n    - Multimedia is the certificates slider content.\n    This structure allows dynamic rendering of sections with their respective titles, icons, content, and ensures social links are always rendered last from a separate source.\n  -->\n    <div class=\"footer-container footer-b\">\n        <div class=\"wrap-footer-container\">\n            <div class=\"footer-content\">\n                <section class=\"links-module\">\n                    <div class=\"big-wrapper\">\n                        <div class=\"wrap-links-module\">\n                            @if (texts?.title) {\n                                <header class=\"footer-module-header\">\n                                    <h2 class=\"footer-title-header\">\n                                        {{ texts?.title }}\n                                    </h2>\n                                </header>\n                            }\n                            <div\n                                class=\"footer-content-top btn-circlejs-scrollto\"\n                                [attr.data-scroll_to]=\"\n                                    data.header.topButton.scrollTo\n                                \"\n                                [attr.data-scroll_spacer]=\"\n                                    data.header.topButton.scrollSpacer\n                                \"\n                                tabindex=\"0\"\n                                (click)=\"\n                                    scrollTo(\n                                        data.header.topButton.scrollTo,\n                                        data.header.topButton.scrollSpacer\n                                    )\n                                \"\n                                (keyup.enter)=\"\n                                    scrollTo(\n                                        data.header.topButton.scrollTo,\n                                        data.header.topButton.scrollSpacer\n                                    )\n                                \"\n                            >\n                                <svg\n                                    width=\"44\"\n                                    height=\"44\"\n                                    viewBox=\"0 0 44 44\"\n                                    fill=\"none\"\n                                    xmlns=\"http://www.w3.org/2000/svg\"\n                                >\n                                    <path\n                                        d=\"M22 1C10.402 1 1 10.402 1 22C1 33.598 10.402 43 22 43C33.598 43 43 33.598 43 22C43 10.402 33.598 1 22 1Z\"\n                                        fill=\"none\"\n                                        stroke=\"var(--cl_text)\"\n                                        stroke-width=\"1\"\n                                    />\n                                    <path\n                                        d=\"M21.2737 25.867L16.2217 20.789C16.04 20.6064 15.9383 20.3591 15.939 20.1016C15.9397 19.844 16.0426 19.5972 16.2252 19.4155C16.4078 19.2339 16.6551 19.1322 16.9127 19.1328C17.1703 19.1335 17.417 19.2364 17.5987 19.419L21.9477 23.819L26.3227 19.422C26.5044 19.2394 26.7512 19.1365 27.0087 19.1358C27.2663 19.1352 27.5136 19.2369 27.6982 19.4185C27.8788 19.6002 27.9818 19.847 27.9824 20.1046C27.9831 20.3621 27.8814 20.6094 27.6997 20.792L22.6497 25.868C22.4671 26.0504 22.2195 26.1527 21.9615 26.1525C21.7035 26.1523 21.456 26.0496 21.2737 25.867Z\"\n                                        fill=\"var(--cl_text)\"\n                                        transform=\"rotate(180 22 22)\"\n                                    />\n                                </svg>\n\n                                @if (\n                                    texts?.topButton ??\n                                        data.header.topButton.text;\n                                    as txt\n                                ) {\n                                    <span class=\"footer-static-top_text\">{{\n                                        txt\n                                    }}</span>\n                                }\n                            </div>\n\n                            <div class=\"links-module-list\">\n                                @for (\n                                    item of addressHotels;\n                                    track trackByIndex($index)\n                                ) {\n                                    <div class=\"links-module-element\">\n                                        <a\n                                            [href]=\"item?.url ?? item.mapLink\"\n                                            linkType=\"external\"\n                                        >\n                                            <div class=\"wrap-links-element\">\n                                                <div\n                                                    class=\"links-element-header\"\n                                                >\n                                                    <div\n                                                        class=\"wrap-links-header\"\n                                                    >\n                                                        @if (item?.name) {\n                                                            <p\n                                                                class=\"links-header-title text-uppercase\"\n                                                                [innerHTML]=\"\n                                                                    item?.name\n                                                                \"\n                                                            ></p>\n                                                        }\n                                                    </div>\n                                                </div>\n                                                <div\n                                                    class=\"links-element-content\"\n                                                >\n                                                    <div\n                                                        class=\"wrap-links-content\"\n                                                    >\n                                                        <div\n                                                            class=\"link-location\"\n                                                        >\n                                                            <i\n                                                                class=\"icon-address-shape location babylon-geo\"\n                                                            ></i>\n                                                        </div>\n                                                        <div class=\"link-info\">\n                                                            <p\n                                                                class=\"links-content-text\"\n                                                            >\n                                                                @if (\n                                                                    item?.address\n                                                                ) {\n                                                                    {{\n                                                                        item.address\n                                                                    }}\n                                                                    <br />\n                                                                }\n                                                                @if (\n                                                                    item.cp &&\n                                                                    item.city\n                                                                ) {\n                                                                    {{\n                                                                        item.cp\n                                                                    }}\n                                                                    {{\n                                                                        item.city\n                                                                    }}\n                                                                    <br />\n                                                                }\n                                                                @if (\n                                                                    item.province &&\n                                                                    item.country\n                                                                ) {\n                                                                    {{\n                                                                        item.province\n                                                                    }}\n                                                                    {{\n                                                                        item.country\n                                                                    }}\n                                                                }\n                                                            </p>\n                                                        </div>\n                                                    </div>\n                                                </div>\n                                            </div>\n                                        </a>\n                                    </div>\n                                }\n                            </div>\n                            <div class=\"bg-links-module\">\n                                <div class=\"links-module-list\">\n                                    @for (item of lists; track $index) {\n                                        <div class=\"links-module-element\">\n                                            <a\n                                                [href]=\"\n                                                    findLinkByIndex($index)?.url\n                                                \"\n                                                [disablePointerNone]=\"\n                                                    !!(\n                                                        (lists?.length ?? 0) &&\n                                                        $index >\n                                                            (lists?.length ??\n                                                                0) -\n                                                                2\n                                                    )\n                                                \"\n                                                [linkType]=\"\n                                                    findLinkByIndex($index)\n                                                        ?.linkType\n                                                \"\n                                            >\n                                                <div class=\"wrap-links-element\">\n                                                    <div\n                                                        class=\"links-element-header\"\n                                                    >\n                                                        <div\n                                                            class=\"wrap-links-header\"\n                                                        >\n                                                            <i\n                                                                class=\"links-header-icon\"\n                                                                [ngClass]=\"\n                                                                    item?.icon\n                                                                \"\n                                                            ></i>\n                                                            <p\n                                                                class=\"links-header-title text-uppercase\"\n                                                                [innerHTML]=\"\n                                                                    item?.title\n                                                                \"\n                                                            ></p>\n                                                        </div>\n                                                    </div>\n                                                    <div\n                                                        class=\"links-element-content\"\n                                                    >\n                                                        @if (\n                                                            (lists?.length ??\n                                                                0) &&\n                                                            $index >\n                                                                (lists?.length ??\n                                                                    0) -\n                                                                    2\n                                                        ) {\n                                                            <div\n                                                                class=\"links-element-content socials\"\n                                                            >\n                                                                <div\n                                                                    class=\"wrap-links-content block\"\n                                                                >\n                                                                    @for (\n                                                                        social of socialMedia;\n                                                                        track $index\n                                                                    ) {\n                                                                        <a\n                                                                            [href]=\"\n                                                                                social?.url\n                                                                            \"\n                                                                            rel=\"me\"\n                                                                            target=\"_blank\"\n                                                                            linkType=\"external\"\n                                                                            class=\"links-content-social\"\n                                                                            [ngClass]=\"\n                                                                                'icon-' +\n                                                                                (social?.name?.toLowerCase() ??\n                                                                                    '')\n                                                                            \"\n                                                                        ></a>\n                                                                    }\n                                                                </div>\n                                                            </div>\n                                                        } @else {\n                                                            <div\n                                                                class=\"wrap-links-content block\"\n                                                            >\n                                                                @if (\n                                                                    item?.text\n                                                                ) {\n                                                                    <p\n                                                                        class=\"links-content-text\"\n                                                                        [innerHTML]=\"\n                                                                            item?.text\n                                                                        \"\n                                                                    ></p>\n                                                                }\n                                                                <div\n                                                                    class=\"links-content-btn btn-linker toright\"\n                                                                >\n                                                                    <p\n                                                                        class=\"btn-linker-text\"\n                                                                    >\n                                                                        {{\n                                                                            findLinkByIndex(\n                                                                                $index\n                                                                            )\n                                                                                ?.label\n                                                                        }}\n                                                                    </p>\n                                                                </div>\n                                                            </div>\n                                                        }\n                                                    </div>\n                                                </div>\n                                            </a>\n                                        </div>\n                                    }\n                                    <!-- Address Block\n                <div class=\"links-module-element\">\n                  <div class=\"wrap-links-element\">\n                    <div class=\"links-element-header\">\n                      <div class=\"wrap-links-header\">\n                        <p class=\"links-header-title text-uppercase\">{{ data.addressBlock.title }}</p>\n                      </div>\n                    </div>\n                    <div class=\"links-element-content\">\n                      <div class=\"wrap-links-content\">\n                        <div class=\"link-location\">\n                          <i class=\"icon-address-shape location\"></i>\n                        </div>\n                        <div class=\"link-info\">\n                          @for (line of data.addressBlock.lines; track trackByIndex($index)) {\n                            <p class=\"links-content-text\">{{ line }}</p>\n                          }\n                        </div>\n                      </div>\n                    </div>\n                  </div>\n                </div>\n                -->\n                                    <!-- SOCIALS BLOCK\n                @if (list && list.length >= 2) {\n                  <div class=\"links-module-element socials\">\n                    <div class=\"wrap-links-element\">\n                      <div class=\"links-element-header\">\n                        <div class=\"wrap-links-header\">\n                          <i [ngClass]=\"list[list.length - 2]?.icon\"></i>\n                          <p class=\"links-header-title text-uppercase\" [innerHTML]=\"list[list.length - 2]?.title\"></p>\n                        </div>\n                      </div>\n                      <div class=\"links-element-content socials\">\n                        <div class=\"wrap-links-content block\">\n                          @for (social of socialMedia; track $index) {\n                            <a [href]=\"social?.url\" rel=\"me\" target=\"_blank\" linkType=\"external\" class=\"links-content-social\" [ngClass]=\"social?.icon\"></a>\n                          }\n                        </div>\n                      </div>\n                    </div>\n                  </div>\n                }\n              -->\n\n                                    @if (multimedia?.imagenes?.length) {\n                                        <div\n                                            class=\"links-module-element certificates\"\n                                        >\n                                            <div class=\"wrap-links-element\">\n                                                <div\n                                                    class=\"links-element-header\"\n                                                >\n                                                    <div\n                                                        class=\"wrap-links-header\"\n                                                    >\n                                                        <i\n                                                            [ngClass]=\"\n                                                                data\n                                                                    .certificates\n                                                                    .iconClass\n                                                            \"\n                                                        ></i>\n                                                        <p\n                                                            class=\"links-header-title text-uppercase\"\n                                                        >\n                                                            {{\n                                                                texts?.additional\n                                                            }}\n                                                        </p>\n                                                    </div>\n                                                </div>\n                                                <div\n                                                    class=\"links-element-certificates js-active-slider\"\n                                                    [attr.data-slider_name]=\"\n                                                        data.certificates\n                                                            .sliderConfig.name\n                                                    \"\n                                                    [attr.data-slider_arrows]=\"\n                                                        data.certificates\n                                                            .sliderConfig.arrows\n                                                    \"\n                                                    [attr.data-slider_showbtns]=\"\n                                                        data.certificates\n                                                            .sliderConfig\n                                                            .showButtons\n                                                    \"\n                                                    [attr.data-slider_btns]=\"\n                                                        data.certificates\n                                                            .sliderConfig\n                                                            .buttonsClass\n                                                    \"\n                                                    [attr.data-slider_showdots]=\"\n                                                        data.certificates\n                                                            .sliderConfig\n                                                            .showDots\n                                                    \"\n                                                    [attr.data-slider_fade]=\"\n                                                        data.certificates\n                                                            .sliderConfig.fade\n                                                    \"\n                                                    [attr.data-slider_autoplay]=\"\n                                                        data.certificates\n                                                            .sliderConfig\n                                                            .autoplay\n                                                    \"\n                                                    [attr.data-slides_pc]=\"\n                                                        data.certificates\n                                                            .sliderConfig\n                                                            .slidesPc\n                                                    \"\n                                                    [attr.data-slides_laptop]=\"\n                                                        data.certificates\n                                                            .sliderConfig\n                                                            .slidesLaptop\n                                                    \"\n                                                    [attr.data-slides_tablet]=\"\n                                                        data.certificates\n                                                            .sliderConfig\n                                                            .slidesTablet\n                                                    \"\n                                                    [attr.data-slides_mobile]=\"\n                                                        data.certificates\n                                                            .sliderConfig\n                                                            .slidesMobile\n                                                    \"\n                                                >\n                                                    <div\n                                                        class=\"wrap-links-certificates\"\n                                                    >\n                                                        <div\n                                                            class=\"js-certificates-slider\"\n                                                            #certificatesSlider\n                                                        >\n                                                            @for (\n                                                                item of multimedia?.imagenes;\n                                                                track $index\n                                                            ) {\n                                                                <div\n                                                                    class=\"certificates-slider-element\"\n                                                                >\n                                                                    <div\n                                                                        class=\"wrap-certificates-element\"\n                                                                    >\n                                                                        <img\n                                                                            [src]=\"\n                                                                                item\n                                                                                    ?.img\n                                                                                    ?.src\n                                                                            \"\n                                                                            [alt]=\"\n                                                                                item\n                                                                                    ?.img\n                                                                                    ?.alt\n                                                                            \"\n                                                                            class=\"certificates-element-img\"\n                                                                            [attr.data-lazyimg]=\"\n                                                                                item\n                                                                                    ?.img\n                                                                                    ?.src\n                                                                            \"\n                                                                        />\n                                                                    </div>\n                                                                </div>\n                                                            }\n                                                        </div>\n                                                    </div>\n                                                </div>\n                                            </div>\n                                        </div>\n                                    }\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </section>\n            </div>\n        </div>\n    </div>\n    <!-- NEWSLETTER POPUP no viene en el figma\n  <aside\n    [id]=\"data.newsletterPopup.id\"\n    class=\"popup-module\"\n    [class.open]=\"newsletterOpen\"\n  >\n    <div class=\"wrap-popup-module\">\n      <div\n        class=\"popup-module-backmask popup-box-close js-toggle-popup\"\n        [attr.data-popup]=\"data.newsletterPopup.id\"\n        (click)=\"toggleNewsletter()\"\n      ></div>\n      <div class=\"popup-module-box\">\n        <i\n          class=\"popup-box-close btn-close js-toggle-popup\"\n          [attr.data-popup]=\"data.newsletterPopup.id\"\n          (click)=\"toggleNewsletter()\"\n        ></i>\n        <div class=\"wrap-popup-box\">\n          <div class=\"popup-row\">\n            <div class=\"popup-col\">\n              <article>\n                <div class=\"row-flex pop-title-border-bottom text-left\">\n                  <div class=\"col-flex\">\n                    <p class=\"popup-box-title\">{{ data.newsletterPopup.title }}</p>\n                    <p class=\"popup-box-subtitle\">{{ data.newsletterPopup.subtitle }}</p>\n                  </div>\n                  <div class=\"col-flex\">\n                    <i [ngClass]=\"data.newsletterPopup.iconClass\"></i>\n                  </div>\n                </div>\n                <div class=\"popup-box-newsletter\">\n                  <div class=\"wrap-box-newsletter\">\n                    <p class=\"popup-box-text\">{{ data.newsletterPopup.text }}</p>\n                    <div class=\"popup-newsletter-input\">\n                      <div class=\"input-element button\">\n                        <div class=\"wrap-input-element\">\n                          <span class=\"input-element-text\">{{ data.newsletterPopup.inputLabel }}</span>\n                          <input type=\"email\" class=\"input-element-field\" [placeholder]=\"data.newsletterPopup.inputPlaceholder\" />\n                          <button type=\"submit\" class=\"input-element-button\"></button>\n                        </div>\n                      </div>\n                    </div>\n                    <div class=\"popup-newsletter-checkbox\">\n                      <label class=\"checkbox-element\">\n                        <input class=\"checkbox-input\" type=\"checkbox\" name=\"conditions\" />\n                        <div class=\"checkbox-icon\"></div>\n                        <p class=\"checkbox-text\">\n                          {{ data.newsletterPopup.checkbox.text }}\n                          <a [href]=\"data.newsletterPopup.checkbox.linkHref\" target=\"_blank\" class=\"checkbox-text-link\">\n                            {{ data.newsletterPopup.checkbox.linkText }}\n                          </a>\n                        </p>\n                      </label>\n                    </div>\n                  </div>\n                </div>\n              </article>\n            </div>\n            <div class=\"popup-col\">\n              <div class=\"box-img\">\n                <img [src]=\"data.newsletterPopup.image.src\" [alt]=\"data.newsletterPopup.image.alt\" />\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </aside>\n  -->\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, ViewEncapsulation, inject } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { BabylonButtonI, BabylonImageI, BabylonTextInfoI } from '../../../../interfaces';\nimport { buildFilterOptions, filteredItems, getItemBrand } from '../../../../utils/filter.utils';\nimport { BabylonLinkTypeDirective } from '../../../../directives/link-type/link-type.directive';\nimport { BabylonCurrencyPipe } from '../../../../pipes/babylon-currency.pipe';\n\nimport { OnChanges, SimpleChanges, OnInit, OnDestroy, ChangeDetectorRef } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { Subscription } from 'rxjs';\nimport { BabylonGlobalItem } from '../../../../interfaces/babylon-global-item.interface';\nimport { getFirstImageByTagFromImages } from '../../../../utils/mutimedia.utils';\nimport { normalizeGlobalItems } from '../../../../utils/normalize-items.utils';\nimport { Utils } from '../../../../utils';\n\n@Component({\n    selector: 'lis-c2-img-txt-cta',\n    standalone: true,\n    imports: [\n        CommonModule,\n        BabylonLinkTypeDirective,\n        BabylonCurrencyPipe,\n        FormsModule,\n    ],\n    templateUrl: './lis-c2-img-txt-cta.component.html',\n    styleUrl: './lis-c2-img-txt-cta.component.scss',\n    encapsulation: ViewEncapsulation.Emulated,\n})\nexport class LisC2ImgTxtCtaComponent implements OnChanges, OnInit, OnDestroy {\n    @Input() texts?: BabylonTextInfoI;\n    @Input() items?: BabylonGlobalItem[];\n    @Input() links?: BabylonButtonI[];\n    @Input() additional1LikeMarca?: boolean = false;\n    @Input() showCleanFilters: boolean = true;\n    @Input() showFilters: boolean = true; // to show or hide filters section\n\n    tagName: string = 'LisC2ImgTxtCta';\n\n    selectedHotelType: string = '';\n    selectedDestination: string = '';\n    selectedBrand: string = '';\n\n    hotelTypeOptions: string[] = [];\n    destinationOptions: string[] = [];\n    brandOptions: string[] = [];\n\n    filterLabelToSlug = new Map<string, string>();\n    destinationLabelToSlug = new Map<string, string>();\n    brandLabelToSlug = new Map<string, string>();\n\n    private route = inject(ActivatedRoute);\n    private cdr = inject(ChangeDetectorRef);\n    private qpSub?: Subscription;\n    private pendingDestination?: string;\n\n    // Items filtrados sin normalizar (usados para lógica)\n    private _filteredItemsRaw: BabylonGlobalItem[] = [];\n\n    private findAndSelectDestination(destinationName: string): void {\n        const normalizedName = destinationName.toLowerCase().trim();\n\n        // Primero buscar en el array de strings de destinos\n        let found = this.destinationOptions?.find(\n            (destination) => destination.toLowerCase().trim() === normalizedName\n        );\n\n        if (found) {\n            this.selectedDestination = found;\n            this.updateFilteredItems();\n            return;\n        }\n\n        // Si no encuentra en destinationOptions, buscar en los items por country\n        const itemWithCountry = this.items?.find(\n            (item) => item.country?.toLowerCase().trim() === normalizedName\n        );\n\n        if (itemWithCountry && itemWithCountry.country) {\n            // Filtrar directamente por country aunque no exista en destinationOptions\n            this.selectedDestination = itemWithCountry.country;\n            this.updateFilteredItems();\n        }\n    }\n\n    /**\n     * Devuelve el label del botón en la posición index, buscando en item.buttons[index].label\n     * y si no existe, en item.multimedia.imagenes[0].buttons[index].label\n     */\n    getButtonLabel(item: BabylonGlobalItem, index: number): string | undefined {\n        if (item?.buttons?.[index]?.label) {\n            return item.buttons[index].label;\n        }\n        return item?.multimedia?.imagenes?.[0]?.buttons?.[index]?.label;\n    }\n\n    getButtonUrl(item: BabylonGlobalItem, index: number): string | undefined {\n        return (\n            this.buildMenuUrl(item?.multimedia?.imagenes?.[0]?.buttons?.[index]) ||\n            this.buildMenuUrl(item?.buttons?.[index])\n        );\n    }\n\n    getButtonLinkType(item: BabylonGlobalItem, index: number): any {\n        return (\n          item?.multimedia?.imagenes?.[0]?.buttons?.[index]?.linkType ||\n            item?.buttons?.[index]?.linkType\n\n        );\n    }\n\n    buildMenuUrl(item: BabylonButtonI | undefined): string {\n      if (!item?.url) return '';\n\n      const baseUrl = item.url.replace(/\\/+$/, '');\n      const destination = (item.vars ?? '').toString().trim();\n\n      if (!destination) return baseUrl;\n\n      const slug = Utils.toSlug(destination);\n      if (!slug) return baseUrl;\n\n      return `${baseUrl}?destinations=${destination}`;\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if (changes['items']) {\n            const opts = buildFilterOptions(\n                this.items ?? [],\n                this.additional1LikeMarca ?? false\n            );\n            this.hotelTypeOptions = opts.hotelTypeOptions;\n            this.destinationOptions = opts.destinationOptions;\n\n            // Rellenar brandOptions usando getItemBrand para coherencia\n            const brands = new Set<string>();\n            (this.items ?? []).forEach((it) => {\n                const brand = getItemBrand(\n                    it,\n                    this.additional1LikeMarca ?? false\n                );\n                if (brand) brands.add(brand);\n            });\n            this.brandOptions = Array.from(brands);\n            this.filterLabelToSlug = opts.filterLabelToSlug;\n            this.destinationLabelToSlug = opts.destinationLabelToSlug;\n            this.brandLabelToSlug = opts.brandLabelToSlug;\n\n            // Solo resetear si no hay un destino pendiente de la URL\n            if (!this.pendingDestination) {\n                this.selectedHotelType = '';\n                this.selectedDestination = '';\n                this.selectedBrand = '';\n            } else {\n                // Si hay un destino pendiente de la URL, intenta seleccionarlo ahora\n                this.findAndSelectDestination(this.pendingDestination);\n            }\n\n            // Actualizar items filtrados\n            this.updateFilteredItems();\n        }\n    }\n\n    ngOnInit(): void {\n        // Suscribirse a los cambios de query params\n        this.qpSub = this.route.queryParamMap.subscribe((params) => {\n            const destinationsParam = params.get('destinations');\n\n            if (destinationsParam) {\n                const decodedDestination = decodeURIComponent(destinationsParam);\n                this.pendingDestination = decodedDestination;\n\n                // Si ya tenemos destinationOptions, buscar y seleccionar\n                if (this.destinationOptions && this.destinationOptions.length > 0) {\n                    this.findAndSelectDestination(decodedDestination);\n                } else {\n                }\n\n                this.cdr.markForCheck();\n            }\n        });\n    }\n\n    ngOnDestroy(): void {\n        this.qpSub?.unsubscribe();\n    }\n\n    /**\n     * Devuelve un array normalizado de BabylonGlobalItem\n     */\n    get normalizedItems(): BabylonGlobalItem[] {\n        return normalizeGlobalItems(this.items);\n    }\n\n    getFirstImageByTag(tagName: string, imagenes: BabylonImageI[]) {\n        return getFirstImageByTagFromImages(imagenes, tagName);\n    }\n\n    get filteredItems() {\n        // Devolver los items filtrados normalizados\n        return normalizeGlobalItems(this._filteredItemsRaw);\n    }\n\n    private updateFilteredItems(): void {\n        let items = filteredItems({\n            items: this.items ?? [],\n            selectedHotelType: this.selectedHotelType,\n            selectedDestination: this.selectedDestination,\n            selectedBrand: this.selectedBrand,\n            additional1LikeMarca: this.additional1LikeMarca ?? false,\n        });\n\n        // Si hay destinationSelected y no tiene resultados, intentar filtrar por country\n        if (this.selectedDestination && items.length === 0 && this.items) {\n            items = this.items.filter((item) => {\n                const hotelTypeOk =\n                    !this.selectedHotelType ||\n                    (item as any)?.hoteltype === this.selectedHotelType;\n\n                const destinationOk =\n                    !this.selectedDestination ||\n                    item.country?.toLowerCase().trim() ===\n                        this.selectedDestination.toLowerCase().trim();\n\n                const brandOk =\n                    !this.selectedBrand ||\n                    Utils.toSlug(getItemBrand(item, this.additional1LikeMarca ?? false)) ===\n                        Utils.toSlug(this.selectedBrand);\n\n                return hotelTypeOk && destinationOk && brandOk;\n            });\n        }\n\n        this._filteredItemsRaw = items;\n        this.cdr.markForCheck();\n    }\n\n    get hasActiveFilters(): boolean {\n        return [\n            this.selectedHotelType,\n            this.selectedDestination,\n            this.selectedBrand,\n        ].some((v) => v && v !== '');\n    }\n\n    onHotelTypeChange(value: string | undefined) {\n        this.selectedHotelType = value ?? '';\n        this.updateFilteredItems();\n    }\n\n    onDestinationChange(value: string | undefined) {\n        this.selectedDestination = value ?? '';\n        this.updateFilteredItems();\n    }\n\n    onBrandChange(value: string | undefined) {\n        this.selectedBrand = value ?? '';\n        this.updateFilteredItems();\n    }\n\n    clearFilters() {\n        this.selectedHotelType = '';\n        this.selectedDestination = '';\n        this.selectedBrand = '';\n        this.updateFilteredItems();\n    }\n\n    trackFilter(index: number): number {\n        return index;\n    }\n    trackOption(index: number): number {\n        return index;\n    }\n    trackOffer(index: number): number {\n        return index;\n    }\n}\n","  <div class=\"page-container first-module offers-page\">\n    <div class=\"big-wrapper\">\n      <div class=\"wrap-page-container\">\n        <header class=\"global-header\">\n          <div class=\"wrap-global-header visible\">\n            @if (texts?.title) {\n              <h1 class=\"global-header-title\">{{ texts?.title }}</h1>\n            }\n             @if (texts?.subtitle) {\n              <p class=\"global-header-subtitle\" [innerHTML]=\"texts?.subtitle\"></p>\n             }\n            <div class=\"offers-inputs\" *ngIf=\"showFilters\">\n              <div class=\"global-header-form\">\n                <!--filters-->\n                <!-- Brand filter -->\n                  <div class=\"header-form-element\">\n                    <div class=\"input-element select\">\n                      <div class=\"wrap-input-element\">\n                        @if (texts?.marca) {\n                          <span class=\"input-element-text\">{{ texts?.marca ?? 'marca' }}</span>\n                        }\n                          <select\n                            class=\"input-element-field js-filter-offers\"\n                            [(ngModel)]=\"selectedBrand\"\n                            (ngModelChange)=\"onBrandChange($event)\"\n                          >\n                            <option value=\"\">{{ texts?.marca ?? 'marca' }}</option>\n                            @for (opt of brandOptions; track $index) {\n                              <option [value]=\"opt\">{{ opt }}</option>\n                            }\n                          </select>\n                      </div>\n                    </div>\n                  </div>\n                  <!-- services-->\n                    <div class=\"header-form-element\">\n                      <div class=\"input-element select\">\n                        <div class=\"wrap-input-element\">\n                          @if (texts?.destinations) {\n                            <span class=\"input-element-text\">{{ texts?.destinations ?? 'destinos' }}</span>\n                          }\n                          <select\n                            class=\"input-element-field js-filter-offers\"\n                            [(ngModel)]=\"selectedDestination\"\n                            (ngModelChange)=\"onDestinationChange($event)\"\n                          >\n                            <option value=\"\">{{ texts?.destinations ?? 'destinos' }}</option>\n                            @for (opt of destinationOptions; track $index) {\n                              <option [value]=\"opt\">{{ opt }}</option>\n                            }\n                          </select>\n                        </div>\n                      </div>\n                  </div>\n                <!--end filters-->\n              </div>\n            </div>\n          </div>\n        </header>\n      </div>\n    </div>\n  </div>\n  <section class=\"promo-module offers-page\">\n    <div class=\"big-wrapper\">\n      <div class=\"wrap-promo-module module-spacer\">\n        <div class=\"promo-module-content\">\n          @if (filteredItems?.length) {\n            @for (item of filteredItems; track trackOffer($index)) {\n              <div class=\"promo-module-element\">\n                <div class=\"wrap-promo-element\">\n                  <a\n                    [href]=\"getButtonUrl(item, 1)\"\n                    [linkType]=\"getButtonLinkType(item, 1)\"\n                    >\n                    <div class=\"promo-element-media js-section-arrows-zone\">\n                      @if (\n                      getFirstImageByTag(\n                        tagName,\n                        item?.multimedia?.imagenes ?? []\n                      ) ?? item?.multimedia?.imagenes?.[0];\n                      as img\n                      ) {\n                        <figure\n                          class=\"promo-element-media_img responsive-resize\"\n                          role=\"img\"\n                          [attr.aria-label]=\"img?.img?.alt ?? 'itemImage'\"\n                          [attr.data-filename]=\"img?.img?.alt ?? 'itemFileName'\"\n                          [style.background-image]=\"'url(' + img?.img?.src + ')'\"\n                        ></figure>\n                  }\n                    </div>\n                    <div class=\"promo-element-info\">\n                      @if (item?.texts?.additional3) {\n                        <span class=\"promo-element-info_tag\">{{ item?.texts?.additional3 }}</span>\n                      }\n                      @if ( item?.texts?.title || item?.texts?.name) {\n                        <p class=\"promo-element-info_title\" [innerHTML]=\"item?.texts?.title || item?.texts?.name\"></p>\n                      }\n                      @if ( item?.texts?.additional2) {\n                        <p class=\"promo-element-info_subtitle\" [innerHTML]=\"item?.texts?.additional2\"></p>\n                      }\n                    </div>\n                  </a>\n                  <div class=\"promo-element-foot\">\n                    <div class=\"promo-element-price\">\n                      @if ((item?.price || item?.discount) && item?.texts?.additional1) {\n                        <span class=\"promo-element-price_since\" >{{ item?.texts?.additional1 }}</span>\n                      }\n                      @if (item?.price) {\n                        <span class=\"promo-element-price_num\">\n                          {{ item?.price }}<small>{{ (item?.currency || 'EUR') | currencySymbol }}</small>\n                        </span>\n                      }\n                      @if (item.discount) {\n                        <span class=\"promo-element-price_num\">\n                          {{ item?.discount }}<small> %</small>\n                        </span>\n                      }\n                    </div>\n                    <div class=\"promo-element-btns\">\n                      @if (getButtonLabel(item, 0)) {\n                      <div class=\"btn-corp\">\n                        <a\n                          [href]=\"getButtonUrl(item, 0)\"\n                          [linkType]=\"getButtonLinkType(item, 0)\"\n                          class=\"btn-corp-text\">\n                          {{ getButtonLabel(item, 0) }}\n                        </a>\n                      </div>\n                    }\n                    @if (getButtonLabel(item, 1)) {\n                      <a [href]=\"getButtonUrl(item, 1)\"\n                          [linkType]=\"getButtonLinkType(item, 1)\" class=\"btn-linker toright\">\n                        <p class=\"btn-linker-text\" [innerHTML]=\"getButtonLabel(item, 1)\"></p>\n                      </a>\n                    }\n                    </div>\n                  </div>\n                </div>\n              </div>\n            }\n          }\n        </div>\n        <div class=\"offers-message\" [class.show]=\"filteredItems?.length\">\n          <div class=\"wrap-message\">\n            @if (texts?.notFound) {\n              <p class=\"message-text\" [innerHTML]=\"texts?.notFound\"></p>\n            }\n          </div>\n        </div>\n        <div class=\"temp-trash\"></div>\n      </div>\n    </div>\n  </section>\n","import {  BabylonTextInfoI } from '../interfaces';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\n\nexport class UtilsVideo {\n\n    static youtubeEmbedUrl(\n        url: string,\n        sanitizer: DomSanitizer\n    ): SafeResourceUrl | null {\n        if (!url) return null;\n\n        let videoId: string | null = null;\n\n        // youtu.be/ID\n        const shortMatch = url.match(/youtu\\.be\\/([^?&]+)/);\n        if (shortMatch) {\n            videoId = shortMatch[1];\n        }\n\n        // youtube.com/watch?v=ID\n        if (!videoId) {\n            const longMatch = url.match(/[?&]v=([^?&]+)/);\n            if (longMatch) {\n                videoId = longMatch[1];\n            }\n        }\n\n        if (!videoId) return null;\n\n        const finalUrl = `https://www.youtube-nocookie.com/embed/${videoId}?enablejsapi=1&controls=0&autoplay=1&loop=1&mute=1&playlist=${videoId}&playsinline=1&modestbranding=1&iv_load_policy=3&disablekb=1&rel=0&showinfo=0`;\n\n        return sanitizer.bypassSecurityTrustResourceUrl(finalUrl);\n    }\n}\n","import { CommonModule } from '@angular/common';\nimport {\n    AfterViewInit,\n    Component,\n    ElementRef,\n    Input,\n    NgZone,\n    OnDestroy,\n    Renderer2,\n    ViewChild,\n    ViewContainerRef,\n    ViewEncapsulation,\n    computed,\n    inject,\n} from '@angular/core';\nimport Swiper, { Autoplay, EffectFade, Navigation, Pagination } from 'swiper';\nimport { BabylonSwiperCssLoaderDirective } from '../../../../directives/babylon-sliders/babylon-swiper-css-loader.directive';\nimport { BabylonLinkTypeDirective } from '../../../../directives/link-type/link-type.directive';\nimport {\n    BabylonButtonI,\n    BabylonMultimediaI,\n    BabylonTextInfoI,\n} from '../../../../interfaces';\nimport { BabylonHotelStylesItem } from '../../../../interfaces/babylon-hotel-styles.interface';\nimport { ScreenSizerService } from '../../../../services/screen-sizer';\nimport {\n    getContactMeta,\n    onContactClick,\n} from '../../../../utils/contact.utils';\nimport { PortadaHotelV1Content } from './portada-hotel-v1.interfaces';\nimport { UtilsVideo } from '../../../../utils/utils.video';\nimport { DomSanitizer } from '@angular/platform-browser';\n\nconst defaultData = {\n    logoHref: '/',\n    logoSrc: '',\n    breadcrumbs: [{ label: '', href: '', active: false }],\n    title: '',\n    phrase: '',\n    button: {\n        label: '',\n        href: '',\n        className: 'top-module-text_btn btn-corp btn-white',\n        target: '_blank',\n        tabindex: '0',\n    },\n    slider: {\n        settings: {\n            name: 'top-module-slider',\n            arrowsClass: 'advantages-content-arrows',\n            showButtons: false,\n            buttonsClass: 'btn-slide-circle',\n            showDots: false,\n            fade: false,\n            autoplay: true,\n            slidesPc: 1,\n            slidesLaptop: 1,\n            slidesTablet: 1,\n            slidesMobile: 1,\n        },\n        images: [\n            {\n                backgroundImage: '',\n                dataLazyimg: '',\n                dataSection: '',\n            },\n        ],\n    },\n    links: [\n        {\n            label: '',\n            href: '',\n            className: '',\n            iconClass: '',\n        },\n    ],\n    infoBadge: {\n        text: '',\n        mark: '',\n    },\n    scroll: {\n        target: '',\n        spacer: '',\n        text: '',\n    },\n} as PortadaHotelV1Content;\n\n@Component({\n    selector: 'portada-hotel-v1',\n    standalone: true,\n    imports: [\n        CommonModule,\n        BabylonSwiperCssLoaderDirective,\n        BabylonLinkTypeDirective,\n    ],\n    templateUrl: './portada-hotel-v1.component.html',\n    styleUrl: './portada-hotel-v1.component.scss',\n    encapsulation: ViewEncapsulation.Emulated,\n})\nexport class PortadaHotelV1Component implements AfterViewInit, OnDestroy {\n    private _data: PortadaHotelV1Content = defaultData;\n    private cleanupFns: Array<() => void> = [];\n    private scheduleHandle: ReturnType<typeof setTimeout> | null = null;\n    private motorLock = false;\n\n    @ViewChild('hotelSlider', { static: false })\n    hotelSlider?: ElementRef<HTMLElement>;\n    @ViewChild('sliderPrev', { static: false })\n    sliderPrev?: ElementRef<HTMLButtonElement>;\n    @ViewChild('sliderNext', { static: false })\n    sliderNext?: ElementRef<HTMLButtonElement>;\n    @ViewChild('sliderPagination', { static: false })\n    sliderPagination?: ElementRef<HTMLElement>;\n\n    // Inputs igual que portada-home\n    @Input() showDots: boolean = true;\n    @Input() showButtons: boolean = false;\n    @Input() multimedia?: BabylonMultimediaI;\n    @Input() buttons?: BabylonButtonI[];\n    @Input() texts?: BabylonTextInfoI;\n    @Input() isRoom?: boolean = false;\n    @Input() styles?: BabylonHotelStylesItem;\n    getContactMeta = getContactMeta;\n    UtilsVideo = UtilsVideo;\n    onContactClick = onContactClick;\n\n    public safeVideoUrl: any;\n\n    private sliderInitialized = false;\n    private swiperInstance?: Swiper;\n\n    constructor(\n        private readonly renderer: Renderer2,\n        private readonly ngZone: NgZone,\n        private readonly viewContainerRef: ViewContainerRef,\n        private sanitizer: DomSanitizer\n    ) {}\n\n    ngOnInit() {\n        if (this.texts?.portadahotelv1video) {\n            this.safeVideoUrl = UtilsVideo.youtubeEmbedUrl(this.texts?.portadahotelv1video, this.sanitizer);\n        }\n    }\n\n    @Input()\n    set data(value: PortadaHotelV1Content) {\n        this._data = value ?? defaultData;\n        this.scheduleSetup();\n        if (this.sliderInitialized) {\n            this.destroySlider();\n            this.initSlider();\n        }\n    }\n\n    get data(): PortadaHotelV1Content {\n        return this._data;\n    }\n\n    ngAfterViewInit(): void {\n        this.scheduleSetup();\n        this.initSlider();\n    }\n\n    ngOnDestroy(): void {\n        this.destroySlider();\n        this.cleanupInteractions();\n        if (this.scheduleHandle) {\n            clearTimeout(this.scheduleHandle);\n        }\n        if (this.motorLock && typeof document !== 'undefined') {\n            document.body.classList.remove('noscroll');\n        }\n    }\n\n    private scheduleSetup(): void {\n        if (this.scheduleHandle) {\n            clearTimeout(this.scheduleHandle);\n        }\n        this.scheduleHandle = setTimeout(() => {\n            this.scheduleHandle = null;\n            this.setupInteractions();\n        });\n    }\n\n    private setupInteractions(): void {\n        this.cleanupInteractions();\n\n        const host = this.viewContainerRef.element.nativeElement as HTMLElement;\n        if (!host) {\n            return;\n        }\n\n        this.setupKeyboardActivation(host);\n\n        const motor = host.querySelector('.motor-fixed');\n        const guestBox = host.querySelector('.motor-subox-guests');\n        const guestToggle = host.querySelector('.js-toggle-guests');\n\n        this.bindClick(host.querySelectorAll('.js-open-motor'), () => {\n            motor?.classList.add('open');\n            this.setBodyLock(true);\n        });\n        this.bindClick(host.querySelectorAll('.js-close-motor'), () => {\n            motor?.classList.remove('open');\n            this.setBodyLock(false);\n        });\n\n        const closeGuests = () => {\n            guestToggle?.classList.remove('active');\n            guestBox?.classList.remove('active');\n        };\n\n        this.bindClick(host.querySelectorAll('.js-toggle-guests'), () => {\n            guestToggle?.classList.toggle('active');\n            guestBox?.classList.toggle('active');\n        });\n        this.bindClick(host.querySelectorAll('.js-apply-guests'), closeGuests);\n        this.bindClick(\n            host.querySelectorAll(\n                '.motor-element-field:not(.js-toggle-guests)'\n            ),\n            closeGuests\n        );\n\n        this.bindClick(host.querySelectorAll('.js-open-room'), (event) => {\n            const trigger = event.currentTarget as HTMLElement;\n            const roomId = trigger?.getAttribute('data-room');\n            if (!roomId) {\n                return;\n            }\n            const room = host.querySelector(\n                `.motor-subox--room.${roomId}`\n            ) as HTMLElement | null;\n            if (!room) {\n                return;\n            }\n            const isOpen = room.classList.contains('open');\n\n            (\n                host.querySelectorAll(\n                    '.motor-subox--room.open'\n                ) as NodeListOf<HTMLElement>\n            ).forEach((element: HTMLElement) => {\n                element.classList.remove('open');\n                element.classList.add('close');\n            });\n\n            (\n                host.querySelectorAll(\n                    '.js-open-room.open'\n                ) as NodeListOf<HTMLElement>\n            ).forEach((btn: HTMLElement) => {\n                btn.classList.remove('open');\n                btn.classList.add('close');\n            });\n\n            if (!isOpen) {\n                room.classList.add('open');\n                room.classList.remove('close');\n                trigger.classList.add('open');\n                trigger.classList.remove('close');\n            } else {\n                room.classList.remove('open');\n                room.classList.add('close');\n                trigger.classList.remove('open');\n                trigger.classList.add('close');\n            }\n        });\n    }\n\n    private initSlider(): void {\n        if (\n            this.sliderInitialized ||\n            !this.hotelSlider ||\n            typeof window === 'undefined'\n        ) {\n            return;\n        }\n\n        const sliderConfig = this.data.slider.settings;\n        const images = this.multimedia?.imagenes || [];\n        const maxSlidesPerView = Math.max(\n            sliderConfig.slidesPc,\n            sliderConfig.slidesLaptop,\n            sliderConfig.slidesTablet,\n            sliderConfig.slidesMobile\n        );\n        const hasMultipleSlides = images.length > 1;\n        const shouldLoop =\n            hasMultipleSlides && images.length > maxSlidesPerView;\n        const hasNavigation =\n            hasMultipleSlides &&\n            sliderConfig.showButtons &&\n            this.sliderPrev &&\n            this.sliderNext;\n        const hasPagination =\n            hasMultipleSlides && sliderConfig.showDots && this.sliderPagination;\n\n        this.ngZone.runOutsideAngular(() => {\n            this.swiperInstance = new Swiper(this.hotelSlider!.nativeElement, {\n                modules: [Navigation, Pagination, Autoplay, EffectFade],\n                slidesPerView: sliderConfig.slidesMobile,\n                slidesPerGroup: sliderConfig.slidesMobile,\n                speed: 300,\n                loop: shouldLoop,\n                autoHeight: true,\n                effect: sliderConfig.fade ? 'fade' : 'slide',\n                fadeEffect: sliderConfig.fade ? { crossFade: true } : undefined,\n                autoplay: sliderConfig.autoplay\n                    ? {\n                          delay: 3000,\n                          disableOnInteraction: false,\n                      }\n                    : false,\n                navigation: hasNavigation\n                    ? {\n                          nextEl: this.sliderNext!.nativeElement,\n                          prevEl: this.sliderPrev!.nativeElement,\n                      }\n                    : false,\n                pagination: hasPagination\n                    ? {\n                          el: this.sliderPagination!.nativeElement,\n                          clickable: true,\n                      }\n                    : false,\n                breakpoints: {\n                    768: {\n                        slidesPerView: sliderConfig.slidesTablet,\n                        slidesPerGroup: sliderConfig.slidesTablet,\n                    },\n                    1280: {\n                        slidesPerView: sliderConfig.slidesLaptop,\n                        slidesPerGroup: sliderConfig.slidesLaptop,\n                    },\n                    1680: {\n                        slidesPerView: sliderConfig.slidesPc,\n                        slidesPerGroup: sliderConfig.slidesPc,\n                    },\n                },\n            });\n            this.sliderInitialized = true;\n        });\n    }\n\n    private destroySlider(): void {\n        if (!this.sliderInitialized || !this.swiperInstance) {\n            return;\n        }\n        this.swiperInstance.destroy(true, true);\n        this.swiperInstance = undefined;\n        this.sliderInitialized = false;\n    }\n\n    private setupKeyboardActivation(root: HTMLElement): void {\n        const focusables = root.querySelectorAll(\n            '[tabindex=\"0\"]'\n        ) as NodeListOf<HTMLElement>;\n        this.bindKey(focusables, (event) => {\n            if (event.key === 'Enter') {\n                (event.currentTarget as HTMLElement)?.click();\n            }\n        });\n    }\n\n    private bindClick(\n        elements: NodeListOf<Element>,\n        handler: (event: Event) => void\n    ): void {\n        elements.forEach((element) => {\n            this.cleanupFns.push(\n                this.renderer.listen(element, 'click', handler)\n            );\n        });\n    }\n\n    private bindKey(\n        elements: NodeListOf<Element>,\n        handler: (event: KeyboardEvent) => void\n    ): void {\n        elements.forEach((element) => {\n            this.cleanupFns.push(\n                this.renderer.listen(element, 'keyup', handler)\n            );\n        });\n    }\n\n    private cleanupInteractions(): void {\n        while (this.cleanupFns.length) {\n            const dispose = this.cleanupFns.pop();\n            try {\n                dispose?.();\n            } catch {\n                // ignore\n            }\n        }\n    }\n\n    private setBodyLock(lock: boolean): void {\n        if (typeof document === 'undefined') {\n            return;\n        }\n        this.motorLock = lock;\n        if (lock) {\n            document.body.classList.add('noscroll');\n        } else {\n            document.body.classList.remove('noscroll');\n        }\n    }\n\n    scrollToContent(): void {\n        if (typeof window === 'undefined') return;\n        let el = document.querySelector('.start');\n        if (!el) {\n            // Busca la siguiente sección o main después del banner\n            const banner = document.querySelector('.top-module');\n            if (banner) {\n                el = banner.nextElementSibling;\n            }\n        }\n        if (el) {\n            const rect = (el as HTMLElement).getBoundingClientRect();\n            const scrollTop =\n                window.pageYOffset || document.documentElement.scrollTop;\n            window.scrollTo({\n                top: rect.top + scrollTop - 50,\n                behavior: 'smooth',\n            });\n        }\n    }\n    public screenSizer = inject(ScreenSizerService);\n\n    public activeSlides = computed(() => {\n        const isMobile = this.screenSizer.maxMediumTablet();\n        const mobileImgs = this.multimedia?.mobileImagenes;\n        const desktopImgs = this.multimedia?.imagenes;\n        if (isMobile && mobileImgs && mobileImgs.length > 0) {\n            return mobileImgs;\n        }\n        if (desktopImgs && desktopImgs.length > 0) {\n            return desktopImgs;\n        }\n        return [];\n    });\n}\n","<div class=\"portada-hotel-v1\" #moduleRoot>\n      <section\n          class=\"top-module responsive-off js-active-slider\"\n          [attr.data-slider_name]=\"data.slider.settings.name\"\n          [attr.data-slider_arrows]=\"data.slider.settings.arrowsClass\"\n          [attr.data-slider_showbtns]=\"data.slider.settings.showButtons\"\n          [attr.data-slider_btns]=\"data.slider.settings.buttonsClass\"\n          [attr.data-slider_showdots]=\"data.slider.settings.showDots\"\n          [attr.data-slider_fade]=\"data.slider.settings.fade\"\n          [attr.data-slider_autoplay]=\"data.slider.settings.autoplay\"\n          [attr.data-slides_pc]=\"data.slider.settings.slidesPc\"\n          [attr.data-slides_laptop]=\"data.slider.settings.slidesLaptop\"\n          [attr.data-slides_tablet]=\"data.slider.settings.slidesTablet\"\n          [attr.data-slides_mobile]=\"data.slider.settings.slidesMobile\"\n      >\n          <div class=\"wrap-top-module\">\n              <div class=\"top-module-logo\" *ngIf=\"multimedia?.logo?.length\">\n                  <a\n                      role=\"button\"\n                      [href]=\"multimedia?.logo?.[0]?.links?.[0]?.url\"\n                      [linkType]=\"multimedia?.logo?.[0]?.links?.[0]?.linkType\"\n                  >\n                      <div class=\"wrap-top-logo\">\n                          <img\n                              [src]=\"multimedia?.logo?.[0]?.src\"\n                              alt=\"logo\"\n                              class=\"top-logo-img\"\n                          />\n                      </div>\n                  </a>\n              </div>\n              <div class=\"top-module-breadcrumbs\">\n                  <ol\n                      class=\"breadcrumbs-list\"\n                      itemscope\n                      itemtype=\"http://schema.org/BreadcrumbList\"\n                  >\n                      @for (\n                          crumb of data.breadcrumbs;\n                          track crumb.label;\n                          let index = $index\n                      ) {\n                          <li\n                              class=\"breadcrumbs-list-element\"\n                              [ngClass]=\"{ active: crumb.active }\"\n                              itemprop=\"itemListElement\"\n                              itemscope\n                              itemtype=\"http://schema.org/ListItem\"\n                          >\n                              <a itemprop=\"item\" [href]=\"crumb.href\">\n                                  <span\n                                      class=\"breadcrumbs-element-text\"\n                                      itemprop=\"name\"\n                                      >{{ crumb.label }}</span\n                                  >\n                              </a>\n                              <span itemprop=\"position\" [attr.content]=\"index + 1\"\n                                  >&gt;</span\n                              >\n                          </li>\n                      }\n                  </ol>\n              </div>\n              <div\n                  class=\"top-module-links\"\n                  *ngIf=\"buttons?.length || multimedia?.imagenes?.[0]?.buttons?.length\"\n              >\n                  <div class=\"wrap-top-links\">\n                      @for (btn of (buttons?.length ? buttons : multimedia?.imagenes?.[0]?.buttons); track btn.label) {\n                        @if (!isRoom) {\n                          <div class=\"top-links-element\">\n                                <a [href]=\"btn.url\">\n                                    <div\n                                        class=\"wrap-links-element\"\n                                        class=\"check-in-button\"\n                                        [style.backgroundColor]=\"styles?.primary\"\n                                    >\n                                        @if (btn.icon) {\n                                            <i\n                                                class=\"links-element-icon\"\n                                                [ngClass]=\"btn.icon\"\n                                            ></i>\n                                        }\n                                        <p class=\"links-element-text\">\n                                            {{ btn.label }}\n                                        </p>\n                                    </div>\n                                </a>\n                            </div>\n                        } @else {\n                            @if (btn?.url) {\n                              <div class=\"btn-corp btn-white\">\n                                <a\n                                  role=\"button\"\n                                  [linkType]=\"btn?.linkType\"\n                                  class=\"btn-corp-text\" [href]=\"btn?.url\">{{ btn?.label }}</a>\n                              </div>\n                            }\n                        }\n                      }\n                  </div>\n              </div>\n                  <div class=\"top-module-scroll\">\n                <div\n                  class=\"wrap-top-scroll js-scrollto\"\n                  data-scroll_to=\".start\"\n                  scroll_spacer=\"50\"\n                  role=\"button\"\n                  tabindex=\"0\"\n                  (click)=\"scrollToContent()\"\n                >\n                  <svg\n                    width=\"44\"\n                    height=\"44\"\n                    viewBox=\"0 0 44 44\"\n                    fill=\"none\"\n                    xmlns=\"http://www.w3.org/2000/svg\"\n                                >\n                      <path\n                          d=\"M22 1C10.402 1 1 10.402 1 22C1 33.598 10.402 43 22 43C33.598 43 43 33.598 43 22C43 10.402 33.598 1 22 1Z\"\n                          fill=\"none\"\n                          stroke=\"white\"\n                          stroke-width=\"1\"\n                      />\n                      <path\n                          d=\"M21.2737 25.867L16.2217 20.789C16.04 20.6064 15.9383 20.3591 15.939 20.1016C15.9397 19.844 16.0426 19.5972 16.2252 19.4155C16.4078 19.2339 16.6551 19.1322 16.9127 19.1328C17.1703 19.1335 17.417 19.2364 17.5987 19.419L21.9477 23.819L26.3227 19.422C26.5044 19.2394 26.7512 19.1365 27.0087 19.1358C27.2663 19.1352 27.5136 19.2369 27.6982 19.4185C27.8788 19.6002 27.9818 19.847 27.9824 20.1046C27.9831 20.3621 27.8814 20.6094 27.6997 20.792L22.6497 25.868C22.4671 26.0504 22.2195 26.1527 21.9615 26.1525C21.7035 26.1523 21.456 26.0496 21.2737 25.867Z\"\n                          fill=\"white\"\n                      />\n                    </svg>\n                  @if (texts?.scrolltext) {\n                    <p class=\"top-scroll-text\">{{ texts?.scrolltext }}</p>\n                  }\n                </div>\n              </div>\n              <div class=\"top-module-text\">\n                  <h1\n                      class=\"top-module-text_title\"\n                      *ngIf=\"texts?.title || multimedia?.imagenes?.[0]?.title\"\n                      [innerHTML]=\"texts?.title || multimedia?.imagenes?.[0]?.title\"\n                  ></h1>\n                  <p\n                      class=\"top-module-text_phrase\"\n                      *ngIf=\"texts?.pretitle || multimedia?.imagenes?.[0]?.pretitle\"\n                      [innerHTML]=\"texts?.pretitle || multimedia?.imagenes?.[0]?.pretitle\"\n                  ></p>\n              </div>\n              @if (texts?.portadahotelv1video) {\n                    <div class=\"hero-banner__video\">\n                        <div class=\"hero-banner__video--inner\">\n                            <iframe\n                                id=\"YouTubeVideoPlayer\"\n                                width=\"1920\"\n                                height=\"1080\"\n                                allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n                                [src]=\"safeVideoUrl\"\n                                frameborder=\"0\"\n                                allowfullscreen=\"\"\n                            ></iframe>\n                        </div>\n                    </div>\n                } @else {\n              <div\n                  class=\"top-module-arrows js-slider-arrows\"\n                  class=\"advantages-content-arrows\"\n              >\n                  @if (multimedia?.imagenes?.length && showButtons) {\n                      <button\n                          class=\"swiper-btn swiper-arrow swiper-button-prev btn-slide-circle\"\n                          type=\"button\"\n                          aria-label=\"Anterior\"\n                          #sliderPrev\n                      ></button>\n                      <button\n                          class=\"swiper-btn swiper-arrow swiper-button-next btn-slide-circle\"\n                          type=\"button\"\n                          aria-label=\"Siguiente\"\n                          #sliderNext\n                      ></button>\n                  }\n              </div>\n\n              <div\n                  class=\"top-module-slider swiper\"\n                  #hotelSlider\n                  babylonSwiperCssLoader\n              >\n                  <div class=\"swiper-wrapper\">\n                      @for (slide of activeSlides(); track $index) {\n                          <div class=\"top-slider-element swiper-slide\">\n                              <div class=\"wrap-slider-element\">\n                                  <figure\n                                      class=\"slider-element-img responsive-resize\"\n                                      role=\"img\"\n                                      [attr.aria-label]=\"slide?.title || 'Image'\"\n                                      [attr.data-filename]=\"slide?.title\"\n                                      [attr.data-src]=\"slide?.img?.src || slide?.src\"\n                                      [style.backgroundImage]=\"slide?.img?.src || slide?.src ? 'url(' + (slide?.img?.src || slide?.src) + ')' : null\"\n                                  ></figure>\n                              </div>\n                          </div>\n                      }\n                  </div>\n                  @if (multimedia?.imagenes?.length && showDots) {\n                      <div class=\"swiper-pagination\" #sliderPagination></div>\n                  }\n              </div>\n            }\n          </div>\n      </section>\n\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, ElementRef, Input, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { BabylonImageI, BabylonMultimediaI, BabylonTextInfoI } from '../../../../interfaces';\nimport { BabylonStyleGlobalItem } from '../../../../interfaces/babylon-style.interface';\n\n@Component({\n  selector: 'collapsable-info-v2',\n  standalone: true,\n  imports: [CommonModule],\n  templateUrl: './collapsable-info-v2.component.html',\n  styleUrl: './collapsable-info-v2.component.scss',\n  encapsulation: ViewEncapsulation.Emulated\n})\nexport class CollapsableInfoV2Component {\n  moreTextOpen = false;\n  @ViewChild('moreTextModule', { static: false }) moreTextModule?: ElementRef<HTMLElement>;\n  @ViewChild('toggleButton', { static: false }) toggleButton?: ElementRef<HTMLElement>;\n\n  @Input() texts?: BabylonTextInfoI;\n  @Input() styles?: BabylonStyleGlobalItem;\n  constructor() {\n  }\n\n  toggleMoreText(): void {\n    this.moreTextOpen = !this.moreTextOpen;\n    if (this.moreTextOpen) {\n      this.scrollToElement(this.moreTextModule?.nativeElement, window.innerWidth >= 1280 ? 160 : 90);\n    }\n  }\n\n  closeMoreText(): void {\n    this.moreTextOpen = false;\n    this.scrollToElement(this.toggleButton?.nativeElement, 90);\n  }\n\n  trackElement(index: number): number {\n    return index;\n  }\n\n  backgroundImage(element: BabylonImageI): string {\n    return `url(${element?.img?.src})`;\n  }\n\n  private scrollToElement(element: Element | undefined, offset: number): void {\n    if (!element || typeof window === 'undefined') {\n      return;\n    }\n    const top = element instanceof Element ? element.getBoundingClientRect().top + window.scrollY - offset : 0;\n    window.scrollTo({ top, behavior: 'smooth' });\n  }\n}\n","  <section class=\"intro-module mb-negative start\">\n      <div class=\"big-wrapper\">\n        <div class=\"wrap-intro-module module-spacer\">\n        <header class=\"intro-module-header\">\n          @if( texts?.pretitle) {\n            <p class=\"intro-header-pretitle\" [innerHTML]=\"texts?.pretitle\"></p>\n          }\n          @if( texts?.title) {\n            <h2 class=\"intro-header-title\">{{ texts?.title }}</h2>\n          }\n          <div\n            class=\"intro-header-btn btn-linker tobottom js-open-moretext\"\n            role=\"button\"\n            tabindex=\"0\"\n            [ngClass]=\"{ hidden: moreTextOpen }\"\n            (click)=\"toggleMoreText()\"\n            (keyup.enter)=\"toggleMoreText()\"\n            #toggleButton\n          >\n          @if (texts?.moreInfoText) {\n            <p class=\"btn-linker-text\" [innerHTML]=\"texts?.moreInfoText\"></p>\n          }\n          </div>\n        </header>\n        <div\n          class=\"moretext-module intro-module-moretext\"\n          [ngClass]=\"{ open: moreTextOpen }\"\n          #moreTextModule\n        >\n          <div class=\"wrap-intro-moretext\">\n              <div class=\"intro-moretext-element\">\n                </div>\n                <div class=\"intro-moretext-element\">\n                  <div class=\"intro-moretext-element_wrapper align-bottom\">\n                    @if (texts?.firstDescription) {\n                      @if (texts?.firstTitle) {\n                        <h2 class=\"intro-moretext-element_title\">{{ texts?.firstTitle }}</h2>\n                      }\n                      <p class=\"intro-moretext-element_text\" [innerHTML]=\"texts?.firstDescription\"></p>\n                    }\n                    @if (texts?.secondDescription) {\n                      @if (texts?.secondTitle) {\n                        <h2 class=\"intro-moretext-element_title\">{{ texts?.secondTitle }}</h2>\n                      }\n                      <p class=\"intro-moretext-element_text\" [innerHTML]=\"texts?.secondDescription\"></p>\n                    }\n                    @if (texts?.thirdDescription) {\n                      @if (texts?.thirdTitle) {\n                        <h2 class=\"intro-moretext-element_title\">{{ texts?.thirdTitle }}</h2>\n                      }\n                      <p class=\"intro-moretext-element_text\" [innerHTML]=\"texts?.thirdDescription\"></p>\n                    }\n                  </div>\n                    @if ( moreTextOpen) {\n                        <div\n                          class=\"intro-moretext-element_btn btn-linker totop js-close-moretext\"\n                          role=\"button\"\n                          tabindex=\"0\"\n                          (click)=\"closeMoreText()\"\n                          (keyup.enter)=\"closeMoreText()\"\n                        >\n                          <p class=\"btn-linker-text\">{{ texts?.hideInfoText ?? texts?.svg }}</p>\n                        </div>\n                    }\n              </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </section>\n","import { CommonModule } from '@angular/common';\nimport { Component, ElementRef, Input, ViewChild, ViewEncapsulation } from '@angular/core';\nimport { BabylonImageI, BabylonMultimediaI, BabylonTextInfoI } from '../../../../interfaces';\n\n@Component({\n  selector: 'collapsable-info-v3',\n  standalone: true,\n  imports: [CommonModule],\n  templateUrl: './collapsable-info-v3.component.html',\n  styleUrl: './collapsable-info-v3.component.scss',\n  encapsulation: ViewEncapsulation.Emulated\n})\nexport class CollapsableInfoV3Component {\n  moreTextOpen = false;\n  @ViewChild('moreTextModule', { static: false }) moreTextModule?: ElementRef<HTMLElement>;\n  @ViewChild('toggleButton', { static: false }) toggleButton?: ElementRef<HTMLElement>;\n\n  @Input() texts?: BabylonTextInfoI;\n  @Input() multimedia?: BabylonMultimediaI;\n\n  constructor() {\n  }\n\n  toggleMoreText(): void {\n    this.moreTextOpen = !this.moreTextOpen;\n    if (this.moreTextOpen) {\n      this.scrollToElement(this.moreTextModule?.nativeElement, window.innerWidth >= 1280 ? 160 : 90);\n    }\n  }\n\n  closeMoreText(): void {\n    this.moreTextOpen = false;\n    this.scrollToElement(this.toggleButton?.nativeElement, 90);\n  }\n\n  trackElement(index: number): number {\n    return index;\n  }\n\n  backgroundImage(element: BabylonImageI): string {\n    return `url(${element?.img?.src})`;\n  }\n\n  isLastImage(index: number): boolean {\n    return !!this.multimedia?.imagenes && index === this.multimedia.imagenes.length - 1;\n  }\n\n  private scrollToElement(element: Element | undefined, offset: number): void {\n    if (!element || typeof window === 'undefined') {\n      return;\n    }\n    const top = element instanceof Element ? element.getBoundingClientRect().top + window.scrollY - offset : 0;\n    window.scrollTo({ top, behavior: 'smooth' });\n  }\n}\n","  <section class=\"intro-module mb-negative start\">\n      <div class=\"big-wrapper\">\n        <div class=\"wrap-intro-module module-spacer\">\n        <header class=\"intro-module-header\">\n          @if( texts?.pretitle) {\n            <p class=\"intro-header-pretitle\" [innerHTML]=\"texts?.pretitle\"></p>\n          }\n          @if( texts?.title) {\n            <h2 class=\"intro-header-title\">{{ texts?.title }}</h2>\n          }\n          <div\n            class=\"intro-header-btn btn-linker tobottom js-open-moretext\"\n            role=\"button\"\n            tabindex=\"0\"\n            [ngClass]=\"{ hidden: moreTextOpen }\"\n            (click)=\"toggleMoreText()\"\n            (keyup.enter)=\"toggleMoreText()\"\n            #toggleButton\n          >\n          @if (texts?.moreInfoText) {\n            <p class=\"btn-linker-text\" [innerHTML]=\"texts?.moreInfoText\"></p>\n          }\n          </div>\n        </header>\n        <div\n          class=\"moretext-module intro-module-moretext\"\n          [ngClass]=\"{ open: moreTextOpen }\"\n          #moreTextModule\n        >\n          <div class=\"wrap-intro-moretext\">\n            @if (multimedia?.imagenes) {\n              @for (item of multimedia?.imagenes; track $index) {\n              <div class=\"intro-moretext-element\">\n                @if (item?.img?.src) {\n                  <figure\n                    class=\"intro-moretext-element_photo responsive-resize\"\n                    role=\"img\"\n                    [attr.aria-label]=\"item?.title || null\"\n                    [attr.data-filename]=\"item?.title\"\n                    [attr.data-src]=\"item?.img?.src || item?.src\"\n                    [style.backgroundImage]=\"backgroundImage(item)\"\n                  ></figure>\n                }\n                </div>\n                <div class=\"intro-moretext-element\">\n                  <div class=\"intro-moretext-element_wrapper align-bottom\">\n                    @if (item?.pretitle) {\n                      <p class=\"intro-moretext-element_pretitle\">{{ item?.pretitle }}</p>\n                    }\n                    @if (item?.title) {\n                      <h2 class=\"intro-moretext-element_title\">{{ item?.title }}</h2>\n                    }\n                    <!--\n                    @if (item?.spacer) {\n                      <div class=\"spacer\"></div>\n                    }\n                    -->\n                    @if (item?.subtitle) {\n                      <h2 class=\"intro-moretext-element_subtitle\">{{ item?.subtitle }}</h2>\n                    }\n                    @if (item?.description) {\n                      <p class=\"intro-moretext-element_text\">{{ item?.description }}</p>\n                    }\n                    @if (item?.ndTitle) {\n                      <h2 class=\"intro-moretext-element_title\">{{ item?.ndTitle }}</h2>\n                    }\n                    @if (item?.ndPretitle) {\n                      <p class=\"intro-moretext-element_pretitle\">{{ item?.ndPretitle }}</p>\n                    }\n\n                  </div>\n                    @if ( moreTextOpen && isLastImage($index)) {\n                      <div class=\"intro-moretext-element btn-linker-last\">\n                        <div\n                          class=\"intro-moretext-element_btn btn-linker totop js-close-moretext\"\n                          role=\"button\"\n                          tabindex=\"0\"\n                          (click)=\"closeMoreText()\"\n                          (keyup.enter)=\"closeMoreText()\"\n                        >\n                          <p class=\"btn-linker-text\">{{ texts?.hideInfoText ?? texts?.svg }}</p>\n                        </div>\n                      </div>\n                    }\n              </div>\n              }\n            }\n          </div>\n        </div>\n      </div>\n    </div>\n  </section>\n","import { CommonModule } from '@angular/common';\nimport {\n    AfterViewInit,\n    Component,\n    ElementRef,\n    Input,\n    NgZone,\n    OnDestroy,\n    ViewChild,\n    ViewEncapsulation,\n} from '@angular/core';\nimport Swiper, { Autoplay, EffectFade, Navigation, Pagination } from 'swiper';\nimport { BabylonSwiperCssLoaderDirective } from '../../../../directives/babylon-sliders/babylon-swiper-css-loader.directive';\nimport { BabylonTextInfoI } from '../../../../interfaces';\nimport { BabylonAdvantageItemI } from '../../../../interfaces/babylon-advantages-item.interface';\nimport { BabylonStyleGlobalItem } from '../../../../interfaces/babylon-style.interface';\nimport { AdvantagesBoxV2Content } from './advantages-box-v2.interfaces';\n\nconst defaultData: AdvantagesBoxV2Content = {\n    slider: {\n        name: 'js-advantages-slider',\n        showButtons: true,\n        buttonsClass: 'btn-slide-circle',\n        showDots: false,\n        fade: false,\n        autoplay: true,\n        slidesPc: 4,\n        slidesLaptop: 3,\n        slidesTablet: 1,\n        slidesMobile: 1,\n    },\n};\n\n@Component({\n    selector: 'advantages-box-v2',\n    standalone: true,\n    imports: [CommonModule, BabylonSwiperCssLoaderDirective],\n    templateUrl: './advantages-box-v2.component.html',\n    styleUrl: './advantages-box-v2.component.scss',\n    encapsulation: ViewEncapsulation.Emulated,\n})\nexport class AdvantagesBoxV2Component implements AfterViewInit, OnDestroy {\n    @Input() data: AdvantagesBoxV2Content = defaultData;\n    @Input() texts?: BabylonTextInfoI;\n    @Input() items?: BabylonAdvantageItemI[];\n    @Input() styles?: BabylonStyleGlobalItem;\n\n    @Input() iconsLikeImages?: boolean = false;\n\n    @ViewChild('advantagesSlider', { static: false })\n    advantagesSlider?: ElementRef<HTMLElement>;\n    @ViewChild('sliderPrev', { static: false })\n    sliderPrev?: ElementRef<HTMLButtonElement>;\n    @ViewChild('sliderNext', { static: false })\n    sliderNext?: ElementRef<HTMLButtonElement>;\n    @ViewChild('sliderPagination', { static: false })\n    sliderPagination?: ElementRef<HTMLElement>;\n\n    private sliderInitialized = false;\n    private swiperInstance?: Swiper;\n\n    constructor(private readonly ngZone: NgZone) {}\n\n    ngAfterViewInit(): void {\n        this.initSlider();\n    }\n\n    ngOnDestroy(): void {\n        this.destroySlider();\n    }\n\n    trackItem(index: number): number {\n        return index;\n    }\n\n    private initSlider(): void {\n        if (\n            this.sliderInitialized ||\n            !this.advantagesSlider ||\n            typeof window === 'undefined'\n        ) {\n            return;\n        }\n\n        const sliderConfig = this.data.slider;\n        const maxSlidesPerView = Math.max(\n            sliderConfig.slidesPc,\n            sliderConfig.slidesLaptop,\n            sliderConfig.slidesTablet,\n            sliderConfig.slidesMobile\n        );\n        const hasMultipleSlides = this.items && this.items.length > 1;\n        const shouldLoop =\n            hasMultipleSlides &&\n            this.items &&\n            this.items.length > maxSlidesPerView;\n        const hasNavigation =\n            hasMultipleSlides &&\n            sliderConfig.showButtons &&\n            this.sliderPrev &&\n            this.sliderNext;\n        const hasPagination =\n            hasMultipleSlides && sliderConfig.showDots && this.sliderPagination;\n\n        this.ngZone.runOutsideAngular(() => {\n            this.swiperInstance = new Swiper(\n                this.advantagesSlider!.nativeElement,\n                {\n                    modules: [Navigation, Pagination, Autoplay, EffectFade],\n                    slidesPerView: sliderConfig.slidesMobile,\n                    slidesPerGroup: sliderConfig.slidesMobile,\n                    speed: 300,\n                    loop: shouldLoop,\n                    autoHeight: true,\n                    effect: sliderConfig.fade ? 'fade' : 'slide',\n                    fadeEffect: sliderConfig.fade\n                        ? { crossFade: true }\n                        : undefined,\n                    autoplay: sliderConfig.autoplay\n                        ? {\n                              delay: 3000,\n                              disableOnInteraction: false,\n                          }\n                        : false,\n                    navigation: hasNavigation\n                        ? {\n                              //addIcons: false,\n                              nextEl: this.sliderNext!.nativeElement,\n                              prevEl: this.sliderPrev!.nativeElement,\n                          }\n                        : false,\n                    pagination: hasPagination\n                        ? {\n                              el: this.sliderPagination!.nativeElement,\n                              clickable: true,\n                          }\n                        : false,\n                    breakpoints: {\n                        768: {\n                            slidesPerView: sliderConfig.slidesTablet,\n                            slidesPerGroup: sliderConfig.slidesTablet,\n                        },\n                        1280: {\n                            slidesPerView: sliderConfig.slidesLaptop,\n                            slidesPerGroup: sliderConfig.slidesLaptop,\n                        },\n                        1680: {\n                            slidesPerView: sliderConfig.slidesPc,\n                            slidesPerGroup: sliderConfig.slidesPc,\n                        },\n                    },\n                }\n            );\n            this.sliderInitialized = true;\n        });\n    }\n\n    private destroySlider(): void {\n        if (!this.sliderInitialized || !this.swiperInstance) {\n            return;\n        }\n\n        this.swiperInstance.destroy(true, true);\n        this.swiperInstance = undefined;\n        this.sliderInitialized = false;\n    }\n}\n","<section class=\"advantages-module js-load-moreicons\">\n    <div class=\"big-wrapper\">\n        <div class=\"wrap-advantages-module\">\n            <header class=\"advantages-module-header\">\n                @if (texts?.title) {\n                    <h2 class=\"advantages-header-title\">{{ texts?.title }}</h2>\n                }\n            </header>\n            <div\n                class=\"advantages-module-box js-active-slider\"\n                [attr.data-slider_name]=\"data.slider.name\"\n                [attr.data-slider_showbtns]=\"data.slider.showButtons\"\n                [attr.data-slider_btns]=\"data.slider.buttonsClass\"\n                [attr.data-slider_showdots]=\"data.slider.showDots\"\n                [attr.data-slider_fade]=\"data.slider.fade\"\n                [attr.data-slider_autoplay]=\"data.slider.autoplay\"\n                [attr.data-slides_pc]=\"data.slider.slidesPc\"\n                [attr.data-slides_laptop]=\"data.slider.slidesLaptop\"\n                [attr.data-slides_tablet]=\"data.slider.slidesTablet\"\n                [attr.data-slides_mobile]=\"data.slider.slidesMobile\"\n            >\n                <div class=\"advantages-module-arrows js-slider-arrows\">\n                    @if (items?.length && data.slider.showButtons) {\n                        <button\n                            class=\"swiper-btn swiper-arrow swiper-button-prev\"\n                            [ngClass]=\"data.slider.buttonsClass\"\n                            type=\"button\"\n                            aria-label=\"Anterior\"\n                            #sliderPrev\n                        ></button>\n                        <button\n                            class=\"swiper-btn swiper-arrow swiper-button-next\"\n                            [ngClass]=\"data.slider.buttonsClass\"\n                            type=\"button\"\n                            aria-label=\"Siguiente\"\n                            #sliderNext\n                        ></button>\n                    }\n                </div>\n                <div\n                    class=\"js-advantages-slider swiper\"\n                    #advantagesSlider\n                    babylonSwiperCssLoader\n                >\n                    <div class=\"swiper-wrapper\">\n                        @for (item of items; track $index) {\n                            <div class=\"advantages-module-element swiper-slide\">\n                                <div class=\"wrap-advantages-element\">\n                                    @if (item?.icon) {\n                                        <i\n                                            class=\"advantages-element-icon\"\n                                            [class.mono]=\"!iconsLikeImages\"\n                                            [style.--hover-color]=\"\n                                                styles?.primaryHover ??\n                                                styles?.primary ??\n                                                '#ed3b37'\n                                            \"\n                                            [ngClass]=\"item?.icon\"\n                                        ></i>\n                                    }\n\n                                    <div class=\"advantages-element-info\">\n                                        @if (item?.title) {\n                                            <p\n                                                class=\"advantages-info-title\"\n                                                [innerHTML]=\"item?.title\"\n                                            ></p>\n                                        }\n                                        @if (item?.text) {\n                                            <p\n                                                class=\"advantages-info-subtitle\"\n                                                [innerHTML]=\"item?.text\"\n                                            ></p>\n                                        }\n                                    </div>\n                                </div>\n                            </div>\n                        }\n                    </div>\n                    @if (items?.length && data.slider.showDots) {\n                        <div class=\"swiper-pagination\" #sliderPagination></div>\n                    }\n                </div>\n            </div>\n        </div>\n    </div>\n</section>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { BabylonButtonI, BabylonImageI, BabylonTextInfoI } from '../../../../interfaces';\nimport { BabylonLinkTypeDirective } from '../../../../directives/link-type/link-type.directive';\n\n@Component({\n    selector: 'c1-txt',\n    standalone: true,\n    imports: [CommonModule, BabylonLinkTypeDirective],\n    templateUrl: './c1-txt.component.html',\n    styleUrl: './c1-txt.component.scss',\n})\nexport class C1TxtComponent {\n    @Input() texts?: BabylonTextInfoI;\n    @Input() activeView?: number;\n    // assign vista 3 in component to have less padding when showing the image and buttons\n    @Input() image?: BabylonImageI;\n    @Input() buttons?: BabylonButtonI[];\n}\n","<section\n    class=\"mdl-C1Txt\"\n    [ngClass]=\"{\n        primary: activeView === 0 || activeView === 1,\n        secundary: activeView === 2,\n        tertiary: activeView === 3,\n    }\"\n>\n    @if (image?.src) {\n        <div class=\"mdl-imagen\">\n            <img\n                [src]=\"image?.src\"\n                loading=\"lazy\"\n                [alt]=\"image?.alt ?? 'image'\"\n            />\n        </div>\n    }\n    @if (texts) {\n        <div class=\"mdl-container\">\n            @if (texts.pretitle) {\n                <div class=\"m-pretitulo\" [innerHTML]=\"texts.pretitle\"></div>\n            }\n            @if (texts.title) {\n                <div class=\"m-titulo\" [innerHTML]=\"texts.title\"></div>\n            }\n            @if (texts.description) {\n                <div class=\"m-texto\" [innerHTML]=\"texts.description\"></div>\n            }\n            @if (texts.text) {\n                <div class=\"m-especial\" [innerHTML]=\"texts.text\"></div>\n            }\n        </div>\n    }\n    @if (buttons?.length) {\n      <div class=\"m-buttons-row\">\n        @if (buttons?.[0]?.url) {\n          <a\n              class=\"m-buttonD\"\n              [href]=\"buttons?.[0]?.url\"\n              [linkType]=\"buttons?.[0]?.linkType\"\n              [attr.target]=\"buttons?.[0]?.target || '_self'\"\n              [attr.rel]=\"(buttons?.[0]?.target || '_self') === '_blank' ? 'noopener noreferrer' : null\"\n              [attr.aria-label]=\"buttons?.[0]?.label\"\n          >\n              {{ buttons?.[0]?.label }}\n          </a>\n        }\n        @if (buttons?.[1]?.url) {\n          <a\n              class=\"m-buttonD\"\n              [href]=\"buttons?.[1]?.url\"\n              [linkType]=\"buttons?.[1]?.linkType\"\n              [attr.target]=\"buttons?.[1]?.target || '_self'\"\n              [attr.rel]=\"(buttons?.[1]?.target || '_self') === '_blank' ? 'noopener noreferrer' : null\"\n              [attr.aria-label]=\"buttons?.[1]?.label\"\n          >\n              {{ buttons?.[1]?.label }}\n          </a>\n        }\n      </div>\n\n            }\n\n\n</section>\n","import { CommonModule } from '@angular/common';\nimport {\n    AfterViewInit,\n    Component,\n    ElementRef,\n    Input,\n    NgZone,\n    OnDestroy,\n    ViewChild,\n    ViewEncapsulation,\n} from '@angular/core';\nimport Swiper, { Autoplay, EffectFade, Navigation, Pagination } from 'swiper';\nimport { BabylonSwiperCssLoaderDirective } from '../../../../directives/babylon-sliders/babylon-swiper-css-loader.directive';\nimport { BabylonLinkTypeDirective } from '../../../../directives/link-type/link-type.directive';\nimport { BabylonImageI, BabylonTextInfoI } from '../../../../interfaces';\nimport { BabylonHotelGlobalItem } from '../../../../interfaces/babylon-hotel.interface';\nimport { Utils } from '../../../../utils';\nimport { getFirstImageByTagFromMultimediaRaw } from '../../../../utils/mutimedia.utils';\nimport { normalizeGlobalItems } from '../../../../utils/normalize-items.utils';\n@Component({\n    selector: 'sli-c2-img-txt-cta-v4',\n    standalone: true,\n    imports: [\n        CommonModule,\n        BabylonSwiperCssLoaderDirective,\n        BabylonLinkTypeDirective,\n    ],\n    templateUrl: './sli-c2-img-txt-cta-v4.component.html',\n    styleUrl: './sli-c2-img-txt-cta-v4.component.scss',\n    encapsulation: ViewEncapsulation.Emulated,\n})\nexport class SliC2ImgTxtCtaV4Component implements AfterViewInit, OnDestroy {\n        get isSingleSlide(): boolean {\n            return (this.items?.length ?? 0) === 1;\n        }\n\n        get maxSlides(): number {\n            const cfg = this.sliderConfig;\n            return Math.max(cfg.slidesPc, cfg.slidesLaptop, cfg.slidesTablet, cfg.slidesMobile);\n        }\n\n        get showArrows(): boolean {\n            const itemsLen = this.items?.length ?? 0;\n            return itemsLen > this.maxSlides;\n        }\n\n    sliderConfig = {\n        name: 'js-section-slider',\n        showButtons: true,\n        buttonsClass: 'btn-slide-circle',\n        showDots: false,\n        fade: false,\n        autoplay: false,\n        slidesPc: 2,\n        slidesLaptop: 2,\n        slidesTablet: 1,\n        slidesMobile: 1,\n    };\n    private sliderInitialized = false;\n    private swiperInstance?: Swiper;\n\n    @Input() texts?: BabylonTextInfoI;\n    @Input() items?: BabylonHotelGlobalItem[];\n    tagName: string = 'SliC2ImgTxtCtaV4';\n    @Input() identifier?: string;\n    @ViewChild('sectionSlider', { static: false })\n    sectionSlider?: ElementRef<HTMLElement>;\n    @ViewChild('sliderPrev', { static: false })\n    sliderPrev?: ElementRef<HTMLButtonElement>;\n    @ViewChild('sliderNext', { static: false })\n    sliderNext?: ElementRef<HTMLButtonElement>;\n    @ViewChild('sliderPagination', { static: false })\n    sliderPagination?: ElementRef<HTMLElement>;\n\n    constructor(private readonly ngZone: NgZone) {}\n\n    ngAfterViewInit(): void {\n        this.initSlider();\n    }\n\n    ngOnDestroy(): void {\n        this.destroySlider();\n    }\n\n    trackItem(index: number): number {\n        return index;\n    }\n\n    trackIcon(index: number): number {\n        return index;\n    }\n\n    getNumber(text: string): number[] {\n        return Utils.extractNumberRange(text);\n    }\n    /**\n     * Devuelve un array normalizado de BabylonGlobalItem\n     */\n    get normalizedItems() {\n        return normalizeGlobalItems(this.items);\n    }\n\n    /**\n     * Devuelve la primera imagen de multimedia.imagenes que tenga el tag indicado usando el helper de utils.\n     * El resultado es el objeto imagen completo (con img.src, tag, etc).\n     */\n    getFirstImageByTagFromMultimedia(item: any, tagName: string) {\n        return getFirstImageByTagFromMultimediaRaw(item?.multimedia, tagName);\n    }\n\n    /**\n     * Guarda la imagen filtrada por tag para cada item, o la primera si no hay ninguna con tag.\n     */\n    imagesToShow: any[] = [];\n\n    ngOnChanges(): void {\n        if (this.items) {\n            this.imagesToShow = this.items.map(item => {\n                const img = this.getFirstImageByTagFromMultimedia(item, this.tagName);\n                if (img) return img;\n                // Si no hay imagen con tag, devolver la primera imagen disponible\n                return item?.multimedia?.imagenes?.[0] ?? item?.images?.[0] ?? undefined;\n            });\n        } else {\n            this.imagesToShow = [];\n        }\n    }\n\n    private initSlider(): void {\n        if (\n            this.sliderInitialized ||\n            typeof window === 'undefined' ||\n            !this.sectionSlider\n        ) {\n            return;\n        }\n\n\n        const sliderConfig = this.sliderConfig;\n        const items = this.items ?? [];\n        const maxSlides = this.maxSlides;\n        const hasEnoughSlides = items.length > maxSlides;\n        const shouldLoop = hasEnoughSlides;\n        const hasNavigation =\n            hasEnoughSlides &&\n            sliderConfig.showButtons &&\n            this.sliderPrev &&\n            this.sliderNext;\n        const hasPagination =\n            hasEnoughSlides && sliderConfig.showDots && this.sliderPagination;\n\n        this.ngZone.runOutsideAngular(() => {\n            this.swiperInstance = new Swiper(\n                this.sectionSlider!.nativeElement,\n                {\n                    modules: [Navigation, Pagination, Autoplay, EffectFade],\n                    slidesPerView: sliderConfig.slidesMobile,\n                    slidesPerGroup: sliderConfig.slidesMobile,\n                    speed: 300,\n                    loop: shouldLoop,\n                    autoHeight: true,\n                    effect: sliderConfig.fade ? 'fade' : 'slide',\n                    fadeEffect: sliderConfig.fade\n                        ? { crossFade: true }\n                        : undefined,\n                    autoplay: sliderConfig.autoplay\n                        ? {\n                              delay: 3000,\n                              disableOnInteraction: false,\n                          }\n                        : false,\n                    navigation: hasNavigation\n                        ? {\n                              //addIcons: false,\n                              nextEl: this.sliderNext!.nativeElement,\n                              prevEl: this.sliderPrev!.nativeElement,\n                          }\n                        : false,\n                    pagination: hasPagination\n                        ? {\n                              el: this.sliderPagination!.nativeElement,\n                              clickable: true,\n                          }\n                        : false,\n                    breakpoints: {\n                        768: {\n                            slidesPerView: sliderConfig.slidesTablet,\n                            slidesPerGroup: sliderConfig.slidesTablet,\n                        },\n                        1280: {\n                            slidesPerView: sliderConfig.slidesLaptop,\n                            slidesPerGroup: sliderConfig.slidesLaptop,\n                        },\n                        1680: {\n                            slidesPerView: sliderConfig.slidesPc,\n                            slidesPerGroup: sliderConfig.slidesPc,\n                        },\n                    },\n                }\n            );\n            this.sliderInitialized = true;\n        });\n    }\n\n    private destroySlider(): void {\n        if (!this.sliderInitialized || !this.swiperInstance) {\n            return;\n        }\n\n        this.swiperInstance.destroy(true, true);\n        this.swiperInstance = undefined;\n        this.sliderInitialized = false;\n    }\n}\n","<section\n    [id]=\"identifier ?? 'SliC2ImgTxtCtaV4'\"\n    class=\"promo-module section section-promo section-promo--img-txt-cta-v4\"\n>\n    <div class=\"big-wrapper section-wrapper section-wrapper-promo\">\n        <div\n            class=\"wrap-promo-module module-spacer border-bottom-line section-container section-container-promo\"\n        >\n            <header class=\"promo-module-header\">\n                @if (texts?.pretitle) {\n                    <h2 class=\"promo-header-title\">{{ texts?.pretitle }}</h2>\n                }\n                @if (texts?.description) {\n                    <p\n                        class=\"promo-header-subtitle\"\n                        [innerHTML]=\"texts?.description\"\n                    ></p>\n                }\n            </header>\n            <div\n                class=\"promo-module-content js-active-slider\"\n                data-slider_name=\"js-section-slider\"\n                data-slider_showbtns=\"true\"\n                data-slider_btns=\"btn-slide-circle\"\n                data-slider_showdots=\"false\"\n                data-slider_fade=\"false\"\n                data-slider_autoplay=\"true\"\n                data-slides_pc=\"2\"\n                data-slides_laptop=\"2\"\n                data-slides_tablet=\"1\"\n                data-slides_mobile=\"1\"\n            >\n                @if (showArrows) {\n                    <div\n                        class=\"promo-module-arrows section-slider-arrows js-slider-arrows\"\n                    >\n                        <button\n                            class=\"swiper-btn swiper-arrow swiper-button-prev btn-slide-circle\"\n                            type=\"button\"\n                            aria-label=\"Anterior\"\n                            #sliderPrev\n                        ></button>\n                        <button\n                            class=\"swiper-btn swiper-arrow swiper-button-next btn-slide-circle\"\n                            type=\"button\"\n                            aria-label=\"Siguiente\"\n                            #sliderNext\n                        ></button>\n                    </div>\n                }\n                <div\n                    class=\"js-section-slider swiper\"\n                    #sectionSlider\n                    babylonSwiperCssLoader\n                    [ngClass]=\"{ 'single-slide-center': isSingleSlide }\"\n                >\n                    <div class=\"swiper-wrapper\">\n                        @for (item of normalizedItems; track $index) {\n                            <div class=\"promo-room-module-element swiper-slide\">\n                                <div class=\"wrap-promo-room-element\">\n                                    @if (\n                                        getFirstImageByTagFromMultimedia(\n                                            item,\n                                            tagName\n                                        )?.img?.src\n                                    ) {\n                                        <a\n                                            [href]=\"item?.buttons?.[0]?.url\"\n                                            [linkType]=\"\n                                                item?.buttons?.[0]?.linkType\n                                            \"\n                                        >\n                                            <div\n                                                class=\"promo-element-media js-section-arrows-zone\"\n                                            >\n                                                <figure\n                                                    class=\"promo-element-media_img responsive-resize\"\n                                                    role=\"img\"\n                                                    [attr.aria-label]=\"\n                                                        getFirstImageByTagFromMultimedia(\n                                                            item,\n                                                            tagName\n                                                        )?.img?.alt ||\n                                                        getFirstImageByTagFromMultimedia(\n                                                            item,\n                                                            tagName\n                                                        )?.title\n                                                    \"\n                                                    [attr.data-filename]=\"\n                                                        getFirstImageByTagFromMultimedia(\n                                                            item,\n                                                            tagName\n                                                        )?.img?.alt ||\n                                                        getFirstImageByTagFromMultimedia(\n                                                            item,\n                                                            tagName\n                                                        )?.title\n                                                    \"\n                                                    [attr.data-src]=\"\n                                                        getFirstImageByTagFromMultimedia(\n                                                            item,\n                                                            tagName\n                                                        )?.img?.src ||\n                                                        'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                                    \"\n                                                    [style.backgroundImage]=\"\n                                                        getFirstImageByTagFromMultimedia(\n                                                            item,\n                                                            tagName\n                                                        )?.img?.src\n                                                            ? 'url(' +\n                                                              getFirstImageByTagFromMultimedia(\n                                                                  item,\n                                                                  tagName\n                                                              )?.img?.src +\n                                                              ')'\n                                                            : null\n                                                    \"\n                                                ></figure>\n                                            </div>\n                                            <div class=\"promo-element-info\">\n                                                @if (item?.texts?.name) {\n                                                    <p\n                                                        class=\"promo-element-info_title\"\n                                                        [innerHTML]=\"\n                                                            item?.texts?.name\n                                                        \"\n                                                    ></p>\n                                                }\n                                                @if (item?.texts?.additional1) {\n                                                    <p\n                                                        class=\"promo-element-info_subtitle\"\n                                                        [innerHTML]=\"\n                                                            item?.texts\n                                                                ?.additional1\n                                                        \"\n                                                    ></p>\n                                                }\n\n                                                <div class=\"room-category\">\n                                                    @if (\n                                                        item?.hoteltype ===\n                                                            'Hotel' &&\n                                                        item?.hotelcategory\n                                                    ) {\n                                                        @for (\n                                                            item of getNumber(\n                                                                item?.hotelcategory ??\n                                                                    ''\n                                                            );\n                                                            track $index\n                                                        ) {\n                                                            <div\n                                                                class=\"stars-background\"\n                                                            ></div>\n                                                        }\n                                                    }\n                                                    @if (\n                                                        item?.hoteltype ===\n                                                            'Apartamento' &&\n                                                        item?.hotelcategory\n                                                    ) {\n                                                        @for (\n                                                            item of getNumber(\n                                                                item?.hotelcategory ??\n                                                                    ''\n                                                            );\n                                                            track $index\n                                                        ) {\n                                                            <div\n                                                                class=\"keys-background\"\n                                                            ></div>\n                                                        }\n                                                    }\n                                                </div>\n                                            </div>\n                                        </a>\n                                        <div class=\"promo-element-foot\">\n                                            <div class=\"promo-element-btns\">\n                                                @if (item?.buttons?.length) {\n                                                    <div\n                                                        class=\"invert-buttons-tablet\"\n                                                    >\n                                                        @for (\n                                                            btn of item?.buttons;\n                                                            track $index\n                                                        ) {\n                                                            <div\n                                                                [ngClass]=\"\n                                                                    $index %\n                                                                        2 ===\n                                                                    0\n                                                                        ? 'btn-corp'\n                                                                        : 'btn-corp book-now-button'\n                                                                \"\n                                                            >\n                                                                <a\n                                                                    [href]=\"\n                                                                        btn?.url\n                                                                    \"\n                                                                    [linkType]=\"\n                                                                        btn?.linkType\n                                                                    \"\n                                                                    class=\"btn-corp-text\"\n                                                                    >{{\n                                                                        btn?.label\n                                                                    }}</a\n                                                                >\n                                                            </div>\n                                                        }\n                                                    </div>\n                                                }\n                                            </div>\n                                        </div>\n                                    }\n                                </div>\n                            </div>\n                        }\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n</section>\n","import { CommonModule } from '@angular/common';\nimport {\n    AfterViewInit,\n    ChangeDetectorRef,\n    Component,\n    ElementRef,\n    Input,\n    NgZone,\n    OnDestroy,\n    ViewChild,\n    ViewEncapsulation,\n} from '@angular/core';\n\nimport Swiper, { Autoplay, EffectFade, Navigation, Pagination } from 'swiper';\nimport { BabylonSwiperCssLoaderDirective } from '../../../../directives/babylon-sliders/babylon-swiper-css-loader.directive';\nimport { BabylonLinkTypeDirective } from '../../../../directives/link-type/link-type.directive';\nimport {\n    BabylonImageI,\n    BabylonItemI,\n    BabylonTextInfoI,\n} from '../../../../interfaces';\nimport { getFirstImageByTagFromMultimedia } from '../../../../utils/mutimedia.utils';\n\nconst sliderSettingsJson = {\n    showButtons: true,\n    showDots: false,\n    fade: true,\n    autoplay: true,\n    slidesPc: 1,\n    slidesLaptop: 1,\n    slidesTablet: 1,\n    slidesMobile: 1,\n};\n\n@Component({\n    selector: 'sli-c2-img-txt-r',\n    standalone: true,\n    imports: [\n        CommonModule,\n        BabylonSwiperCssLoaderDirective,\n        BabylonLinkTypeDirective,\n    ],\n    templateUrl: './sli-c2-img-txt-r.component.html',\n    styleUrl: './sli-c2-img-txt-r.component.scss',\n    encapsulation: ViewEncapsulation.Emulated,\n})\nexport class SliC2ImgTxtRComponent implements AfterViewInit, OnDestroy {\n    private sliderInitialized = false;\n    private swiperInstance?: Swiper;\n    currentSlide = 1;\n    totalSlides = this.items?.length || 0;\n    private sliderSettings = sliderSettingsJson as any;\n    tagName: string = 'SliC2ImgTxtR';\n    @Input() texts?: BabylonTextInfoI;\n    private _items?: BabylonItemI[] | BabylonImageI[];\n    private _normalizedItems: BabylonItemI[] = [];\n\n    @Input()\n    get items(): BabylonItemI[] | BabylonImageI[] | undefined {\n        return this._items;\n    }\n    set items(value: BabylonItemI[] | BabylonImageI[] | undefined) {\n        this._items = value;\n        this._normalizedItems = this.normalizeItems(value);\n    }\n\n    get normalizedItems(): BabylonItemI[] {\n        return this._normalizedItems;\n    }\n\n    private normalizeItems(items: BabylonItemI[] | BabylonImageI[] | undefined): BabylonItemI[] {\n        if (!items) {\n            return [];\n        }\n        // Caso BabylonItemI[] con multimedia.imagenes\n        if ((items as BabylonItemI[])[0]?.multimedia?.imagenes) {\n            return items as BabylonItemI[];\n        }\n        // Caso BabylonItemI[] con multimedia como array\n        if ((items as BabylonItemI[])[0]?.multimedia && Array.isArray((items as BabylonItemI[])[0]?.multimedia)) {\n            const mapped = (items as any[]).map(item => ({\n                ...item,\n                multimedia: {\n                    imagenes: item.multimedia\n                }\n            }));\n            return mapped;\n        }\n        // Caso BabylonImageI[] (un array de imágenes)\n        if (Array.isArray(items)) {\n            const arr = items as any[];\n            if (arr[0]?.img?.src || arr[0]?.imagenes?.img?.src) {\n                const mapped = arr.map(\n                    (image) =>\n                        ({\n                            multimedia: {\n                                imagenes: image.imagenes\n                                    ? [image.imagenes]\n                                    : [image],\n                            },\n                        }) as BabylonItemI\n                );\n                return mapped;\n            }\n        }\n        return [];\n    }\n\n    @ViewChild('sectionSlider', { static: false })\n    sectionSlider?: ElementRef<HTMLElement>;\n    @ViewChild('sliderPrev', { static: false })\n    sliderPrev?: ElementRef<HTMLButtonElement>;\n    @ViewChild('sliderNext', { static: false })\n    sliderNext?: ElementRef<HTMLButtonElement>;\n    @ViewChild('sliderPagination', { static: false })\n    sliderPagination?: ElementRef<HTMLElement>;\n\n    constructor(\n        private readonly ngZone: NgZone,\n        private readonly cdr: ChangeDetectorRef\n    ) {}\n\n    ngAfterViewInit(): void {\n        this.initSlider();\n    }\n\n    ngOnDestroy(): void {\n        this.destroySlider();\n    }\n\n    trackSlide(index: number): number {\n        return index;\n    }\n\n    formatCounter(value: number): string {\n        return value < 10 ? `0${value}` : `${value}`;\n    }\n\n    trackSource(index: number): number {\n        return index;\n    }\n\n    private initSlider(): void {\n        if (\n            this.sliderInitialized ||\n            typeof window === 'undefined' ||\n            !this.sectionSlider\n        ) {\n            return;\n        }\n\n        const sliderConfig = this.sliderSettings;\n        const maxSlidesPerView = Math.max(\n            sliderConfig.slidesPc,\n            sliderConfig.slidesLaptop,\n            sliderConfig.slidesTablet,\n            sliderConfig.slidesMobile\n        );\n        const hasMultipleSlides =\n            this.normalizedItems && this.normalizedItems.length > 1;\n        const shouldLoop =\n            hasMultipleSlides &&\n            this.normalizedItems &&\n            this.normalizedItems.length > maxSlidesPerView;\n        const hasNavigation =\n            hasMultipleSlides &&\n            sliderConfig.showButtons &&\n            this.sliderPrev &&\n            this.sliderNext;\n        const hasPagination =\n            hasMultipleSlides && sliderConfig.showDots && this.sliderPagination;\n\n        this.totalSlides = this.normalizedItems.length;\n\n        this.ngZone.runOutsideAngular(() => {\n            this.swiperInstance = new Swiper(\n                this.sectionSlider!.nativeElement,\n                {\n                    modules: [Navigation, Pagination, Autoplay, EffectFade],\n                    slidesPerView: sliderConfig.slidesMobile,\n                    slidesPerGroup: sliderConfig.slidesMobile,\n                    speed: 300,\n                    loop: shouldLoop,\n                    autoHeight: true,\n                    effect: sliderConfig.fade ? 'fade' : 'slide',\n                    fadeEffect: sliderConfig.fade\n                        ? { crossFade: true }\n                        : undefined,\n                    autoplay: sliderConfig.autoplay\n                        ? {\n                              delay: 3000,\n                              disableOnInteraction: false,\n                          }\n                        : false,\n                    navigation: hasNavigation\n                        ? {\n                              nextEl: this.sliderNext!.nativeElement,\n                              prevEl: this.sliderPrev!.nativeElement,\n                          }\n                        : false,\n                    pagination: hasPagination\n                        ? {\n                              el: this.sliderPagination!.nativeElement,\n                              clickable: true,\n                          }\n                        : false,\n                    breakpoints: {\n                        768: {\n                            slidesPerView: sliderConfig.slidesTablet,\n                            slidesPerGroup: sliderConfig.slidesTablet,\n                        },\n                        1280: {\n                            slidesPerView: sliderConfig.slidesLaptop,\n                            slidesPerGroup: sliderConfig.slidesLaptop,\n                        },\n                        1680: {\n                            slidesPerView: sliderConfig.slidesPc,\n                            slidesPerGroup: sliderConfig.slidesPc,\n                        },\n                    },\n                    on: {\n                        init: (swiper) => {\n                            this.ngZone.run(() => {\n                                this.totalSlides = this.normalizedItems.length;\n                                this.currentSlide =\n                                    (swiper?.realIndex ?? 0) + 1;\n                                this.cdr.detectChanges();\n                            });\n                        },\n                        slideChange: (swiper) => {\n                            this.ngZone.run(() => {\n                                this.currentSlide =\n                                    (swiper?.realIndex ?? 0) + 1;\n                                this.cdr.detectChanges();\n                            });\n                        },\n                    },\n                }\n            );\n            this.sliderInitialized = true;\n        });\n    }\n\n    getFirstImageByTag(tagName: string, multimedia: any) {\n        return getFirstImageByTagFromMultimedia(multimedia, tagName);\n    }\n\n    private destroySlider(): void {\n        if (!this.sliderInitialized || !this.swiperInstance) {\n            return;\n        }\n\n        this.swiperInstance.destroy(true, true);\n        this.swiperInstance = undefined;\n        this.sliderInitialized = false;\n    }\n}\n","<section class=\"section-gallery info-right scroll-facilities\">\n    <div class=\"big-wrapper\">\n        <header class=\"section-gallery-title\">\n            @if (texts?.pretitle) {\n                <h2 class=\"gallery-title\">{{ texts?.pretitle }}</h2>\n            }\n        </header>\n        <div class=\"wrap-section-gallery\">\n            <div class=\"section-slider-counter counter\">\n                <span class=\"counter-num actual\">{{\n                    formatCounter(currentSlide)\n                }}</span>\n                <span class=\"counter-num total\">{{\n                    formatCounter(totalSlides)\n                }}</span>\n            </div>\n            <div class=\"section-slider-arrows js-slider-arrows\">\n                @if (normalizedItems && normalizedItems.length > 1) {\n                    <button\n                        class=\"swiper-btn swiper-arrow swiper-button-prev btn-slide-circle\"\n                        type=\"button\"\n                        aria-label=\"Anterior\"\n                        #sliderPrev\n                    ></button>\n                    <button\n                        class=\"swiper-btn swiper-arrow swiper-button-next btn-slide-circle\"\n                        type=\"button\"\n                        aria-label=\"Siguiente\"\n                        #sliderNext\n                    ></button>\n                }\n            </div>\n            <div\n                class=\"section-gallery-content js-active-slider\"\n                data-slider_name=\"js-section-slider\"\n                data-slider_showbtns=\"true\"\n                data-slider_btns=\"btn-slide-circle\"\n                data-slider_showdots=\"false\"\n                data-slider_fade=\"true\"\n                data-slider_autoplay=\"true\"\n                data-slides_pc=\"1\"\n                data-slides_laptop=\"1\"\n                data-slides_tablet=\"1\"\n                data-slides_mobile=\"1\"\n            >\n                <div class=\"wrap-gallery-content\">\n                    <div\n                        class=\"js-section-slider swiper\"\n                        #sectionSlider\n                        babylonSwiperCssLoader\n                    >\n                        <div class=\"swiper-wrapper\">\n                            @for (item of normalizedItems; track $index) {\n                                <div\n                                    class=\"gallery-content-element swiper-slide\"\n                                >\n                                    <div\n                                        class=\"gallery-content-multimedia js-section-arrows-zone\"\n                                    >\n                                        <div class=\"wrap-content-multimedia\">\n                                            <div\n                                                class=\"content-multimedia-photos\"\n                                            >\n                                                <div\n                                                    class=\"multimedia-photos-element\"\n                                                >\n                                                    <div\n                                                        class=\"box-img wrap-photos-element\"\n                                                    >\n                                                        <picture\n                                                            class=\"photos-element-img\"\n                                                            role=\"img\"\n                                                        >\n                                                            <!--@for (source of item.image.sources; track trackSource($index)) {\n                                                  <source [attr.srcset]=\"source.srcset\" [attr.media]=\"source.media\" />\n                                              } -->\n                                                            @if (\n                                                                getFirstImageByTag(\n                                                                    tagName,\n                                                                    item\n                                                                        ?.multimedia\n                                                                        ?.imagenes ??\n                                                                        []\n                                                                ) ??\n                                                                    item\n                                                                        ?.multimedia\n                                                                        ?.imagenes?.[0];\n                                                                as img\n                                                            ) {\n                                                                <img\n                                                                    [src]=\"\n                                                                        img?.img\n                                                                            ?.src ||\n                                                                        'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                                                    \"\n                                                                    [attr.data-src]=\"\n                                                                        img?.img\n                                                                            ?.src ||\n                                                                        'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                                                    \"\n                                                                    [alt]=\"\n                                                                        img?.img\n                                                                            ?.alt ??\n                                                                        'slide image'\n                                                                    \"\n                                                                />\n                                                            }\n                                                        </picture>\n                                                    </div>\n                                                </div>\n                                            </div>\n                                        </div>\n                                    </div>\n                                    <div class=\"gallery-content-info\">\n                                        <div class=\"wrap-content-info\">\n                                            <div class=\"content-info-box\">\n                                                <div class=\"wrap-info-box\">\n                                                    @if (\n                                                        item?.multimedia\n                                                            ?.imagenes?.[0]\n                                                            ?.subtitle\n                                                    ) {\n                                                        <p\n                                                            class=\"info-box-subtitle\"\n                                                            [innerHTML]=\"\n                                                                item?.multimedia\n                                                                    ?.imagenes?.[0]\n                                                                    ?.subtitle ??\n                                                                item?.texts\n                                                                    ?.subtitle\n                                                            \"\n                                                        ></p>\n                                                    }\n                                                    @if (\n                                                        item?.multimedia\n                                                            ?.imagenes?.[0]\n                                                            ?.title ??\n                                                        item?.texts?.title\n                                                    ) {\n                                                        <h3\n                                                            class=\"info-box-title\"\n                                                        >\n                                                            {{\n                                                                item?.multimedia\n                                                                    ?.imagenes?.[0]\n                                                                    ?.title ??\n                                                                    item?.texts\n                                                                        ?.title\n                                                            }}\n                                                        </h3>\n                                                    }\n                                                    @if (\n                                                        item?.multimedia\n                                                            ?.imagenes?.[0]\n                                                            ?.description ??\n                                                        item?.texts?.description\n                                                    ) {\n                                                        <p\n                                                            class=\"info-box-text\"\n                                                            [innerHTML]=\"\n                                                                item?.multimedia\n                                                                    ?.imagenes?.[0]\n                                                                    ?.description ??\n                                                                item?.texts\n                                                                    ?.description\n                                                            \"\n                                                        ></p>\n                                                    }\n                                                    @if (\n                                                        item?.buttons?.length &&\n                                                        item?.buttons?.[0]?.url\n                                                    ) {\n                                                        <div\n                                                            class=\"complex-info-btn btn-corp\"\n                                                        >\n                                                            <a\n                                                                [href]=\"\n                                                                    item\n                                                                        ?.buttons?.[0]\n                                                                        ?.url\n                                                                \"\n                                                                [linkType]=\"\n                                                                    item\n                                                                        ?.buttons?.[0]\n                                                                        ?.linkType\n                                                                \"\n                                                                class=\"btn-corp-text\"\n                                                            >\n                                                                {{\n                                                                    item\n                                                                        ?.buttons?.[0]\n                                                                        ?.label\n                                                                }}</a\n                                                            >\n                                                        </div>\n                                                    }\n                                                </div>\n                                            </div>\n                                        </div>\n                                    </div>\n                                </div>\n                            }\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n</section>\n","import { CommonModule } from '@angular/common';\nimport {\n    AfterViewInit,\n    ChangeDetectorRef,\n    Component,\n    ElementRef,\n    Input,\n    NgZone,\n    OnDestroy,\n    ViewChild,\n    ViewEncapsulation,\n} from '@angular/core';\nimport Swiper, { Autoplay, EffectFade, Navigation, Pagination } from 'swiper';\nimport { BabylonSwiperCssLoaderDirective } from '../../../../directives/babylon-sliders/babylon-swiper-css-loader.directive';\nimport { BabylonLinkTypeDirective } from '../../../../directives/link-type/link-type.directive';\nimport { BabylonMultimediaI, BabylonTextInfoI } from '../../../../interfaces';\nimport { LisC2ImgTxtCtaV2Content } from './lis-c2-img-txt-cta-v2.interfaces';\n\nconst defaultData: LisC2ImgTxtCtaV2Content = {\n    sectionClass: 'section-gallery info-left loyalty-gallery',\n    wrapperClass: 'big-wrapper module-spacer',\n    header: {\n        titleHtml: '',\n    },\n    slider: {\n        name: 'js-section-slider',\n        showButtons: true,\n        buttonsClass: 'btn-slide-circle',\n        showDots: false,\n        fade: true,\n        autoplay: true,\n        slidesPc: 1,\n        slidesLaptop: 1,\n        slidesTablet: 1,\n        slidesMobile: 1,\n    },\n    slides: [\n        {\n            image: {\n                backgroundImage: '',\n                ariaLabel: '',\n                dataFilename: '',\n                dataLazyimg: '',\n            },\n            info: {\n                title: '',\n                text: '',\n                primaryButton: {\n                    text: '',\n                    href: '',\n                    target: '_blank',\n                },\n                secondaryButton: {\n                    text: '',\n                    scrollTo: '',\n                    scrollSpacer: '',\n                },\n            },\n        },\n    ],\n};\n\n@Component({\n    selector: 'lis-c2-img-txt-cta-v2',\n    standalone: true,\n    imports: [\n        CommonModule,\n        BabylonSwiperCssLoaderDirective,\n        BabylonLinkTypeDirective,\n    ],\n    templateUrl: './lis-c2-img-txt-cta-v2.component.html',\n    styleUrl: './lis-c2-img-txt-cta-v2.component.scss',\n    encapsulation: ViewEncapsulation.Emulated,\n})\nexport class LisC2ImgTxtCtaV2Component implements AfterViewInit, OnDestroy {\n    private _data: LisC2ImgTxtCtaV2Content = defaultData;\n    private sliderInitialized = false;\n    private swiperInstance?: Swiper;\n    currentSlide = 1;\n    totalSlides = this._data.slides.length;\n\n    @Input() texts?: BabylonTextInfoI;\n    @Input() multimedia?: BabylonMultimediaI;\n\n    @ViewChild('sectionSlider', { static: false })\n    sectionSlider?: ElementRef<HTMLElement>;\n    @ViewChild('sliderPrev', { static: false })\n    sliderPrev?: ElementRef<HTMLButtonElement>;\n    @ViewChild('sliderNext', { static: false })\n    sliderNext?: ElementRef<HTMLButtonElement>;\n    @ViewChild('sliderPagination', { static: false })\n    sliderPagination?: ElementRef<HTMLElement>;\n\n    constructor(\n        private readonly ngZone: NgZone,\n        private cdr: ChangeDetectorRef\n    ) {}\n\n    @Input()\n    set data(value: LisC2ImgTxtCtaV2Content) {\n        this._data = value ?? defaultData;\n        this.totalSlides = this._data.slides.length;\n        this.currentSlide = Math.min(this.currentSlide, this.totalSlides) || 1;\n        if (this.sliderInitialized) {\n            this.destroySlider();\n            this.initSlider();\n        }\n    }\n\n    get data(): LisC2ImgTxtCtaV2Content {\n        return this._data;\n    }\n\n    ngAfterViewInit(): void {\n        this.initSlider();\n    }\n\n    ngOnDestroy(): void {\n        this.destroySlider();\n    }\n\n    trackSlide(index: number): number {\n        return index;\n    }\n\n    formatCounter(value: number): string {\n        return value < 10 ? `0${value}` : `${value}`;\n    }\n    shouldShowDots(): boolean {\n        return !!(\n            this.multimedia?.imagenes &&\n            Array.isArray(this.multimedia.imagenes) &&\n            this.multimedia.imagenes.length > 1 &&\n            this.data?.slider?.showDots\n        );\n    }\n\n    scrollTo(target: string, spacer: string): void {\n        if (typeof document === 'undefined' || typeof window === 'undefined') {\n            return;\n        }\n        const element = document.querySelector(target);\n        if (!element) {\n            return;\n        }\n        const offset = Number(spacer) || 0;\n        const top =\n            (element as HTMLElement).getBoundingClientRect().top +\n            window.scrollY -\n            offset;\n        window.scrollTo({ top, behavior: 'smooth' });\n    }\n\n    private initSlider(): void {\n        if (\n            this.sliderInitialized ||\n            typeof window === 'undefined' ||\n            !this.sectionSlider\n        ) {\n            return;\n        }\n\n        const sliderConfig = this.data.slider;\n        const maxSlidesPerView = Math.max(\n            sliderConfig.slidesPc,\n            sliderConfig.slidesLaptop,\n            sliderConfig.slidesTablet,\n            sliderConfig.slidesMobile\n        );\n        const hasMultipleSlides = (this.multimedia?.imagenes?.length ?? 0) > 1;\n        const shouldLoop =\n            hasMultipleSlides &&\n            this.multimedia?.imagenes &&\n            this.multimedia?.imagenes?.length > maxSlidesPerView;\n        const hasNavigation =\n            hasMultipleSlides &&\n            sliderConfig.showButtons &&\n            this.sliderPrev &&\n            this.sliderNext;\n        const hasPagination =\n            hasMultipleSlides && sliderConfig.showDots && this.sliderPagination;\n\n        this.totalSlides = this.multimedia?.imagenes?.length ?? 0;\n\n        this.ngZone.runOutsideAngular(() => {\n            this.swiperInstance = new Swiper(\n                this.sectionSlider!.nativeElement,\n                {\n                    modules: [Navigation, Pagination, Autoplay, EffectFade],\n                    slidesPerView: sliderConfig.slidesMobile,\n                    slidesPerGroup: sliderConfig.slidesMobile,\n                    speed: 300,\n                    loop: shouldLoop,\n                    autoHeight: true,\n                    effect: sliderConfig.fade ? 'fade' : 'slide',\n                    fadeEffect: sliderConfig.fade\n                        ? { crossFade: true }\n                        : undefined,\n                    autoplay: sliderConfig.autoplay\n                        ? {\n                              delay: 3000,\n                              disableOnInteraction: false,\n                          }\n                        : false,\n                    navigation: hasNavigation\n                        ? {\n                              //addIcons: false,\n                              nextEl: this.sliderNext!.nativeElement,\n                              prevEl: this.sliderPrev!.nativeElement,\n                          }\n                        : false,\n                    pagination: hasPagination\n                        ? {\n                              el: this.sliderPagination!.nativeElement,\n                              clickable: true,\n                          }\n                        : false,\n                    breakpoints: {\n                        768: {\n                            slidesPerView: sliderConfig.slidesTablet,\n                            slidesPerGroup: sliderConfig.slidesTablet,\n                        },\n                        1280: {\n                            slidesPerView: sliderConfig.slidesLaptop,\n                            slidesPerGroup: sliderConfig.slidesLaptop,\n                        },\n                        1680: {\n                            slidesPerView: sliderConfig.slidesPc,\n                            slidesPerGroup: sliderConfig.slidesPc,\n                        },\n                    },\n                    on: {\n                        init: (swiper) => {\n                            this.ngZone.run(() => {\n                                this.totalSlides =\n                                    this.multimedia?.imagenes?.length ?? 0;\n                                this.currentSlide =\n                                    (swiper?.realIndex ?? 0) + 1;\n                                this.cdr.detectChanges();\n                            });\n                        },\n                        slideChange: (swiper) => {\n                            this.ngZone.run(() => {\n                                this.currentSlide =\n                                    (swiper?.realIndex ?? 0) + 1;\n                                this.cdr.detectChanges();\n                            });\n                        },\n                    },\n                }\n            );\n            this.sliderInitialized = true;\n        });\n    }\n\n    private destroySlider(): void {\n        if (!this.sliderInitialized || !this.swiperInstance) {\n            return;\n        }\n\n        this.swiperInstance.destroy(true, true);\n        this.swiperInstance = undefined;\n        this.sliderInitialized = false;\n    }\n}\n","  <section [attr.class]=\"data.sectionClass\">\n    <div [attr.class]=\"data.wrapperClass\">\n      <div class=\"wrap-section-gallery\">\n        <header class=\"section-gallery-header\">\n          <div class=\"wrap-gallery-header\">\n            @if (texts?.title) {\n              <h2 class=\"gallery-header-title\"> {{ texts?.title }}</h2>\n            }\n          </div>\n        </header>\n        <div\n          class=\"section-gallery-content js-active-slider\"\n          [attr.data-slider_name]=\"data.slider.name\"\n          [attr.data-slider_showbtns]=\"data.slider.showButtons\"\n          [attr.data-slider_btns]=\"data.slider.buttonsClass\"\n          [attr.data-slider_showdots]=\"data.slider.showDots\"\n          [attr.data-slider_fade]=\"data.slider.fade\"\n          [attr.data-slider_autoplay]=\"data.slider.autoplay\"\n          [attr.data-slides_pc]=\"data.slider.slidesPc\"\n          [attr.data-slides_laptop]=\"data.slider.slidesLaptop\"\n          [attr.data-slides_tablet]=\"data.slider.slidesTablet\"\n          [attr.data-slides_mobile]=\"data.slider.slidesMobile\"\n        >\n          <div class=\"wrap-gallery-content\">\n            <div class=\"section-slider-counter counter\">\n              <span class=\"counter-num actual\">{{ formatCounter(currentSlide) }}</span>\n              <span class=\"counter-num total\">{{ formatCounter(totalSlides) }}</span>\n            </div>\n            <div class=\"section-slider-arrows js-slider-arrows\">\n              @if (multimedia?.imagenes?.length && data.slider.showButtons) {\n                <button\n                  class=\"swiper-btn swiper-arrow swiper-button-prev btn-slide-circle\"\n                  type=\"button\"\n                  aria-label=\"Anterior\"\n                  #sliderPrev\n                ></button>\n                <button\n                  class=\"swiper-btn swiper-arrow swiper-button-next btn-slide-circle\"\n                  type=\"button\"\n                  aria-label=\"Siguiente\"\n                  #sliderNext\n                ></button>\n              }\n            </div>\n            <div class=\"js-section-slider swiper\" #sectionSlider babylonSwiperCssLoader>\n              <div class=\"swiper-wrapper\">\n                @for (slide of multimedia?.imagenes; track $index) {\n                  <div class=\"gallery-content-element swiper-slide\">\n                    <div class=\"gallery-content-multimedia js-section-arrows-zone\">\n                      <div class=\"wrap-content-multimedia\">\n                        <div class=\"content-multimedia-photos\">\n                          <div class=\"multimedia-photos-element\">\n                            <div class=\"wrap-photos-element\">\n                              <figure\n                                class=\"photos-element-img responsive-resize\"\n                                role=\"img\"\n                                [attr.aria-label]=\"slide?.img?.src || slide?.src\"\n                                [attr.data-filename]=\"slide?.title\"\n                                [attr.data-src]=\"slide?.img?.src || slide?.src\"\n                                [style.backgroundImage]=\"slide?.img?.src || slide?.src ? 'url(' + (slide?.img?.src || slide?.src) + ')' : null\"\n                              ></figure>\n                            </div>\n                          </div>\n                        </div>\n                      </div>\n                    </div>\n                    <div class=\"gallery-content-info\">\n                      <div class=\"wrap-content-info\">\n                        <div class=\"content-info-box\">\n                          <div class=\"wrap-info-box\">\n                            @if (slide?.title) {\n                              <h3 class=\"info-box-title\">{{ slide?.title }}</h3>\n                            }\n                            @if (slide?.description) {\n                              <p class=\"info-box-text\">{{ slide?.description }}</p>\n                            }\n                            @if (slide?.buttons?.length) {\n                              <a\n                                [href]=\"slide?.buttons?.[0]?.url\"\n                                [linkType]=\"slide?.buttons?.[0]?.linkType\"\n                                class=\"info-box-btn btn-corp center\"\n                                tabindex=\"0\"\n                              >\n                            @if (slide?.buttons?.[0]?.label) {\n                              <p class=\"btn-corp-text\" [innerHTML]=\"slide?.buttons?.[0]?.label\"></p>\n                            }\n                              </a>\n                          }\n                          @if (slide?.buttons?.[1]?.url) {\n                            <div class=\"btn-linker-center\">\n                              <a\n                                class=\"btn-linker toright center js-scrollto\"\n                                role=\"button\"\n                                [href]=\"slide?.buttons?.[1]?.url\"\n                                [linkType]=\"slide?.buttons?.[1]?.linkType\"\n                                tabindex=\"0\"\n                              >\n                                <p class=\"btn-linker-text\" [innerHTML]=\"slide?.buttons?.[1]?.label\"></p>\n                              </a>\n                            </div>\n                          }\n                          </div>\n                        </div>\n                      </div>\n                    </div>\n                  </div>\n                }\n              </div>\n              @if (multimedia?.imagenes?.length) {\n                @if (shouldShowDots()) {\n                  <div class=\"swiper-pagination\" #sliderPagination></div>\n                }\n            }\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </section>\n","import { CommonModule } from '@angular/common';\nimport {\n    Component,\n    HostListener,\n    Input,\n    ViewEncapsulation,\n} from '@angular/core';\nimport {\n    BabylonButtonI,\n    BabylonGlobalIconI,\n    BabylonTextInfoI,\n} from '../../../../interfaces';\nimport { BabylonStyleGlobalItem } from '../../../../interfaces/babylon-style.interface';\nimport { EquipmentV2Content } from './equipment-v2.interfaces';\n\nconst defaultData: EquipmentV2Content = {\n    header: {\n        subtitle: '',\n        title: '',\n    },\n    items: [],\n    buttons: {\n        showMore: '',\n        hide: '',\n    },\n};\n@Component({\n    selector: 'equipment-v2',\n    standalone: true,\n    imports: [CommonModule],\n    templateUrl: './equipment-v2.component.html',\n    styleUrl: './equipment-v2.component.scss',\n    encapsulation: ViewEncapsulation.Emulated,\n})\nexport class EquipmentV2Component {\n    private _data: EquipmentV2Content = defaultData;\n    showAll = false;\n    buttonActive = false;\n    threshold = 6;\n\n    @Input() texts?: BabylonTextInfoI;\n    @Input() links?: BabylonButtonI[];\n    private _items?: BabylonGlobalIconI[];\n    @Input()\n    set items(value: BabylonGlobalIconI[] | undefined) {\n        this._items = value;\n        this.evaluateThreshold();\n    }\n    get items(): BabylonGlobalIconI[] | undefined {\n        return this._items;\n    }\n    @Input() hideButtons?: boolean;\n    @Input() styles?: BabylonStyleGlobalItem;\n\n    @Input() iconsLikeImages?: boolean = false;\n\n    constructor() {}\n\n    @Input()\n    set data(value: EquipmentV2Content) {\n        this._data = value ?? defaultData;\n        this.evaluateThreshold();\n    }\n\n    get data(): EquipmentV2Content {\n        return this._data;\n    }\n\n    @HostListener('window:resize')\n    onResize(): void {\n        this.evaluateThreshold();\n    }\n\n    toggleServices(): void {\n        if (!this.buttonActive) {\n            return;\n        }\n        this.showAll = !this.showAll;\n    }\n\n    isActiveItem(index: number): boolean {\n        return this.showAll && index >= this.threshold;\n    }\n\n    trackItem(index: number): number {\n        return index;\n    }\n\n    getVisibleItems(): any[] {\n        if (!this.items) return [];\n        return this.showAll ? this.items : this.items.slice(0, this.threshold);\n    }\n\n    private evaluateThreshold(): void {\n        const width = typeof window !== 'undefined' ? window.innerWidth : 1920;\n        if (width < 768) {\n            this.threshold = 3;\n        } else {\n            this.threshold = 6;\n        }\n        this.buttonActive = (this.items?.length ?? 0) > this.threshold;\n        if (!this.buttonActive) {\n            this.showAll = false;\n        }\n    }\n}\n","<section class=\"services-module js-load-moreicons scroll-features\">\n    <header class=\"section-header\">\n        <div class=\"big-wrapper\">\n            <div class=\"wrap-section-header\">\n                @if (texts?.subtitle) {\n                    <span class=\"section-header-subtitle\">{{\n                        texts?.subtitle\n                    }}</span>\n                }\n                @if (texts?.title) {\n                    <p\n                        class=\"section-header-title\"\n                        [innerHTML]=\"texts?.title\"\n                    ></p>\n                }\n            </div>\n        </div>\n    </header>\n    <div class=\"big-wrapper\">\n        <div class=\"wrap-services-module\">\n            <div class=\"services-module-content\">\n                <div class=\"wrap-services-content\">\n                    <ul class=\"services-content-list\">\n                        @for (item of getVisibleItems(); track $index) {\n                            <li\n                                class=\"services-list-element\"\n                                [class.active]=\"true\"\n                            >\n                                <div class=\"wrap-services-element\">\n                                    <div class=\"services-element-info\">\n                                        <div class=\"wrap-element-info\">\n                                            @if (item?.name) {\n                                                <p\n                                                    class=\"element-info-title\"\n                                                    [innerHTML]=\"item?.name\"\n                                                ></p>\n                                            }\n                                            <!--@if (item?.text) {\n                          <p class=\"element-info-subtitle\" [innerHTML]=\"item?.text\"></p>\n                      }-->\n                                        </div>\n                                    </div>\n                                    <div class=\"services-element-icon\">\n                                        @if (item?.icon) {\n                                            <div class=\"wrap-element-icon\">\n                                                <i\n                                                    class=\"element-icon-graphic\"\n                                                    [class.mono]=\"\n                                                        !iconsLikeImages\n                                                    \"\n                                                    [ngClass]=\"item?.icon\"\n                                                    [style.--hover-color]=\"\n                                                        styles?.primaryHover ??\n                                                        styles?.primary ??\n                                                        '#ed3b37'\n                                                    \"\n                                                ></i>\n                                            </div>\n                                        }\n                                    </div>\n                                </div>\n                            </li>\n                        }\n                    </ul>\n                    <div class=\"services-content-foot\">\n                        @if (links?.length) {\n                            <div class=\"wrap-services-foot\">\n                                <div\n                                    class=\"services-foot-btn btn-corp js-toggle-services\"\n                                    role=\"button\"\n                                    tabindex=\"0\"\n                                    [class.active]=\"buttonActive\"\n                                    (click)=\"toggleServices()\"\n                                    (keyup.enter)=\"toggleServices()\"\n                                >\n                                    @if (links?.[0]?.label) {\n                                        <p\n                                            class=\"btn-corp-text\"\n                                            [class.hide]=\"showAll\"\n                                        >\n                                            {{ links?.[0]?.label }}\n                                        </p>\n                                    }\n                                    @if (links?.[1]?.label) {\n                                        <p\n                                            class=\"btn-corp-text\"\n                                            [class.hide]=\"!showAll\"\n                                        >\n                                            {{ links?.[1]?.label }}\n                                        </p>\n                                    }\n                                </div>\n                            </div>\n                        }\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n</section>\n","import { CommonModule } from '@angular/common';\nimport {\n    AfterViewInit,\n    ChangeDetectorRef,\n    Component,\n    ElementRef,\n    HostListener,\n    Input,\n    NgZone,\n    OnDestroy,\n    ViewChild,\n    ViewEncapsulation,\n} from '@angular/core';\nimport Swiper, { Autoplay, EffectFade, Navigation, Pagination } from 'swiper';\nimport { BabylonLinkTypeDirective } from '../../../../directives/link-type/link-type.directive';\nimport { BabylonMultimediaI } from '../../../../interfaces';\nimport { InnerBannerSliderV2Content } from './inner-banner-slider-v2.interfaces';\nconst defaultData: InnerBannerSliderV2Content = {\n    sectionClass: 'inlinks-module',\n    slider: {\n        name: 'js-section-slider',\n        showButtons: false,\n        buttonsClass: 'btn-slide-circle',\n        showDots: false,\n        fade: false,\n        autoplay: true,\n        slidesPc: 2,\n        slidesLaptop: 2,\n        slidesTablet: 1,\n        slidesMobile: 1,\n    },\n    items: [\n        {\n            linkHref: '',\n            image: {\n                backgroundImage: '',\n                dataLazyimg: '',\n                role: 'img',\n                ariaLabel: '',\n                dataFilename: '',\n            },\n            title: '',\n            subtitle: '',\n            button: {\n                text: '',\n            },\n        },\n    ],\n};\n\n@Component({\n    selector: 'inner-banner-slider-v2',\n    standalone: true,\n    imports: [CommonModule, BabylonLinkTypeDirective],\n    templateUrl: './inner-banner-slider-v2.component.html',\n    styleUrl: './inner-banner-slider-v2.component.scss',\n    encapsulation: ViewEncapsulation.Emulated,\n})\nexport class InnerBannerSliderV2Component implements AfterViewInit, OnDestroy {\n    private _data: InnerBannerSliderV2Content = defaultData;\n    private sliderInitialized = false;\n    private swiperInstance?: Swiper;\n    private viewInitialized = false;\n    private viewportWidth =\n        typeof window !== 'undefined' ? window.innerWidth : 0;\n    currentSlide = 1;\n    totalSlides = this.multimedia?.imagenes?.length;\n\n    @Input() multimedia?: BabylonMultimediaI;\n    @Input() hideLinks?: boolean = true;\n\n    @ViewChild('sectionSlider', { static: false })\n    sectionSlider?: ElementRef<HTMLElement>;\n    @ViewChild('sliderPrev', { static: false })\n    sliderPrev?: ElementRef<HTMLButtonElement>;\n    @ViewChild('sliderNext', { static: false })\n    sliderNext?: ElementRef<HTMLButtonElement>;\n    @ViewChild('sliderPagination', { static: false })\n    sliderPagination?: ElementRef<HTMLElement>;\n\n    constructor(\n        private readonly ngZone: NgZone,\n        private readonly cdr: ChangeDetectorRef\n    ) {}\n\n    @Input()\n    set data(value: InnerBannerSliderV2Content) {\n        this._data = value ?? defaultData;\n        this.totalSlides = this.multimedia?.imagenes?.length ?? 0;\n        this.currentSlide = Math.min(this.currentSlide, this.totalSlides) || 1;\n        if (this.viewInitialized) {\n            this.destroySlider();\n            this.initSlider();\n        }\n    }\n\n    get data(): InnerBannerSliderV2Content {\n        return this._data;\n    }\n\n    ngAfterViewInit(): void {\n        this.viewInitialized = true;\n        this.initSlider();\n    }\n\n    ngOnDestroy(): void {\n        this.destroySlider();\n    }\n\n    trackItem(index: number): number {\n        return index;\n    }\n\n    formatCounter(value: number): string {\n        return value < 10 ? `0${value}` : `${value}`;\n    }\n\n    get maxSlidesPerView(): number {\n        const sliderConfig = this.data?.slider;\n        if (!sliderConfig) {\n            return 1;\n        }\n\n        return Math.max(\n            sliderConfig.slidesPc,\n            sliderConfig.slidesLaptop,\n            sliderConfig.slidesTablet,\n            sliderConfig.slidesMobile\n        );\n    }\n\n    private getVisibleSlidesPerView(): number {\n        const sliderConfig = this.data?.slider;\n        if (!sliderConfig) {\n            return 1;\n        }\n\n        if (this.viewportWidth >= 1680) {\n            return sliderConfig.slidesPc;\n        }\n        if (this.viewportWidth >= 1280) {\n            return sliderConfig.slidesLaptop;\n        }\n        if (this.viewportWidth >= 768) {\n            return sliderConfig.slidesTablet;\n        }\n        return sliderConfig.slidesMobile;\n    }\n\n    get showNavigation(): boolean {\n        return (\n            (this.multimedia?.imagenes?.length ?? 0) >\n                this.getVisibleSlidesPerView() &&\n            !!this.data?.slider?.showButtons\n        );\n    }\n\n    @HostListener('window:resize')\n    onWindowResize(): void {\n        if (typeof window === 'undefined') {\n            return;\n        }\n\n        this.viewportWidth = window.innerWidth;\n        this.cdr.markForCheck();\n    }\n\n    private initSlider(): void {\n        if (\n            this.sliderInitialized ||\n            typeof window === 'undefined' ||\n            !this.sectionSlider\n        ) {\n            return;\n        }\n\n        const sliderConfig = this.data.slider;\n        const maxSlidesPerView = this.maxSlidesPerView;\n        const hasMultipleSlides = (this.multimedia?.imagenes?.length ?? 0) > 1;\n        const shouldLoop =\n            hasMultipleSlides &&\n            (this.multimedia?.imagenes?.length ?? 0) > maxSlidesPerView;\n        const hasNavigation =\n            this.showNavigation && this.sliderPrev && this.sliderNext;\n        const hasPagination =\n            hasMultipleSlides && sliderConfig.showDots && this.sliderPagination;\n\n        this.totalSlides = this.multimedia?.imagenes?.length ?? 0;\n\n        this.ngZone.runOutsideAngular(() => {\n            this.swiperInstance = new Swiper(\n                this.sectionSlider!.nativeElement,\n                {\n                    modules: [Navigation, Pagination, Autoplay, EffectFade],\n                    slidesPerView: sliderConfig.slidesMobile,\n                    slidesPerGroup: sliderConfig.slidesMobile,\n                    speed: 300,\n                    loop: shouldLoop,\n                    autoHeight: true,\n                    effect: sliderConfig.fade ? 'fade' : 'slide',\n                    fadeEffect: sliderConfig.fade\n                        ? { crossFade: true }\n                        : undefined,\n                    autoplay: sliderConfig.autoplay\n                        ? {\n                              delay: 3000,\n                              disableOnInteraction: false,\n                          }\n                        : false,\n                    navigation: hasNavigation\n                        ? {\n                              //addIcons: false,\n                              nextEl: this.sliderNext!.nativeElement,\n                              prevEl: this.sliderPrev!.nativeElement,\n                          }\n                        : false,\n                    pagination: hasPagination\n                        ? {\n                              el: this.sliderPagination!.nativeElement,\n                              clickable: true,\n                          }\n                        : false,\n                    breakpoints: {\n                        768: {\n                            slidesPerView: sliderConfig.slidesTablet,\n                            slidesPerGroup: sliderConfig.slidesTablet,\n                        },\n                        1280: {\n                            slidesPerView: sliderConfig.slidesLaptop,\n                            slidesPerGroup: sliderConfig.slidesLaptop,\n                        },\n                        1680: {\n                            slidesPerView: sliderConfig.slidesPc,\n                            slidesPerGroup: sliderConfig.slidesPc,\n                        },\n                    },\n                    on: {\n                        init: (swiper) => {\n                            this.ngZone.run(() => {\n                                this.totalSlides =\n                                    this.multimedia?.imagenes?.length ?? 0;\n                                this.currentSlide =\n                                    (swiper?.realIndex ?? 0) + 1;\n                            });\n                        },\n                        slideChange: (swiper) => {\n                            this.ngZone.run(() => {\n                                this.currentSlide =\n                                    (swiper?.realIndex ?? 0) + 1;\n                            });\n                        },\n                    },\n                }\n            );\n            this.sliderInitialized = true;\n        });\n    }\n\n    private destroySlider(): void {\n        if (!this.sliderInitialized || !this.swiperInstance) {\n            return;\n        }\n\n        this.swiperInstance.destroy(true, true);\n        this.swiperInstance = undefined;\n        this.sliderInitialized = false;\n    }\n}\n","<section [class]=\"data.sectionClass\" *ngIf=\"data\">\n    <div class=\"big-wrapper\">\n        <div class=\"wrap-inlinks-module module-spacer\">\n            <div\n                class=\"inlinks-module-content js-active-slider\"\n                [attr.data-slider_name]=\"data.slider.name\"\n                [attr.data-slider_showbtns]=\"data.slider.showButtons\"\n                [attr.data-slider_btns]=\"data.slider.buttonsClass\"\n                [attr.data-slider_showdots]=\"data.slider.showDots\"\n                [attr.data-slider_fade]=\"data.slider.fade\"\n                [attr.data-slider_autoplay]=\"data.slider.autoplay\"\n                [attr.data-slides_pc]=\"data.slider.slidesPc\"\n                [attr.data-slides_laptop]=\"data.slider.slidesLaptop\"\n                [attr.data-slides_tablet]=\"data.slider.slidesTablet\"\n                [attr.data-slides_mobile]=\"data.slider.slidesMobile\"\n            >\n                <div\n                    class=\"inlinks-module-arrows section-slider-arrows js-slider-arrows\"\n                >\n                    @if (showNavigation) {\n                        <button\n                            class=\"swiper-btn swiper-arrow swiper-button-prev\"\n                            [ngClass]=\"data.slider.buttonsClass\"\n                            type=\"button\"\n                            aria-label=\"Anterior\"\n                            #sliderPrev\n                        ></button>\n                        <button\n                            class=\"swiper-btn swiper-arrow swiper-button-next\"\n                            [ngClass]=\"data.slider.buttonsClass\"\n                            type=\"button\"\n                            aria-label=\"Siguiente\"\n                            #sliderNext\n                        ></button>\n                    }\n                </div>\n                <div class=\"js-section-slider swiper\" #sectionSlider>\n                    <div class=\"swiper-wrapper\">\n                        @for (item of multimedia?.imagenes; track $index) {\n                            <div class=\"inlinks-module-element swiper-slide\">\n                                <a\n                                    [href]=\"item?.links?.[0]?.url\"\n                                    [linkType]=\"item?.links?.[0]?.linkType\"\n                                >\n                                    <div class=\"wrap-inlinks-element\">\n                                        <figure\n                                            class=\"inlinks-element-media js-section-arrows-zone responsive-resize\"\n                                            role=\"img\"\n                                            [attr.aria-label]=\"item?.alt\"\n                                            [attr.data-filename]=\"item?.title\"\n                                            [attr.data-src]=\"\n                                                item?.img?.src ||\n                                                'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                            \"\n                                            [style.backgroundImage]=\"\n                                                item?.img?.src || item?.src\n                                                    ? 'url(' +\n                                                      (item?.img?.src ||\n                                                          item?.src) +\n                                                      ')'\n                                                    : null\n                                            \"\n                                        ></figure>\n                                        <div class=\"inlinks-element-info\">\n                                            @if (item?.title) {\n                                                <p\n                                                    class=\"inlinks-element-info_title\"\n                                                    [innerHTML]=\"item?.title\"\n                                                ></p>\n                                            }\n                                            @if (item?.subtitle) {\n                                                <p\n                                                    class=\"inlinks-element-info_subtitle\"\n                                                    [innerHTML]=\"item?.subtitle\"\n                                                ></p>\n                                            }\n                                        </div>\n                                        <div\n                                            class=\"inlinks-element-info_btn btn-corp\"\n                                            role=\"button\"\n                                            tabindex=\"0\"\n                                        >\n                                            @if (\n                                                item?.links?.[0]?.label &&\n                                                !hideLinks\n                                            ) {\n                                                <p\n                                                    class=\"btn-corp-text\"\n                                                    [innerHTML]=\"\n                                                        item?.links?.[0]?.label\n                                                    \"\n                                                ></p>\n                                            }\n                                        </div>\n                                    </div>\n                                </a>\n                            </div>\n                        }\n                    </div>\n                    @if (\n                        (multimedia?.imagenes?.length ?? 0) > 1 &&\n                        data.slider.showDots\n                    ) {\n                        <div class=\"swiper-pagination\" #sliderPagination></div>\n                    }\n                </div>\n            </div>\n        </div>\n    </div>\n</section>\n","import { CommonModule } from '@angular/common';\nimport {\n    Component,\n    ElementRef,\n    Input,\n    NgZone,\n    ViewChild,\n    ViewEncapsulation,\n} from '@angular/core';\nimport Swiper, { Autoplay, EffectFade, Navigation, Pagination } from 'swiper';\nimport { BabylonSwiperCssLoaderDirective } from '../../../../directives/babylon-sliders/babylon-swiper-css-loader.directive';\nimport { BabylonLinkTypeDirective } from '../../../../directives/link-type/link-type.directive';\nimport {\n    BabylonButtonI,\n    BabylonMultimediaI,\n    BabylonSocialMediaI,\n    BabylonTextInfoI,\n} from '../../../../interfaces';\nimport { BabylonAddressItemI } from '../../../../interfaces/babylon-address-item.interface';\nimport { BabylonAdvantageItemI } from '../../../../interfaces/babylon-advantages-item.interface';\n\n@Component({\n    selector: 'fo-c2-img-txt',\n    standalone: true,\n    imports: [\n        CommonModule,\n        BabylonLinkTypeDirective,\n        BabylonSwiperCssLoaderDirective,\n    ],\n    templateUrl: './fo-c2-img-txt.component.html',\n    styleUrl: './fo-c2-img-txt.component.scss',\n    encapsulation: ViewEncapsulation.Emulated,\n})\nexport class FoC2ImgTxtComponent {\n    @Input() multimedia?: BabylonMultimediaI;\n    @Input() texts?: BabylonTextInfoI;\n    @Input() lists?: BabylonAdvantageItemI[];\n    @Input() footerLinks?: BabylonButtonI[];\n    @Input() socialMedia?: BabylonSocialMediaI[];\n    @Input() addressHotel?: BabylonAddressItemI[];\n    @Input() buttons?: BabylonButtonI[];\n\n    @ViewChild('certificatesSlider', { static: false })\n    certificatesSlider?: ElementRef<HTMLElement>;\n    @ViewChild('certificatesPrev', { static: false })\n    certificatesPrev?: ElementRef<HTMLButtonElement>;\n    @ViewChild('certificatesNext', { static: false })\n    certificatesNext?: ElementRef<HTMLButtonElement>;\n    @ViewChild('certificatesPagination', { static: false })\n    certificatesPagination?: ElementRef<HTMLElement>;\n\n    private sliderInitialized = false;\n    private swiperInstance?: Swiper;\n\n    constructor(private readonly ngZone: NgZone) {}\n\n    findLinkByOrder(order: string): any | undefined {\n        if (!this.footerLinks) return undefined;\n        let foundItem = this.footerLinks.find((item) => item.order === order);\n        return foundItem;\n    }\n\n    get listsWithoutLast(): BabylonAdvantageItemI[] {\n        const items = this.lists ?? [];\n        return items.length > 0 ? items.slice(0, -1) : [];\n    }\n\n    get lastListItem(): BabylonAdvantageItemI | undefined {\n        const items = this.lists ?? [];\n        return items.length > 0 ? items[items.length - 1] : undefined;\n    }\n\n    getFullAddress(): string {\n        if (!this.addressHotel?.[0]) return '';\n        const addr = this.addressHotel[0];\n\n        // Si existe full_address, usarlo\n        if (addr.full_address) {\n            return addr.full_address;\n        }\n\n        // Si no, construir la dirección combinando los campos disponibles\n        const parts = [\n            addr.address,\n            addr.cp,\n            addr.city,\n            addr.province,\n            addr.country,\n        ].filter((part) => part);\n\n        return parts.join(', ');\n    }\n\n    ngAfterViewInit(): void {\n        this.initSlider();\n    }\n\n    ngOnDestroy(): void {\n        this.destroySlider();\n    }\n\n    private initSlider(): void {\n        if (\n            this.sliderInitialized ||\n            !this.certificatesSlider ||\n            typeof window === 'undefined'\n        ) {\n            return;\n        }\n        // Slider config: fallback to a default config if not present\n        const sliderConfig = {\n            slidesPc: 1,\n            slidesLaptop: 1,\n            slidesTablet: 1,\n            slidesMobile: 1,\n            showButtons: false,\n            showDots: true,\n            fade: false,\n            autoplay: true,\n        };\n        // If you have a config in data, you can merge/override here\n\n        const images = this.multimedia?.staticImagenes || [];\n        const maxSlidesPerView = Math.max(\n            sliderConfig.slidesPc,\n            sliderConfig.slidesLaptop,\n            sliderConfig.slidesTablet,\n            sliderConfig.slidesMobile\n        );\n        const hasMultipleSlides = images.length > 1;\n        const shouldLoop =\n            hasMultipleSlides && images.length > maxSlidesPerView;\n        const hasNavigation =\n            hasMultipleSlides &&\n            sliderConfig.showButtons &&\n            this.certificatesPrev &&\n            this.certificatesNext;\n        const hasPagination =\n            hasMultipleSlides &&\n            sliderConfig.showDots &&\n            this.certificatesPagination;\n\n        this.ngZone.runOutsideAngular(() => {\n            this.swiperInstance = new Swiper(\n                this.certificatesSlider!.nativeElement,\n                {\n                    modules: [Navigation, Pagination, Autoplay, EffectFade],\n                    slidesPerView: sliderConfig.slidesMobile,\n                    slidesPerGroup: sliderConfig.slidesMobile,\n                    speed: 300,\n                    loop: shouldLoop,\n                    autoHeight: true,\n                    effect: sliderConfig.fade ? 'fade' : 'slide',\n                    fadeEffect: sliderConfig.fade\n                        ? { crossFade: true }\n                        : undefined,\n                    autoplay: sliderConfig.autoplay\n                        ? {\n                              delay: 3000,\n                              disableOnInteraction: false,\n                          }\n                        : false,\n                    navigation: hasNavigation\n                        ? {\n                              nextEl: this.certificatesNext!.nativeElement,\n                              prevEl: this.certificatesPrev!.nativeElement,\n                          }\n                        : false,\n                    pagination: hasPagination\n                        ? {\n                              el: this.certificatesPagination!.nativeElement,\n                              clickable: true,\n                          }\n                        : false,\n                    breakpoints: {\n                        768: {\n                            slidesPerView: sliderConfig.slidesTablet,\n                            slidesPerGroup: sliderConfig.slidesTablet,\n                        },\n                        1280: {\n                            slidesPerView: sliderConfig.slidesLaptop,\n                            slidesPerGroup: sliderConfig.slidesLaptop,\n                        },\n                        1680: {\n                            slidesPerView: sliderConfig.slidesPc,\n                            slidesPerGroup: sliderConfig.slidesPc,\n                        },\n                    },\n                }\n            );\n            this.ngZone.run(() => {\n                this.sliderInitialized = true;\n            });\n        });\n    }\n\n    private destroySlider(): void {\n        if (!this.sliderInitialized || !this.swiperInstance) {\n            return;\n        }\n        this.swiperInstance.destroy(true, true);\n        this.swiperInstance = undefined;\n        this.sliderInitialized = false;\n    }\n    trackByIndex(index: number): number {\n        return index;\n    }\n\n    trimUrl(url: string | undefined): string | undefined {\n        return url ? url.trim() : url;\n    }\n}\n","<div class=\"footer-container footer-a\">\n    <div class=\"wrap-footer-container\">\n        <div class=\"footer-multimedia\">\n            <div class=\"wrap-footer-multimedia\">\n                @if (multimedia?.imagenes?.length) {\n                    <figure id=\"svg_map\">\n                        <div\n                            class=\"footer-content-top btn-circle icon-pointer-up js-scrollto\"\n                            data-scroll_to=\"body\"\n                            data-scroll_spacer=\"0\"\n                            tabindex=\"0\"\n                        >\n                            @if (multimedia?.imagenes?.[0]?.title) {\n                                <span class=\"footer-static-top_text\">{{\n                                    multimedia?.imagenes?.[0]?.title\n                                }}</span>\n                            }\n                        </div>\n                        @if (multimedia?.imagenes?.[0]?.img?.src) {\n                            <a\n                                [href]=\"addressHotel?.[0]?.url || 'c/' + getFullAddress()\"\n                                linkType=\"external\"\n                                class=\"box-img-link\"\n                            >\n                                <div class=\"box-img\">\n                                    <img\n                                        [src]=\"\n                                            multimedia?.imagenes?.[0]?.img?.src\n                                        \"\n                                        [alt]=\"\n                                            multimedia?.imagenes?.[0]?.img?.alt\n                                        \"\n                                        class=\"img-fluid\"\n                                    />\n                                </div>\n                            </a>\n                        }\n                    </figure>\n                }\n            </div>\n        </div>\n        <div class=\"footer-content\">\n            <section class=\"links-module\">\n                <div class=\"big-wrapper\">\n                    <div class=\"wrap-links-module\">\n                        <div class=\"links-module-list\">\n                            <address>\n                                <div class=\"address address-header\">\n                                    @if (texts?.title) {\n                                        <p\n                                            class=\"address-header-title\"\n                                            [innerHTML]=\"texts?.title\"\n                                        ></p>\n                                    }\n                                    <!--<p class=\"address-header-subtitle\">{{ addressHotel.subtitle }}</p>-->\n                                </div>\n                                <div class=\"row-address\">\n                                    <div class=\"col-address\">\n                                        <div class=\"address\">\n                                            <div class=\"address-innner\">\n                                                <!-- icono estático<i class=\"links-header-icon\" [ngClass]=\"address.location.icon\"></i>-->\n                                                <div class=\"flex-inline-start\">\n                                                  <svg class=\"links-header-icon icon-location\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n                                                      <rect width=\"24\" height=\"24\" fill=\"none\"/>\n                                                      <path d=\"M12 2C7.03 2 3 6.03 3 11c0 5.25 7.11 10.61 8.09 11.32a1 1 0 0 0 1.18 0C13.89 21.61 21 16.25 21 11c0-4.97-4.03-9-9-9Zm0 17.88C10.13 18.13 5 14.11 5 11c0-3.87 3.13-7 7-7s7 3.13 7 7c0 3.11-5.13 7.13-7 8.88ZM12 6a5 5 0 1 0 0 10 5 5 0 0 0 0-10Zm0 8a3 3 0 1 1 0-6 3 3 0 0 1 0 6Z\" fill=\"currentColor\"/>\n                                                    </svg>\n                                                  <a\n                                                      [href]=\"\n                                                          addressHotel?.[0]?.url || 'c/' + getFullAddress()\n                                                      \"\n                                                      linkType=\"external\"\n                                                  >\n                                                      @if (\n                                                          addressHotel?.[0]\n                                                              ?.address\n                                                      ) {\n                                                          {{\n                                                              addressHotel?.[0]\n                                                                  ?.address\n                                                          }}\n                                                          <br />\n                                                      }\n                                                      @if (\n                                                          addressHotel?.[0]?.cp &&\n                                                          addressHotel?.[0]?.city\n                                                      ) {\n                                                          {{\n                                                              addressHotel?.[0]\n                                                                  ?.cp\n                                                          }}\n                                                          {{\n                                                              addressHotel?.[0]\n                                                                  ?.city\n                                                          }}\n                                                          <br />\n                                                      }\n                                                      @if (\n                                                          addressHotel?.[0]\n                                                              ?.province &&\n                                                          addressHotel?.[0]\n                                                              ?.country\n                                                      ) {\n                                                          {{\n                                                              addressHotel?.[0]\n                                                                  ?.province\n                                                          }}\n                                                          {{\n                                                              addressHotel?.[0]\n                                                                  ?.country\n                                                          }}\n                                                      }\n                                                  </a>\n                                                </div>\n                                            </div>\n                                        </div>\n                                    </div>\n                                    <div class=\"col-address\">\n                                        <div class=\"address\">\n                                            <div class=\"address-innner\">\n                                                    @if (addressHotel?.[0]?.phone) {\n                                                      <div class=\"flex-inline-center\">\n                                                        <svg class=\"links-header-icon icon-phone\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n                                                            <rect width=\"24\" height=\"24\" fill=\"none\"/>\n                                                            <path d=\"M6.62 10.79a15.053 15.053 0 0 0 6.59 6.59l2.2-2.2a1 1 0 0 1 1.01-.24c1.12.37 2.33.57 3.58.57a1 1 0 0 1 1 1V20a1 1 0 0 1-1 1C10.07 21 3 13.93 3 5a1 1 0 0 1 1-1h3.5a1 1 0 0 1 1 1c0 1.25.2 2.46.57 3.58a1 1 0 0 1-.24 1.01l-2.2 2.2Z\" fill=\"currentColor\"/>\n                                                        </svg>\n                                                        <a\n                                                            [href]=\"'T:' + (addressHotel?.[0]?.phone ?? '')\"\n                                                            linkType=\"external\"\n                                                            style=\"margin-left: 0.5em;\"\n                                                        >\n                                                            {{ addressHotel?.[0]?.phone }}\n                                                            <br />\n                                                        </a>\n                                                      </div>\n                                                    }\n\n                                                @if (addressHotel?.[0]?.email) {\n                                                  <div class=\"flex-inline-center\">\n                                                    <svg class=\"links-header-icon icon-email\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n                                                        <rect width=\"24\" height=\"24\" fill=\"none\"/>\n                                                        <path d=\"M2 6.75A2.75 2.75 0 0 1 4.75 4h14.5A2.75 2.75 0 0 1 22 6.75v10.5A2.75 2.75 0 0 1 19.25 20H4.75A2.75 2.75 0 0 1 2 17.25V6.75Zm2.75-1.25A1.25 1.25 0 0 0 3.5 6.75v.38l8.5 6.36 8.5-6.36v-.38A1.25 1.25 0 0 0 19.25 5.5H4.75Zm16.5 3.07-7.97 5.96a1 1 0 0 1-1.16 0L3.5 8.57v8.68c0 .69.56 1.25 1.25 1.25h14.5c.69 0 1.25-.56 1.25-1.25V8.57Z\" fill=\"currentColor\"/>\n                                                    </svg>\n                                                      <a\n                                                          [href]=\"\n                                                              'mailto:' +\n                                                              (addressHotel?.[0]?.email ?? '')\n                                                          \"\n                                                          linkType=\"external\"\n                                                          style=\"display:inline-block; max-width:100%;\"\n                                                      >\n                                                          <span class=\"email-autoscale\">\n                                                                  {{ addressHotel?.[0]?.email }}\n                                                              </span>\n                                                          <br />\n                                                      </a>\n                                                  </div>\n                                                }\n\n                                            </div>\n                                        </div>\n                                    </div>\n                                    <!-- <div class=\"col-address\">\n                                        <div class=\"address\">\n                                            <div class=\"address-innner\">\n                                                icono estático<i class=\"links-header-icon\" [ngClass]=\"address.location.icon\"></i>-->\n                                                <!-- @if (addressHotel?.[0]?.email) { -->\n                                                    <!-- <a\n                                                        [href]=\"\n                                                            'mailto:' +\n                                                            (addressHotel?.[0]\n                                                                ?.email ?? '')\n                                                        \"\n                                                        linkType=\"external\"\n                                                    >\n                                                        {{\n                                                            addressHotel?.[0]\n                                                                ?.email\n                                                        }} -->\n                                                        <!-- <br />\n                                                    </a> -->\n                                                <!-- }\n                                            </div> -->\n                                        <!-- </div>\n                                    </div> -->\n                                </div>\n                            </address>\n                            @for (\n                                item of listsWithoutLast;\n                                track trackByIndex($index)\n                            ) {\n                                <div class=\"links-module-element\">\n                                    <a\n                                        [href]=\"trimUrl(item?.url)\"\n                                        [linkType]=\"\n                                            item?.linkType\n                                                ? item?.linkType\n                                                : 'nolink'\n                                        \"\n                                        [disablePointerNone]=\"true\"\n                                    >\n                                        <div class=\"wrap-links-element\">\n                                            <div class=\"links-element-header\">\n                                                <div class=\"wrap-links-header\">\n                                                    <i\n                                                        *ngIf=\"item?.icon?.toLowerCase() !== 'icon-undefined'\"\n                                                        class=\"links-header-icon\"\n                                                        [ngClass]=\"item?.icon\"\n                                                    ></i>\n                                                    @if (item?.title) {\n                                                        <p\n                                                            class=\"links-header-title\"\n                                                            [innerHTML]=\"\n                                                                item?.title\n                                                            \"\n                                                        ></p>\n                                                    }\n                                                    <!--<p class=\"links-header-subtitle\">{{ item.text }}</p>-->\n                                                </div>\n                                            </div>\n                                            @if (\n                                                listsWithoutLast.length &&\n                                                $index >\n                                                    listsWithoutLast.length - 2\n                                            ) {\n                                                <div\n                                                    class=\"links-element-content socials\"\n                                                >\n                                                    <div\n                                                        class=\"wrap-links-content\"\n                                                    >\n                                                        @for (\n                                                            social of socialMedia ??\n                                                                [];\n                                                            track trackByIndex(\n                                                                $index\n                                                            )\n                                                        ) {\n                                                            <a\n                                                                [href]=\"\n                                                                    social?.url\n                                                                \"\n                                                                rel=\"me\"\n                                                                target=\"_blank\"\n                                                                linkType=\"external\"\n                                                                class=\"links-content-social icon-border\"\n                                                                *ngIf=\"social?.name?.toLowerCase() !== 'undefined'\"\n                                                                [ngClass]=\"\n                                                                    'icon-' +\n                                                                    (social?.name?.toLowerCase() ??\n                                                                        '')\n                                                                \"\n                                                            ></a>\n                                                        }\n                                                    </div>\n                                                </div>\n                                            } @else {\n                                                <div\n                                                    class=\"links-element-content\"\n                                                >\n                                                    <div\n                                                        class=\"wrap-links-content\"\n                                                    >\n                                                        @if (item?.text) {\n                                                            <p\n                                                                class=\"links-content-text\"\n                                                                [innerHTML]=\"\n                                                                    item?.text\n                                                                \"\n                                                            ></p>\n                                                        }\n                                                        <div\n                                                            class=\"links-content-btn btn-linker toright\"\n                                                        >\n                                                            <p\n                                                                class=\"btn-linker-text\"\n                                                                [innerHTML]=\"\n                                                                    findLinkByOrder(\n                                                                        (\n                                                                            $index +\n                                                                            1\n                                                                        ).toString()\n                                                                    )?.label\n                                                                \"\n                                                            ></p>\n                                                        </div>\n                                                    </div>\n                                                </div>\n                                            }\n                                        </div>\n                                    </a>\n                                </div>\n                            }\n\n                            <div class=\"links-module-element certificates\">\n                                <div class=\"wrap-links-element\">\n                                    <div class=\"links-element-header\">\n                                        <div class=\"wrap-links-header\">\n                                            <!--<i class=\"links-header-icon\" [ngClass]=\"data.certificatesHeader.icon\"></i>-->\n                                            <p\n                                                class=\"links-header-title\"\n                                                [innerHTML]=\"\n                                                    lastListItem?.title\n                                                \"\n                                            ></p>\n                                        </div>\n                                    </div>\n                                    <div\n                                        class=\"links-element-certificates js-active-slider swiper\"\n                                        data-slider_name=\"js-certificates-slider\"\n                                        data-slider_arrows=\"\"\n                                        data-slider_showbtns=\"true\"\n                                        data-slider_btns=\"btn-slide-circle\"\n                                        data-slider_showdots=\"true\"\n                                        data-slider_fade=\"false\"\n                                        data-slider_autoplay=\"true\"\n                                        data-slides_pc=\"1\"\n                                        data-slides_laptop=\"1\"\n                                        data-slides_tablet=\"1\"\n                                        data-slides_mobile=\"1\"\n                                        babylonSwiperCssLoader\n                                        #certificatesSlider\n                                    >\n                                        <div class=\"swiper-wrapper\">\n                                            @for (\n                                                certificate of multimedia?.staticImagenes ??\n                                                    [];\n                                                track trackByIndex($index)\n                                            ) {\n                                                <div\n                                                    class=\"certificates-slider-element swiper-slide\"\n                                                >\n                                                    <div\n                                                        class=\"wrap-certificates-element\"\n                                                    >\n                                                        <img\n                                                            class=\"certificates-element-img\"\n                                                            [src]=\"\n                                                                certificate?.img\n                                                                    ?.src ??\n                                                                certificate?.src\n                                                            \"\n                                                            [alt]=\"\n                                                                certificate?.img\n                                                                    ?.alt ??\n                                                                certificate?.alt\n                                                            \"\n                                                            [attr.data-lazyimg]=\"\n                                                                certificate?.img\n                                                                    ?.src ??\n                                                                certificate?.src\n                                                            \"\n                                                        />\n                                                    </div>\n                                                </div>\n                                            }\n                                        </div>\n                                        <div\n                                            class=\"swiper-pagination\"\n                                            #certificatesPagination\n                                        ></div>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </section>\n        </div>\n    </div>\n</div>\n<div class=\"footer-end\"></div>\n","import { CommonModule } from '@angular/common';\nimport {\n    Component,\n    EventEmitter,\n    Input,\n    Output,\n    ViewEncapsulation,\n} from '@angular/core';\nimport { BabylonLinkTypeDirective } from '../../../../directives/link-type/link-type.directive';\nimport {\n    BabylonButtonI,\n    BabylonContactInfoI,\n    BabylonMultimediaI,\n    BabylonTextInfoI,\n} from '../../../../interfaces';\nimport { ConsultI } from '../../../../interfaces/babylon-consult.interface';\nimport { BabylonHotelGlobalItem } from '../../../../interfaces/babylon-hotel.interface';\nimport {\n    ForC0TxtImgVcContent,\n    ForC0TxtImgVcPayload,\n} from './for-c0-txt-img-vc.interfaces';\n\nconst defaultData: ForC0TxtImgVcContent = {\n    sectionClass: '',\n    wrapperClass: '',\n    header: {\n        title: '',\n    },\n    infoText: '',\n    form: {\n        leftFields: [\n            {\n                elementClass: '',\n                input: {\n                    type: '',\n                    wrapperClass: '',\n                    label: '',\n                    options: [\n                        {\n                            label: '',\n                            value: '',\n                            disabled: true,\n                            selected: true,\n                        },\n                        { label: '', value: '' },\n                    ],\n                },\n            },\n        ],\n        rightField: {\n            elementClass: '',\n            input: {\n                wrapperClass: '',\n                label: '',\n                placeholder: '...',\n            },\n        },\n        mustText: '',\n        checkboxes: [\n            {\n                text: '',\n                link: {\n                    text: '',\n                    href: '',\n                    target: '_blank',\n                },\n            },\n            {\n                text: '',\n            },\n        ],\n        submitButton: {\n            text: '',\n        },\n    },\n};\n@Component({\n    selector: 'for-c0-txt-img-vc',\n    standalone: true,\n    imports: [CommonModule, BabylonLinkTypeDirective],\n    templateUrl: './for-c0-txt-img-vc.component.html',\n    styleUrl: './for-c0-txt-img-vc.component.scss',\n    encapsulation: ViewEncapsulation.Emulated,\n})\nexport class ForC0TxtImgVcComponent {\n    private _data: ForC0TxtImgVcContent = defaultData;\n    @Input() texts?: BabylonTextInfoI;\n    @Input() multimedia?: BabylonMultimediaI;\n    @Input() contactInfo?: BabylonContactInfoI;\n    @Input() consultTypes?: ConsultI;\n    @Input() hotels?: BabylonHotelGlobalItem[];\n    @Input() buttons?: BabylonButtonI[];\n    @Input() links?: BabylonButtonI[];\n    @Output() formSubmit = new EventEmitter<ForC0TxtImgVcPayload>();\n\n    submitAttempted = false;\n    isSubmitting = false;\n    submitError: string | null = null;\n\n    isFormValid = false;\n\n    handleSubmit(event: Event): void {\n        event.preventDefault();\n\n        this.submitAttempted = true;\n        this.submitError = null;\n\n        const form = event.target as HTMLFormElement | null;\n        if (!form) return;\n\n        // Fuerza a que el navegador calcule validity correctamente\n        // (y marque :invalid si tienes estilos nativos)\n        this.isFormValid = form.checkValidity();\n\n        if (!this.isFormValid) {\n            // Si quieres que el navegador “enfoque” el primer inválido:\n            form.reportValidity?.();\n            return;\n        }\n\n        const payload = this.buildPayload(form);\n\n        this.isSubmitting = true;\n\n        this.formSubmit.emit(payload);\n\n        // UX: éxito + reset\n        form.reset();\n\n        // reset flags\n        this.isSubmitting = false;\n        this.isFormValid = false;\n        this.submitAttempted = false;\n    }\n\n    private buildPayload(form: HTMLFormElement): ForC0TxtImgVcPayload {\n        const formData = new FormData(form);\n\n        const payload: ForC0TxtImgVcPayload = {};\n        formData.forEach((value, key) => {\n            // normaliza strings\n            const v = typeof value === 'string' ? value.trim() : value;\n\n            // checkbox -> boolean (FormData devuelve \"on\")\n            if (v === 'on') {\n                payload[key] = true as any;\n            } else {\n                payload[key] = v as any;\n            }\n        });\n\n        // Extra útil: guardar timestamp y origen si quieres\n        payload['submittedAt'] = new Date().toISOString() as any;\n\n        return payload;\n    }\n\n    get sortedHotels(): BabylonHotelGlobalItem[] {\n        const list = this.hotels ?? [];\n        return [...list].sort(\n            (a: any, b: any) => (a.order ?? 0) - (b.order ?? 0)\n        );\n    }\n    constructor() {}\n\n    @Input()\n    set data(value: ForC0TxtImgVcContent) {\n        this._data = value ?? defaultData;\n    }\n\n    get data(): ForC0TxtImgVcContent {\n        return this._data;\n    }\n\n    trackField(index: number): number {\n        return index;\n    }\n\n    trackOption(index: number): number {\n        return index;\n    }\n\n    trackCheckbox(index: number): number {\n        return index;\n    }\n}\n","<section class=\"contact-page full-page\">\n    <div class=\"wrapper\">\n        <div class=\"wrap-contact-page\">\n            <header class=\"contact-page-header\">\n                <div class=\"wrap-contact-header\">\n                    @if (texts?.title) {\n                        <h1 class=\"contact-header-title\">{{ texts?.title }}</h1>\n                    }\n                </div>\n            </header>\n            <div class=\"contact-page-info\">\n                <div class=\"wrap-contact-info\">\n                    @if (texts?.description) {\n                        <p\n                            class=\"contact-info-text\"\n                            [innerHTML]=\"texts?.description\"\n                        ></p>\n                    }\n                </div>\n            </div>\n            <form\n                (submit)=\"handleSubmit($event)\"\n                novalidate\n                [class.submitted]=\"submitAttempted\"\n            >\n                <div class=\"contact-page-form\">\n                    <div class=\"wrap-contact-form\">\n                        <div class=\"contact-form-fields\">\n                            <div class=\"wrap-contact-fields\">\n                                <div class=\"left-box\">\n                                    <!-- HOTEL -->\n                                    <div class=\"contact-fields-element full\">\n                                        <div class=\"input-element select must\">\n                                            <div class=\"wrap-input-element\">\n                                                @if (\n                                                    contactInfo?.hotelDropTitle\n                                                ) {\n                                                    <span\n                                                        class=\"input-element-text\"\n                                                        >{{\n                                                            contactInfo?.hotelDropTitle\n                                                        }}</span\n                                                    >\n                                                }\n                                                <select\n                                                    class=\"input-element-field\"\n                                                    name=\"hotelId\"\n                                                    required\n                                                >\n                                                    @for (\n                                                        option of sortedHotels;\n                                                        track $index\n                                                    ) {\n                                                        <option\n                                                            [value]=\"option.id\"\n                                                        >\n                                                            {{ option.name }}\n                                                        </option>\n                                                    }\n                                                </select>\n                                            </div>\n                                        </div>\n                                    </div>\n\n                                    <!-- TIPO DE CONSULTA -->\n                                    <div class=\"contact-fields-element full\">\n                                        <div class=\"input-element select must\">\n                                            <div class=\"wrap-input-element\">\n                                                @if (\n                                                    consultTypes?.options\n                                                        ?.length\n                                                ) {\n                                                    <span\n                                                        class=\"input-element-text\"\n                                                        >{{\n                                                            contactInfo?.dropdownTitle\n                                                        }}</span\n                                                    >\n                                                    <select\n                                                        class=\"input-element-field\"\n                                                        name=\"consultType\"\n                                                        required\n                                                    >\n                                                        @for (\n                                                            option of consultTypes?.options;\n                                                            track $index\n                                                        ) {\n                                                            <option\n                                                                [value]=\"\n                                                                    option.consultTypeId\n                                                                \"\n                                                            >\n                                                                {{\n                                                                    option.name\n                                                                }}\n                                                            </option>\n                                                        }\n                                                    </select>\n                                                }\n                                            </div>\n                                        </div>\n                                    </div>\n\n                                    <!-- NOMBRE -->\n                                    <div class=\"contact-fields-element full\">\n                                        <div class=\"input-element user must\">\n                                            <div class=\"wrap-input-element\">\n                                                @if (contactInfo?.inputName) {\n                                                    <span\n                                                        class=\"input-element-text\"\n                                                        >{{\n                                                            contactInfo?.inputName\n                                                        }}</span\n                                                    >\n                                                }\n                                                <input\n                                                    class=\"input-element-field\"\n                                                    type=\"text\"\n                                                    name=\"name\"\n                                                    required\n                                                    [attr.placeholder]=\"\n                                                        contactInfo?.inputNamePlaceHolder\n                                                    \"\n                                                />\n                                                <i\n                                                    class=\"details-content-icon babylon-user icon-style-small\"\n                                                ></i>\n                                            </div>\n                                        </div>\n                                    </div>\n\n                                    <!-- APELLIDOS -->\n                                    <div class=\"contact-fields-element full\">\n                                        <div class=\"input-element user must\">\n                                            <div class=\"wrap-input-element\">\n                                                @if (\n                                                    contactInfo?.inputSurnames\n                                                ) {\n                                                    <span\n                                                        class=\"input-element-text\"\n                                                        >{{\n                                                            contactInfo?.inputSurnames\n                                                        }}</span\n                                                    >\n                                                }\n                                                <input\n                                                    class=\"input-element-field\"\n                                                    type=\"text\"\n                                                    name=\"surname\"\n                                                    required\n                                                    [attr.placeholder]=\"\n                                                        contactInfo?.inputSurnamesPlaceHolder\n                                                    \"\n                                                />\n                                                <i\n                                                    class=\"details-content-icon babylon-user icon-style-small\"\n                                                ></i>\n                                            </div>\n                                        </div>\n                                    </div>\n\n                                    <!-- TELÉFONO -->\n                                    <div class=\"contact-fields-element full\">\n                                        <div class=\"input-element phone must\">\n                                            <div class=\"wrap-input-element\">\n                                                @if (contactInfo?.inputPhone) {\n                                                    <span\n                                                        class=\"input-element-text\"\n                                                        >{{\n                                                            contactInfo?.inputPhone\n                                                        }}</span\n                                                    >\n                                                }\n                                                <input\n                                                    class=\"input-element-field\"\n                                                    type=\"tel\"\n                                                    name=\"phone\"\n                                                    required\n                                                    [attr.placeholder]=\"\n                                                        contactInfo?.inputPhonePlaceHolder\n                                                    \"\n                                                />\n                                                <i\n                                                    class=\"details-content-icon babylon-telephone icon-style-small\"\n                                                ></i>\n                                            </div>\n                                        </div>\n                                    </div>\n\n                                    <!-- EMAIL -->\n                                    <div class=\"contact-fields-element full\">\n                                        <div class=\"input-element email must\">\n                                            <div class=\"wrap-input-element\">\n                                                @if (contactInfo?.inputEmail) {\n                                                    <span\n                                                        class=\"input-element-text\"\n                                                        >{{\n                                                            contactInfo?.inputEmail\n                                                        }}</span\n                                                    >\n                                                }\n                                                <input\n                                                    class=\"input-element-field\"\n                                                    type=\"email\"\n                                                    name=\"email\"\n                                                    required\n                                                    [attr.placeholder]=\"\n                                                        contactInfo?.inputEmailPlaceHolder\n                                                    \"\n                                                />\n                                                <i\n                                                    class=\"details-content-icon babylon-envelope icon-style-small\"\n                                                ></i>\n                                            </div>\n                                        </div>\n                                    </div>\n                                </div>\n                                <div class=\"right-box\">\n                                    <div\n                                        class=\"contact-fields-element full textarea\"\n                                    >\n                                        <div class=\"input-element textarea\">\n                                            <div class=\"wrap-input-element\">\n                                                @if (\n                                                    contactInfo?.inputMessage\n                                                ) {\n                                                    <span\n                                                        class=\"input-element-text\"\n                                                        >{{\n                                                            contactInfo?.inputMessage\n                                                        }}</span\n                                                    >\n                                                }\n                                                <textarea\n                                                    class=\"input-element-field\"\n                                                    name=\"message\"\n                                                    required\n                                                    [attr.placeholder]=\"\n                                                        contactInfo?.inputMessagePlaceHolder\n                                                    \"\n                                                ></textarea>\n                                            </div>\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                        <div class=\"contact-form-foot\">\n                            <div class=\"wrap-form-foot\">\n                                <div class=\"form-foot-checks\">\n                                    <div class=\"wrap-foot-checks\">\n                                        @if (texts?.mandatoryText) {\n                                            <div class=\"must-element\">\n                                                <p class=\"must-element-text\">\n                                                    {{ texts?.mandatoryText }}\n                                                </p>\n                                            </div>\n                                        }\n                                        <label class=\"checkbox-element\">\n                                            <input\n                                                class=\"checkbox-input\"\n                                                type=\"checkbox\"\n                                                name=\"conditions\"\n                                                required\n                                            />\n                                            <div class=\"checkbox-icon\"></div>\n                                            <p class=\"checkbox-text\">\n                                                {{ contactInfo?.conditions }}\n                                                @if (links?.[0]; as lkn) {\n                                                    <a\n                                                        role=\"button\"\n                                                        [href]=\"lkn?.url\"\n                                                        [linkType]=\"\n                                                            lkn?.linkType\n                                                        \"\n                                                        [attr.target]=\"\n                                                            lkn?.target ?? null\n                                                        \"\n                                                        class=\"checkbox-text-link\"\n                                                    >\n                                                        {{ lkn?.label }}\n                                                    </a>\n                                                }\n                                            </p>\n                                        </label>\n\n                                        @if (links?.[1]; as condition2) {\n                                            <label\n                                                class=\"checkbox-element conditions2\"\n                                            >\n                                                <input\n                                                    class=\"checkbox-input\"\n                                                    type=\"checkbox\"\n                                                    name=\"conditions2\"\n                                                    required\n                                                />\n                                                <div\n                                                    class=\"checkbox-icon\"\n                                                ></div>\n                                                <p class=\"checkbox-text\">\n                                                    {{\n                                                        contactInfo?.conditions2\n                                                    }}\n                                                    <a\n                                                        role=\"button\"\n                                                        [href]=\"condition2?.url\"\n                                                        [linkType]=\"\n                                                            condition2?.linkType\n                                                        \"\n                                                        [attr.target]=\"\n                                                            condition2?.target ??\n                                                            null\n                                                        \"\n                                                        class=\"checkbox-text-link\"\n                                                    >\n                                                        {{ condition2?.label }}\n                                                    </a>\n                                                </p>\n                                            </label>\n                                        }\n                                    </div>\n                                </div>\n                                <div class=\"form-foot-btns\">\n                                    <div class=\"wrap-foot-btns\">\n                                        @if (buttons?.[0]; as btn) {\n                                            <button\n                                                type=\"submit\"\n                                                class=\"btn-corp btn-small\"\n                                                [disabled]=\"isSubmitting\"\n                                            >\n                                                <p class=\"btn-corp-text\">\n                                                    {{ btn?.label }}\n                                                </p>\n                                            </button>\n                                        }\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </form>\n        </div>\n    </div>\n</section>\n","import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    ElementRef,\n    EventEmitter,\n    HostListener,\n    inject,\n    Input,\n    OnDestroy,\n    Output,\n    PLATFORM_ID,\n    Renderer2,\n    ViewChild,\n    ViewEncapsulation,\n} from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { filter, Subscription } from 'rxjs';\nimport { BabylonLinkTypeDirective } from '../../../../directives/link-type/link-type.directive';\nimport { LogoType } from '../../../../Enum';\nimport {\n    BabylonBodyExtra,\n    BabylonButtonI,\n    BabylonImageI,\n    BabylonMenuButtonI,\n    BabylonMultimediaI,\n    BabylonRoomDetailI,\n    BabylonTextInfoI,\n} from '../../../../interfaces';\nimport { BabylonFloatingButtonsI } from '../../../../interfaces/babylon-floating-buttons.interface';\nimport { BabylonHotelStylesItem } from '../../../../interfaces/babylon-hotel-styles.interface';\nimport { ScreenSizerService } from '../../../../services';\nimport { Utils } from '../../../../utils';\nimport { BabylonLanguageModalI, BabylonLanguageModalItem } from '../../../core';\nimport { BabylonEngineWidgetModalComponent } from '../../../core/babylon-engine-widget-modal';\nimport { ModuloMenuHomeContent } from './modulo-menu-home.interfaces';\n\nconst defaultData = {\n    nav: {\n        logoHref: '/',\n        logoAriaLabel: '',\n        bookCta: {\n            label: '',\n            href: '',\n        },\n        menuButtonText: '',\n        languageCode: '',\n        languagePopupId: 'languages',\n        userPopupId: 'user',\n        backLabel: '',\n        topButtons: [\n            {\n                label: '',\n                href: '',\n                className: '',\n            },\n        ],\n    },\n    navLinks: [\n        {\n            label: '',\n            href: '',\n            className: '',\n            wrapAsButton: false,\n        },\n    ],\n    subnavs: [\n        {\n            id: '',\n            title: '',\n            items: [\n                {\n                    label: '',\n                    href: '',\n                    placeholder: '',\n                },\n            ],\n            mediaPlaceholder: '',\n            mediaAriaLabel: '',\n            backLabel: '',\n        },\n    ],\n    popupLanguages: {\n        title: '',\n        subtitle: '',\n        options: [\n            {\n                label: '',\n                href: '',\n                rel: 'alternate',\n                active: false,\n            },\n        ],\n    },\n    popupUser: {\n        subtitle: '',\n        options: [\n            {\n                label: '',\n                href: '',\n            },\n        ],\n    },\n    shortcutMenu: {\n        menuLabel: '',\n        bookLabel: '',\n        bookHref: '',\n    },\n} as ModuloMenuHomeContent;\n\n@Component({\n    selector: 'modulo-menu-home',\n    standalone: true,\n    imports: [CommonModule, BabylonLinkTypeDirective],\n    templateUrl: './modulo-menu-home.component.html',\n    styleUrl: './modulo-menu-home.component.scss',\n    encapsulation: ViewEncapsulation.Emulated,\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ModuloMenuHomeComponent implements AfterViewInit, OnDestroy {\n    public Utils = Utils;\n    hoveredRoomIndex: number | null = null;\n    private _data: ModuloMenuHomeContent = defaultData;\n    private cleanupFns: Array<() => void> = [];\n    private scheduleHandle: ReturnType<typeof setTimeout> | null = null;\n    private readonly bodyLocks = new Set<string>();\n\n    private _dinamyHeader: boolean = false;\n\n    @Input() set dinamyHeader(value: boolean | undefined) {\n        if (!value) {\n            if (typeof document !== 'undefined') {\n                document.body.classList.add('header_sticky_menu_home');\n            }\n        } else {\n            if (typeof document !== 'undefined') {\n                document.body.classList.remove('header_sticky_menu_home');\n            }\n        }\n        this._dinamyHeader = value ?? false;\n        this.onWindowScroll();\n    }\n\n    get dinamyHeader(): boolean {\n        return this._dinamyHeader;\n    }\n\n    @Input() hotelPage?: boolean = false;\n    @Input() menu?: BabylonMenuButtonI[];\n    @Input() logos?: Record<LogoType, BabylonImageI | undefined>;\n    @Input() floatingButtons?: BabylonFloatingButtonsI;\n    @Input() links?: BabylonButtonI[];\n    @Input() locale?: string;\n    @Input() ticker?: string;\n    @Input() languages?: BabylonLanguageModalI;\n    @Input() hotel?: string;\n    @Input() items?: BabylonButtonI[];\n    @Input() selected?: BabylonButtonI;\n    @Input() styles?: BabylonHotelStylesItem;\n    @Input() hotelType?: BabylonBodyExtra;\n    @Input() hotelCategory?: BabylonBodyExtra;\n    @Input() roomsModal?: {\n        texts: BabylonTextInfoI;\n        multimedia: BabylonMultimediaI;\n        buttons: BabylonButtonI[];\n        rooms: BabylonRoomDetailI[];\n    };\n\n    currentDesktopItems: BabylonButtonI[] | BabylonMenuButtonI[] = [];\n\n    currentBackground: BabylonImageI = {\n        src: '',\n    };\n\n    @Input() widgetConfig?: any;\n    @Output() languageSelect = new EventEmitter<BabylonLanguageModalItem>();\n\n    public isSticky: boolean = false;\n\n    private readonly platformId = inject(PLATFORM_ID);\n\n    mobile: boolean = false;\n\n    @ViewChild('moduleRoot', { static: true })\n    moduleRoot?: ElementRef<HTMLElement>;\n\n    @ViewChild('RoomModal') roomModal?: ElementRef<HTMLElement>;\n\n    @ViewChild('DesktopMenuModal')\n    desktopMenuModalRef?: ElementRef<HTMLElement>;\n\n    @ViewChild('MobileMenuModal')\n    mobileMenuModalRef?: ElementRef<HTMLElement>;\n\n    private readonly screenSizer = inject(ScreenSizerService);\n\n    private readonly router = inject(Router);\n    private readonly cdr = inject(ChangeDetectorRef);\n    private navSub?: Subscription;\n\n    constructor(\n        private readonly renderer: Renderer2,\n        private el: ElementRef<HTMLElement>,\n        private readonly dialog: MatDialog\n    ) {}\n\n    @Input()\n    set data(value: ModuloMenuHomeContent) {\n        this._data = value ?? defaultData;\n        this.scheduleSetup();\n    }\n\n    get data(): ModuloMenuHomeContent {\n        return this._data;\n    }\n\n    ngAfterViewInit(): void {\n        if (!isPlatformBrowser(this.platformId)) return;\n        this.scheduleSetup();\n        this.onWindowScroll();\n        setTimeout(() => {\n            this.updateBackground(undefined, -1);\n        }, 200);\n\n        this.navSub = this.router.events\n            .pipe(filter((e): e is NavigationEnd => e instanceof NavigationEnd))\n            .subscribe(() => {\n                this.closeEverything();\n                this.onWindowScroll();\n                this.cdr.markForCheck();\n            });\n\n        if (this.screenSizer.mobile()) {\n            this.mobile = true;\n        }\n    }\n\n    ngOnDestroy(): void {\n        this.cleanupInteractions();\n        this.navSub?.unsubscribe();\n        if (this.scheduleHandle) {\n            clearTimeout(this.scheduleHandle);\n        }\n        this.bodyLocks.clear();\n        if (typeof document !== 'undefined') {\n            document.body.classList.remove('noscroll');\n        }\n    }\n\n    @HostListener('window:scroll', [])\n    onWindowScroll() {\n        if (!this.dinamyHeader) {\n            this.isSticky = true;\n\n            return;\n        }\n\n        const scrollOffset =\n            window.pageYOffset ||\n            document.documentElement.scrollTop ||\n            document.body.scrollTop ||\n            0;\n        this.isSticky = scrollOffset > 50;\n\n        this.cdr.markForCheck();\n    }\n\n    private scheduleSetup(): void {\n        if (this.scheduleHandle) {\n            clearTimeout(this.scheduleHandle);\n        }\n        this.scheduleHandle = setTimeout(() => {\n            this.scheduleHandle = null;\n            this.setupInteractions();\n        });\n    }\n\n    private setupInteractions(): void {\n        this.cleanupInteractions();\n        const host = this.moduleRoot?.nativeElement;\n        if (!host) {\n            return;\n        }\n\n        this.setupKeyboardActivation(host);\n\n        const navLinks = host.querySelector('.nav-links');\n        const motor = host.querySelector('.motor-fixed');\n\n        const openMenu = () => {\n            navLinks?.classList.add('open');\n            this.lockBody('menu');\n        };\n        const closeMenu = () => {\n            navLinks?.classList.remove('open');\n            this.unlockBody('menu');\n        };\n\n        this.bindClick(host.querySelectorAll('.js-open-menu'), openMenu);\n        this.bindClick(host.querySelectorAll('.js-close-menu'), closeMenu);\n\n        this.bindClick(host.querySelectorAll('.js-open-motor'), () => {\n            motor?.classList.add('open');\n            this.lockBody('motor');\n        });\n        this.bindClick(host.querySelectorAll('.js-close-motor'), () => {\n            motor?.classList.remove('open');\n            this.unlockBody('motor');\n        });\n\n        this.bindClick(host.querySelectorAll('.js-open-submenu'), (event) => {\n            const trigger = event.currentTarget as HTMLElement;\n            const submenuId = trigger?.getAttribute('data-submenu');\n            if (!submenuId) {\n                return;\n            }\n            const submenu = host.querySelector<HTMLElement>(\n                `.subnav-box[data-subnav='${submenuId}']`\n            );\n            submenu?.classList.add('open');\n            this.lockBody(`submenu-${submenuId}`);\n        });\n\n        this.bindClick(host.querySelectorAll('.js-close-submenu'), (event) => {\n            const trigger = event.currentTarget as HTMLElement;\n            const parent = trigger?.closest<HTMLElement>('.subnav-box');\n            if (parent?.dataset['subnav']) {\n                this.unlockBody(`submenu-${parent.dataset['subnav']}`);\n            }\n            parent?.classList.remove('open');\n            if (!host.querySelector('.subnav-box.open')) {\n                this.unlockBody('submenu-fallback');\n            }\n        });\n\n        this.bindClick(host.querySelectorAll('.js-close-all'), () => {\n            host.querySelectorAll<HTMLElement>('.subnav-box.open').forEach(\n                (box) => {\n                    if (box.dataset['subnav']) {\n                        this.unlockBody(`submenu-${box.dataset['subnav']}`);\n                    }\n                    box.classList.remove('open');\n                }\n            );\n            closeMenu();\n            this.unlockBody('submenu-fallback');\n        });\n\n        this.bindClick(host.querySelectorAll('.js-toggle-popup'), (event) => {\n            const trigger = event.currentTarget as HTMLElement;\n            const popupId = trigger?.getAttribute('data-popup');\n            if (!popupId) {\n                return;\n            }\n            const popup = host.querySelector<HTMLElement>(\n                `#${popupId}.popup-module`\n            );\n            popup?.classList.toggle('open');\n        });\n    }\n\n    private setupKeyboardActivation(root: HTMLElement): void {\n        const focusables =\n            root.querySelectorAll<HTMLElement>('[tabindex=\\\"0\\\"]');\n        this.bindKey(focusables, (event) => {\n            if (event.key === 'Enter') {\n                (event.currentTarget as HTMLElement)?.click();\n            }\n        });\n    }\n\n    private bindClick(\n        elements: NodeListOf<Element>,\n        handler: (event: Event) => void\n    ): void {\n        elements.forEach((element) => {\n            this.cleanupFns.push(\n                this.renderer.listen(element, 'click', handler)\n            );\n        });\n    }\n\n    selectLanguage(language: BabylonLanguageModalItem): void {\n        this.selected = language;\n        this.languageSelect.emit(language);\n    }\n\n    openEngineModal() {\n        this.closeEverything();\n\n        const dialogRef = this.dialog.open(BabylonEngineWidgetModalComponent, {\n            width: '100vw',\n            height: '100vh',\n            maxWidth: '100vw',\n            hasBackdrop: true,\n        });\n\n        const event = new EventEmitter();\n\n        event.subscribe(() => {\n            dialogRef.close();\n        });\n\n        dialogRef.componentInstance.locale = this.locale;\n        dialogRef.componentInstance.widgetConfig = this.widgetConfig;\n        dialogRef.componentInstance.ticker = this.ticker;\n        dialogRef.componentInstance.styles = this.styles;\n        dialogRef.componentInstance.close = event;\n    }\n\n    private bindKey(\n        elements: NodeListOf<Element>,\n        handler: (event: KeyboardEvent) => void\n    ): void {\n        elements.forEach((element) => {\n            this.cleanupFns.push(\n                this.renderer.listen(element, 'keyup', handler)\n            );\n        });\n    }\n\n    private cleanupInteractions(): void {\n        while (this.cleanupFns.length) {\n            const dispose = this.cleanupFns.pop();\n            try {\n                dispose?.();\n            } catch {\n                // ignore\n            }\n        }\n    }\n\n    private lockBody(token: string): void {\n        if (typeof document === 'undefined') {\n            return;\n        }\n        this.bodyLocks.add(token);\n        document.body.classList.add('noscroll');\n    }\n\n    private unlockBody(token: string): void {\n        if (typeof document === 'undefined') {\n            return;\n        }\n        this.bodyLocks.delete(token);\n        if (this.bodyLocks.size === 0) {\n            document.body.classList.remove('noscroll');\n        }\n    }\n    trackByIndex(index: number): number {\n        return index;\n    }\n\n    openComponentModal(component: string | null) {\n        if (!isPlatformBrowser(this.platformId)) return;\n\n        this.closeEverything();\n\n        const modal = this.roomModal?.nativeElement;\n        if (modal) {\n            this.renderer.setStyle(modal, 'display', 'block');\n            this.renderer.addClass(modal, 'open');\n\n            const navLinks =\n                this.moduleRoot?.nativeElement.querySelector('.nav-links');\n            if (navLinks) {\n                this.renderer.removeClass(navLinks, 'open');\n            }\n\n            this.lockBody('submenu-popup-rooms');\n            this.cdr.detectChanges();\n        }\n    }\n\n    updateBackground(room: any, index: number): void {\n        if (index == -1) {\n            this.currentBackground = {\n                src: this.roomsModal?.multimedia?.imagenes?.[0]?.img?.src ?? '',\n            };\n            this.hoveredRoomIndex = index;\n            this.cdr.markForCheck();\n            return;\n        }\n\n        const imageSrc = room?.multimedia?.imagenes?.[0]?.img?.src;\n\n        if (imageSrc) {\n            this.currentBackground = {\n                src: imageSrc,\n            };\n\n            this.cdr.markForCheck();\n        }\n    }\n    closeRoomModal() {\n        const modal = this.roomModal?.nativeElement;\n        if (modal) {\n            this.renderer.removeClass(modal, 'open');\n            this.renderer.setStyle(modal, 'display', 'none');\n            this.unlockBody('submenu-popup-rooms');\n            this.cdr.markForCheck();\n        }\n    }\n\n    openDesktopMenu() {\n        if (!isPlatformBrowser(this.platformId) && !this.mobile) return;\n\n        this.closeEverything();\n\n        const screenWidth = window.innerWidth;\n\n        if (screenWidth > 1280) {\n            this.currentDesktopItems = this.menu ?? [];\n        } else {\n            this.currentDesktopItems = this.items ?? this.menu ?? [];\n        }\n\n        const modal = this.desktopMenuModalRef?.nativeElement;\n        if (modal) {\n            this.renderer.setStyle(modal, 'display', 'block');\n            this.renderer.addClass(modal, 'open');\n\n            this.lockBody('submenu-desktop-menu');\n\n            this.cdr.detectChanges();\n        }\n    }\n\n    closeDesktopMenu() {\n        const modal = this.desktopMenuModalRef?.nativeElement;\n        if (modal) {\n            this.renderer.removeClass(modal, 'open');\n            this.renderer.setStyle(modal, 'display', 'none');\n            this.unlockBody('submenu-desktop-menu');\n            this.cdr.markForCheck();\n        }\n    }\n\n    openMobileMenu() {\n        if (!isPlatformBrowser(this.platformId) && !this.mobile) return;\n\n        const modal = this.mobileMenuModalRef?.nativeElement;\n        if (modal) {\n            this.renderer.setStyle(modal, 'display', 'block');\n            this.renderer.addClass(modal, 'open');\n\n            this.lockBody('submenu-desktop-menu');\n\n            this.cdr.detectChanges();\n        }\n    }\n\n    closeMobileMenu() {\n        const modal = this.mobileMenuModalRef?.nativeElement;\n        if (modal) {\n            this.renderer.removeClass(modal, 'open');\n            this.renderer.setStyle(modal, 'display', 'none');\n            this.unlockBody('submenu-desktop-menu');\n            this.cdr.markForCheck();\n        }\n    }\n\n    getNumber(text: string): number[] {\n        return Utils.extractNumberRange(text);\n    }\n\n    showIfSup(value?: string | null): string {\n        const regex = /\\b(SUP|superior)\\b/i;\n\n        return regex.test(value ?? '') ? 'SUP' : '';\n    }\n\n    private closeEverything(): void {\n        // 1. Cerrar modales de Angular Material\n        this.dialog.closeAll();\n\n        // 2. Cerrar modales manuales (DOM)\n        this.closeRoomModal();\n        this.closeDesktopMenu();\n        this.closeMobileMenu();\n\n        // 3. Limpiar clases de menús laterales/submenús\n        const host = this.moduleRoot?.nativeElement;\n        if (host) {\n            host.querySelector('.nav-links')?.classList.remove('open');\n            host.querySelector('.motor-fixed')?.classList.remove('open');\n            host.querySelectorAll('.subnav-box.open').forEach((box) =>\n                box.classList.remove('open')\n            );\n            host.querySelectorAll('.popup-module.open').forEach((popup) =>\n                popup.classList.remove('open')\n            );\n        }\n\n        // 4. Liberar el scroll del body por completo\n        this.bodyLocks.clear();\n        if (typeof document !== 'undefined') {\n            document.body.classList.remove('noscroll');\n        }\n\n        this.cdr.markForCheck();\n    }\n}\n","<div\n    class=\"modulo-menu-home mdl-header\"\n    #moduleRoot\n    [class.menu-white]=\"!isSticky\"\n    [class.hotel-page]=\"items\"\n>\n    <section class=\"nav-container\">\n        <div class=\"mobile-logo-container\" [ngClass]=\"{ hotel: items }\">\n            @if (logos) {\n                <div class=\"nav-logo\" [ngClass]=\"{ hotel: items }\">\n                    <a\n                        [href]=\"menu?.[0]?.url ?? '/es/home'\"\n                        [linkType]=\"menu?.[0]?.linkType\"\n                        [attr.aria-label]=\"menu?.[0]?.label\"\n                        class=\"wrap-nav-logo\"\n                    >\n                        @if (!isSticky) {\n                            @if (logos.logoDesktop) {\n                                <figure\n                                    class=\"nav-logo_element\"\n                                    role=\"img\"\n                                    [attr.data-filename]=\"logos.logoDesktop.alt\"\n                                    [attr.aria-label]=\"logos.logoDesktop.alt\"\n                                    [style.backgroundImage]=\"\n                                        logos.logoDesktop.img?.src\n                                            ? 'url(' +\n                                              logos.logoDesktop.img?.src +\n                                              ')'\n                                            : 'url(' +\n                                              logos.logoDesktop.src +\n                                              ')'\n                                    \"\n                                ></figure>\n                            }\n                        } @else {\n                            @if (logos.logo) {\n                                <figure\n                                    class=\"nav-logo_element\"\n                                    role=\"img\"\n                                    [attr.data-filename]=\"logos.logo.alt\"\n                                    [attr.aria-label]=\"logos.logo.alt\"\n                                    [style.backgroundImage]=\"\n                                        logos.logo.img?.src\n                                            ? 'url(' + logos.logo.img?.src + ')'\n                                            : 'url(' + logos.logo.src + ')'\n                                    \"\n                                ></figure>\n                            }\n                        }\n                    </a>\n                    @if (hotel) {\n                        <div class=\"hotel-name-container\">\n                            <p class=\"hotel-name\">{{ hotel }}</p>\n                            <div class=\"m-stars\">\n                                @if (\n                                    hotelType?.bodyextra?.nameIdentifier ===\n                                    'Hotel'\n                                ) {\n                                    <div class=\"starts-container\">\n                                        @for (\n                                            item of getNumber(\n                                                hotelCategory?.bodyextra\n                                                    ?.nameIdentifier ?? ''\n                                            );\n                                            track $index\n                                        ) {\n                                            <svg\n                                                xmlns=\"http://www.w3.org/2000/svg\"\n                                                width=\"15\"\n                                                height=\"15\"\n                                                viewBox=\"0 0 20 20\"\n                                            >\n                                                <g\n                                                    fill=\"none\"\n                                                    fill-rule=\"evenodd\"\n                                                >\n                                                    <g>\n                                                        <g>\n                                                            <g\n                                                                transform=\"translate(-1404.000000, -5922.000000) translate(191.000000, 5865.000000) translate(1109.000000, 57.000000)\"\n                                                            >\n                                                                <g>\n                                                                    <path\n                                                                        fill=\"#3c3b3b\"\n                                                                        fill-opacity=\"0.8\"\n                                                                        fill-rule=\"nonzero\"\n                                                                        d=\"M10 0l2.294 7.104c.034.106.133.178.245.178L20 7.267l-6.046 4.374v.001c-.09.066-.128.182-.093.289l2.322 7.095-6.032-4.4c-.09-.065-.213-.065-.303 0l-6.029 4.4 2.322-7.095H6.14c.035-.107-.003-.223-.094-.289L0 7.268l7.461.015.001-.001c.112 0 .211-.072.245-.178L10 0z\"\n                                                                        transform=\"translate(104.000000, 0.000000)\"\n                                                                    />\n                                                                </g>\n                                                            </g>\n                                                        </g>\n                                                    </g>\n                                                </g>\n                                            </svg>\n                                        }\n                                    </div>\n                                }\n\n                                @if (\n                                    hotelType?.bodyextra?.nameIdentifier ===\n                                        'Apartamento' ||\n                                    hotelType?.bodyextra?.nameIdentifier ===\n                                        'Apartment'\n                                ) {\n                                    <div class=\"starts-container\">\n                                        @for (\n                                            item of getNumber(\n                                                hotelCategory?.bodyextra\n                                                    ?.nameIdentifier ?? ''\n                                            );\n                                            track $index\n                                        ) {\n                                            <svg\n                                                width=\"15\"\n                                                height=\"15\"\n                                                viewBox=\"0 0 20 20\"\n                                                fill=\"none\"\n                                                xmlns=\"http://www.w3.org/2000/svg\"\n                                            >\n                                                <g transform=\"translate(2 2)\">\n                                                    <path\n                                                        d=\"M0.146296 4.26479L1.14015 2.01692C1.31289 1.62559 1.62559 1.31289 2.01692 1.14015L4.26479 0.146297C4.58174 0.00641826 4.93356 -0.0343944 5.27412 0.0292127C5.61467 0.0928198 5.92805 0.257876 6.17314 0.50273L7.9475 2.27839C8.1606 2.49155 8.31388 2.75701 8.39197 3.04813C8.47006 3.33925 8.4702 3.64578 8.39239 3.93698L7.93579 5.64109L12.866 10.5713C12.9085 10.6136 12.9422 10.6639 12.9652 10.7193C12.9882 10.7746 13 10.834 13 10.8939V12.5447C12.9993 12.6652 12.9511 12.7807 12.8659 12.8659C12.7807 12.9511 12.6652 12.9993 12.5447 13H10.8939C10.7926 12.9998 10.6942 12.9659 10.6142 12.9038C10.5341 12.8416 10.477 12.7547 10.4516 12.6566L10.2045 11.6796L9.3303 11.5131C9.24322 11.4968 9.16282 11.4553 9.09903 11.3938C9.03523 11.3323 8.99082 11.2535 8.97127 11.1671L8.73321 10.1173L7.89026 10.0367C7.78479 10.0274 7.68608 9.9808 7.61188 9.90528L5.64109 7.93579L3.93697 8.39239C3.6458 8.47047 3.33919 8.47046 3.04802 8.39236C2.75685 8.31426 2.4914 8.16082 2.27839 7.9475L0.502729 6.17314C0.257875 5.92805 0.0928202 5.61467 0.029213 5.27412C-0.0343943 4.93357 0.00641727 4.58174 0.146296 4.26479ZM3.6703 5.08953C3.81061 5.22968 3.98932 5.32508 4.18385 5.36369C4.37837 5.40229 4.57997 5.38236 4.76317 5.30641C4.94636 5.23047 5.10294 5.10191 5.21309 4.937C5.32324 4.7721 5.38203 4.57823 5.38203 4.37991C5.38203 4.1816 5.32324 3.98773 5.21309 3.82283C5.10294 3.65792 4.94636 3.52936 4.76317 3.45342C4.57997 3.37747 4.37837 3.35754 4.18385 3.39614C3.98932 3.43475 3.81061 3.53015 3.6703 3.6703C3.57689 3.76336 3.50277 3.87395 3.45219 3.99572C3.40162 4.1175 3.37558 4.24806 3.37558 4.37991C3.37558 4.51177 3.40162 4.64233 3.45219 4.76411C3.50277 4.88588 3.57689 4.99647 3.6703 5.08953Z\"\n                                                        fill=\"#3c3b3b\"\n                                                        fill-opacity=\"0.8\"\n                                                    />\n                                                </g>\n                                            </svg>\n                                        }\n                                    </div>\n                                }\n                                <div class=\"m-title-sup\">\n                                    {{\n                                        showIfSup(\n                                            hotelCategory?.bodyextra\n                                                ?.nameIdentifier\n                                        )\n                                    }}\n                                </div>\n                            </div>\n                        </div>\n                    }\n                </div>\n            }\n        </div>\n        <nav class=\"nav-box\">\n            <div class=\"wrap-nav-box\">\n                <div class=\"nav-links\">\n                    <div class=\"wrap-nav-links\">\n                        <div\n                            class=\"nav-links_close btn-circle js-close-menu\"\n                            tabindex=\"0\"\n                            role=\"button\"\n                        >\n                            <svg\n                                class=\"icon-close\"\n                                xmlns=\"http://www.w3.org/2000/svg\"\n                                width=\"24\"\n                                height=\"24\"\n                                viewBox=\"0 0 24 24\"\n                                fill=\"none\"\n                                stroke=\"currentColor\"\n                                stroke-width=\"2\"\n                                stroke-linecap=\"round\"\n                                stroke-linejoin=\"round\"\n                            >\n                                <path d=\"M18 6L6 18M6 6l12 12\" />\n                            </svg>\n                        </div>\n                        <div class=\"nav-links_container\">\n                            <div class=\"nav-links_zone\">\n                                @for (link of items ?? menu; track $index) {\n                                    <div\n                                        class=\"nav-links_element\"\n                                        [class.home]=\"$index === 0 && !items\"\n                                    >\n                                        <div\n                                            class=\"wrap-links-element\"\n                                            role=\"button\"\n                                            tabindex=\"0\"\n                                        >\n                                            @if (\n                                                link?.linkType === 'component'\n                                            ) {\n                                                <div\n                                                    (click)=\"\n                                                        openComponentModal(\n                                                            link?.url ?? ''\n                                                        )\n                                                    \"\n                                                    class=\"wrap-links-element--item pointer\"\n                                                >\n                                                    <p\n                                                        class=\"links-element_text\"\n                                                    >\n                                                        {{ link?.label }}\n                                                    </p>\n                                                </div>\n                                            } @else {\n                                                <a\n                                                    [href]=\"Utils.getFormattedUrl(link)\"\n                                                    [attr.target]=\"link?.target\"\n                                                    [linkType]=\"link?.linkType\"\n                                                    class=\"wrap-links-element--item\"\n                                                >\n                                                    <p\n                                                        class=\"links-element_text\"\n                                                    >\n                                                        {{ link?.label }}\n                                                    </p>\n                                                </a>\n                                            }\n                                        </div>\n                                    </div>\n                                }\n                                @if (items && menu?.[0]; as link) {\n                                    <div\n                                        class=\"nav-links_element\"\n                                        [class.homeLink]=\"items\"\n                                    >\n                                        <div\n                                            class=\"wrap-links-element\"\n                                            role=\"button\"\n                                            tabindex=\"0\"\n                                        >\n                                            <a\n                                                [href]=\"link?.url\"\n                                                [attr.target]=\"link?.target\"\n                                                [linkType]=\"link?.linkType\"\n                                                class=\"wrap-links-element--item\"\n                                            >\n                                                <p class=\"links-element_text\">\n                                                    {{ link?.label }}\n                                                </p>\n                                            </a>\n                                        </div>\n                                    </div>\n                                }\n                            </div>\n                            @if (roomsModal?.buttons?.[0]; as btn) {\n                                <div class=\"nav-links_back\">\n                                    <div\n                                        class=\"btn-linker toleft js-close-menu\"\n                                        role=\"button\"\n                                        tabindex=\"0\"\n                                    >\n                                        <p class=\"btn-linker-text\">\n                                            {{ btn.label }}\n                                        </p>\n                                    </div>\n                                </div>\n                            }\n                        </div>\n                    </div>\n                </div>\n\n                <div class=\"nav-btns\">\n                    <div class=\"wrap-nav-btns\">\n                        <div\n                            class=\"nav-btns_menu tablet\"\n                            [ngClass]=\"{ showMenu: items }\"\n                        >\n                            <div\n                                class=\"wrap-btns-menu\"\n                                role=\"button\"\n                                tabindex=\"0\"\n                                (click)=\"openDesktopMenu()\"\n                            >\n                                <p class=\"btns-menu-text\">\n                                    <svg\n                                        width=\"37\"\n                                        height=\"23\"\n                                        viewBox=\"0 0 37 23\"\n                                        fill=\"none\"\n                                        xmlns=\"http://www.w3.org/2000/svg\"\n                                    >\n                                        <g opacity=\"0.7\">\n                                            <path\n                                                d=\"M36.2338 0H0V1.81963H36.2338V0Z\"\n                                                fill=\"#515050\"\n                                            />\n                                            <path\n                                                d=\"M36.2338 10.5859H0V12.4066H36.2338V10.5859Z\"\n                                                fill=\"#515050\"\n                                            />\n                                            <path\n                                                d=\"M36.2338 21.1797H0V22.9993H36.2338V21.1797Z\"\n                                                fill=\"#515050\"\n                                            />\n                                        </g>\n                                    </svg>\n                                </p>\n                                <!-- <i class=\"btn-menu-icon icon-menu\"></i> -->\n                            </div>\n                        </div>\n                        <div class=\"nav-btns_user\">\n                            <div\n                                class=\"wrap-btns-user js-toggle-popup\"\n                                data-popup=\"user\"\n                                role=\"button\"\n                                tabindex=\"0\"\n                            >\n                                <div class=\"btns-user-element\">\n                                    <i class=\"btns-user-icon babylon-user\"></i>\n                                </div>\n                            </div>\n                        </div>\n\n                        @if (floatingButtons?.links?.[0]; as btn) {\n                            <div class=\"half-list-back-mobile firsthide\">\n                                <a\n                                    class=\"btn-first btn-corp-text\"\n                                    role=\"button\"\n                                    tabindex=\"0\"\n                                    [href]=\"btn.url\"\n                                    [linkType]=\"btn.linkType\"\n                                >\n                                    <p class=\"btn-linker-text\">\n                                        {{ btn.label }}\n                                    </p>\n                                </a>\n                            </div>\n                        }\n\n                        @if (floatingButtons?.links?.[1]; as btn) {\n                            <div class=\"half-list-back-mobile\">\n                                <a\n                                    class=\"btn-first btn-corp-text\"\n                                    role=\"button\"\n                                    tabindex=\"0\"\n                                    [href]=\"btn.url\"\n                                    [linkType]=\"btn.linkType\"\n                                >\n                                    <p class=\"btn-linker-text\">\n                                        {{ btn.label }}\n                                    </p>\n                                </a>\n                            </div>\n                        }\n                        <div class=\"nav-btns_lang\">\n                            <div\n                                class=\"wrap-btns-lang js-toggle-popup\"\n                                data-popup=\"languages\"\n                                role=\"button\"\n                                tabindex=\"0\"\n                            >\n                                <div class=\"btns-lang-element\">\n                                    <span class=\"btns-lang-text\">{{\n                                        languages?.selected?.code?.toUpperCase()\n                                    }}</span>\n                                </div>\n                            </div>\n                        </div>\n                        <div class=\"nav-btns_user to-contact hidden\">\n                            <div class=\"wrap-btns-user\">\n                                <div\n                                    class=\"btns-user-element js-toggle-popup\"\n                                    data-popup=\"newsletter\"\n                                    role=\"button\"\n                                    tabindex=\"0\"\n                                >\n                                    <i\n                                        class=\"btns-user-icon icon-mail-shape\"\n                                    ></i>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n                @if (logos) {\n                    <div class=\"nav-logo\" [ngClass]=\"{ hotel: items }\">\n                        <a\n                            [href]=\"menu?.[0]?.url ?? '/es/home'\"\n                            [linkType]=\"menu?.[0]?.linkType\"\n                            [attr.aria-label]=\"menu?.[0]?.label\"\n                            class=\"wrap-nav-logo\"\n                        >\n                            @if (!isSticky) {\n                                @if (logos.logoDesktop) {\n                                    <figure\n                                        class=\"nav-logo_element\"\n                                        role=\"img\"\n                                        [attr.data-filename]=\"\n                                            logos.logoDesktop.alt\n                                        \"\n                                        [attr.aria-label]=\"\n                                            logos.logoDesktop.alt\n                                        \"\n                                        [style.backgroundImage]=\"\n                                            logos.logoDesktop.img?.src\n                                                ? 'url(' +\n                                                  logos.logoDesktop.img?.src +\n                                                  ')'\n                                                : 'url(' +\n                                                  logos.logoDesktop.src +\n                                                  ')'\n                                        \"\n                                    ></figure>\n                                }\n                            } @else {\n                                @if (logos.logo) {\n                                    <figure\n                                        class=\"nav-logo_element\"\n                                        role=\"img\"\n                                        [attr.data-filename]=\"logos.logo.alt\"\n                                        [attr.aria-label]=\"logos.logo.alt\"\n                                        [style.backgroundImage]=\"\n                                            logos.logo.img?.src\n                                                ? 'url(' +\n                                                  logos.logo.img?.src +\n                                                  ')'\n                                                : 'url(' + logos.logo.src + ')'\n                                        \"\n                                    ></figure>\n                                }\n                            }\n                        </a>\n                        @if (hotel) {\n                            <div class=\"hotel-name-container\">\n                                <p class=\"hotel-name\">{{ hotel }}</p>\n                                <div class=\"m-stars\">\n                                    @if (\n                                        hotelType?.bodyextra?.nameIdentifier ===\n                                        'Hotel'\n                                    ) {\n                                        <div class=\"starts-container\">\n                                            @for (\n                                                item of getNumber(\n                                                    hotelCategory?.bodyextra\n                                                        ?.nameIdentifier ?? ''\n                                                );\n                                                track $index\n                                            ) {\n                                                <svg\n                                                    xmlns=\"http://www.w3.org/2000/svg\"\n                                                    width=\"15\"\n                                                    height=\"15\"\n                                                    viewBox=\"0 0 20 20\"\n                                                >\n                                                    <g\n                                                        fill=\"none\"\n                                                        fill-rule=\"evenodd\"\n                                                    >\n                                                        <g>\n                                                            <g>\n                                                                <g\n                                                                    transform=\"translate(-1404.000000, -5922.000000) translate(191.000000, 5865.000000) translate(1109.000000, 57.000000)\"\n                                                                >\n                                                                    <g>\n                                                                        <path\n                                                                            fill=\"#3c3b3b\"\n                                                                            fill-opacity=\"0.8\"\n                                                                            fill-rule=\"nonzero\"\n                                                                            d=\"M10 0l2.294 7.104c.034.106.133.178.245.178L20 7.267l-6.046 4.374v.001c-.09.066-.128.182-.093.289l2.322 7.095-6.032-4.4c-.09-.065-.213-.065-.303 0l-6.029 4.4 2.322-7.095H6.14c.035-.107-.003-.223-.094-.289L0 7.268l7.461.015.001-.001c.112 0 .211-.072.245-.178L10 0z\"\n                                                                            transform=\"translate(104.000000, 0.000000)\"\n                                                                        />\n                                                                    </g>\n                                                                </g>\n                                                            </g>\n                                                        </g>\n                                                    </g>\n                                                </svg>\n                                            }\n                                        </div>\n                                    }\n\n                                    @if (\n                                        hotelType?.bodyextra?.nameIdentifier ===\n                                            'Apartamento' ||\n                                        hotelType?.bodyextra?.nameIdentifier ===\n                                            'Apartment'\n                                    ) {\n                                        <div class=\"starts-container\">\n                                            @for (\n                                                item of getNumber(\n                                                    hotelCategory?.bodyextra\n                                                        ?.nameIdentifier ?? ''\n                                                );\n                                                track $index\n                                            ) {\n                                                <svg\n                                                    width=\"15\"\n                                                    height=\"15\"\n                                                    viewBox=\"0 0 20 20\"\n                                                    fill=\"none\"\n                                                    xmlns=\"http://www.w3.org/2000/svg\"\n                                                >\n                                                    <g\n                                                        transform=\"translate(2 2)\"\n                                                    >\n                                                        <path\n                                                            d=\"M0.146296 4.26479L1.14015 2.01692C1.31289 1.62559 1.62559 1.31289 2.01692 1.14015L4.26479 0.146297C4.58174 0.00641826 4.93356 -0.0343944 5.27412 0.0292127C5.61467 0.0928198 5.92805 0.257876 6.17314 0.50273L7.9475 2.27839C8.1606 2.49155 8.31388 2.75701 8.39197 3.04813C8.47006 3.33925 8.4702 3.64578 8.39239 3.93698L7.93579 5.64109L12.866 10.5713C12.9085 10.6136 12.9422 10.6639 12.9652 10.7193C12.9882 10.7746 13 10.834 13 10.8939V12.5447C12.9993 12.6652 12.9511 12.7807 12.8659 12.8659C12.7807 12.9511 12.6652 12.9993 12.5447 13H10.8939C10.7926 12.9998 10.6942 12.9659 10.6142 12.9038C10.5341 12.8416 10.477 12.7547 10.4516 12.6566L10.2045 11.6796L9.3303 11.5131C9.24322 11.4968 9.16282 11.4553 9.09903 11.3938C9.03523 11.3323 8.99082 11.2535 8.97127 11.1671L8.73321 10.1173L7.89026 10.0367C7.78479 10.0274 7.68608 9.9808 7.61188 9.90528L5.64109 7.93579L3.93697 8.39239C3.6458 8.47047 3.33919 8.47046 3.04802 8.39236C2.75685 8.31426 2.4914 8.16082 2.27839 7.9475L0.502729 6.17314C0.257875 5.92805 0.0928202 5.61467 0.029213 5.27412C-0.0343943 4.93357 0.00641727 4.58174 0.146296 4.26479ZM3.6703 5.08953C3.81061 5.22968 3.98932 5.32508 4.18385 5.36369C4.37837 5.40229 4.57997 5.38236 4.76317 5.30641C4.94636 5.23047 5.10294 5.10191 5.21309 4.937C5.32324 4.7721 5.38203 4.57823 5.38203 4.37991C5.38203 4.1816 5.32324 3.98773 5.21309 3.82283C5.10294 3.65792 4.94636 3.52936 4.76317 3.45342C4.57997 3.37747 4.37837 3.35754 4.18385 3.39614C3.98932 3.43475 3.81061 3.53015 3.6703 3.6703C3.57689 3.76336 3.50277 3.87395 3.45219 3.99572C3.40162 4.1175 3.37558 4.24806 3.37558 4.37991C3.37558 4.51177 3.40162 4.64233 3.45219 4.76411C3.50277 4.88588 3.57689 4.99647 3.6703 5.08953Z\"\n                                                            fill=\"#3c3b3b\"\n                                                            fill-opacity=\"0.8\"\n                                                        />\n                                                    </g>\n                                                </svg>\n                                            }\n                                        </div>\n                                    }\n                                    <div class=\"m-title-sup\">\n                                        {{\n                                            showIfSup(\n                                                hotelCategory?.bodyextra\n                                                    ?.nameIdentifier\n                                            )\n                                        }}\n                                    </div>\n                                </div>\n                            </div>\n                        }\n                    </div>\n                }\n                <!-- Book now button -->\n                <!--  @if (floatingButtons?.textsButtons?.booktext) {\n                    <div class=\"nav-book\">\n                        <div\n                            class=\"nav-book_btn js-open-motor\"\n                            tabindex=\"0\"\n                            role=\"button\"\n                        >\n                            <p\n                                role=\"button\"\n                                class=\"nav-book_btn-link\"\n                                (click)=\"openEngineModal()\"\n                            >\n                                {{ floatingButtons?.textsButtons?.booktext }}\n                            </p>\n                        </div>\n                    </div>\n                } -->\n\n                <div class=\"top-module-btn hidden\">\n                    @for (link of links; track $index) {\n                        <a\n                            [href]=\"link?.url\"\n                            class=\"top-module-btn_element btn-corp btn-white\"\n                            tabindex=\"0\"\n                        >\n                            <p class=\"btn-corp-text\" class=\"horarios\">\n                                {{ link?.label }}\n                            </p>\n                        </a>\n                    }\n                </div>\n            </div>\n        </nav>\n\n        <div class=\"engine-container\">\n            @if (floatingButtons?.links?.[0]; as btn) {\n                <div class=\"half-list-back left\">\n                    <a\n                        class=\"btn-first btn-corp-text\"\n                        role=\"button\"\n                        tabindex=\"0\"\n                        [href]=\"btn.url\"\n                        [linkType]=\"btn.linkType\"\n                    >\n                        <p class=\"btn-linker-text\">\n                            {{ btn.label }}\n                        </p>\n                    </a>\n                </div>\n            }\n            <div class=\"m-motor\"></div>\n            <div class=\"sticky-sentinel\"></div>\n            @if (floatingButtons?.links?.[1]; as btn) {\n                <div class=\"half-list-back right\">\n                    <a\n                        class=\"btn-second btn-corp-text\"\n                        role=\"button\"\n                        tabindex=\"0\"\n                        [href]=\"btn.url\"\n                        [linkType]=\"btn.linkType\"\n                    >\n                        <p class=\"btn-linker-text\">\n                            {{ btn.label }}\n                        </p>\n                    </a>\n                </div>\n            }\n        </div>\n\n        @for (subnav of items; track $index) {\n            <article class=\"subnav-box\" [attr.data-subnav]=\"subnav.label\">\n                <div class=\"wrap-subnav-box\">\n                    <i\n                        class=\"subnav-box_close btn-close icon-close js-close-all\"\n                        tabindex=\"0\"\n                        role=\"button\"\n                    ></i>\n                    <div class=\"subnav-box_half-list\">\n                        <div class=\"wrap-half-list\">\n                            <p class=\"half-list-title\">{{ subnav?.name }}</p>\n                            <div class=\"half-list-box\">\n                                <div\n                                    class=\"half-list-element\"\n                                    [attr.data-placeholder]=\"subnav?.label\"\n                                >\n                                    <a\n                                        [href]=\"subnav?.url\"\n                                        [linkType]=\"subnav?.linkType\"\n                                        class=\"wrap-list-element\"\n                                    >\n                                        <div class=\"half-list-element_img\">\n                                            <figure\n                                                class=\"half-list-element_img-photo\"\n                                                role=\"img\"\n                                            ></figure>\n                                        </div>\n                                        <div class=\"half-list-element_info\">\n                                            <p\n                                                class=\"half-list-element_info-text\"\n                                            >\n                                                {{ subnav?.label }}\n                                            </p>\n                                        </div>\n                                    </a>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </article>\n        }\n    </section>\n\n    <aside class=\"shortcut-menu mobile-menu\">\n        <div class=\"wrap-shortcut-menu\">\n            <div class=\"shortcut-menu-list\">\n                <div class=\"shortcut-menu-element menu\">\n                    <div class=\"wrap-shortcut-element\">\n                        <div class=\"menu-btn\">\n                            <div\n                                class=\"wrap-menu-btn\"\n                                data-submenu=\"hotel\"\n                                role=\"button\"\n                                tabindex=\"0\"\n                                (click)=\"openMobileMenu()\"\n                            >\n                                <p class=\"menu-btn-text\">\n                                    {{\n                                        floatingButtons?.textsButtons?.menuText\n                                    }}\n                                </p>\n                                <i class=\"menu-btn-icon\"></i>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n                <div class=\"shortcut-menu-element booknow\">\n                    <a role=\"button\" (click)=\"openEngineModal()\">\n                        <div class=\"wrap-shortcut-element\">\n                            <p class=\"shortcut-element-text\">\n                                {{ floatingButtons?.textsButtons?.booktext }}\n                            </p>\n                        </div>\n                    </a>\n                </div>\n            </div>\n        </div>\n    </aside>\n\n    <div id=\"languages\" class=\"popup-module\">\n        <div class=\"wrap-popup-module\">\n            <div\n                class=\"popup-module-backmask popup-box-close js-toggle-popup\"\n                data-popup=\"languages\"\n            ></div>\n            <div class=\"popup-module-box\">\n                <i\n                    class=\"popup-box-close btn-close js-toggle-popup\"\n                    data-popup=\"languages\"\n                ></i>\n                <div class=\"wrap-popup-box\">\n                    <div class=\"row-flex pop-title-border-bottom text-left\">\n                        <div class=\"col-flex\">\n                            @if (languages?.title) {\n                                <p\n                                    class=\"popup-box-title\"\n                                    [innerHTML]=\"languages?.title\"\n                                ></p>\n                            }\n                            @if (languages?.subtitle) {\n                                <p\n                                    class=\"popup-box-subtitle\"\n                                    [innerHTML]=\"languages?.subtitle\"\n                                ></p>\n                            }\n                        </div>\n                        <div class=\"col-flex\">\n                            <i class=\"popup-box-icon icon-langs\"></i>\n                        </div>\n                    </div>\n                    <div class=\"popup-box-languages\">\n                        @for (option of languages?.items; track $index) {\n                            <a\n                                class=\"btn-languages btn-corp btn-small\"\n                                (click)=\"selectLanguage(option)\"\n                                [ngClass]=\"{\n                                    active: option === languages?.selected,\n                                }\"\n                            >\n                                <p class=\"btn-corp-text\">{{ option?.name }}</p>\n                            </a>\n                        }\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n\n    <article class=\"subnav-box\" data-subnav=\"popup-rooms\" #RoomModal>\n        <div class=\"wrap-subnav-box\">\n            <i\n                class=\"subnav-box_close btn-close icon-close js-close-all\"\n                tabindex=\"0\"\n                role=\"button\"\n            ></i>\n            <div class=\"subnav-box_half-list\">\n                <div class=\"wrap-half-list\">\n                    @if (roomsModal?.texts?.title) {\n                        <p class=\"half-list-title\">\n                            {{ roomsModal?.texts?.title }}\n                        </p>\n                    }\n                    <div class=\"half-list-box\">\n                        @for (\n                            room of roomsModal?.rooms;\n                            track trackByIndex($index)\n                        ) {\n                            <div\n                                class=\"half-list-element\"\n                                [attr.data-placeholder]=\"room?.title\"\n                                (mouseenter)=\"updateBackground(room, $index)\"\n                                (mouseleave)=\"updateBackground(room, -1)\"\n                            >\n                                @if (room) {\n                                    <a\n                                        [href]=\"room?.links?.[0]?.url\"\n                                        class=\"wrap-list-element\"\n                                    >\n                                        <div class=\"half-list-element_img\">\n                                            <figure\n                                                class=\"half-list-element_img-photo\"\n                                                role=\"img\"\n                                                [attr.data-placeholder]=\"\n                                                    room?.title\n                                                \"\n                                                [style.backgroundImage]=\"\n                                                    'url(' +\n                                                    room?.multimedia\n                                                        ?.imagenes?.[0]?.img\n                                                        ?.src +\n                                                    ')'\n                                                \"\n                                            ></figure>\n                                        </div>\n                                        <div class=\"half-list-element_info\">\n                                            <p\n                                                class=\"half-list-element_info-text\"\n                                            >\n                                                {{\n                                                    room.texts?.title ??\n                                                        room.texts?.name\n                                                }}\n                                            </p>\n                                        </div>\n                                    </a>\n                                }\n                            </div>\n                        }\n                    </div>\n                    @if (roomsModal?.buttons?.[0]; as btn) {\n                        <div class=\"half-list-back\">\n                            <div\n                                class=\"btn-linker toleft js-close-all\"\n                                role=\"button\"\n                                tabindex=\"0\"\n                                (click)=\"closeRoomModal()\"\n                            >\n                                <p class=\"btn-linker-text\">\n                                    {{ btn.label }}\n                                </p>\n                            </div>\n                        </div>\n                    }\n                </div>\n            </div>\n            <div class=\"subnav-box_half-media\">\n                <div class=\"wrap-half-media\">\n                    <figure\n                        class=\"half-media-img adjust-png\"\n                        role=\"img\"\n                        [attr.aria-label]=\"'image'\"\n                        [attr.data-default-placeholder]=\"'image'\"\n                        [style.backgroundImage]=\"\n                            'url(' +\n                            (currentBackground?.src ??\n                                roomsModal?.multimedia?.imagenes?.[0]?.img\n                                    ?.src) +\n                            ')'\n                        \"\n                    ></figure>\n                </div>\n            </div>\n        </div>\n    </article>\n\n    <article\n        class=\"subnav-box menuDesktop\"\n        data-subnav=\"desktop-menu\"\n        #DesktopMenuModal\n    >\n        <div class=\"wrap-subnav-box\">\n            <i\n                class=\"subnav-box_close btn-close icon-close js-close-all\"\n                tabindex=\"0\"\n                role=\"button\"\n                (click)=\"closeDesktopMenu()\"\n            ></i>\n\n            <div class=\"subnav-box_half-list\">\n                <div class=\"wrap-half-list\">\n                    <p class=\"half-list-title\">\n                        {{ floatingButtons?.textsButtons?.menuText || 'MENU' }}\n                    </p>\n\n                    <div class=\"half-list-box\">\n                        @for (item of currentDesktopItems; track $index) {\n                            <div\n                                class=\"half-list-element\"\n                                [attr.data-placeholder]=\"item.label\"\n                            >\n                                @if (item?.linkType === 'component') {\n                                    <div\n                                        (click)=\"\n                                            openComponentModal(item?.url ?? '')\n                                        \"\n                                        class=\"wrap-list-element\"\n                                    >\n                                        <div class=\"half-list-element_info\">\n                                            <p\n                                                class=\"half-list-element_info-text\"\n                                            >\n                                                {{ item.label }}\n                                            </p>\n                                        </div>\n                                    </div>\n                                } @else {\n                                    <a\n                                        [href]=\"item?.url\"\n                                        [attr.target]=\"item?.target\"\n                                        [linkType]=\"item?.linkType\"\n                                        class=\"wrap-list-element\"\n                                    >\n                                        <div class=\"half-list-element_info\">\n                                            <p\n                                                class=\"half-list-element_info-text\"\n                                            >\n                                                {{ item.label }}\n                                            </p>\n                                        </div>\n                                    </a>\n                                }\n                            </div>\n                        }\n\n                        @if (items && menu?.[0]; as link) {\n                            <div\n                                class=\"half-list-element\"\n                                [attr.data-placeholder]=\"link.label\"\n                                [class.homeLink]=\"items\"\n                            >\n                                <a\n                                    [href]=\"link.url\"\n                                    [attr.target]=\"link.target\"\n                                    class=\"wrap-list-element\"\n                                    (click)=\"\n                                        link.linkType === 'component'\n                                            ? openComponentModal(link.url ?? '')\n                                            : null\n                                    \"\n                                >\n                                    <div class=\"half-list-element_info\">\n                                        <p class=\"half-list-element_info-text\">\n                                            {{ link.label }}\n                                        </p>\n                                    </div>\n                                </a>\n                            </div>\n                        }\n                    </div>\n                    @if (roomsModal?.buttons?.[0]; as btn) {\n                        <div class=\"half-list-back\">\n                            <div\n                                class=\"btn-linker toleft\"\n                                role=\"button\"\n                                tabindex=\"0\"\n                                (click)=\"closeDesktopMenu()\"\n                            >\n                                <p class=\"btn-linker-text\">{{ btn.label }}</p>\n                            </div>\n                        </div>\n                    }\n                </div>\n            </div>\n        </div>\n    </article>\n\n    <article\n        class=\"subnav-box menuMobile\"\n        data-subnav=\"mobile-menu\"\n        #MobileMenuModal\n    >\n        <div class=\"wrap-subnav-box\">\n            <i\n                class=\"subnav-box_close btn-close icon-close js-close-all\"\n                tabindex=\"0\"\n                role=\"button\"\n                (click)=\"closeMobileMenu()\"\n            ></i>\n\n            <div class=\"subnav-box_half-list\">\n                <div class=\"wrap-half-list\">\n                    <p class=\"half-list-title\">\n                        {{ floatingButtons?.textsButtons?.menuText || 'MENU' }}\n                    </p>\n\n                    <div class=\"half-list-box\">\n                        @for (item of items ?? menu; track $index) {\n                            <div\n                                class=\"half-list-element\"\n                                [attr.data-placeholder]=\"item.label\"\n                            >\n                                @if (item?.linkType === 'component') {\n                                    <div\n                                        (click)=\"\n                                            openComponentModal(item?.url ?? '')\n                                        \"\n                                        class=\"wrap-list-element\"\n                                    >\n                                        <div class=\"half-list-element_info\">\n                                            <p\n                                                class=\"half-list-element_info-text\"\n                                            >\n                                                {{ item.label }}\n                                            </p>\n                                        </div>\n                                    </div>\n                                } @else {\n                                    <a\n                                        [href]=\"item?.url\"\n                                        [attr.target]=\"item?.target\"\n                                        [linkType]=\"item?.linkType\"\n                                        class=\"wrap-list-element\"\n                                    >\n                                        <div class=\"half-list-element_info\">\n                                            <p\n                                                class=\"half-list-element_info-text\"\n                                            >\n                                                {{ item.label }}\n                                            </p>\n                                        </div>\n                                    </a>\n                                }\n                            </div>\n                        }\n\n                        @if (items && menu?.[0]; as link) {\n                            <div\n                                class=\"half-list-element\"\n                                [attr.data-placeholder]=\"link.label\"\n                                [class.homeLink]=\"items\"\n                            >\n                                <a\n                                    [href]=\"link.url\"\n                                    [attr.target]=\"link.target\"\n                                    class=\"wrap-list-element\"\n                                    (click)=\"\n                                        link.linkType === 'component'\n                                            ? openComponentModal(link.url ?? '')\n                                            : null\n                                    \"\n                                >\n                                    <div class=\"half-list-element_info\">\n                                        <p class=\"half-list-element_info-text\">\n                                            {{ link.label }}\n                                        </p>\n                                    </div>\n                                </a>\n                            </div>\n                        }\n                    </div>\n                    <div class=\"half-list-back\">\n                        @if (roomsModal?.buttons?.[0]; as btn) {\n                            <div\n                                class=\"btn-linker toleft\"\n                                role=\"button\"\n                                tabindex=\"0\"\n                                (click)=\"closeMobileMenu()\"\n                            >\n                                <p class=\"btn-linker-text\">{{ btn.label }}</p>\n                            </div>\n                        }\n\n                        <div class=\"btns-container-modal\">\n                            <div class=\"nav-btns_user btn-modal\">\n                                <div\n                                    class=\"wrap-btns-user js-toggle-popup\"\n                                    data-popup=\"user\"\n                                    role=\"button\"\n                                    tabindex=\"0\"\n                                >\n                                    <div class=\"btns-user-element\">\n                                        <i\n                                            class=\"btns-user-icon babylon-user\"\n                                        ></i>\n                                    </div>\n                                </div>\n                            </div>\n\n                            <div class=\"nav-btns_lang btn-modal\">\n                                <div\n                                    class=\"wrap-btns-lang js-toggle-popup\"\n                                    data-popup=\"languages\"\n                                    role=\"button\"\n                                    tabindex=\"0\"\n                                >\n                                    <div class=\"btns-lang-element\">\n                                        <span class=\"btns-lang-text\">{{\n                                            languages?.selected?.code?.toUpperCase()\n                                        }}</span>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </article>\n    <!-- USER MENU //TODO map\n\n  <div id=\"user\" class=\"popup-module\">\n    <div class=\"wrap-popup-module\">\n      <div class=\"popup-module-backmask popup-box-close js-toggle-popup\" data-popup=\"user\"></div>\n      <div class=\"popup-module-box\">\n        <i class=\"popup-box-close btn-close js-toggle-popup\" data-popup=\"user\"></i>\n        <div class=\"wrap-popup-box\">\n          <p class=\"popup-box-subtitle\">{{ data.popupUser.subtitle }}</p>\n          <div class=\"popup-box-languages\">\n            @for (option of data.popupUser.options; track option.label) {\n              <a [href]=\"option.href\" class=\"btn-languages btn-corp btn-small\">\n                <p class=\"btn-corp-text\">{{ option.label }}</p>\n              </a>\n            }\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n--></div>\n","import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n    AfterViewInit,\n    ChangeDetectorRef,\n    Component,\n    ElementRef,\n    inject,\n    Input,\n    NgZone,\n    OnChanges,\n    OnDestroy,\n    OnInit,\n    PLATFORM_ID,\n    SimpleChanges,\n    ViewChild,\n    ViewEncapsulation,\n} from '@angular/core';\nimport Swiper, { Autoplay, EffectFade, Navigation, Pagination } from 'swiper';\nimport { BabylonLinkTypeDirective } from '../../../../directives/link-type/link-type.directive';\nimport { BabylonSwiperCssLoaderDirective } from '../../../../directives/babylon-sliders/babylon-swiper-css-loader.directive';\nimport {\n  BabylonButtonI,\n    BabylonImageI,\n    BabylonItemI,\n    BabylonMultimediaI,\n    BabylonTextInfoI,\n} from '../../../../interfaces';\nimport {\n    SliC2ImgTxtLV2Content,\n    SliC2ImgTxtLV2Slide,\n} from './sli-c2-img-txt-l-v2.interfaces';\n\nconst defaultData: SliC2ImgTxtLV2Content = {\n    sectionClass: 'section-gallery info-left module-spacer',\n    wrapperClass: 'big-wrapper',\n    slider: {\n        name: 'js-section-slider',\n        showButtons: true,\n        buttonsClass: 'btn-slide-circle',\n        showDots: false,\n        fade: true,\n        autoplay: true,\n        slidesPc: 1,\n        slidesLaptop: 1,\n        slidesTablet: 1,\n        slidesMobile: 1,\n    },\n    media: {\n        slides: [\n            {\n                backgroundImage: '',\n                dataLazyimg: '',\n                ariaLabel: '',\n                dataFilename: '',\n            },\n        ],\n    },\n    info: {\n        subtitle: '',\n        title: '',\n        text: '',\n    },\n};\n\n@Component({\n    selector: 'sli-c2-img-txt-l-v2',\n    standalone: true,\n    imports: [\n        CommonModule,\n        BabylonSwiperCssLoaderDirective,\n        BabylonLinkTypeDirective,\n    ],\n    templateUrl: './sli-c2-img-txt-l-v2.component.html',\n    styleUrl: './sli-c2-img-txt-l-v2.component.scss',\n    encapsulation: ViewEncapsulation.Emulated,\n})\nexport class SliC2ImgTxtLV2Component\n    implements OnInit, AfterViewInit, OnChanges, OnDestroy\n{\n    private _data: SliC2ImgTxtLV2Content = defaultData;\n    private sliderInitialized = false;\n    private viewInitialized = false;\n    private swiperInstance?: Swiper;\n    private readonly platformId = inject(PLATFORM_ID);\n    currentSlide = 1;\n    totalSlides = this._data.media.slides.length;\n    activeTexts?: BabylonTextInfoI;\n\n    @Input() texts?: BabylonTextInfoI;\n    @Input() items?: BabylonItemI[];\n    @Input() multimedia?: BabylonMultimediaI;\n    @Input() buttons?: BabylonButtonI[];\n\n    @ViewChild('sectionSlider', { static: false })\n    sectionSlider?: ElementRef<HTMLElement>;\n    @ViewChild('sliderPrev', { static: false })\n    sliderPrev?: ElementRef<HTMLButtonElement>;\n    @ViewChild('sliderNext', { static: false })\n    sliderNext?: ElementRef<HTMLButtonElement>;\n    @ViewChild('sliderPagination', { static: false })\n    sliderPagination?: ElementRef<HTMLElement>;\n\n    constructor(\n        private readonly ngZone: NgZone,\n        private readonly cdr: ChangeDetectorRef\n    ) {}\n\n    @Input()\n    set data(value: SliC2ImgTxtLV2Content) {\n        this._data = value ?? defaultData;\n        this.syncSlidesState();\n        if (this.sliderInitialized) {\n            this.destroySlider();\n            this.initSlider();\n        }\n    }\n\n    get hasValidSlides(): boolean {\n        return (\n            Array.isArray(this.slides) &&\n            this.slides.some(\n                (slide) => !!(slide?.dataLazyimg || slide?.backgroundImage)\n            )\n        );\n    }\n\n    get data(): SliC2ImgTxtLV2Content {\n        return this._data;\n    }\n\n    get slides(): SliC2ImgTxtLV2Slide[] {\n        const multimediaSlides = this.mapMultimediaToSlides(\n            this.multimedia?.imagenes\n        );\n        if (multimediaSlides.length > 0) {\n            return multimediaSlides;\n        }\n\n        const itemSlides = this.mapItemsToSlides(this.items);\n        if (itemSlides.length > 0) {\n            return itemSlides;\n        }\n\n        return this.data.media.slides ?? [];\n    }\n\n    ngOnInit(): void {\n        this.syncSlidesState();\n        this.updateActiveTexts();\n    }\n\n    ngAfterViewInit(): void {\n        this.viewInitialized = true;\n        this.syncSlidesState();\n        this.updateActiveTexts();\n        // ...\n        this.initSlider();\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        const shouldRefresh =\n            !!changes['multimedia'] || !!changes['items'] || !!changes['data'];\n        if (!shouldRefresh) {\n            return;\n        }\n\n        this.syncSlidesState();\n        this.updateActiveTexts();\n\n        if (this.viewInitialized && isPlatformBrowser(this.platformId)) {\n            this.destroySlider();\n            this.initSlider();\n        }\n    }\n\n    ngOnDestroy(): void {\n        this.destroySlider();\n    }\n\n    trackSlide(index: number): number {\n        return index;\n    }\n\n    formatCounter(value: number): string {\n        return value < 10 ? `0${value}` : `${value}`;\n    }\n\n    backgroundImage(slide: SliC2ImgTxtLV2Slide): string {\n        const imageUrl = slide.dataLazyimg || slide.backgroundImage;\n        return `url(${imageUrl})`;\n    }\n\n    private initSlider(): void {\n        if (\n            this.sliderInitialized ||\n            typeof window === 'undefined' ||\n            !this.sectionSlider\n        ) {\n            return;\n        }\n\n        queueMicrotask(() => {\n            if (this.sliderInitialized || !this.sectionSlider) {\n                return;\n            }\n\n            const slides = this.slides;\n            if (slides.length === 0) {\n                return;\n            }\n\n            const domSlides =\n                this.sectionSlider.nativeElement.querySelectorAll(\n                    '.swiper-slide'\n                ).length;\n            if (domSlides === 0) {\n                return;\n            }\n\n            const sliderConfig = this.data.slider;\n            const maxSlidesPerView = Math.max(\n                sliderConfig.slidesPc,\n                sliderConfig.slidesLaptop,\n                sliderConfig.slidesTablet,\n                sliderConfig.slidesMobile\n            );\n            const hasMultipleSlides = slides.length > 1;\n            const shouldLoop =\n                hasMultipleSlides && slides.length > maxSlidesPerView;\n            const hasNavigation =\n                hasMultipleSlides &&\n                sliderConfig.showButtons &&\n                this.sliderPrev &&\n                this.sliderNext;\n            const hasPagination =\n                hasMultipleSlides &&\n                sliderConfig.showDots &&\n                this.sliderPagination;\n\n            this.totalSlides = slides.length;\n\n            this.ngZone.runOutsideAngular(() => {\n                this.swiperInstance = new Swiper(\n                    this.sectionSlider!.nativeElement,\n                    {\n                        modules: [Navigation, Pagination, Autoplay, EffectFade],\n                        slidesPerView: sliderConfig.slidesMobile,\n                        slidesPerGroup: sliderConfig.slidesMobile,\n                        speed: 300,\n                        loop: shouldLoop,\n                        autoHeight: true,\n                        effect: 'slide',\n                        fadeEffect: sliderConfig.fade\n                            ? { crossFade: true }\n                            : undefined,\n                        autoplay: sliderConfig.autoplay\n                            ? {\n                                  delay: 3000,\n                                  disableOnInteraction: false,\n                              }\n                            : false,\n                        navigation: hasNavigation\n                            ? {\n                                  nextEl: this.sliderNext!.nativeElement,\n                                  prevEl: this.sliderPrev!.nativeElement,\n                              }\n                            : false,\n                        pagination: hasPagination\n                            ? {\n                                  el: this.sliderPagination!.nativeElement,\n                                  clickable: true,\n                              }\n                            : false,\n                        breakpoints: {\n                            768: {\n                                slidesPerView: sliderConfig.slidesTablet,\n                                slidesPerGroup: sliderConfig.slidesTablet,\n                            },\n                            1280: {\n                                slidesPerView: sliderConfig.slidesLaptop,\n                                slidesPerGroup: sliderConfig.slidesLaptop,\n                            },\n                            1680: {\n                                slidesPerView: sliderConfig.slidesPc,\n                                slidesPerGroup: sliderConfig.slidesPc,\n                            },\n                        },\n                        on: {\n                            init: (swiper) => {\n                                this.ngZone.run(() => {\n                                    this.totalSlides = this.slides.length;\n                                    const activeIndex = swiper?.realIndex ?? 0;\n                                    this.currentSlide = activeIndex + 1;\n                                    this.updateActiveTexts(activeIndex);\n                                    this.cdr.detectChanges();\n                                });\n                            },\n                            slideChange: (swiper) => {\n                                this.ngZone.run(() => {\n                                    const activeIndex = swiper?.realIndex ?? 0;\n                                    this.currentSlide = activeIndex + 1;\n                                    this.updateActiveTexts(activeIndex);\n                                    this.cdr.detectChanges();\n                                });\n                            },\n                        },\n                    }\n                );\n                this.sliderInitialized = true;\n            });\n        });\n    }\n\n    private destroySlider(): void {\n        if (!this.sliderInitialized || !this.swiperInstance) {\n            return;\n        }\n\n        this.swiperInstance.destroy(true, true);\n        this.swiperInstance = undefined;\n        this.sliderInitialized = false;\n    }\n\n    private syncSlidesState(): void {\n        this.totalSlides = this.slides.length;\n        this.currentSlide = Math.min(this.currentSlide, this.totalSlides) || 1;\n    }\n\n    private mapMultimediaToSlides(\n        images?: BabylonImageI[]\n    ): SliC2ImgTxtLV2Slide[] {\n        if (!Array.isArray(images)) {\n            return [];\n        }\n\n        return images.reduce<SliC2ImgTxtLV2Slide[]>((acc, image) => {\n            const src = this.resolveImageSrc(image);\n            const alt = image?.img?.alt ?? image?.alt ?? '';\n            if (!src) {\n                return acc;\n            }\n\n            acc.push({\n                backgroundImage: src,\n                ariaLabel: alt,\n                dataFilename: alt,\n                dataLazyimg: src,\n                texts: this.extractTextsFromImage(image),\n            });\n            return acc;\n        }, []);\n    }\n\n    private mapItemsToSlides(\n        items?: BabylonItemI[] | BabylonImageI[]\n    ): SliC2ImgTxtLV2Slide[] {\n        if (!Array.isArray(items) || items.length === 0) {\n            return [];\n        }\n\n        const first = items[0] as BabylonItemI & BabylonImageI;\n        if ((first as BabylonItemI)?.multimedia?.imagenes?.length) {\n            return (items as BabylonItemI[]).flatMap((item) =>\n                this.mapMultimediaToSlides(item?.multimedia?.imagenes)\n            );\n        }\n\n        return this.mapMultimediaToSlides(items as BabylonImageI[]);\n    }\n\n    private resolveImageSrc(image: any): string {\n        const rawSrc =\n            image?.img?.src ??\n            image?.src ??\n            image?.path?.webp ??\n            image?.path?.original ??\n            image?.thumbnails?.[1366]?.webp ??\n            image?.thumbnails?.[1280]?.webp ??\n            image?.thumbnails?.[1024]?.webp ??\n            '';\n\n        if (!rawSrc || typeof rawSrc !== 'string') {\n            return '';\n        }\n\n        if (\n            rawSrc.startsWith('http://') ||\n            rawSrc.startsWith('https://') ||\n            rawSrc.startsWith('//') ||\n            rawSrc.startsWith('data:') ||\n            rawSrc.startsWith('blob:') ||\n            rawSrc.startsWith('/')\n        ) {\n            return rawSrc;\n        }\n\n        return `/${rawSrc}`;\n    }\n\n    private updateActiveTexts(activeIndex?: number): void {\n        const slides = this.slides;\n        if (slides.length === 0) {\n            this.activeTexts = this.texts;\n            return;\n        }\n\n        const index =\n            typeof activeIndex === 'number'\n                ? activeIndex\n                : Math.max(\n                      0,\n                      Math.min(this.currentSlide - 1, slides.length - 1)\n                  );\n        const slideTexts = slides[index]?.texts;\n        this.activeTexts = this.hasAnyText(slideTexts)\n            ? slideTexts\n            : this.texts;\n    }\n\n    private hasAnyText(texts?: BabylonTextInfoI): boolean {\n        if (!texts) {\n            return false;\n        }\n\n        return Boolean(\n            texts.pretitle ||\n                texts.subtitle ||\n                texts.title ||\n                texts.description ||\n                texts.text\n        );\n    }\n\n    private extractTextsFromImage(\n        image: BabylonImageI\n    ): BabylonTextInfoI | undefined {\n        const pretitle =\n            image?.pretitle ??\n            image?.ndPretitle ??\n            (image as any)?.nd_pretitle ??\n            '';\n        const subtitle =\n            image?.subtitle ??\n            image?.ndSubtitle ??\n            (image as any)?.nd_subtitle ??\n            '';\n        const title =\n            image?.title ?? image?.ndTitle ?? (image as any)?.nd_title ?? '';\n        const description = image?.description ?? '';\n\n        const texts: BabylonTextInfoI = {\n            subtitle: subtitle || pretitle || '',\n            title,\n            description,\n        };\n\n        return this.hasAnyText(texts) ? texts : undefined;\n    }\n}\n","  <section [attr.class]=\"data.sectionClass\" *ngIf=\"hasValidSlides\">\n    <div [attr.class]=\"data.wrapperClass\">\n      <div class=\"wrap-section-gallery estilovariante\">\n        <div\n          class=\"section-gallery-content js-active-slider\"\n          [attr.data-slider_name]=\"data.slider?.name\"\n          [attr.data-slider_showbtns]=\"data.slider?.showButtons\"\n          [attr.data-slider_btns]=\"data.slider?.buttonsClass\"\n          [attr.data-slider_showdots]=\"data.slider?.showDots\"\n          [attr.data-slider_fade]=\"data.slider?.fade\"\n          [attr.data-slider_autoplay]=\"data.slider?.autoplay\"\n          [attr.data-slides_pc]=\"data.slider?.slidesPc\"\n          [attr.data-slides_laptop]=\"data.slider?.slidesLaptop\"\n          [attr.data-slides_tablet]=\"data.slider?.slidesTablet\"\n          [attr.data-slides_mobile]=\"data.slider?.slidesMobile\"\n        >\n          <div class=\"wrap-gallery-content\" *ngIf=\"slides?.length\">\n            <div class=\"gallery-content-element\">\n              <div class=\"gallery-content-multimedia\">\n                <div class=\"wrap-content-multimedia\">\n                  <div class=\"section-slider-counter counter\" *ngIf=\"totalSlides\">\n                    <span class=\"counter-num actual\">{{ formatCounter(currentSlide) }}</span>\n                    <span class=\"counter-num total\">{{ formatCounter(totalSlides) }}</span>\n                  </div>\n                  <div class=\"section-slider-arrows js-slider-arrows\" *ngIf=\"slides.length > 1 && data.slider?.showButtons\">\n                    <div class=\"complex-info-media_counter counter\">\n                      <span class=\"counter-num actual\">{{ formatCounter(currentSlide) }}</span>\n                      <span class=\"counter-num total\">{{ formatCounter(totalSlides) }}</span>\n                    </div>\n                    <button\n                      class=\"swiper-btn swiper-arrow swiper-button-prev\"\n                      [ngClass]=\"data.slider?.buttonsClass\"\n                      type=\"button\"\n                      aria-label=\"Anterior\"\n                      #sliderPrev\n                    ></button>\n                    <button\n                      class=\"swiper-btn swiper-arrow swiper-button-next\"\n                      [ngClass]=\"data.slider?.buttonsClass\"\n                      type=\"button\"\n                      aria-label=\"Siguiente\"\n                      #sliderNext\n                    ></button>\n                  </div>\n                  <div class=\"content-multimedia-photos js-section-slider swiper\" #sectionSlider>\n                    <div class=\"swiper-wrapper\">\n                      @for (slide of slides; track trackSlide($index)) {\n                        <div class=\"multimedia-photos-element swiper-slide\">\n                          <div class=\"wrap-photos-element js-section-arrows-zone\">\n                            <figure\n                              class=\"photos-element-img responsive-resize\"\n                              role=\"img\"\n                              [attr.aria-label]=\"slide.ariaLabel || null\"\n                              [attr.data-filename]=\"slide.dataFilename\"\n                              [attr.data-src]=\"slide.dataLazyimg\"\n                              [style.backgroundImage]=\"(slide?.dataLazyimg || slide?.backgroundImage) ? 'url(' + (slide.dataLazyimg || slide.backgroundImage) + ')' : null\"\n                            ></figure>\n                          </div>\n                        </div>\n                      }\n                    </div>\n                    @if (slides.length > 1 && data.slider?.showDots) {\n                      <div class=\"swiper-pagination\" #sliderPagination></div>\n                    }\n                  </div>\n                </div>\n              </div>\n              <div class=\"gallery-content-info\">\n                <div class=\"wrap-content-info\">\n                  <div class=\"content-info-box\">\n                    <div class=\"wrap-info-box\">\n                      @if (activeTexts?.subtitle) {\n                        <p class=\"info-box-subtitle\">{{ activeTexts?.subtitle }}</p>\n                      }\n                      @if (activeTexts?.title) {\n                        <h2 class=\"info-box-title\">{{ activeTexts?.title }}</h2>\n                      }\n                      @if (activeTexts?.description) {\n                        <p class=\"info-box-text\">{{ activeTexts?.description }}</p>\n                      }\n                      @if( buttons?.length && buttons?.[0]?.url) {\n                      <a\n                            class=\"m-buttonD\"\n                            [href]=\"buttons?.[0]?.url\"\n                            [linkType]=\"buttons?.[0]?.linkType\"\n                            [attr.target]=\"buttons?.[0]?.target || '_self'\"\n                            [attr.rel]=\"\n                                (buttons?.[0]?.target || '_self') === '_blank'\n                                    ? 'noopener noreferrer'\n                                    : null\n                            \"\n                            [attr.aria-label]=\"buttons?.[0]?.label\"\n                        >\n                            {{ buttons?.[0]?.label }}\n                        </a>\n\n                    }\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </section>\n\n","import { CommonModule, DOCUMENT } from '@angular/common';\nimport {\n  Component,\n  Inject,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  Input,\n  Renderer2,\n  SimpleChanges,\n  ViewEncapsulation\n} from '@angular/core';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\nimport {\n  LisC3FilImgTxContent,\n  LisC3FilImgTxButton,\n  LisC3FilImgTxGalleryItem,\n  LisC3FilImgTxNav,\n  LisC3FilImgTxNavItem\n} from './lis-c3-fil-img-tx.interfaces';\nimport {\n  BabylonGalleryFilter,\n  BabylonGalleryItem\n} from '../../../core/babylon-gallery/babylon-gallery.component';\nimport { BabylonLightGalleryDirective } from '../../../../directives/babylon-galleries/babylon-light-gallery.directive';\n\ntype FilterType = 'sections' | 'rooms';\n\nconst DEFAULT_SECTIONS_NAV: LisC3FilImgTxNav = {\n  id: 'sections-nav',\n  title: '',\n  subtitle: '',\n  items: []\n};\n\nconst DEFAULT_ROOMS_NAV: LisC3FilImgTxNav = {\n  id: 'rooms-nav',\n  title: '',\n  subtitle: '',\n  items: []\n};\n\nconst DEFAULT_CONTENT: LisC3FilImgTxContent = {\n  bodyClass: '',\n  header: {\n    title: '',\n    buttons: []\n  },\n  sectionsNav: DEFAULT_SECTIONS_NAV,\n  roomsNav: DEFAULT_ROOMS_NAV,\n  galleryItems: [],\n  video: {\n    title: '',\n    youtubeId: ''\n  }\n};\n\n@Component({\n  selector: 'lis-c3-fil-img-tx',\n  standalone: true,\n  imports: [CommonModule, BabylonLightGalleryDirective],\n  templateUrl: './lis-c3-fil-img-tx.component.html',\n  styleUrl: './lis-c3-fil-img-tx.component.scss',\n  encapsulation: ViewEncapsulation.Emulated\n})\nexport class LisC3FilImgTxComponent implements OnInit, OnChanges, OnDestroy {\n  @Input() title?: string;\n  @Input() filters?:\n    | Array<\n        | BabylonGalleryFilter\n        | {\n            name?: string;\n            all?: boolean;\n            room?: boolean;\n            rooms?: boolean;\n            multimedia?: BabylonGalleryItem[];\n          }\n      >\n    | {\n        filters?: Array<\n          | BabylonGalleryFilter\n          | {\n              name?: string;\n              all?: boolean;\n              room?: boolean;\n              rooms?: boolean;\n              multimedia?: BabylonGalleryItem[];\n              order?: number;\n            }\n        >;\n        images?: BabylonGalleryItem[];\n      };\n  @Input() images?: BabylonGalleryItem[];\n\n  data: LisC3FilImgTxContent = DEFAULT_CONTENT;\n  headerButtons: LisC3FilImgTxButton[] = [];\n  sectionsNav: LisC3FilImgTxNav = DEFAULT_SECTIONS_NAV;\n  roomsNav: LisC3FilImgTxNav = DEFAULT_ROOMS_NAV;\n  galleryItems: LisC3FilImgTxGalleryItem[] = [];\n  activeFilter = 'all';\n  activeFilterType: FilterType = 'sections';\n  private openNavId: string | null = null;\n  videoOpen = false;\n  private bodyClasses: string[] = [];\n  safeVideoUrl: SafeResourceUrl;\n\n  constructor(\n    @Inject(DOCUMENT) private readonly document: Document,\n    private readonly renderer: Renderer2,\n    private readonly sanitizer: DomSanitizer\n  ) {\n    this.bodyClasses = this.data.bodyClass?.split(' ').filter(Boolean) ?? [];\n    this.safeVideoUrl = this.buildSafeVideoUrl();\n  }\n\n  ngOnInit(): void {\n    this.bodyClasses.forEach((cls) => this.renderer.addClass(this.document.body, cls));\n    this.remapContent();\n  }\n\n  ngOnDestroy(): void {\n    this.bodyClasses.forEach((cls) => this.renderer.removeClass(this.document.body, cls));\n    this.renderer.removeClass(this.document.body, 'noscroll');\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['filters'] || changes['images'] || changes['title']) {\n      this.remapContent();\n    }\n  }\n\n  get headerTitle(): string {\n    return this.title ?? this.data.header.title;\n  }\n\n  get hasRoomsNav(): boolean {\n    return this.roomsNav.items.length > 1;\n  }\n\n  get filteredGalleryItems(): LisC3FilImgTxGalleryItem[] {\n    return this.galleryItems.filter((item) => this.isItemVisible(item));\n  }\n\n  setFilter(pointer: string, type: FilterType): void {\n    this.activeFilter = pointer;\n    this.activeFilterType = type;\n    if (this.openNavId) {\n      this.closeNav();\n    }\n  }\n\n  isActiveFilter(pointer: string, type: FilterType): boolean {\n    return this.activeFilter === pointer && this.activeFilterType === type;\n  }\n\n  toggleNav(nav: LisC3FilImgTxNav): void {\n    if (this.openNavId === nav.id) {\n      this.closeNav();\n    } else {\n      this.openNavId = nav.id;\n      this.updateScrollLock();\n    }\n  }\n\n  closeNav(): void {\n    this.openNavId = null;\n    this.updateScrollLock();\n  }\n\n  isNavOpen(id: string): boolean {\n    return this.openNavId === id;\n  }\n\n  openVideo(): void {\n    this.videoOpen = true;\n    this.updateScrollLock();\n  }\n\n  closeVideo(): void {\n    this.videoOpen = false;\n    this.updateScrollLock();\n  }\n\n  isItemVisible(item: LisC3FilImgTxGalleryItem): boolean {\n    if (this.activeFilter === 'all') {\n      return true;\n    }\n\n    if (this.activeFilter === 'rooms') {\n      return item.classes.includes('rooms');\n    }\n\n    if (this.activeFilterType === 'rooms') {\n      return item.dataSection === this.activeFilter;\n    }\n\n    return item.dataSection === this.activeFilter;\n  }\n\n  getItemClasses(item: LisC3FilImgTxGalleryItem): Record<string, boolean> {\n    const baseClasses = item.classes.reduce<Record<string, boolean>>((acc, cls) => {\n      acc[cls] = true;\n      return acc;\n    }, {});\n    return {\n      ...baseClasses,\n      hide: !this.isItemVisible(item)\n    };\n  }\n\n  private buildSafeVideoUrl(): SafeResourceUrl {\n    const id = this.data.video.youtubeId;\n    if (!id) {\n      return this.sanitizer.bypassSecurityTrustResourceUrl('');\n    }\n    const params = [\n      `playlist=${id}`,\n      'version=3',\n      'autoplay=0',\n      'mute=0',\n      'controls=1',\n      'showinfo=1',\n      'modestbranding=0',\n      'loop=0',\n      'fs=1',\n      'cc_load_policy=1',\n      'iv_load_policy=3',\n      'autohide=0',\n      'rel=0',\n      'playsinline=1'\n    ].join('&');\n    return this.sanitizer.bypassSecurityTrustResourceUrl(`https://www.youtube.com/embed/${id}?${params}`);\n  }\n\n  private updateScrollLock(): void {\n    if (this.openNavId || this.videoOpen) {\n      this.renderer.addClass(this.document.body, 'noscroll');\n    } else {\n      this.renderer.removeClass(this.document.body, 'noscroll');\n    }\n  }\n\n  private remapContent(): void {\n    const payload = this.extractPayload(this.filters, this.images);\n    const mappedFilters = this.normalizeFilters(payload.filters);\n    this.sectionsNav = this.buildSectionsNav(mappedFilters);\n    this.roomsNav = this.buildRoomsNav(mappedFilters);\n    this.headerButtons = this.buildHeaderButtons();\n    this.galleryItems = this.buildGalleryItems(mappedFilters, payload.images);\n    this.setDefaultFilter(mappedFilters);\n    this.safeVideoUrl = this.buildSafeVideoUrl();\n  }\n\n  private normalizeFilters(\n    filters?: Array<BabylonGalleryFilter | { name?: string; all?: boolean; room?: boolean; rooms?: boolean; multimedia?: BabylonGalleryItem[]; order?: number }>\n  ): BabylonGalleryFilter[] {\n    if (!filters?.length) return [];\n    const normalized = [...filters]\n      .sort((a, b) => ((a as { order?: number }).order ?? 0) - ((b as { order?: number }).order ?? 0))\n      .map((filter, index) => ({\n        id: typeof (filter as BabylonGalleryFilter).id === 'number' ? (filter as BabylonGalleryFilter).id : index,\n        text:\n          (filter as BabylonGalleryFilter).text ??\n          (filter as { name?: string }).name ??\n          '',\n        rooms: !!(filter as BabylonGalleryFilter).rooms,\n        room: !!(filter as BabylonGalleryFilter).room,\n        all: !!(filter as BabylonGalleryFilter).all,\n        multimedia: (filter as BabylonGalleryFilter).multimedia\n      }));\n    return normalized;\n  }\n\n  private buildSectionsNav(filters: BabylonGalleryFilter[]): LisC3FilImgTxNav {\n    const roomsParent = filters.find((f) => !!f.rooms);\n    const sectionFilters = filters.filter((f) => !f.room);\n    const items: LisC3FilImgTxNavItem[] = sectionFilters.map((filter) => {\n      if (filter.rooms) {\n        return {\n          text: filter.text ?? 'Habitaciones',\n          subnav: DEFAULT_ROOMS_NAV.id,\n          type: 'subnav'\n        };\n      }\n      return {\n        text: filter.text ?? '',\n        pointer: filter.all ? 'all' : String(filter.id),\n        type: 'filter'\n      };\n    });\n\n    if (!roomsParent && filters.some((f) => !!f.room)) {\n      items.push({\n        text: 'Habitaciones',\n        subnav: DEFAULT_ROOMS_NAV.id,\n        type: 'subnav'\n      });\n    }\n\n    if (this.data.video?.youtubeId) {\n      items.push({\n        text: 'Video',\n        type: 'video'\n      });\n    }\n\n    const nav = {\n      id: DEFAULT_SECTIONS_NAV.id,\n      title: DEFAULT_SECTIONS_NAV.title,\n      subtitle: DEFAULT_SECTIONS_NAV.subtitle,\n      items\n    };\n    return nav;\n  }\n\n  private buildRoomsNav(filters: BabylonGalleryFilter[]): LisC3FilImgTxNav {\n    const roomFilters = filters.filter((f) => !!f.room);\n    if (!roomFilters.length) {\n      const emptyNav = {\n        id: DEFAULT_ROOMS_NAV.id,\n        title: DEFAULT_ROOMS_NAV.title,\n        subtitle: DEFAULT_ROOMS_NAV.subtitle,\n        items: []\n      };\n      return emptyNav;\n    }\n    const allRoomsLabel =\n      'Todas las habitaciones';\n    const items: LisC3FilImgTxNavItem[] = [\n      {\n        text: allRoomsLabel,\n        pointer: 'rooms',\n        type: 'filter'\n      },\n      ...roomFilters.map(\n        (filter): LisC3FilImgTxNavItem => ({\n          text: filter.text ?? '',\n          pointer: String(filter.id),\n          type: 'filter'\n        })\n      )\n    ];\n\n    const nav = {\n      id: DEFAULT_ROOMS_NAV.id,\n      title: DEFAULT_ROOMS_NAV.title,\n      subtitle: DEFAULT_ROOMS_NAV.subtitle,\n      items\n    };\n    return nav;\n  }\n\n  private buildGalleryItems(filters: BabylonGalleryFilter[], imagesOverride?: BabylonGalleryItem[]): LisC3FilImgTxGalleryItem[] {\n    const images = imagesOverride ?? this.images ?? filters.flatMap((f) => f.multimedia ?? []);\n    if (!images.length) {\n      return [];\n    }\n    const mapped = images.map((item) => {\n      const filterId = typeof item.filter === 'number' ? item.filter : null;\n      const filterMeta = filterId != null ? filters.find((f) => f.id === filterId) : undefined;\n      const src = item.img?.src ?? item.img?.img?.src ?? item.path?.webp ?? item.path?.original ?? '';\n      return {\n        href: src,\n        classes: ['gallery-content-element', ...(filterMeta?.room ? ['rooms'] : [])],\n        dataSection: filterId != null ? String(filterId) : '',\n        lightbox: 'all',\n        titleAttr: item.title ?? '',\n        infoText: item.title ?? '',\n        backgroundImage: src\n      };\n    });\n    return mapped;\n  }\n\n  private buildHeaderButtons(): LisC3FilImgTxButton[] {\n    const buttons: LisC3FilImgTxButton[] = [\n      { text: 'Categorías', subnav: DEFAULT_SECTIONS_NAV.id }\n    ];\n    if (this.hasRoomsNav) {\n      buttons.push({ text: 'Habitaciones', subnav: DEFAULT_ROOMS_NAV.id });\n    }\n    return buttons;\n  }\n\n  private setDefaultFilter(filters: BabylonGalleryFilter[]): void {\n    const allFilter = filters.find((f) => !!f.all);\n    if (allFilter) {\n      this.activeFilter = 'all';\n      this.activeFilterType = 'sections';\n      return;\n    }\n\n    const firstSection = filters.find((f) => !f.room && !f.rooms);\n    if (firstSection) {\n      this.activeFilter = String(firstSection.id);\n      this.activeFilterType = 'sections';\n    }\n  }\n\n  private extractPayload(\n    filtersInput:\n      | Array<\n          | BabylonGalleryFilter\n          | {\n              name?: string;\n              all?: boolean;\n              room?: boolean;\n              rooms?: boolean;\n              multimedia?: BabylonGalleryItem[];\n              order?: number;\n            }\n        >\n      | {\n          filters?: Array<\n            | BabylonGalleryFilter\n            | {\n                name?: string;\n                all?: boolean;\n                room?: boolean;\n                rooms?: boolean;\n                multimedia?: BabylonGalleryItem[];\n                order?: number;\n              }\n          >;\n          images?: BabylonGalleryItem[];\n        }\n      | undefined,\n    imagesInput?: BabylonGalleryItem[]\n  ): { filters?: Array<BabylonGalleryFilter | { name?: string; all?: boolean; room?: boolean; rooms?: boolean; multimedia?: BabylonGalleryItem[]; order?: number }>; images?: BabylonGalleryItem[] } {\n    if (!filtersInput) {\n      return { filters: undefined, images: imagesInput };\n    }\n    if (Array.isArray(filtersInput)) {\n      return { filters: filtersInput, images: imagesInput };\n    }\n    return {\n      filters: filtersInput.filters,\n      images: filtersInput.images ?? imagesInput\n    };\n  }\n}\n","<section class=\"gallery-page\">\n  <div class=\"big-wrapper\">\n    <div class=\"wrap-gallery-page\">\n      <div class=\"gallery-page-header\">\n        <div class=\"wrap-gallery-header\">\n          <h1 class=\"gallery-header-title\">{{ headerTitle }}</h1>\n          <div class=\"gallery-header-nav\">\n            <div class=\"wrap-gallery-nav\">\n              <div class=\"gallery-nav-btns\">\n                <div class=\"wrap-nav-btns\">\n                  @for (button of headerButtons; track button.subnav) {\n                    <div\n                      class=\"nav-btns-element js-gallery-subnav\"\n                      role=\"button\"\n                      tabindex=\"0\"\n                      [attr.data-subnav]=\"button.subnav\"\n                      (click)=\"toggleNav(button.subnav === sectionsNav.id ? sectionsNav : roomsNav)\"\n                      (keyup.enter)=\"toggleNav(button.subnav === sectionsNav.id ? sectionsNav : roomsNav)\"\n                    >\n                      <div class=\"wrap-btns-element\">\n                        <p class=\"btns-element-text\">{{ button.text }}</p>\n                        <i class=\"btns-element-icon icon-menu\"></i>\n                      </div>\n                    </div>\n                  }\n                </div>\n              </div>\n              <div\n                [id]=\"sectionsNav.id\"\n                class=\"gallery-nav desktop-unwrap\"\n                [ngClass]=\"{ open: isNavOpen(sectionsNav.id) }\"\n              >\n                <div class=\"gallery-nav-wrapper\">\n                  <i\n                    class=\"gallery-nav-close btn-close icon-close js-close-gallery-menu\"\n                    role=\"button\"\n                    tabindex=\"0\"\n                    (click)=\"closeNav()\"\n                    (keyup.enter)=\"closeNav()\"\n                  ></i>\n                  <div class=\"gallery-nav-box\">\n                    <div class=\"gallery-nav-header\">\n                      <div class=\"wrap-nav-header\">\n                        <p class=\"nav-header-title\">{{ sectionsNav.title }}</p>\n                        <p class=\"nav-header-subtitle\">{{ sectionsNav.subtitle }}</p>\n                      </div>\n                    </div>\n                    @for (item of sectionsNav.items; track item.text; let i = $index) {\n                      @if (item.type === 'filter') {\n                        <div\n                          class=\"gallery-nav-element js-gallery-filter\"\n                          role=\"button\"\n                          tabindex=\"0\"\n                          [attr.data-pointer]=\"item.pointer\"\n                          [class.active]=\"isActiveFilter(item.pointer!, 'sections')\"\n                          (click)=\"setFilter(item.pointer!, 'sections')\"\n                          (keyup.enter)=\"setFilter(item.pointer!, 'sections')\"\n                        >\n                          <div class=\"wrap-nav-element\" [class.active]=\"isActiveFilter(item.pointer!, 'sections')\">\n                            <p class=\"nav-element-text\">{{ item.text }}</p>\n                          </div>\n                        </div>\n                      } @else if (item.type === 'subnav') {\n                        <div\n                          class=\"gallery-nav-element js-gallery-subnav\"\n                          role=\"button\"\n                          tabindex=\"0\"\n                          [attr.data-subnav]=\"item.subnav\"\n                          (click)=\"toggleNav(roomsNav)\"\n                          (keyup.enter)=\"toggleNav(roomsNav)\"\n                        >\n                          <div class=\"wrap-nav-element\">\n                            <p class=\"nav-element-text\">{{ item.text }}</p>\n                          </div>\n                        </div>\n                      } @else {\n                        <div\n                          class=\"gallery-nav-element js-gallery-video\"\n                          role=\"button\"\n                          tabindex=\"0\"\n                          (click)=\"openVideo()\"\n                          (keyup.enter)=\"openVideo()\"\n                        >\n                          <div class=\"wrap-nav-element\">\n                            <p class=\"nav-element-text\">{{ item.text }}</p>\n                          </div>\n                        </div>\n                      }\n                    }\n                  </div>\n                </div>\n              </div>\n              <div\n                [id]=\"roomsNav.id\"\n                class=\"gallery-nav\"\n                [ngClass]=\"{ open: isNavOpen(roomsNav.id) }\"\n              >\n                <div class=\"gallery-nav-wrapper\">\n                  <i\n                    class=\"gallery-nav-close btn-close icon-close js-close-gallery-menu\"\n                    role=\"button\"\n                    tabindex=\"0\"\n                    (click)=\"closeNav()\"\n                    (keyup.enter)=\"closeNav()\"\n                  ></i>\n                  <div class=\"gallery-nav-box\">\n                    <div class=\"gallery-nav-header\">\n                      <div class=\"wrap-nav-header\">\n                        <p class=\"nav-header-title\">{{ roomsNav.title }}</p>\n                        <p class=\"nav-header-subtitle\">{{ roomsNav.subtitle }}</p>\n                      </div>\n                    </div>\n                    @for (item of roomsNav.items; track item.pointer) {\n                      <div\n                        class=\"gallery-nav-element js-gallery-filter\"\n                        role=\"button\"\n                        tabindex=\"0\"\n                        [attr.data-pointer]=\"item.pointer\"\n                        [class.active]=\"isActiveFilter(item.pointer!, 'rooms')\"\n                        (click)=\"setFilter(item.pointer!, 'rooms')\"\n                        (keyup.enter)=\"setFilter(item.pointer!, 'rooms')\"\n                      >\n                        <div class=\"wrap-nav-element\" [class.active]=\"isActiveFilter(item.pointer!, 'rooms')\">\n                          <p class=\"nav-element-text\">{{ item.text }}</p>\n                        </div>\n                      </div>\n                    }\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n      <div class=\"gallery-page-content\">\n        <div class=\"wrap-gallery-content cs_lightgallery\" BabylonLightGallery>\n          @for (item of filteredGalleryItems; track $index) {\n            <a\n              [href]=\"item.href\"\n              [ngClass]=\"getItemClasses(item)\"\n              [attr.data-section]=\"item.dataSection\"\n              [attr.data-lightbox]=\"item.lightbox\"\n              [attr.title]=\"item.titleAttr\"\n              (click)=\"$event.preventDefault()\"\n              class=\"cs_lightbox_item\"\n            >\n              <div class=\"wrap-gallery-element\">\n                <div class=\"gallery-element-img\">\n                  <figure\n                    class=\"gallery-img-photo responsive-resize\"\n                    role=\"img\"\n                    aria-label=\"\"\n                    data-filename=\"\"\n                    [style.background-image]=\"'url(' + item.backgroundImage + ')'\"\n                  ></figure>\n                </div>\n                <img\n                  [src]=\"item.backgroundImage\"\n                  [alt]=\"item.infoText\"\n                  class=\"d-none\"\n                  loading=\"lazy\"\n                />\n                <div class=\"gallery-element-info\">\n                  <div class=\"wrap-element-info\">\n                    <p class=\"element-info-text\">{{ item.infoText }}</p>\n                    <svg width=\"15\" height=\"19\" viewBox=\"0 0 15 19\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n                      <path opacity=\"0.5\" d=\"M2.94344 0.989687L2.99643 0.954687C3.69478 0.517251 4.47264 0.222021 5.28537 0.0859374C6.09809 -0.0501459 6.92968 -0.0244043 7.73243 0.161686C8.53582 0.347045 9.29399 0.691341 9.96224 1.17428C10.6305 1.65723 11.1953 2.26905 11.6234 2.97369C12.3579 4.18714 12.6609 5.6131 12.4834 7.02035C12.3059 8.4276 11.6582 9.73363 10.6454 10.7267L14.0364 16.3407C14.1829 16.5846 14.2307 16.8752 14.1699 17.1531C14.1091 17.4311 13.9444 17.6753 13.7094 17.8357L12.9854 18.2717C12.8115 18.3754 12.6129 18.4303 12.4104 18.4307C12.2173 18.4317 12.0273 18.3824 11.859 18.2878C11.6906 18.1931 11.5499 18.0562 11.4504 17.8907L8.07444 12.2847C7.46017 12.4807 6.81921 12.5802 6.17443 12.5797C5.67546 12.5792 5.17831 12.5195 4.69344 12.4017C3.90023 12.2065 3.15359 11.8559 2.4967 11.3703C1.83981 10.8848 1.28571 10.2738 0.866435 9.57269C0.038165 8.15049 -0.208183 6.46314 0.178912 4.86351C0.566008 3.26387 1.55657 1.87584 2.94344 0.989687ZM2.74343 8.42069C3.01494 8.87541 3.37437 9.27145 3.8007 9.58566C4.22703 9.89988 4.71172 10.126 5.22644 10.2507C6.27739 10.5032 7.38559 10.328 8.30744 9.76369C9.23284 9.19865 9.89857 8.29198 10.1606 7.23984C10.4226 6.1877 10.2598 5.07471 9.70744 4.14169C9.43211 3.68581 9.06824 3.28972 8.63732 2.97678C8.20639 2.66385 7.71713 2.44042 7.19844 2.31969C6.41501 2.14125 5.59647 2.19618 4.84391 2.47771C4.09135 2.75923 3.43774 3.25502 2.96378 3.90384C2.48982 4.55266 2.21629 5.32609 2.17695 6.12862C2.13762 6.93115 2.3342 7.72763 2.74243 8.41969L2.74343 8.42069Z\" fill=\"#393939\"/>\n                    </svg>\n                  </div>\n                </div>\n              </div>\n            </a>\n          }\n        </div>\n      </div>\n    </div>\n  </div>\n</section>\n@if (data.video?.youtubeId) {\n  <aside class=\"gallery-subnav video\" [ngClass]=\"{ open: videoOpen }\">\n    <div class=\"wrap-gallery-subnav\">\n      <i\n        class=\"gallery-subnav-close btn-close icon-close js-close-gallery-menu video\"\n        role=\"button\"\n        tabindex=\"0\"\n        (click)=\"closeVideo()\"\n        (keyup.enter)=\"closeVideo()\"\n      ></i>\n      <div class=\"gallery-subnav-video\">\n        <p class=\"video-title\">{{ data.video.title }}</p>\n        <div class=\"video-element\">\n          <div class=\"wrap-video-element\">\n            <figure\n              id=\"gallery-video\"\n              class=\"video-element-media\"\n              [attr.data-url]=\"data.video.youtubeId\"\n            >\n              @if (videoOpen) {\n                <iframe\n                  [src]=\"safeVideoUrl\"\n                  loading=\"lazy\"\n                  allow=\"autoplay; fullscreen\"\n                  [attr.allowfullscreen]=\"1\"\n                ></iframe>\n              }\n            </figure>\n          </div>\n        </div>\n      </div>\n    </div>\n  </aside>\n}\n","import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n  Component,\n  Input,\n  ViewEncapsulation,\n  ElementRef,\n  ViewChildren,\n  QueryList,\n  AfterViewInit,\n  OnDestroy,\n  PLATFORM_ID,\n  inject,\n  OnChanges,\n  SimpleChanges,\n  ChangeDetectorRef\n} from '@angular/core';\nimport { BabylonAdvantageItemI } from '../../../../interfaces/babylon-advantages-item.interface';\nimport {\n  BabylonMultimediaI,\n    BabylonTextInfoI,\n} from '../../../../interfaces';\nimport { BabylonGlobalsFaqGroup } from '../../../../interfaces/babylon-globals-faqs-group.interface';\n\n@Component({\n  selector: 'faqs-module-r',\n  standalone: true,\n  imports: [CommonModule],\n  templateUrl: './faqs-module-r.component.html',\n  styleUrl: './faqs-module-r.component.scss',\n  encapsulation: ViewEncapsulation.Emulated\n})\nexport class FaqsModuleRComponent implements AfterViewInit, OnDestroy, OnChanges {\n\n  @Input() texts?: BabylonTextInfoI;\n  @Input() multimedia?: BabylonMultimediaI;\n  @Input() lists?: BabylonGlobalsFaqGroup[];\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['items']) {\n      this.faqHeights = [];\n      this.expandedFaqIndex = null;\n      setTimeout(() => this.measureAnswerHeights(), 100);\n    }\n  }\n\n  private _items: BabylonAdvantageItemI[] = [];\n  @Input()\n  set items(value: BabylonAdvantageItemI[] | undefined) {\n    this._items = value ?? [];\n    this.faqHeights = [];\n    this.expandedFaqIndex = null;\n    setTimeout(() => this.measureAnswerHeights(), 100);\n  }\n  get items(): BabylonAdvantageItemI[] {\n    return this._items;\n  }\n  @ViewChildren('faqAnswerRef') faqAnswerRefs?: QueryList<ElementRef<HTMLDivElement>>;\n  faqHeights: number[] = [];\n  expandedFaqIndex: number | null = null;\n  private readonly platformId = inject(PLATFORM_ID);\n  private readonly cdr = inject(ChangeDetectorRef);\n\n  ngAfterViewInit(): void {\n    if (!isPlatformBrowser(this.platformId)) return;\n    this.measureAnswerHeights();\n    this.faqAnswerRefs?.changes.subscribe(() => this.measureAnswerHeights());\n  }\n\n  ngOnDestroy(): void {\n    // No listeners to clean up in this simple version\n  }\n\n  toggleFaq(index: number): void {\n    this.expandedFaqIndex = this.expandedFaqIndex === index ? null : index;\n    this.cdr.markForCheck();\n  }\n\n  isFaqOpen(index: number): boolean {\n    return this.expandedFaqIndex === index;\n  }\n\n  trackFaq(index: number): number {\n    return index;\n  }\n\n  getAnswerHeight(index: number): number {\n    return this.faqHeights[index] ?? 0;\n  }\n\n  private measureAnswerHeights(): void {\n    if (!this.faqAnswerRefs || this.faqAnswerRefs.length === 0) {\n      setTimeout(() => this.measureAnswerHeights(), 50);\n      return;\n    }\n    const heights: number[] = [];\n    this.faqAnswerRefs.forEach((ref, idx) => {\n      heights[idx] = ref.nativeElement.scrollHeight;\n    });\n    this.faqHeights = heights;\n    this.cdr.markForCheck();\n  }\n}\n","<section class=\"offers-card\">\n  <div class=\"half-multimedia\">\n    <div class=\"wrap-half-multimedia\">\n      <div class=\"half-multimedia-box\">\n        <div class=\"wrap-multimedia-box\">\n          @if (multimedia?.imagenes?.length) {\n          <figure class=\"multimedia-box-element responsive-resize\" role=\"img\"\n            [attr.aria-label]=\"multimedia?.imagenes?.[0]?.title\" [attr.data-filename]=\"multimedia?.imagenes?.[0]?.title\"\n            [style.background-image]=\"'url(' + (multimedia?.imagenes?.[0]?.img?.src ? multimedia?.imagenes?.[0]?.img?.src : multimedia?.imagenes?.[0]?.src) + ')'\">\n          </figure>\n          }\n        </div>\n      </div>\n    </div>\n  </div>\n  <div class=\"half-wrapper\">\n    <div class=\"wrapper\">\n      <div class=\"wrap-offers-card\">\n        <header class=\"offers-card-header\">\n          <div class=\"wrap-card-header\">\n            @if (texts?.pretitle) {\n            <span class=\"card-header-tag\">{{ texts?.pretitle }}</span>\n            }\n            @if (texts?.title) {\n            <h1 class=\"card-header-title\">{{ texts?.title }}</h1>\n            }\n            @if (texts?.subtitle) {\n            <p class=\"card-header-subtitle\" [innerHTML]=\"texts?.subtitle\"></p>\n            }\n            @if (multimedia?.imagenes?.length) {\n            <div class=\"multimedia-box-element-mobile\">\n              <div class=\"box-img\">\n                <picture>\n                  <!--<source [attr.srcset]=\"data.mobileImage.sourceSrcset\" [attr.media]=\"data.mobileImage.sourceMedia\" />-->\n                  <img [src]=\"multimedia?.imagenes?.[0]?.img?.src ?? multimedia?.imagenes?.[0]?.src\"\n                    [alt]=\"multimedia?.imagenes?.[0]?.img?.alt ?? multimedia?.imagenes?.[0]?.alt\" />\n                </picture>\n              </div>\n            </div>\n            }\n          </div>\n        </header>\n        <div class=\"offers-card-conditions\">\n          <div id=\"howto\" class=\"contact-page-guides dropdown-module faq-page-guides\">\n            <div class=\"wrap-contact-guides\">\n              @for (item of lists?.[0]?.items; track trackFaq($index)) {\n              <div class=\"contact-guides-element\">\n                <div class=\"wrap-guides-element js-dropdown\" [class.open]=\"isFaqOpen($index)\">\n                  <div class=\"guides-element-header\">\n                    <div class=\"wrap-guides-header\" role=\"button\" tabindex=\"0\" (click)=\"toggleFaq($index)\"\n                      (keyup.enter)=\"toggleFaq($index)\">\n                      @if (item?.label) {\n                        <p class=\"guides-header-title\" [innerHTML]=\"item?.label\"></p>\n                      }\n                      <div class=\"arrow\">\n                        <svg\n                          width=\"44\"\n                          height=\"44\"\n                          viewBox=\"0 0 44 44\"\n                          fill=\"none\"\n                          xmlns=\"http://www.w3.org/2000/svg\"\n                                      >\n                            <path\n                                d=\"M22 1C10.402 1 1 10.402 1 22C1 33.598 10.402 43 22 43C33.598 43 43 33.598 43 22C43 10.402 33.598 1 22 1Z\"\n                                fill=\"none\"\n                                stroke=\"grey\"\n                                stroke-width=\"1\"\n                            />\n                            <path\n                                d=\"M21.2737 25.867L16.2217 20.789C16.04 20.6064 15.9383 20.3591 15.939 20.1016C15.9397 19.844 16.0426 19.5972 16.2252 19.4155C16.4078 19.2339 16.6551 19.1322 16.9127 19.1328C17.1703 19.1335 17.417 19.2364 17.5987 19.419L21.9477 23.819L26.3227 19.422C26.5044 19.2394 26.7512 19.1365 27.0087 19.1358C27.2663 19.1352 27.5136 19.2369 27.6982 19.4185C27.8788 19.6002 27.9818 19.847 27.9824 20.1046C27.9831 20.3621 27.8814 20.6094 27.6997 20.792L22.6497 25.868C22.4671 26.0504 22.2195 26.1527 21.9615 26.1525C21.7035 26.1523 21.456 26.0496 21.2737 25.867Z\"\n                                fill=\"grey\"\n                            />\n                          </svg>\n                      </div>\n                    </div>\n                  </div>\n                  <div class=\"guides-element-content\" #faqAnswerRef [style.max-height.px]=\"isFaqOpen($index) ? 1000 : 0\">\n                    <div class=\"wrap-guides-content\">\n                      @if (item?.description) {\n                        <p class=\"guides-content-text\" [innerHTML]=\"item?.description\"></p>\n                      }\n                    </div>\n                  </div>\n                </div>\n              </div>\n              }\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</section>\n<div id=\"half-endpoint\"></div>\n<div class=\"footer-end\"></div>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { BabylonLinkTypeDirective } from '../../../../directives/link-type/link-type.directive';\nimport { BabylonButtonI, BabylonTextInfoI } from '../../../../interfaces';\n\n@Component({\n    selector: 'fo-c0-svg-link',\n    standalone: true,\n    imports: [CommonModule, BabylonLinkTypeDirective],\n    templateUrl: './fo-c0-svg-link.component.html',\n    styleUrl: './fo-c0-svg-link.component.scss',\n    encapsulation: ViewEncapsulation.Emulated,\n})\nexport class FoC0SvgLinkComponent {\n    @Input() texts?: BabylonTextInfoI;\n    @Input() footerLinks?: BabylonButtonI[];\n}\n","  <footer class=\"footer-static\">\n    <div class=\"big-wrapper\">\n      <div class=\"wrap-footer-static\">\n        <div class=\"footer-static-row\">\n          <div class=\"footer-static-col\">\n              @if (texts?.copyrighttext || texts?.svg) {\n              <p class=\"footer-static-copy\" [innerHTML]=\"texts?.copyrighttext ?? texts?.svg\"></p>\n            }\n          </div>\n          <div class=\"footer-static-col\">\n            @if (footerLinks?.length) {\n              <ul class=\"footer-static-list\">\n                @for (link of footerLinks; track $index) {\n                  <li class=\"footer-static-element\">\n                    <a\n                      [href]=\"link?.url\"\n                      [linkType]=\"link?.linkType\"\n                    >\n                      <div class=\"wrap-footer-element\">\n                        <p class=\"footer-element-text\" [innerHTML]=\"link?.label\"></p>\n                      </div>\n                    </a>\n                  </li>\n                }\n              </ul>\n            }\n          </div>\n        </div>\n      </div>\n    </div>\n  </footer>\n","import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n    Component,\n    ElementRef,\n    EventEmitter,\n    HostListener,\n    Input,\n    OnChanges,\n    OnDestroy,\n    OnInit,\n    Output,\n    PLATFORM_ID,\n    Renderer2,\n    SimpleChanges,\n    ViewEncapsulation,\n    inject,\n} from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { LogoType } from '../../../../Enum';\nimport { BabylonLinkTypeDirective } from '../../../../directives/link-type/link-type.directive';\nimport {\n    BabylonBodyExtra,\n    BabylonButtonI,\n    BabylonImageI,\n    BabylonMenuButtonI,\n    BabylonMultimediaI,\n} from '../../../../interfaces';\nimport { BabylonFloatingButtonsI } from '../../../../interfaces/babylon-floating-buttons.interface';\nimport { BabylonHotelStylesItem } from '../../../../interfaces/babylon-hotel-styles.interface';\nimport { SITE_CONFIG_SERVICE_TOKEN } from '../../../../services/mapper/mapper.service.token';\nimport {\n    BabylonEngineWidgetModalComponent,\n    BabylonLanguageModalI,\n    BabylonLanguageModalItem,\n} from '../../../core';\nimport { Utils } from '../../../../utils';\n\n@Component({\n    selector: 'he-c3-img-ico',\n    standalone: true,\n    imports: [CommonModule, BabylonLinkTypeDirective],\n    templateUrl: './he-c3-img-ico.component.html',\n    styleUrl: './he-c3-img-ico.component.scss',\n    encapsulation: ViewEncapsulation.None,\n})\nexport class HeC3ImgIcoComponent implements OnInit, OnChanges, OnDestroy {\n    private readonly platformId = inject(PLATFORM_ID);\n    private readonly removeListeners: Array<() => void> = [];\n    private readonly hoverListeners: Array<() => void> = [];\n    private hoverSetupHandle?: ReturnType<typeof setTimeout>;\n    private readonly siteSvc = inject(SITE_CONFIG_SERVICE_TOKEN);\n    private lastTrigger?: HTMLElement;\n    private isMobileMenuView = false;\n\n    private _dinamyHeader?: boolean;\n    @Input() set dinamyHeader(value: boolean | undefined) {\n        this._dinamyHeader = value;\n    }\n    get dinamyHeader(): boolean | undefined {\n        return this._dinamyHeader;\n    }\n    @Input() locale?: string;\n    @Input() hotelPage?: boolean;\n    @Input() logos?: Record<LogoType, BabylonImageI | undefined>;\n    @Input() links?: BabylonButtonI[];\n    @Input() multimedia?: BabylonMultimediaI | BabylonImageI[] | unknown;\n    @Input() nav?: unknown;\n    @Input() languages?: BabylonLanguageModalI;\n    @Input() menu?: BabylonMenuButtonI[];\n    @Input() widgetConfig?: unknown;\n    @Input() ticker?: string;\n    @Input() floatingButtons?: BabylonFloatingButtonsI;\n    @Input() hotel?: string;\n    @Input() items?: BabylonButtonI[];\n    @Input() selected?: BabylonButtonI;\n    @Input() roomsModal?: unknown;\n    @Input() styles?: BabylonHotelStylesItem;\n    @Input() hotelType?: BabylonBodyExtra;\n    @Input() hotelCategory?: BabylonBodyExtra;\n\n    @Output() languageSelect = new EventEmitter<BabylonLanguageModalItem>();\n    @Output() openNews = new EventEmitter();\n\n    constructor(\n        private readonly host: ElementRef<HTMLElement>,\n        private readonly renderer: Renderer2,\n        private readonly dialog: MatDialog\n    ) {\n        if (isPlatformBrowser(this.platformId)) {\n            this.updateMenuViewportState();\n        }\n    }\n\n    ngOnInit(): void {\n        if (!isPlatformBrowser(this.platformId)) return;\n\n        this.updateMenuViewportState();\n        this.applyBreadcrumbMode();\n        this.setupLangModalHandlers();\n        this.setupLogoHover();\n    }\n\n    ngOnChanges(_: SimpleChanges): void {\n        if (!isPlatformBrowser(this.platformId)) return;\n        this.scheduleLogoHoverSetup();\n    }\n\n    ngOnDestroy(): void {\n        if (this.hoverSetupHandle) {\n            clearTimeout(this.hoverSetupHandle);\n        }\n        this.removeListeners.forEach((off) => off());\n        this.hoverListeners.forEach((off) => off());\n        this.removeListeners.length = 0;\n        this.hoverListeners.length = 0;\n    }\n\n    toggleBurgerMenu(): void {\n        if (!isPlatformBrowser(this.platformId)) return;\n\n        const burgerMenu =\n            this.host.nativeElement.querySelector('.m-burger-menu');\n        if (!burgerMenu) return;\n\n        burgerMenu.classList.toggle('show');\n        document.documentElement.classList.toggle('overflow-hidden');\n    }\n\n    closeBurgerMenu(): void {\n        if (!isPlatformBrowser(this.platformId)) return;\n\n        const burgerMenu =\n            this.host.nativeElement.querySelector('.m-burger-menu');\n        if (!burgerMenu || !burgerMenu.classList.contains('show')) return;\n\n        burgerMenu.classList.remove('show');\n        document.documentElement.classList.remove('overflow-hidden');\n    }\n\n    isApartment(): boolean {\n        return Utils.isApartment(this.hotelType?.bodyextra?.nameIdentifier);\n    }\n\n    @HostListener('window:scroll')\n    onWindowScroll(): void {\n        if (!isPlatformBrowser(this.platformId)) return;\n\n        const header = this.host.nativeElement.querySelector('.mdl-header');\n        if (!header || header.classList.contains('force-sticky')) return;\n\n        const motor = this.host.nativeElement.querySelector(\n            '.fake-hero .fake-motor'\n        ) as HTMLElement | null;\n        if (!motor) return;\n\n        const stickyDelayPx = 180;\n        const scrollTop = window.scrollY;\n        const windowHeight = window.innerHeight;\n\n        const rect = motor.getBoundingClientRect();\n        const motorTop = rect.top + scrollTop;\n        const motorBottom = motorTop + rect.height;\n\n        const isOutOfView =\n            motorBottom < scrollTop - stickyDelayPx ||\n            motorTop > scrollTop + windowHeight + stickyDelayPx;\n\n        header.classList.toggle('sticky', isOutOfView);\n    }\n\n    @HostListener('window:resize')\n    onWindowResize(): void {\n        if (!isPlatformBrowser(this.platformId)) return;\n        this.updateMenuViewportState();\n    }\n\n    @HostListener('document:keydown', ['$event'])\n    onDocumentKeydown(event: KeyboardEvent): void {\n        if (event.key !== 'Escape') return;\n        this.closeLangModal();\n    }\n\n    onModalBackdropClick(event: MouseEvent): void {\n        const modal = this.host.nativeElement.querySelector(\n            '.mdl-modal[data-modal=\"idiomas\"]'\n        );\n        if (!modal || event.target !== modal) return;\n        this.closeLangModal();\n    }\n\n    private applyBreadcrumbMode(): void {\n        if (this.hasHotelData) return;\n\n        const header = this.host.nativeElement.querySelector('.mdl-header');\n        if (header?.classList.contains('hotel-card')) return;\n\n        const breadcrumb = document.querySelector('.mdl-breadcrumb');\n        breadcrumb?.classList.add('v-no-hotel');\n    }\n\n    private setupLangModalHandlers(): void {\n        const modal = this.host.nativeElement.querySelector(\n            '.mdl-modal[data-modal=\"idiomas\"]'\n        ) as HTMLElement | null;\n        if (!modal) return;\n\n        const triggers = Array.from(\n            this.host.nativeElement.querySelectorAll<HTMLElement>(\n                '[data-lang-trigger]'\n            )\n        );\n        const closeButtons = Array.from(\n            this.host.nativeElement.querySelectorAll<HTMLElement>(\n                '[data-lang-close]'\n            )\n        );\n\n        triggers.forEach((trigger) => {\n            const off = this.renderer.listen(\n                trigger,\n                'click',\n                (event: Event) => {\n                    event.preventDefault();\n                    this.lastTrigger = trigger;\n                    if (modal.classList.contains('is-open')) {\n                        this.closeLangModal();\n                    } else {\n                        this.openLangModal();\n                    }\n                }\n            );\n            this.removeListeners.push(off);\n        });\n\n        closeButtons.forEach((button) => {\n            const off = this.renderer.listen(\n                button,\n                'click',\n                (event: Event) => {\n                    event.preventDefault();\n                    this.closeLangModal();\n                }\n            );\n            this.removeListeners.push(off);\n        });\n    }\n\n    private openLangModal(): void {\n        const modal = this.host.nativeElement.querySelector(\n            '.mdl-modal[data-modal=\"idiomas\"]'\n        ) as HTMLElement | null;\n        if (!modal) return;\n\n        modal.classList.add('is-open');\n        modal.setAttribute('aria-hidden', 'false');\n\n        this.host.nativeElement\n            .querySelectorAll<HTMLElement>('[data-lang-trigger]')\n            .forEach((el) => el.setAttribute('aria-expanded', 'true'));\n\n        document.documentElement.classList.add(\n            'mdl-modal-open',\n            'overflow-hidden'\n        );\n    }\n\n    private closeLangModal(): void {\n        const modal = this.host.nativeElement.querySelector(\n            '.mdl-modal[data-modal=\"idiomas\"]'\n        ) as HTMLElement | null;\n        if (!modal || !modal.classList.contains('is-open')) return;\n\n        modal.classList.remove('is-open');\n        modal.setAttribute('aria-hidden', 'true');\n\n        this.host.nativeElement\n            .querySelectorAll<HTMLElement>('[data-lang-trigger]')\n            .forEach((el) => el.setAttribute('aria-expanded', 'false'));\n\n        document.documentElement.classList.remove('mdl-modal-open');\n\n        const burgerOpen = this.host.nativeElement.querySelector(\n            '.m-burger-menu.show'\n        );\n        if (!burgerOpen) {\n            document.documentElement.classList.remove('overflow-hidden');\n        }\n\n        this.lastTrigger?.focus();\n    }\n\n    private setupLogoHover(): void {\n        this.clearHoverListeners();\n        if (window.matchMedia('(hover: none), (pointer: coarse)').matches)\n            return;\n\n        const logoImg = this.host.nativeElement.querySelector(\n            '.m-burger-menu .m-logo img'\n        ) as HTMLImageElement | null;\n        if (!logoImg) return;\n\n        const defaultLogo = logoImg.src;\n        const links = this.host.nativeElement.querySelectorAll<HTMLElement>(\n            '.m-links-container a[data-logo]'\n        );\n\n        links.forEach((link) => {\n            const nextLogo = link.dataset['logo'];\n            if (!nextLogo) return;\n\n            const enterOff = this.renderer.listen(link, 'mouseenter', () => {\n                logoImg.src = nextLogo;\n                logoImg.classList.add('is-hover');\n            });\n\n            const leaveOff = this.renderer.listen(link, 'mouseleave', () => {\n                logoImg.src = defaultLogo;\n                logoImg.classList.remove('is-hover');\n            });\n\n            this.hoverListeners.push(enterOff, leaveOff);\n        });\n    }\n\n    private scheduleLogoHoverSetup(): void {\n        if (this.hoverSetupHandle) {\n            clearTimeout(this.hoverSetupHandle);\n        }\n        this.hoverSetupHandle = setTimeout(() => {\n            this.setupLogoHover();\n            this.hoverSetupHandle = undefined;\n        });\n    }\n\n    private clearHoverListeners(): void {\n        this.hoverListeners.forEach((off) => off());\n        this.hoverListeners.length = 0;\n    }\n\n    get homeUrl(): string {\n        return this.menu?.[0]?.url ?? '';\n    }\n\n    get navigationItems(): Array<BabylonButtonI | BabylonMenuButtonI> {\n        if (Array.isArray(this.items) && this.items.length > 0) {\n            return this.items;\n        }\n        if (Array.isArray(this.menu) && this.menu.length > 0) {\n            return this.menu;\n        }\n        return [];\n    }\n\n    get hasHotelData(): boolean {\n        return !!this.hotel?.trim();\n    }\n\n    get hotelLabel(): string {\n        return this.hotel?.trim() ?? '';\n    }\n\n    get hotelCategoryLabel(): string {\n        return (\n            this.hotelCategory?.bodyextra?.nameIdentifier ??\n            this.hotelType?.bodyextra?.nameIdentifier ??\n            ''\n        );\n    }\n\n    get hotelTypeLabel(): string {\n        return this.hotelType?.bodyextra?.nameIdentifier ?? '';\n    }\n\n    get hotelStars(): number[] {\n        const match = this.hotelCategoryLabel.match(/\\d+/);\n        const stars = Number(match?.[0] ?? 0);\n        const total = Number.isFinite(stars)\n            ? Math.max(0, Math.min(5, stars))\n            : 0;\n        return Array.from({ length: total }, (_, index) => index);\n    }\n\n    get hotelSubmenuItems(): Array<BabylonButtonI | BabylonMenuButtonI> {\n        if (Array.isArray(this.items) && this.items.length > 0) {\n            return this.items;\n        }\n\n        return [];\n    }\n\n    get burgerMenuItems(): Array<BabylonButtonI | BabylonMenuButtonI> {\n        if (!this.hasHotelData) {\n            return this.navigationItems;\n        }\n\n        if (this.isMobileMenuView) {\n            if (Array.isArray(this.items) && this.items.length > 0) {\n                return this.items;\n            }\n\n            return Array.isArray(this.menu) ? this.menu : [];\n        }\n\n        if (Array.isArray(this.menu) && this.menu.length > 0) {\n            return this.menu;\n        }\n\n        return this.navigationItems;\n    }\n\n    get languageOptions(): BabylonLanguageModalItem[] {\n        return this.languages?.items ?? [];\n    }\n\n    get activeLocale(): string | undefined {\n        return this.locale ?? this.languages?.selected?.code;\n    }\n\n    showIfSup(value?: string | null): string {\n\n        return Utils.showIfSup(value);\n    }\n\n    isActiveLanguage(code?: string): boolean {\n        return !!code && code === this.activeLocale;\n    }\n\n    onLanguageClick(language: BabylonLanguageModalItem): void {\n        this.languageSelect.emit(language);\n        this.closeLangModal();\n    }\n\n    getSocialUrl(index: number): string {\n        const url = this.links?.[index]?.url ?? '#';\n        if (!url) return '#';\n        if (/^(https?:|mailto:|tel:|#|\\/)/i.test(url)) return url;\n        return `https://${url}`;\n    }\n\n    getMenuLogo(index: number): string {\n        const images = this.getNavImages();\n        if (!images.length) return '';\n        const image = images[index] ?? images[index % images.length];\n        return this.getImageSrc(image);\n    }\n\n    getMainLogo(): string {\n        const image = this.getNavImages()[0];\n        if (!image) return '';\n        return this.getImageSrc(image);\n    }\n\n    private getNavImages(): unknown[] {\n        if (Array.isArray(this.multimedia)) {\n            return this.multimedia;\n        }\n\n        const multimediaData = this.multimedia as\n            | { imagenes?: unknown[] }\n            | undefined;\n        if (Array.isArray(multimediaData?.imagenes)) {\n            return multimediaData?.imagenes ?? [];\n        }\n\n        const navData = this.nav as\n            | { multimedia?: { imagenes?: unknown[] } }\n            | undefined;\n        const images = navData?.multimedia?.imagenes;\n        return Array.isArray(images) ? images : [];\n    }\n\n    private getImageSrc(image: unknown): string {\n        const img = image as any;\n        const rawSrc =\n            img?.img?.src ??\n            img?.img?.original ??\n            img?.src ??\n            img?.original ??\n            img?.path?.webp ??\n            img?.path?.original ??\n            img?.thumbnails?.[1366]?.webp ??\n            img?.thumbnails?.[1280]?.webp ??\n            img?.thumbnails?.[1024]?.webp ??\n            img?.thumbnails?.[768]?.webp ??\n            img?.thumbnails?.[540]?.webp ??\n            img?.thumbnails?.[375]?.webp ??\n            img?.thumbnails?.[1366]?.original ??\n            img?.thumbnails?.[1280]?.original ??\n            img?.thumbnails?.[1024]?.original ??\n            img?.thumbnails?.[768]?.original ??\n            img?.thumbnails?.[540]?.original ??\n            img?.thumbnails?.[375]?.original;\n\n        return this.normalizeImageUrl(rawSrc) ?? '';\n    }\n\n    private normalizeImageUrl(src?: string): string | undefined {\n        if (!src) return undefined;\n        if (/^(https?:)?\\/\\//i.test(src) || /^(data|blob):/i.test(src))\n            return src;\n\n        const cleanSrc = src.replace(/^\\/+/, '');\n        const cdnBase = (\n            (this.siteSvc as any)?.cdnImagesInstant ?? ''\n        ).toString();\n        if (!cdnBase) return src;\n\n        const cleanBase = cdnBase.endsWith('/') ? cdnBase : `${cdnBase}/`;\n        return `${cleanBase}${cleanSrc}`;\n    }\n\n    private updateMenuViewportState(): void {\n        this.isMobileMenuView = window.matchMedia('(max-width: 916px)').matches;\n    }\n\n    openEngineModal() {\n        const dialogRef = this.dialog.open(BabylonEngineWidgetModalComponent, {\n            width: '100vw',\n            height: '100vh',\n            maxWidth: '100vw',\n            hasBackdrop: true,\n        });\n\n        const event = new EventEmitter();\n\n        event.subscribe(() => {\n            dialogRef.close();\n        });\n\n        dialogRef.componentInstance.locale = this.locale;\n        dialogRef.componentInstance.widgetConfig = this.widgetConfig;\n        dialogRef.componentInstance.ticker = this.ticker;\n        dialogRef.componentInstance.styles = this.styles;\n        dialogRef.componentInstance.close = event;\n    }\n\n    openNewsletter(): void {\n        this.openNews.emit();\n    }\n}\n","<!-- Añadir clase hotel-card para ficha hotel -->\n<!-- Al añadir la clase force-sticky evitamos el efecto de cambiar entre sticky en el scroll down/up -->\n<section\n    class=\"mdl-header\"\n    [class.force-sticky]=\"dinamyHeader === false\"\n    [class.hotel-card]=\"hasHotelData\"\n>\n    <div class=\"mdl-container\">\n        <!-- Menú desktop y contenedor para logo, idioma y usuario -->\n        <div class=\"m-menu\">\n            <!-- Botón flotante para reserva online -->\n\n            <!-- Book now button -->\n            <div class=\"m-book-container\">\n                @if (floatingButtons?.links?.[0]; as btn) {\n                    <button (click)=\"openEngineModal()\" class=\"m-button m-book\">\n                        {{ btn.label }}\n                    </button>\n                }\n            </div>\n            <!-- Logo -->\n            <!-- Links + Lang + user -->\n            <div class=\"m-links-container\">\n                <a\n                    [href]=\"homeUrl\"\n                    [linkType]=\"menu?.[0]?.linkType\"\n                    class=\"m-logo\"\n                >\n                    <svg\n                        class=\"no-sticky\"\n                        width=\"227\"\n                        height=\"94\"\n                        viewBox=\"0 0 227 94\"\n                        fill=\"none\"\n                        xmlns=\"http://www.w3.org/2000/svg\"\n                    >\n                        <path\n                            d=\"M23.111 20.442C30.153 20.442 36.923 23.421 41.617 28.657L30.875 37.233C28.978 34.706 26 33.442 23.201 33.442C18.687 33.442 14.264 37.053 14.264 42.65C14.264 48.247 18.687 51.858 23.201 51.858C26 51.858 28.978 50.594 30.875 48.066L41.617 56.643C36.923 61.879 30.153 64.858 23.111 64.858C10.563 64.858 0 55.108 0 42.65C0 30.192 10.563 20.442 23.111 20.442Z\"\n                            fill=\"#393637\"\n                        />\n                        <path\n                            d=\"M66.3528 32.72C60.8458 32.72 56.4228 37.053 56.4228 42.65C56.4228 48.247 60.8458 52.58 66.3528 52.58C71.8598 52.58 76.2828 48.247 76.2828 42.65C76.2828 37.053 71.8608 32.72 66.3528 32.72ZM91.0898 63.774H76.8258V58.719C74.0268 62.24 68.7008 64.859 62.8328 64.859C51.0978 64.859 41.7988 55.199 41.7988 42.651C41.7988 30.103 51.0978 20.443 62.8328 20.443C68.7008 20.443 74.0268 23.061 76.8258 26.582V21.527H91.0898V63.774Z\"\n                            fill=\"#393637\"\n                        />\n                        <path\n                            d=\"M121.964 52.581C127.47 52.581 131.894 48.248 131.894 42.651C131.894 37.054 127.47 32.721 121.964 32.721C116.457 32.721 112.033 37.054 112.033 42.651C112.033 48.248 116.457 52.581 121.964 52.581ZM97.2275 0H111.491V26.582C114.291 23.061 119.616 20.443 125.484 20.443C137.22 20.443 146.519 30.103 146.519 42.651C146.519 55.199 137.22 64.859 125.484 64.859C119.617 64.859 114.292 62.24 111.491 58.719V63.775H97.2275V0Z\"\n                            fill=\"#393637\"\n                        />\n                        <path\n                            d=\"M171.977 33.442C167.283 33.442 162.769 37.233 162.769 42.65C162.769 48.066 167.283 51.858 171.977 51.858C176.671 51.858 181.185 48.066 181.185 42.65C181.185 37.233 176.671 33.442 171.977 33.442ZM171.977 64.858C158.796 64.858 148.505 55.017 148.505 42.65C148.505 30.282 158.796 20.442 171.977 20.442C185.158 20.442 195.449 30.282 195.449 42.65C195.448 55.017 185.157 64.858 171.977 64.858Z\"\n                            fill=\"#393637\"\n                        />\n                        <path\n                            d=\"M196.621 21.526H203.211V9.60901H217.475V21.526H226.772V32.9H217.475V63.774H203.211V32.9H196.621V21.526Z\"\n                            fill=\"#393637\"\n                        />\n                        <path\n                            d=\"M69.6159 81.562V93.562H67.9019V88.213H61.0109V93.562H59.2969V81.562H61.0109V86.722H67.9019V81.562H69.6159Z\"\n                            fill=\"#393637\"\n                        />\n                        <path\n                            d=\"M89.0629 91.573C89.7659 91.174 90.3199 90.622 90.7259 89.92C91.1309 89.217 91.3339 88.432 91.3339 87.563C91.3339 86.695 91.1309 85.909 90.7259 85.206C90.3199 84.504 89.7659 83.952 89.0629 83.553C88.3599 83.153 87.5689 82.952 86.6889 82.952C85.8089 82.952 85.0119 83.152 84.2979 83.553C83.5829 83.952 83.0229 84.504 82.6179 85.206C82.2119 85.909 82.0089 86.695 82.0089 87.563C82.0089 88.432 82.2119 89.217 82.6179 89.92C83.0229 90.622 83.5829 91.174 84.2979 91.573C85.0119 91.974 85.8089 92.174 86.6889 92.174C87.5689 92.173 88.3599 91.974 89.0629 91.573ZM83.4149 92.902C82.4429 92.371 81.6799 91.636 81.1259 90.699C80.5719 89.762 80.2949 88.718 80.2949 87.562C80.2949 86.408 80.5719 85.362 81.1259 84.425C81.6799 83.487 82.4429 82.753 83.4149 82.223C84.3859 81.692 85.4779 81.425 86.6889 81.425C87.8889 81.425 88.9739 81.692 89.9459 82.223C90.9169 82.753 91.6769 83.485 92.2259 84.416C92.7739 85.348 93.0489 86.396 93.0489 87.562C93.0489 88.728 92.7739 89.777 92.2259 90.708C91.6769 91.64 90.9169 92.371 89.9459 92.902C88.9739 93.433 87.8889 93.699 86.6889 93.699C85.4779 93.699 84.3859 93.433 83.4149 92.902Z\"\n                            fill=\"#393637\"\n                        />\n                        <path\n                            d=\"M105.939 83.053H101.825V81.563H111.75V83.053H107.636V93.562H105.939V83.053Z\"\n                            fill=\"#393637\"\n                        />\n                        <path\n                            d=\"M130.383 92.071V93.562H121.675V81.563H130.143V83.054H123.389V86.739H129.406V88.196H123.389V92.071H130.383Z\"\n                            fill=\"#393637\"\n                        />\n                        <path\n                            d=\"M141.216 81.562H142.931V92.071H149.428V93.562H141.216V81.562Z\"\n                            fill=\"#393637\"\n                        />\n                        <path\n                            d=\"M160.218 93.279C159.378 92.999 158.718 92.636 158.239 92.191L158.874 90.854C159.33 91.265 159.916 91.599 160.63 91.857C161.344 92.113 162.079 92.242 162.833 92.242C163.827 92.242 164.57 92.073 165.062 91.737C165.553 91.4 165.799 90.951 165.799 90.391C165.799 89.979 165.664 89.645 165.396 89.388C165.127 89.13 164.796 88.934 164.403 88.796C164.007 88.658 163.451 88.504 162.731 88.333C161.828 88.116 161.099 87.899 160.545 87.682C159.99 87.465 159.516 87.13 159.122 86.679C158.727 86.228 158.531 85.619 158.531 84.854C158.531 84.213 158.699 83.637 159.036 83.123C159.373 82.609 159.885 82.197 160.571 81.889C161.256 81.58 162.107 81.425 163.125 81.425C163.833 81.425 164.53 81.518 165.216 81.7C165.902 81.882 166.49 82.146 166.982 82.488L166.417 83.86C165.914 83.54 165.377 83.297 164.805 83.131C164.235 82.966 163.674 82.883 163.126 82.883C162.154 82.883 161.426 83.061 160.94 83.414C160.454 83.768 160.211 84.227 160.211 84.785C160.211 85.197 160.349 85.531 160.623 85.788C160.896 86.045 161.237 86.245 161.643 86.389C162.048 86.532 162.6 86.683 163.297 86.842C164.199 87.061 164.926 87.278 165.474 87.494C166.022 87.71 166.495 88.042 166.888 88.488C167.283 88.934 167.48 89.534 167.48 90.288C167.48 90.916 167.308 91.491 166.965 92.011C166.622 92.532 166.102 92.943 165.406 93.245C164.708 93.548 163.85 93.699 162.834 93.699C161.929 93.699 161.058 93.559 160.218 93.279Z\"\n                            fill=\"#393637\"\n                        />\n                    </svg>\n                    <svg\n                        class=\"svg-sticky\"\n                        width=\"154\"\n                        height=\"44\"\n                        viewBox=\"0 0 154 44\"\n                        fill=\"none\"\n                        xmlns=\"http://www.w3.org/2000/svg\"\n                    >\n                        <path\n                            d=\"M15.6577 13.8499C20.4287 13.8499 25.0154 15.8681 28.1956 19.4155L20.9179 25.2258C19.6326 23.5137 17.615 22.6574 15.7187 22.6574C12.6605 22.6574 9.66388 25.1038 9.66388 28.8958C9.66388 32.6878 12.6605 35.1342 15.7187 35.1342C17.615 35.1342 19.6326 34.2779 20.9179 32.5652L28.1956 38.3761C25.0154 41.9235 20.4287 43.9418 15.6577 43.9418C7.15645 43.9418 0 37.3361 0 28.8958C0 20.4555 7.15645 13.8499 15.6577 13.8499Z\"\n                            fill=\"#393637\"\n                        />\n                        <path\n                            d=\"M44.9547 22.168C41.2237 22.168 38.2271 25.1036 38.2271 28.8956C38.2271 32.6875 41.2237 35.6232 44.9547 35.6232C48.6857 35.6232 51.6823 32.6875 51.6823 28.8956C51.6823 25.1036 48.6864 22.168 44.9547 22.168ZM61.7141 43.2071H52.0502V39.7823C50.1539 42.1678 46.5455 43.9422 42.5699 43.9422C34.6194 43.9422 28.3193 37.3975 28.3193 28.8962C28.3193 20.395 34.6194 13.8503 42.5699 13.8503C46.5455 13.8503 50.1539 15.624 52.0502 18.0095V14.5847H61.7141V43.2071Z\"\n                            fill=\"#393637\"\n                        />\n                        <path\n                            d=\"M82.6307 35.6237C86.3611 35.6237 89.3583 32.6881 89.3583 28.8961C89.3583 25.1042 86.3611 22.1685 82.6307 22.1685C78.8997 22.1685 75.9025 25.1042 75.9025 28.8961C75.9025 32.6881 78.8997 35.6237 82.6307 35.6237ZM65.8721 0H75.5353V18.0094C77.4323 15.6239 81.04 13.8502 85.0155 13.8502C92.9667 13.8502 99.2668 20.3948 99.2668 28.8961C99.2668 37.3974 92.9667 43.9421 85.0155 43.9421C81.0406 43.9421 77.433 42.1677 75.5353 39.7822V43.2077H65.8721V0Z\"\n                            fill=\"#393637\"\n                        />\n                        <path\n                            d=\"M116.515 22.6574C113.334 22.6574 110.276 25.2258 110.276 28.8958C110.276 32.5652 113.334 35.1342 116.515 35.1342C119.695 35.1342 122.753 32.5652 122.753 28.8958C122.753 25.2258 119.695 22.6574 116.515 22.6574ZM116.515 43.9418C107.584 43.9418 100.612 37.2745 100.612 28.8958C100.612 20.5165 107.584 13.8499 116.515 13.8499C125.445 13.8499 132.417 20.5165 132.417 28.8958C132.416 37.2745 125.444 43.9418 116.515 43.9418Z\"\n                            fill=\"#393637\"\n                        />\n                        <path\n                            d=\"M133.211 14.5839H137.676V6.51015H147.34V14.5839H153.638V22.2898H147.34V43.207H137.676V22.2898H133.211V14.5839Z\"\n                            fill=\"#393637\"\n                        />\n                    </svg>\n                </a>\n                <!-- Links -->\n                <div class=\"m-links\">\n                    <a [href]=\"homeUrl\" [linkType]=\"menu?.[0]?.linkType\">\n                        <img [src]=\"getMainLogo()\" alt=\"Home\" />\n                    </a>\n                    @for (item of navigationItems; track $index) {\n                        <a\n                            [href]=\"item.url\"\n                            [linkType]=\"item.linkType\"\n                            [attr.target]=\"item.target\"\n                            >{{ item.label }}</a\n                        >\n                    }\n                </div>\n                <!-- Motor sticky -->\n                <!-- CAMBIAR Y HACERLO LO MÁS DINÁMINCO POSIBLE -->\n                <div class=\"m-motor\">\n                    @if (floatingButtons?.links?.[2]; as btn) {\n                        <div class=\"m-checking-online\">\n                            <a\n                                class=\"checking\"\n                                [href]=\"btn.url\"\n                                [linkType]=\"btn.linkType\"\n                                [attr.target]=\"btn.target\"\n                            >\n                                <span>{{ btn.label }}</span></a\n                            >\n                        </div>\n                    }\n                </div>\n\n                <!-- user + lang -->\n                <div class=\"m-right\">\n                    <button\n                        type=\"button\"\n                        class=\"m-burger\"\n                        aria-label=\"Abrir menú\"\n                        aria-expanded=\"false\"\n                        aria-controls=\"burger-menu\"\n                        (click)=\"toggleBurgerMenu()\"\n                    >\n                        <svg\n                            width=\"37\"\n                            height=\"23\"\n                            viewBox=\"0 0 37 23\"\n                            fill=\"none\"\n                            xmlns=\"http://www.w3.org/2000/svg\"\n                        >\n                            <path\n                                d=\"M36.2338 0H0V1.81963H36.2338V0Z\"\n                                fill=\"#515050\"\n                            />\n                            <path\n                                d=\"M36.2338 10.5859H0V12.4066H36.2338V10.5859Z\"\n                                fill=\"#515050\"\n                            />\n                            <path\n                                d=\"M36.2338 21.1797H0V22.9993H36.2338V21.1797Z\"\n                                fill=\"#515050\"\n                            />\n                        </svg>\n                    </button>\n                    <ng-container *ngIf=\"floatingButtons?.userLink?.[0];\">\n                        <a\n                            [href]=\"floatingButtons?.userLink?.[0]?.url\"\n                            [linkType]=\"floatingButtons?.userLink?.[0]?.linkType\"\n                            [attr.target]=\"floatingButtons?.userLink?.[0]?.target\"\n                            class=\"m-user\"\n                            aria-label=\"Abrir menú de usuario\"\n                        >\n                            <svg\n                                width=\"20\"\n                                height=\"22\"\n                                viewBox=\"0 0 20 22\"\n                                fill=\"none\"\n                                xmlns=\"http://www.w3.org/2000/svg\"\n                            >\n                                <g opacity=\"0.7\">\n                                    <path\n                                        d=\"M17.941 14.8491C16.938 13.8431 15.602 13.2891 14.178 13.2891H5.321C3.899 13.2891 2.563 13.8431 1.558 14.8491C0.552001 15.8541 -0.000998646 17.1901 1.35387e-06 18.6121V20.8261C1.35387e-06 21.3191 0.400001 21.7201 0.894001 21.7201C1.386 21.7201 1.787 21.3201 1.787 20.8261V18.6121C1.787 17.6681 2.155 16.7791 2.823 16.1111C3.488 15.4441 4.376 15.0761 5.322 15.0761H14.18C15.125 15.0761 16.013 15.4431 16.679 16.1111C17.347 16.7771 17.714 17.6661 17.714 18.6121V20.8261C17.714 21.3191 18.114 21.7201 18.608 21.7201C19.1 21.7201 19.501 21.3201 19.501 20.8261V18.6121C19.501 17.1901 18.947 15.8541 17.941 14.8491Z\"\n                                        fill=\"#515050\"\n                                    />\n                                    <path\n                                        d=\"M9.75069 10.644C12.6857 10.644 15.0727 8.257 15.0727 5.322C15.0727 2.387 12.6857 0 9.75069 0C6.81569 0 4.42969 2.387 4.42969 5.322C4.42969 8.257 6.81569 10.644 9.75069 10.644ZM9.75069 1.786C11.7007 1.786 13.2867 3.372 13.2867 5.322C13.2867 7.272 11.7007 8.858 9.75069 8.858C7.80169 8.858 6.21569 7.272 6.21569 5.322C6.21569 3.372 7.80169 1.786 9.75069 1.786Z\"\n                                        fill=\"#515050\"\n                                    />\n                                </g>\n                            </svg>\n                        </a>\n                    </ng-container>\n\n                    <button\n                        type=\"button\"\n                        class=\"m-lang js-lang-trigger\"\n                        aria-label=\"Seleccionar idioma\"\n                        aria-controls=\"idiomas-form\"\n                        aria-expanded=\"false\"\n                        data-lang-trigger\n                    >\n                        <svg\n                            width=\"23\"\n                            height=\"23\"\n                            viewBox=\"0 0 23 23\"\n                            fill=\"none\"\n                            xmlns=\"http://www.w3.org/2000/svg\"\n                        >\n                            <g opacity=\"0.7\">\n                                <path\n                                    d=\"M11.5 23C9.22552 23 7.00211 22.3255 5.11095 21.0619C3.21978 19.7983 1.7458 18.0022 0.87539 15.9009C0.00498277 13.7995 -0.222756 11.4872 0.220974 9.25646C0.664704 7.02568 1.75997 4.97658 3.36828 3.36828C4.97658 1.75997 7.02568 0.664704 9.25646 0.220974C11.4872 -0.222756 13.7995 0.00498277 15.9009 0.87539C18.0022 1.7458 19.7983 3.21978 21.0619 5.11095C22.3255 7.00211 23 9.22552 23 11.5C22.9966 14.5489 21.7839 17.472 19.628 19.628C17.472 21.7839 14.5489 22.9966 11.5 23ZM11.5 1.60466C9.54289 1.60466 7.62972 2.18501 6.00244 3.27232C4.37516 4.35964 3.10685 5.90508 2.35789 7.71322C1.60894 9.52135 1.41298 11.511 1.79479 13.4305C2.17661 15.35 3.11905 17.1132 4.50294 18.4971C5.88682 19.881 7.65001 20.8234 9.56952 21.2052C11.489 21.587 13.4786 21.3911 15.2868 20.6421C17.0949 19.8932 18.6404 18.6248 19.7277 16.9976C20.815 15.3703 21.3953 13.4571 21.3953 11.5C21.3925 8.87646 20.3491 6.36119 18.4939 4.50606C16.6388 2.65094 14.1235 1.60749 11.5 1.60466Z\"\n                                    fill=\"#515050\"\n                                />\n                                <path\n                                    d=\"M11.4994 23C8.19913 23 6.41797 17.0746 6.41797 11.5C6.41797 5.92544 8.19913 0 11.4994 0C14.7996 0 16.5808 5.92544 16.5808 11.5C16.5808 17.0746 14.7996 23 11.4994 23ZM11.4994 1.60465C9.85834 1.60465 8.02262 5.83665 8.02262 11.5C8.02262 17.1633 9.85834 21.3953 11.4994 21.3953C13.1404 21.3953 14.9761 17.1633 14.9761 11.5C14.9761 5.83665 13.1404 1.60465 11.4994 1.60465Z\"\n                                    fill=\"#515050\"\n                                />\n                                <path\n                                    d=\"M11.4997 6.95417C10.213 6.95354 8.93264 6.77352 7.69563 6.41929C6.23211 6.00081 4.85534 5.32366 3.63051 4.41989C3.53663 4.36112 3.45593 4.28355 3.3935 4.19206C3.33107 4.10057 3.28826 3.99715 3.26776 3.8883C3.24727 3.77946 3.24953 3.66754 3.27441 3.55961C3.29929 3.45168 3.34624 3.35007 3.41232 3.26118C3.47839 3.17229 3.56216 3.09804 3.65834 3.04311C3.75452 2.98819 3.86103 2.95377 3.97117 2.94202C4.0813 2.93028 4.19268 2.94147 4.29828 2.97488C4.40388 3.00829 4.50141 3.06321 4.58475 3.13617C5.6566 3.92388 6.86041 4.51401 8.13958 4.87882C10.3371 5.50465 12.6656 5.50465 14.8631 4.87882C16.1414 4.51285 17.3441 3.92162 18.4147 3.13296C18.499 3.06625 18.5959 3.01717 18.6996 2.98864C18.8033 2.9601 18.9116 2.9527 19.0182 2.96687C19.1248 2.98103 19.2274 3.01648 19.3201 3.07111C19.4127 3.12573 19.4934 3.19841 19.5573 3.28484C19.6213 3.37126 19.6673 3.46966 19.6925 3.5742C19.7177 3.67873 19.7216 3.78726 19.704 3.89334C19.6864 3.99943 19.6477 4.10089 19.5902 4.19171C19.5326 4.28253 19.4574 4.36086 19.3689 4.42203C18.1441 5.32556 16.7673 6.00236 15.3038 6.42036C14.0668 6.77422 12.7864 6.95389 11.4997 6.95417Z\"\n                                    fill=\"#515050\"\n                                />\n                                <path\n                                    d=\"M18.8913 20.0246C18.7198 20.0244 18.553 19.9693 18.4152 19.8673C17.3437 19.0781 16.1398 18.4865 14.8604 18.1204C12.6629 17.4945 10.3344 17.4945 8.13689 18.1204C6.85856 18.4863 5.65582 19.0776 4.58526 19.8662C4.50093 19.9329 4.40406 19.982 4.30038 20.0106C4.19671 20.0391 4.08836 20.0465 3.98177 20.0323C3.87518 20.0182 3.77253 19.9827 3.67991 19.9281C3.58729 19.8735 3.50659 19.8008 3.44262 19.7144C3.37864 19.6279 3.33269 19.5295 3.30749 19.425C3.2823 19.3205 3.27837 19.2119 3.29595 19.1058C3.31352 18.9998 3.35224 18.8983 3.40981 18.8075C3.46737 18.7167 3.5426 18.6383 3.63103 18.5772C4.85586 17.6736 6.23264 16.9968 7.69615 16.5788C10.1837 15.8696 12.82 15.8696 15.3075 16.5788C16.7711 16.9973 18.1478 17.6745 19.3727 18.5782C19.5087 18.6785 19.6096 18.8192 19.6609 18.9802C19.7121 19.1412 19.7112 19.3144 19.6581 19.4748C19.6051 19.6353 19.5027 19.7749 19.3655 19.8736C19.2283 19.9723 19.0635 20.0252 18.8945 20.0246H18.8913Z\"\n                                    fill=\"#515050\"\n                                />\n                                <path\n                                    d=\"M22.1977 12.3H0.802325C0.589535 12.3 0.385461 12.2154 0.234996 12.065C0.0845305 11.9145 0 11.7104 0 11.4976C0 11.2848 0.0845305 11.0808 0.234996 10.9303C0.385461 10.7798 0.589535 10.6953 0.802325 10.6953H22.1977C22.4105 10.6953 22.6145 10.7798 22.765 10.9303C22.9155 11.0808 23 11.2848 23 11.4976C23 11.7104 22.9155 11.9145 22.765 12.065C22.6145 12.2154 22.4105 12.3 22.1977 12.3Z\"\n                                    fill=\"#515050\"\n                                />\n                            </g>\n                        </svg>\n                    </button>\n                </div>\n            </div>\n        </div>\n        <div class=\"m-card-hotel\">\n            <a\n                [href]=\"homeUrl\"\n                [linkType]=\"menu?.[0]?.linkType\"\n                class=\"m-hotel-logo\"\n            >\n                <div class=\"m-title\">{{ hotelLabel }}</div>\n                <div class=\"m-stars\">\n\n                    <span>{{ hotelTypeLabel }}\n\n                    </span>\n\n                    <div class=\"m-keys\">\n                        @if (isApartment()) {\n                            @for (star of hotelStars; track star) {\n                                <div class=\"m-keys\">\n                                    <svg\n                                        width=\"13\"\n                                        height=\"13\"\n                                        viewBox=\"0 0 13 13\"\n                                        fill=\"none\"\n                                        xmlns=\"http://www.w3.org/2000/svg\"\n                                    >\n                                        <path\n                                            d=\"M0.146296 4.26479L1.14015 2.01692C1.31289 1.62559 1.62559 1.31289 2.01692 1.14015L4.26479 0.146297C4.58174 0.00641826 4.93356 -0.0343944 5.27412 0.0292127C5.61467 0.0928198 5.92805 0.257876 6.17314 0.50273L7.9475 2.27839C8.1606 2.49155 8.31388 2.75701 8.39197 3.04813C8.47006 3.33925 8.4702 3.64578 8.39239 3.93698L7.93579 5.64109L12.866 10.5713C12.9085 10.6136 12.9422 10.6639 12.9652 10.7193C12.9882 10.7746 13 10.834 13 10.8939V12.5447C12.9993 12.6652 12.9511 12.7807 12.8659 12.8659C12.7807 12.9511 12.6652 12.9993 12.5447 13H10.8939C10.7926 12.9998 10.6942 12.9659 10.6142 12.9038C10.5341 12.8416 10.477 12.7547 10.4516 12.6566L10.2045 11.6796L9.3303 11.5131C9.24322 11.4968 9.16282 11.4553 9.09903 11.3938C9.03523 11.3323 8.99082 11.2535 8.97127 11.1671L8.73321 10.1173L7.89026 10.0367C7.78479 10.0274 7.68608 9.9808 7.61188 9.90528L5.64109 7.93579L3.93697 8.39239C3.6458 8.47047 3.33919 8.47046 3.04802 8.39236C2.75685 8.31426 2.4914 8.16082 2.27839 7.9475L0.502729 6.17314C0.257875 5.92805 0.0928202 5.61467 0.029213 5.27412C-0.0343943 4.93357 0.00641727 4.58174 0.146296 4.26479ZM3.6703 5.08953C3.81061 5.22968 3.98932 5.32508 4.18385 5.36369C4.37837 5.40229 4.57997 5.38236 4.76317 5.30641C4.94636 5.23047 5.10294 5.10191 5.21309 4.937C5.32324 4.7721 5.38203 4.57823 5.38203 4.37991C5.38203 4.1816 5.32324 3.98773 5.21309 3.82283C5.10294 3.65792 4.94636 3.52936 4.76317 3.45342C4.57997 3.37747 4.37837 3.35754 4.18385 3.39614C3.98932 3.43475 3.81061 3.53015 3.6703 3.6703C3.57689 3.76336 3.50277 3.87395 3.45219 3.99572C3.40162 4.1175 3.37558 4.24806 3.37558 4.37991C3.37558 4.51177 3.40162 4.64233 3.45219 4.76411C3.50277 4.88588 3.57689 4.99647 3.6703 5.08953Z\"\n                                            fill=\"#393637\"\n                                            fill-opacity=\"1\"\n                                        />\n                                    </svg>\n                                </div>\n                            }\n                        }\n                        @else {\n                            @for (star of hotelStars; track star) {\n                                <svg\n                                    width=\"13\"\n                                    height=\"12\"\n                                    viewBox=\"0 0 13 12\"\n                                    fill=\"none\"\n                                    xmlns=\"http://www.w3.org/2000/svg\"\n                                >\n                                    <path\n                                        opacity=\"0.8\"\n                                        d=\"M3.612 7.196L2.114 11.648L6.006 8.806L9.926 11.648L8.4 7.196L12.012 4.774H7.616L6.006 0L4.424 4.774H0L3.612 7.196Z\"\n                                        fill=\"white\"\n                                    />\n                                </svg>\n                            }\n                        }\n                    </div>\n                      {{ showIfSup(hotelCategoryLabel) }}\n                </div>\n            </a>\n\n            <div class=\"m-hotel-submenus\">\n                @for (item of hotelSubmenuItems; track $index) {\n                    <a\n                        [href]=\"item.url\"\n                        [linkType]=\"item.linkType\"\n                        [attr.target]=\"item.target\"\n                        class=\"m-submenu\"\n                        >{{ item.label }}</a\n                    >\n                }\n            </div>\n        </div>\n    </div>\n\n    <div class=\"m-optionsmobile\">\n        @if (floatingButtons?.links?.[2]; as btn) {\n            <!-- <button type=\"button\" class=\"m-checking-online-button\">\n                Check-in online\n            </button> -->\n\n            <a\n                type=\"button\"\n                class=\"m-checking-online-button\"\n                [href]=\"btn.url\"\n                [linkType]=\"btn.linkType\"\n                [attr.target]=\"btn.target\"\n            >\n                <span>{{ btn.label }}</span></a\n            >\n        }\n        <button\n            type=\"button\"\n            class=\"m-menumobile\"\n            aria-label=\"Abrir menú\"\n            aria-expanded=\"false\"\n            aria-controls=\"burger-menu\"\n            (click)=\"toggleBurgerMenu()\"\n        >\n            <span>Menu</span>\n\n            <svg\n                width=\"37\"\n                height=\"23\"\n                viewBox=\"0 0 37 23\"\n                fill=\"none\"\n                xmlns=\"http://www.w3.org/2000/svg\"\n            >\n                <g opacity=\"0.7\">\n                    <path d=\"M36.2338 0H0V1.81963H36.2338V0Z\" fill=\"#515050\" />\n                    <path\n                        d=\"M36.2338 10.5859H0V12.4066H36.2338V10.5859Z\"\n                        fill=\"#515050\"\n                    />\n                    <path\n                        d=\"M36.2338 21.1797H0V22.9993H36.2338V21.1797Z\"\n                        fill=\"#515050\"\n                    />\n                </g>\n            </svg>\n        </button>\n        <button (click)=\"openEngineModal()\" class=\"m-bookmobile\">\n            Book Now\n        </button>\n    </div>\n\n    <div id=\"burger-menu\" class=\"m-burger-menu\">\n        <button\n            type=\"button\"\n            class=\"close\"\n            aria-label=\"Cerrar menú\"\n            (click)=\"toggleBurgerMenu()\"\n        >\n            <svg\n                width=\"14\"\n                height=\"13\"\n                viewBox=\"0 0 14 13\"\n                fill=\"none\"\n                xmlns=\"http://www.w3.org/2000/svg\"\n            >\n                <path\n                    d=\"M1.33677 0.739403C1.51937 0.55773 1.76696 0.455628 2.02454 0.456284C2.28202 0.456975 2.52861 0.560362 2.71024 0.742856L7.08546 5.14018L11.4344 0.740094C11.616 0.557565 11.8627 0.45426 12.1201 0.453522C12.3777 0.452865 12.6253 0.554968 12.8079 0.736641C12.9904 0.918282 13.0938 1.16484 13.0945 1.42234C13.0951 1.67992 12.993 1.92751 12.8114 2.11011L8.35259 6.59099L12.7409 11.0014C12.9226 11.184 13.0247 11.4317 13.0241 11.6892C13.0234 11.9467 12.9199 12.1933 12.7375 12.3749C12.5549 12.5566 12.3073 12.6587 12.0497 12.658C11.7922 12.6573 11.5456 12.554 11.364 12.3714L6.98948 7.97482L2.6405 12.3749C2.45885 12.5575 2.21164 12.6601 1.95411 12.6608C1.69663 12.6614 1.4496 12.5599 1.26702 12.3784C1.08449 12.1967 0.98118 11.9501 0.980453 11.6927C0.979797 11.4351 1.0819 11.1875 1.26357 11.0049L5.72097 6.52401L1.33332 2.11288C1.15177 1.93037 1.05033 1.68321 1.05089 1.42579C1.05154 1.16825 1.15422 0.921069 1.33677 0.739403Z\"\n                    fill=\"black\"\n                />\n            </svg>\n        </button>\n\n        <div class=\"m-container\">\n            <div class=\"m-header\">\n                <a\n                    [href]=\"homeUrl\"\n                    [linkType]=\"menu?.[0]?.linkType\"\n                    class=\"m-logo\"\n                >\n                    <img [src]=\"getMainLogo()\" alt=\"Logo menú\" />\n                </a>\n            </div>\n\n            @if (hasHotelData) {\n                <!-- Solo para hotels -->\n                <a\n                    [href]=\"homeUrl\"\n                    [linkType]=\"menu?.[0]?.linkType\"\n                    class=\"m-hotel-logo\"\n                >\n                    <div class=\"m-title\">{{ hotelLabel }}</div>\n                    <div class=\"m-stars\">\n                        <span>{{ hotelCategoryLabel }}</span>\n                        @for (star of hotelStars; track star) {\n                            <svg\n                                width=\"13\"\n                                height=\"12\"\n                                viewBox=\"0 0 13 12\"\n                                fill=\"none\"\n                                xmlns=\"http://www.w3.org/2000/svg\"\n                            >\n                                <path\n                                    opacity=\"0.8\"\n                                    d=\"M3.612 7.196L2.114 11.648L6.006 8.806L9.926 11.648L8.4 7.196L12.012 4.774H7.616L6.006 0L4.424 4.774H0L3.612 7.196Z\"\n                                    fill=\"#393637\"\n                                />\n                            </svg>\n                        }\n                    </div>\n                </a>\n            }\n\n            <div class=\"m-links\">\n                <div class=\"m-links-container\">\n                    @for (item of burgerMenuItems; track $index) {\n                        <a\n                            [href]=\"item.url\"\n                            [linkType]=\"item.linkType\"\n                            [attr.target]=\"item.target\"\n                            [attr.data-logo]=\"getMenuLogo($index)\"\n                            (click)=\"closeBurgerMenu()\"\n                        >\n                            {{ item.label }}\n                        </a>\n                    }\n                </div>\n            </div>\n\n            <div class=\"m-footer\">\n                @if (links?.[0]; as item) {\n                    <a\n                        [href]=\"item.url\"\n                        [linkType]=\"item.linkType\"\n                        [attr.target]=\"item.target\"\n                        class=\"m-checking-online-button\"\n                        >{{ item.label }}</a\n                    >\n                }\n\n                <div class=\"m-footer-container\">\n                    <a\n                        [href]=\"links?.[1]?.url\"\n                        [linkType]=\"links?.[1]?.linkType\"\n                        [attr.target]=\"links?.[1]?.target\"\n                    >\n                        <svg\n                            width=\"17\"\n                            height=\"14\"\n                            viewBox=\"0 0 17 14\"\n                            fill=\"none\"\n                            xmlns=\"http://www.w3.org/2000/svg\"\n                        >\n                            <path\n                                d=\"M14.4671 13.1518H2.67741C2.04751 13.1518 1.45549 12.9068 1.01086 12.4613C0.565375 12.0158 0.320312 11.4238 0.320312 10.7939V2.38198C0.320312 2.37524 0.320312 2.36766 0.320312 2.36093C0.323681 1.73608 0.568744 1.14912 1.01086 0.706168C1.45549 0.260688 2.04751 0.015625 2.67741 0.015625H14.4671C15.097 0.015625 15.689 0.260688 16.1336 0.706168C16.5757 1.14912 16.8208 1.73608 16.8242 2.36093C16.8242 2.36766 16.8242 2.37524 16.8242 2.38198V10.7939C16.8242 11.4238 16.5791 12.0158 16.1336 12.4613C15.689 12.9068 15.097 13.1518 14.4671 13.1518ZM1.66686 3.63084V10.7931C1.66686 11.0592 1.77464 11.3194 1.96328 11.5072C2.15444 11.6983 2.40791 11.8036 2.67823 11.8036H14.4679C14.7332 11.8036 14.9942 11.6958 15.1828 11.5072C15.3715 11.3194 15.4793 11.0592 15.4793 10.7931V3.63084L8.94699 7.98544C8.7213 8.13702 8.4257 8.13702 8.20001 7.98544L1.66686 3.63084ZM1.7199 2.04765L8.57224 6.61615L15.4246 2.04765C15.3749 1.90281 15.2932 1.76976 15.182 1.6586C14.9934 1.46997 14.7332 1.36217 14.4671 1.36217H2.67741C2.40793 1.36217 2.15361 1.46744 1.96245 1.6586C1.85129 1.76976 1.76959 1.90281 1.7199 2.04765Z\"\n                                fill=\"white\"\n                            />\n                        </svg>\n                    </a>\n\n                    <a\n                        [href]=\"links?.[2]?.url\"\n                        [linkType]=\"links?.[2]?.linkType\"\n                        [attr.target]=\"links?.[2]?.target\"\n                    >\n                        <svg\n                            width=\"20\"\n                            height=\"23\"\n                            viewBox=\"0 0 20 23\"\n                            fill=\"none\"\n                            xmlns=\"http://www.w3.org/2000/svg\"\n                        >\n                            <path\n                                d=\"M17.941 15.185C16.938 14.179 15.602 13.625 14.178 13.625H5.321C3.899 13.625 2.563 14.179 1.558 15.185C0.552001 16.19 -0.000998646 17.526 1.35387e-06 18.948V21.162C1.35387e-06 21.655 0.400001 22.056 0.894001 22.056C1.386 22.056 1.787 21.656 1.787 21.162V18.948C1.787 18.004 2.155 17.115 2.823 16.447C3.488 15.78 4.376 15.412 5.322 15.412H14.18C15.125 15.412 16.013 15.779 16.679 16.447C17.347 17.113 17.714 18.002 17.714 18.948V21.162C17.714 21.655 18.114 22.056 18.608 22.056C19.1 22.056 19.501 21.656 19.501 21.162V18.948C19.501 17.526 18.947 16.19 17.941 15.185Z\"\n                                fill=\"white\"\n                            />\n                            <path\n                                d=\"M9.75069 10.9799C12.6857 10.9799 15.0727 8.59294 15.0727 5.65794C15.0727 2.72294 12.6857 0.335938 9.75069 0.335938C6.81569 0.335938 4.42969 2.72294 4.42969 5.65794C4.42969 8.59294 6.81569 10.9799 9.75069 10.9799ZM9.75069 2.12194C11.7007 2.12194 13.2867 3.70794 13.2867 5.65794C13.2867 7.60794 11.7007 9.19394 9.75069 9.19394C7.80169 9.19394 6.21569 7.60794 6.21569 5.65794C6.21569 3.70794 7.80169 2.12194 9.75069 2.12194Z\"\n                                fill=\"white\"\n                            />\n                        </svg>\n                    </a>\n\n                    <button\n                        type=\"button\"\n                        class=\"m-lang js-lang-trigger\"\n                        aria-label=\"Seleccionar idioma\"\n                        aria-controls=\"idiomas-form\"\n                        aria-expanded=\"false\"\n                        data-lang-trigger\n                    >\n                        <svg\n                            width=\"23\"\n                            height=\"23\"\n                            viewBox=\"0 0 23 23\"\n                            fill=\"none\"\n                            xmlns=\"http://www.w3.org/2000/svg\"\n                        >\n                            <path\n                                d=\"M11.5 23C9.22552 23 7.00211 22.3255 5.11095 21.0619C3.21978 19.7983 1.7458 18.0022 0.87539 15.9009C0.00498277 13.7995 -0.222756 11.4872 0.220974 9.25646C0.664704 7.02568 1.75997 4.97658 3.36828 3.36828C4.97658 1.75997 7.02568 0.664704 9.25646 0.220974C11.4872 -0.222756 13.7995 0.00498277 15.9009 0.87539C18.0022 1.7458 19.7983 3.21978 21.0619 5.11095C22.3255 7.00211 23 9.22552 23 11.5C22.9966 14.5489 21.7839 17.472 19.628 19.628C17.472 21.7839 14.5489 22.9966 11.5 23ZM11.5 1.60466C9.54289 1.60466 7.62972 2.18501 6.00244 3.27232C4.37516 4.35964 3.10685 5.90508 2.35789 7.71322C1.60894 9.52135 1.41298 11.511 1.79479 13.4305C2.17661 15.35 3.11905 17.1132 4.50294 18.4971C5.88682 19.881 7.65001 20.8234 9.56952 21.2052C11.489 21.587 13.4786 21.3911 15.2868 20.6421C17.0949 19.8932 18.6404 18.6248 19.7277 16.9976C20.815 15.3703 21.3953 13.4571 21.3953 11.5C21.3925 8.87646 20.3491 6.36119 18.4939 4.50606C16.6388 2.65094 14.1235 1.60749 11.5 1.60466Z\"\n                                fill=\"white\"\n                            />\n                            <path\n                                d=\"M11.4994 23C8.19913 23 6.41797 17.0746 6.41797 11.5C6.41797 5.92544 8.19913 0 11.4994 0C14.7996 0 16.5808 5.92544 16.5808 11.5C16.5808 17.0746 14.7996 23 11.4994 23ZM11.4994 1.60465C9.85834 1.60465 8.02262 5.83665 8.02262 11.5C8.02262 17.1633 9.85834 21.3953 11.4994 21.3953C13.1404 21.3953 14.9761 17.1633 14.9761 11.5C14.9761 5.83665 13.1404 1.60465 11.4994 1.60465Z\"\n                                fill=\"white\"\n                            />\n                            <path\n                                d=\"M11.4997 6.95417C10.213 6.95354 8.93264 6.77352 7.69563 6.41929C6.23211 6.00081 4.85534 5.32366 3.63051 4.41989C3.53663 4.36112 3.45593 4.28355 3.3935 4.19206C3.33107 4.10057 3.28826 3.99715 3.26776 3.8883C3.24727 3.77946 3.24953 3.66754 3.27441 3.55961C3.29929 3.45168 3.34624 3.35007 3.41232 3.26118C3.47839 3.17229 3.56216 3.09804 3.65834 3.04311C3.75452 2.98819 3.86103 2.95377 3.97117 2.94202C4.0813 2.93028 4.19268 2.94147 4.29828 2.97488C4.40388 3.00829 4.50141 3.06321 4.58475 3.13617C5.6566 3.92388 6.86041 4.51401 8.13958 4.87882C10.3371 5.50465 12.6656 5.50465 14.8631 4.87882C16.1414 4.51285 17.3441 3.92162 18.4147 3.13296C18.499 3.06625 18.5959 3.01717 18.6996 2.98864C18.8033 2.9601 18.9116 2.9527 19.0182 2.96687C19.1248 2.98103 19.2274 3.01648 19.3201 3.07111C19.4127 3.12573 19.4934 3.19841 19.5573 3.28484C19.6213 3.37126 19.6673 3.46966 19.6925 3.5742C19.7177 3.67873 19.7216 3.78726 19.704 3.89334C19.6864 3.99943 19.6477 4.10089 19.5902 4.19171C19.5326 4.28253 19.4574 4.36086 19.3689 4.42203C18.1441 5.32556 16.7673 6.00236 15.3038 6.42036C14.0668 6.77422 12.7864 6.95389 11.4997 6.95417Z\"\n                                fill=\"white\"\n                            />\n                            <path\n                                d=\"M18.8913 20.0246C18.7198 20.0244 18.553 19.9693 18.4152 19.8673C17.3437 19.0781 16.1398 18.4865 14.8604 18.1204C12.6629 17.4945 10.3344 17.4945 8.13689 18.1204C6.85856 18.4863 5.65582 19.0776 4.58526 19.8662C4.50093 19.9329 4.40406 19.982 4.30038 20.0106C4.19671 20.0391 4.08836 20.0465 3.98177 20.0323C3.87518 20.0182 3.77253 19.9827 3.67991 19.9281C3.58729 19.8735 3.50659 19.8008 3.44262 19.7144C3.37864 19.6279 3.33269 19.5295 3.30749 19.425C3.2823 19.3205 3.27837 19.2119 3.29595 19.1058C3.31352 18.9998 3.35224 18.8983 3.40981 18.8075C3.46737 18.7167 3.5426 18.6383 3.63103 18.5772C4.85586 17.6736 6.23264 16.9968 7.69615 16.5788C10.1837 15.8696 12.82 15.8696 15.3075 16.5788C16.7711 16.9973 18.1478 17.6745 19.3727 18.5782C19.5087 18.6785 19.6096 18.8192 19.6609 18.9802C19.7121 19.1412 19.7112 19.3144 19.6581 19.4748C19.6051 19.6353 19.5027 19.7749 19.3655 19.8736C19.2283 19.9723 19.0635 20.0252 18.8945 20.0246H18.8913Z\"\n                                fill=\"white\"\n                            />\n                            <path\n                                d=\"M22.1977 12.3H0.802325C0.589535 12.3 0.385461 12.2154 0.234996 12.065C0.0845305 11.9145 0 11.7104 0 11.4976C0 11.2848 0.0845305 11.0808 0.234996 10.9303C0.385461 10.7798 0.589535 10.6953 0.802325 10.6953H22.1977C22.4105 10.6953 22.6145 10.7798 22.765 10.9303C22.9155 11.0808 23 11.2848 23 11.4976C23 11.7104 22.9155 11.9145 22.765 12.065C22.6145 12.2154 22.4105 12.3 22.1977 12.3Z\"\n                                fill=\"white\"\n                            />\n                        </svg>\n                    </button>\n                </div>\n            </div>\n        </div>\n    </div>\n\n    <div class=\"m-rrss\">\n        <a\n            [href]=\"getSocialUrl(0)\"\n            [linkType]=\"links?.[0]?.linkType\"\n            [attr.target]=\"links?.[0]?.target\"\n            class=\"m-telefono\"\n        >\n            <p class=\"m-texto\">{{ links?.[0]?.label || 'Llámanos' }}</p>\n            <svg\n                width=\"18\"\n                height=\"18\"\n                viewBox=\"0 0 18 18\"\n                fill=\"none\"\n                xmlns=\"http://www.w3.org/2000/svg\"\n            >\n                <path\n                    d=\"M2.73942 10.2673C2.92152 10.0641 3.14339 9.90047 3.39129 9.78646C3.6392 9.67245 3.90786 9.61053 4.18066 9.60453C4.45291 9.61104 4.72117 9.67146 4.96993 9.78228C5.21869 9.89311 5.44301 10.0521 5.62993 10.2502L6.73691 11.3595L6.99907 11.2232C7.09637 11.1751 7.1891 11.1305 7.26809 11.0801C8.45235 10.3113 9.50104 9.35163 10.3715 8.23998C10.7405 7.79099 11.0587 7.30265 11.3205 6.78384C11.1007 6.57664 10.897 6.37173 10.6966 6.16797L10.2227 5.68373C9.83199 5.34202 9.5928 4.85927 9.55761 4.34141C9.52241 3.82354 9.69409 3.31286 10.035 2.92143C10.0899 2.85825 10.1492 2.79896 10.2124 2.74399L11.6113 1.33593C11.8403 1.09553 12.091 0.842536 12.3279 0.633045C12.5116 0.437687 12.7326 0.281052 12.9777 0.172336C13.2229 0.0636193 13.4873 0.00502351 13.7554 0C14.2711 0.0127769 14.7635 0.216783 15.1372 0.57238L16.4994 1.94609C17.0217 2.45175 17.3385 3.13266 17.3889 3.85783C17.436 4.8546 17.2665 5.84973 16.8921 6.77469C16.1999 8.58463 15.1969 10.2598 13.9283 11.7246C12.2716 13.7275 10.202 15.3492 7.86107 16.4788C6.78588 17.0304 5.61666 17.3753 4.4142 17.4954L4.10053 17.5034C3.66337 17.5019 3.23138 17.4087 2.83247 17.2299C2.43356 17.051 2.07661 16.7905 1.78469 16.4651C1.58042 16.2257 1.36216 15.9986 1.13103 15.7851L0.630765 15.2837C0.236046 14.8967 0.00946343 14.3699 0 13.8172C0.00482601 13.5445 0.0644813 13.2756 0.175401 13.0264C0.286321 12.7772 0.446242 12.5529 0.645648 12.3668L2.73942 10.2673ZM12.5157 5.94817C12.6596 6.07867 12.7609 6.24938 12.8067 6.43819C12.8524 6.627 12.8403 6.8252 12.7721 7.00708L12.7538 7.06774C12.4313 7.81198 12.0076 8.5081 11.4945 9.13633C10.5213 10.364 9.35392 11.4243 8.03851 12.2752C7.88166 12.3756 7.71837 12.4654 7.54969 12.5443C7.41804 12.6107 7.29212 12.6782 7.18451 12.7446L7.12614 12.7789C6.97961 12.8501 6.81959 12.8891 6.65678 12.8934C6.52131 12.8922 6.38761 12.8626 6.26435 12.8064C6.14109 12.7502 6.03103 12.6687 5.94131 12.5672L4.61109 11.253C4.50302 11.1288 4.35393 11.0475 4.19097 11.024C4.10846 11.0305 4.02824 11.0543 3.95548 11.0937C3.88272 11.1332 3.81904 11.1874 3.76855 11.253L1.63472 13.3857C1.51687 13.4765 1.43902 13.6096 1.41765 13.7568C1.39628 13.9041 1.43308 14.0539 1.52024 14.1744C1.55701 14.2206 1.5993 14.2621 1.64617 14.298L2.11323 14.7651C2.41201 15.0479 2.65241 15.2929 2.86763 15.539C3.02241 15.7115 3.21177 15.8495 3.42341 15.9439C3.63504 16.0384 3.86419 16.0873 4.09595 16.0873L4.3249 16.0781C5.34489 15.9773 6.33595 15.6812 7.24404 15.2058C9.39714 14.1578 11.3011 12.6614 12.8282 10.8168C13.9936 9.47328 14.9159 7.93692 15.5539 6.27672C15.8601 5.54557 16.003 4.7564 15.9728 3.9643C15.9395 3.58258 15.7729 3.22476 15.5023 2.95348L14.1904 1.64157C14.075 1.51656 13.9161 1.44041 13.7463 1.42866C13.5893 1.44088 13.4432 1.51352 13.3387 1.63129L13.2895 1.67249C13.0869 1.8671 12.8992 2.06171 12.6988 2.26891L11.1969 3.78C11.1399 3.82004 11.0914 3.87102 11.0542 3.92998C11.0171 3.98894 10.992 4.0547 10.9805 4.12343C10.9692 4.19274 10.9716 4.26361 10.9877 4.33198C11.0039 4.40034 11.0333 4.46484 11.0744 4.5218C11.1152 4.57648 11.1647 4.62406 11.2209 4.6626L11.5575 5.00604C11.8689 5.33115 12.1665 5.63336 12.5157 5.94817Z\"\n                    fill=\"white\"\n                />\n            </svg>\n        </a>\n        <a\n            [href]=\"getSocialUrl(1)\"\n            [linkType]=\"links?.[1]?.linkType\"\n            [attr.target]=\"links?.[1]?.target\"\n            (click)=\"openNewsletter()\"\n            class=\"m-news\"\n        >\n            <p class=\"m-texto\">{{ links?.[1]?.label || 'Newsletter' }}</p>\n            <svg\n                width=\"17\"\n                height=\"14\"\n                viewBox=\"0 0 17 14\"\n                fill=\"none\"\n                xmlns=\"http://www.w3.org/2000/svg\"\n            >\n                1\n                <path\n                    d=\"M14.1468 13.1362H2.3571C1.72719 13.1362 1.13518 12.8912 0.690543 12.4457C0.245063 12.0002 0 11.4082 0 10.7783V2.36635C0 2.35961 0 2.35204 0 2.3453C0.00336847 1.72045 0.248431 1.1335 0.690543 0.690543C1.13518 0.245063 1.72719 0 2.3571 0H14.1468C14.7767 0 15.3687 0.245063 15.8133 0.690543C16.2554 1.1335 16.5005 1.72045 16.5039 2.3453C16.5039 2.35204 16.5039 2.35961 16.5039 2.36635V10.7783C16.5039 11.4082 16.2588 12.0002 15.8133 12.4457C15.3687 12.8912 14.7767 13.1362 14.1468 13.1362ZM1.34655 3.61521V10.7774C1.34655 11.0435 1.45433 11.3038 1.64296 11.4915C1.83412 11.6827 2.0876 11.788 2.35792 11.788H14.1476C14.4128 11.788 14.6739 11.6802 14.8625 11.4915C15.0512 11.3038 15.159 11.0435 15.159 10.7774V3.61521L8.62668 7.96981C8.40099 8.12139 8.10538 8.12139 7.8797 7.96981L1.34655 3.61521ZM1.39959 2.03203L8.25193 6.60052L15.1043 2.03203C15.0546 1.88718 14.9729 1.75414 14.8617 1.64298C14.6731 1.45434 14.4129 1.34655 14.1468 1.34655H2.3571C2.08762 1.34655 1.8333 1.45182 1.64214 1.64298C1.53098 1.75414 1.44928 1.88718 1.39959 2.03203Z\"\n                    fill=\"white\"\n                />\n            </svg>\n        </a>\n        <!-- Whatsapp bottom:TODO: Revisar si se mantiene o se elimina\n        <a\n            [href]=\"getSocialUrl(1)\"\n            [linkType]=\"links?.[1]?.linkType\"\n            [attr.target]=\"links?.[1]?.target\"\n            class=\"m-whatsapp\"\n        >\n            <p class=\"m-texto\">{{ links?.[1]?.label || 'Whatsapp' }}</p>\n            <svg\n                width=\"18\"\n                height=\"18\"\n                viewBox=\"0 0 18 18\"\n                fill=\"none\"\n                xmlns=\"http://www.w3.org/2000/svg\"\n            >\n                <path\n                    d=\"M17.3824 8.67857C17.3852 6.36026 16.4844 4.18167 14.8472 2.54368C13.2113 0.906402 11.0327 0.00280837 8.71227 0C3.93102 0 0.0421256 3.8896 0.0421256 8.67015C0.0421256 10.1958 0.442319 11.6955 1.20058 13.0056L1.21532 13.0308L1.2076 13.0596L0 17.4716L4.54324 16.2801L4.56782 16.2935C5.83229 16.9836 7.26456 17.3494 8.71017 17.3494C13.49 17.3494 17.3796 13.4598 17.3824 8.67857ZM4.73843 14.8479L1.89916 15.5921L2.65742 12.8237L2.50086 12.5759C1.76647 11.4048 1.37821 10.0547 1.37821 8.67085C1.38032 4.62609 4.67313 1.33608 8.71789 1.33608C10.6753 1.33608 12.5169 2.09996 13.9036 3.4873C15.2902 4.87323 16.052 6.71552 16.0499 8.67577C16.0499 12.7212 12.7598 16.0126 8.71578 16.0126C7.39796 16.0126 6.10681 15.6588 4.97995 14.9897L4.73843 14.8479Z\"\n                    fill=\"white\"\n                />\n            </svg>\n        </a> -->\n    </div>\n</section>\n<div\n    class=\"mdl-modal\"\n    data-modal=\"idiomas\"\n    aria-hidden=\"true\"\n    (click)=\"onModalBackdropClick($event)\"\n>\n    <section\n        id=\"idiomas-form\"\n        class=\"mdl-idiomas\"\n        role=\"dialog\"\n        aria-modal=\"true\"\n        aria-labelledby=\"mdl-idiomas-title\"\n    >\n        <button\n            type=\"button\"\n            class=\"mdl-modal__close\"\n            data-lang-close\n            aria-label=\"Cerrar selector de idioma\"\n        >\n            <svg\n                width=\"14\"\n                height=\"13\"\n                viewBox=\"0 0 14 13\"\n                fill=\"none\"\n                xmlns=\"http://www.w3.org/2000/svg\"\n            >\n                <path\n                    d=\"M1.33677 0.739403C1.51937 0.55773 1.76696 0.455628 2.02454 0.456284C2.28202 0.456975 2.52861 0.560362 2.71024 0.742856L7.08546 5.14018L11.4344 0.740094C11.616 0.557565 11.8627 0.45426 12.1201 0.453522C12.3777 0.452865 12.6253 0.554968 12.8079 0.736641C12.9904 0.918282 13.0938 1.16484 13.0945 1.42234C13.0951 1.67992 12.993 1.92751 12.8114 2.11011L8.35259 6.59099L12.7409 11.0014C12.9226 11.184 13.0247 11.4317 13.0241 11.6892C13.0234 11.9467 12.9199 12.1933 12.7375 12.3749C12.5549 12.5566 12.3073 12.6587 12.0497 12.658C11.7922 12.6573 11.5456 12.554 11.364 12.3714L6.98948 7.97482L2.6405 12.3749C2.45885 12.5575 2.21164 12.6601 1.95411 12.6608C1.69663 12.6614 1.4496 12.5599 1.26702 12.3784C1.08449 12.1967 0.98118 11.9501 0.980453 11.6927C0.979797 11.4351 1.0819 11.1875 1.26357 11.0049L5.72097 6.52401L1.33332 2.11288C1.15177 1.93037 1.05033 1.68321 1.05089 1.42579C1.05154 1.16825 1.15422 0.921069 1.33677 0.739403Z\"\n                    fill=\"black\"\n                />\n            </svg>\n        </button>\n        <div class=\"m-title\" id=\"mdl-idiomas-title\">\n            {{ languages?.title || 'Idiomas' }}\n        </div>\n        <div class=\"mdl-container\">\n            <div class=\"m-buttons\">\n                @for (language of languageOptions; track $index) {\n                    <button\n                        class=\"m-button-sm underline\"\n                        [class.m-active]=\"isActiveLanguage(language.code)\"\n                        type=\"button\"\n                        (click)=\"onLanguageClick(language)\"\n                    >\n                        {{ language.name }}\n                    </button>\n                }\n            </div>\n        </div>\n    </section>\n</div>\n\n<section class=\"fake-hero\">\n    <div class=\"fake-motor\"></div>\n</section>\n","import { CommonModule } from '@angular/common';\nimport {\n    AfterViewInit,\n    Component,\n    ElementRef,\n    Input,\n    NgZone,\n    OnDestroy,\n    ViewChild,\n    ViewEncapsulation,\n} from '@angular/core';\nimport Swiper, { Autoplay, EffectFade, Navigation, Pagination } from 'swiper';\nimport { BabylonSwiperCssLoaderDirective } from '../../../../directives/babylon-sliders/babylon-swiper-css-loader.directive';\nimport { BabylonLinkTypeDirective } from '../../../../directives/link-type/link-type.directive';\nimport {\n    BabylonButtonI,\n    BabylonMultimediaI,\n    BabylonTextInfoI,\n} from '../../../../interfaces';\nimport { ComplexModuleSliderLContent } from './complex-module-slider-l-v2.interfaces';\nimport content from './content.json';\n\nconst defaultData: ComplexModuleSliderLContent =\n    content as ComplexModuleSliderLContent;\n\n@Component({\n    selector: 'complex-module-slider-l-v2',\n    standalone: true,\n    imports: [\n        CommonModule,\n        BabylonSwiperCssLoaderDirective,\n        BabylonLinkTypeDirective,\n    ],\n    templateUrl: './complex-module-slider-l-v2.component.html',\n    styleUrl: './complex-module-slider-l-v2.component.scss',\n    encapsulation: ViewEncapsulation.Emulated,\n})\nexport class ComplexModuleSliderLV2Component\n    implements AfterViewInit, OnDestroy\n{\n    private triedInit = false;\n    private _data: ComplexModuleSliderLContent = defaultData;\n    private sliderInitialized = false;\n    private swiperInstance?: Swiper;\n    currentSlide = 1;\n    totalSlides = this._data.info.slider.images.length;\n\n    @ViewChild('mediaSlider', { static: false })\n    mediaSlider?: ElementRef<HTMLElement>;\n    @ViewChild('sliderPrev', { static: false })\n    sliderPrev?: ElementRef<HTMLButtonElement>;\n    @ViewChild('sliderNext', { static: false })\n    sliderNext?: ElementRef<HTMLButtonElement>;\n    @ViewChild('sliderPagination', { static: false })\n    sliderPagination?: ElementRef<HTMLElement>;\n\n    @Input() multimedia?: BabylonMultimediaI;\n    @Input() texts?: BabylonTextInfoI;\n    @Input() nextButton?: string;\n    @Input() backButton?: string;\n    @Input() buttons?: BabylonButtonI[];\n    @Input() hideSmallImage?: boolean = false;\n\n    constructor(private readonly ngZone: NgZone) {}\n\n    @Input()\n    set data(value: ComplexModuleSliderLContent) {\n        this._data = value ?? defaultData;\n        this.totalSlides = this._data.info.slider.images.length;\n        this.currentSlide = Math.min(this.currentSlide, this.totalSlides) || 1;\n        if (this.sliderInitialized) {\n            this.destroySlider();\n            this.initSlider();\n        }\n    }\n\n    get data(): ComplexModuleSliderLContent {\n        return this._data;\n    }\n\n    ngAfterViewInit(): void {\n        this.initSlider();\n    }\n\n    ngAfterViewChecked(): void {\n        if (\n            !this.sliderInitialized &&\n            this.mediaSlider &&\n            (!this.isMultipleSlides() || (this.sliderPrev && this.sliderNext))\n        ) {\n            this.initSlider();\n        }\n    }\n\n    ngOnDestroy(): void {\n        this.destroySlider();\n    }\n\n    trackSlide(index: number): number {\n        return index;\n    }\n\n    formatCounter(value: number): string {\n        return value < 10 ? `0${value}` : `${value}`;\n    }\n\n    private isMultipleSlides(): boolean {\n        return (\n            Array.isArray(this.data.info.slider.images) &&\n            this.data.info.slider.images.length > 1\n        );\n    }\n\n    private initSlider(): void {\n        if (\n            this.sliderInitialized ||\n            typeof window === 'undefined' ||\n            !this.mediaSlider\n        ) {\n            return;\n        }\n\n        const sliderConfig = this.data.info.slider;\n        const maxSlidesPerView = Math.max(\n            sliderConfig.slidesPc,\n            sliderConfig.slidesLaptop,\n            sliderConfig.slidesTablet,\n            sliderConfig.slidesMobile\n        );\n        const hasMultipleSlides = sliderConfig.images.length > 1;\n        const shouldLoop =\n            hasMultipleSlides && sliderConfig.images.length > maxSlidesPerView;\n        const hasNavigation =\n            hasMultipleSlides &&\n            sliderConfig.showButtons &&\n            this.sliderPrev &&\n            this.sliderNext;\n        const hasPagination =\n            hasMultipleSlides && sliderConfig.showDots && this.sliderPagination;\n\n        this.totalSlides = sliderConfig.images.length;\n        // Solo bloquear si hay navegación y faltan los botones\n        if (hasNavigation && (!this.sliderPrev || !this.sliderNext)) {\n            return;\n        }\n\n        this.ngZone.runOutsideAngular(() => {\n            this.swiperInstance = new Swiper(this.mediaSlider!.nativeElement, {\n                modules: [Navigation, Pagination, Autoplay, EffectFade],\n                slidesPerView: sliderConfig.slidesMobile,\n                slidesPerGroup: sliderConfig.slidesMobile,\n                speed: 300,\n                loop: shouldLoop,\n                autoHeight: true,\n                effect: sliderConfig.fade ? 'fade' : 'slide',\n                fadeEffect: sliderConfig.fade ? { crossFade: true } : undefined,\n                autoplay: sliderConfig.autoplay\n                    ? {\n                          delay: 3000,\n                          disableOnInteraction: false,\n                      }\n                    : false,\n                navigation: hasNavigation\n                    ? {\n                          //addIcons: false,\n                          nextEl: this.sliderNext!.nativeElement,\n                          prevEl: this.sliderPrev!.nativeElement,\n                      }\n                    : false,\n                pagination: hasPagination\n                    ? {\n                          el: this.sliderPagination!.nativeElement,\n                          clickable: true,\n                      }\n                    : false,\n                breakpoints: {\n                    768: {\n                        slidesPerView: sliderConfig.slidesTablet,\n                        slidesPerGroup: sliderConfig.slidesTablet,\n                    },\n                    1280: {\n                        slidesPerView: sliderConfig.slidesLaptop,\n                        slidesPerGroup: sliderConfig.slidesLaptop,\n                    },\n                    1680: {\n                        slidesPerView: sliderConfig.slidesPc,\n                        slidesPerGroup: sliderConfig.slidesPc,\n                    },\n                },\n                on: {\n                    init: (swiper) => {\n                        this.ngZone.run(() => {\n                            this.totalSlides = sliderConfig.images.length;\n                            this.currentSlide = (swiper?.realIndex ?? 0) + 1;\n                        });\n                    },\n                    slideChange: (swiper) => {\n                        this.ngZone.run(() => {\n                            this.currentSlide = (swiper?.realIndex ?? 0) + 1;\n                        });\n                    },\n                },\n            });\n            this.sliderInitialized = true;\n        });\n    }\n\n    private destroySlider(): void {\n        if (!this.sliderInitialized || !this.swiperInstance) {\n            return;\n        }\n\n        this.swiperInstance.destroy(true, true);\n        this.swiperInstance = undefined;\n        this.sliderInitialized = false;\n    }\n}\n","  <section [attr.class]=\"data.sectionClass\">\n    <div class=\"big-wrapper\">\n      <div class=\"wrap-complex-module module-spacer\">\n        <div class=\"complex-module-box\">\n          <div class=\"complex-module-panoramic\">\n            <figure\n              class=\"complex-module-panoramic_img responsive-resize\"\n              role=\"img\"\n                [attr.aria-label]=\"multimedia?.imagenes?.[0]?.img?.alt ?? null\"\n                [attr.data-filename]=\"multimedia?.imagenes?.[0]?.img?.alt ?? null\"\n                [style.background-image]=\"'url(' + multimedia?.imagenes?.[0]?.img?.src + ')'\"\n            ></figure>\n             @if (multimedia?.imagenes?.[1]?.img?.src && !hideSmallImage) {\n              <div class=\"complex-module-snippet\">\n                <figure\n                  class=\"complex-module-snippet_img\"\n                  role=\"img\"\n                  [attr.aria-label]=\"multimedia?.imagenes?.[1]?.img?.alt ?? null\"\n                  [attr.data-lazyimg]=\"multimedia?.imagenes?.[1]?.img?.src ?? null\"\n                  [style.background-image]=\"'url(' + multimedia?.imagenes?.[1]?.img?.src + ')'\"\n                ></figure>\n              </div>\n            }\n          </div>\n          <div class=\"complex-module-info\">\n            <div class=\"wrap-complex-info\">\n               @if (texts?.pretitle) {\n                 <p class=\"complex-info-pretitle\" [innerHTML]=\"texts?.pretitle\"></p>\n               }\n               @if (texts?.title) {\n                <h2 class=\"complex-info-title\">{{ texts?.title }}</h2>\n               }\n               @if (multimedia && multimedia.imagenes && multimedia.imagenes.length > 1) {\n                <div\n                  class=\"complex-info-media js-active-slider\"\n                  [attr.data-slider_name]=\"data.info.slider.name\"\n                  [attr.data-slider_showbtns]=\"data.info.slider.showButtons\"\n                  [attr.data-slider_btns]=\"data.info.slider.buttonsClass\"\n                  [attr.data-slider_showdots]=\"data.info.slider.showDots\"\n                  [attr.data-slider_fade]=\"data.info.slider.fade\"\n                  [attr.data-slider_autoplay]=\"data.info.slider.autoplay\"\n                  [attr.data-slides_pc]=\"data.info.slider.slidesPc\"\n                  [attr.data-slides_laptop]=\"data.info.slider.slidesLaptop\"\n                  [attr.data-slides_tablet]=\"data.info.slider.slidesTablet\"\n                  [attr.data-slides_mobile]=\"data.info.slider.slidesMobile\"\n                >\n                  <div class=\"complex-info-media_arrows js-slider-arrows\">\n                      @if (data.info.slider.images.length > 1 && data.info.slider.showButtons) {\n                      <button\n                        class=\"swiper-btn swiper-arrow swiper-button-prev btn-slide-circle\"\n                        type=\"button\"\n                        aria-label=\"Anterior\"\n                        #sliderPrev\n                      ></button>\n                      <button\n                        class=\"swiper-btn swiper-arrow swiper-button-next btn-slide-circle\"\n                        type=\"button\"\n                        aria-label=\"Siguiente\"\n                        #sliderNext\n                      ></button>\n                    }\n                  </div>\n                  <div class=\"complex-info-media_counter counter\">\n                    <span class=\"counter-num actual\">{{ formatCounter(currentSlide) }}</span>\n                    <span class=\"counter-num total\">{{ formatCounter(totalSlides) }}</span>\n                  </div>\n                  <div class=\"js-complex-slider swiper\" #mediaSlider babylonSwiperCssLoader>\n                    <div class=\"swiper-wrapper\">\n                      @for (slide of multimedia?.imagenes?.slice(hideSmallImage ? 1 : 2); track trackSlide($index + (hideSmallImage ? 1 : 2))) {\n                        <div class=\"complex-info-media_element swiper-slide\">\n                          <figure\n                            class=\"complex-info-media_img responsive-resize\"\n                            role=\"img\"\n                            [attr.aria-label]=\"slide?.img?.alt ?? null\"\n                            [attr.data-filename]=\"slide?.img?.alt ?? null\"\n                            [attr.data-src]=\"slide?.img?.src ?? null\"\n                            [style.backgroundImage]=\"(slide?.img?.src || slide?.src) ? 'url(' + (slide?.img?.src || slide?.src) + ')' : null\"\n                          ></figure>\n                        </div>\n                      }\n                    </div>\n                    @if (multimedia?.imagenes && multimedia?.imagenes?.length && data?.info && data.info.slider && data.info.slider.showDots) {\n                      <div class=\"swiper-pagination\" #sliderPagination></div>\n                    }\n                  </div>\n                </div>\n              }\n              <div class=\"complex-info-wrapper\">\n                @if (texts?.description) {\n                  <p class=\"complex-info-text\" [innerHTML]=\"texts?.description\"></p>\n                }\n                @if (buttons?.length && buttons?.[0]?.url) {\n                  <div class=\"complex-info-btn btn-corp\">\n                    <a [href]=\"buttons?.[0]?.url\"\n                       [linkType]=\"buttons?.[0]?.linkType\"\n                       class=\"btn-corp-text\">\n                        {{ buttons?.[0]?.label }}</a>\n                  </div>\n                }\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </section>\n","import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n    AfterViewInit,\n    ChangeDetectorRef,\n    Component,\n    ElementRef,\n    inject,\n    Input,\n    NgZone,\n    OnChanges,\n    OnDestroy,\n    OnInit,\n    PLATFORM_ID,\n    SimpleChanges,\n    ViewChild,\n    ViewEncapsulation,\n} from '@angular/core';\nimport Swiper, { Autoplay, EffectFade, Navigation, Pagination } from 'swiper';\nimport { BabylonLinkTypeDirective } from '../../../../directives/link-type/link-type.directive';\nimport { BabylonSwiperCssLoaderDirective } from '../../../../directives/babylon-sliders/babylon-swiper-css-loader.directive';\nimport {\n  BabylonButtonI,\n    BabylonImageI,\n    BabylonItemI,\n    BabylonMultimediaI,\n    BabylonTextInfoI,\n} from '../../../../interfaces';\nimport {\n    SliC2ImgTxtRV2Content,\n    SliC2ImgTxtRV2Slide,\n} from './sli-c2-img-txt-r-v2.interfaces';\n\nconst defaultData: SliC2ImgTxtRV2Content = {\n    sectionClass: 'section-gallery info-right module-spacer',\n    wrapperClass: 'big-wrapper',\n    header: {\n        title: '',\n    },\n    slider: {\n        name: 'js-section-slider',\n        showButtons: true,\n        buttonsClass: 'btn-slide-circle',\n        showDots: false,\n        fade: true,\n        autoplay: true,\n        slidesPc: 1,\n        slidesLaptop: 1,\n        slidesTablet: 1,\n        slidesMobile: 1,\n    },\n    media: {\n        slides: [\n            {\n                backgroundImage: '',\n                ariaLabel: '',\n                dataFilename: '',\n                dataLazyimg: '',\n            },\n        ],\n    },\n    info: {\n        subtitle: '',\n        title: '',\n        text: '',\n    },\n};\n\n@Component({\n    selector: 'sli-c2-img-txt-r-v2',\n    standalone: true,\n    imports: [CommonModule, BabylonSwiperCssLoaderDirective, BabylonLinkTypeDirective],\n    templateUrl: './sli-c2-img-txt-r-v2.component.html',\n    styleUrl: './sli-c2-img-txt-r-v2.component.scss',\n    encapsulation: ViewEncapsulation.Emulated,\n})\nexport class SliC2ImgTxtRV2Component\n\n    implements OnInit, AfterViewInit, OnChanges, OnDestroy\n{\n    private _data: SliC2ImgTxtRV2Content = defaultData;\n    private sliderInitialized = false;\n    private viewInitialized = false;\n    private swiperInstance?: Swiper;\n    private readonly platformId = inject(PLATFORM_ID);\n    currentSlide = 1;\n    totalSlides = this._data.media.slides.length;\n    activeTexts?: BabylonTextInfoI;\n\n    @Input() texts?: BabylonTextInfoI;\n    @Input() items?: BabylonItemI[];\n    @Input() nohover?: boolean = false;\n    @Input() multimedia?: BabylonMultimediaI;\n    @Input() buttons?: BabylonButtonI[];\n\n    @ViewChild('sectionSlider', { static: false })\n    sectionSlider?: ElementRef<HTMLElement>;\n    @ViewChild('sliderPrev', { static: false })\n    sliderPrev?: ElementRef<HTMLButtonElement>;\n    @ViewChild('sliderNext', { static: false })\n    sliderNext?: ElementRef<HTMLButtonElement>;\n    @ViewChild('sliderPagination', { static: false })\n    sliderPagination?: ElementRef<HTMLElement>;\n\n    constructor(\n        private readonly ngZone: NgZone,\n        private readonly cdr: ChangeDetectorRef\n    ) {}\n\n    @Input()\n    set data(value: SliC2ImgTxtRV2Content) {\n        this._data = value ?? defaultData;\n        this.syncSlidesState();\n        if (this.sliderInitialized) {\n            this.destroySlider();\n            this.initSlider();\n        }\n    }\n\n    get data(): SliC2ImgTxtRV2Content {\n        return this._data;\n    }\n\n\n    get hasValidSlides(): boolean {\n        return Array.isArray(this.slides) && this.slides.some(slide => !!(slide?.dataLazyimg || slide?.backgroundImage));\n    }\n\n    get slides(): SliC2ImgTxtRV2Slide[] {\n        const multimediaSlides = this.mapMultimediaToSlides(\n            this.multimedia?.imagenes\n        );\n        if (multimediaSlides.length > 0) {\n            return multimediaSlides;\n        }\n\n        const itemSlides = this.mapItemsToSlides(this.items);\n        if (itemSlides.length > 0) {\n            return itemSlides;\n        }\n\n        return this.data.media.slides ?? [];\n    }\n\n    ngOnInit(): void {\n        this.syncSlidesState();\n        this.updateActiveTexts();\n        this.logDebug('ngOnInit', {\n            multimediaImages: this.multimedia?.imagenes?.length ?? 0,\n            items: this.items?.length ?? 0,\n            fallbackSlides: this.data?.media?.slides?.length ?? 0,\n        });\n    }\n\n    ngAfterViewInit(): void {\n        this.viewInitialized = true;\n        this.syncSlidesState();\n        this.updateActiveTexts();\n        this.initSlider();\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        const shouldRefresh =\n            !!changes['multimedia'] || !!changes['items'] || !!changes['data'];\n        if (!shouldRefresh) {\n            return;\n        }\n\n        this.syncSlidesState();\n        this.updateActiveTexts();\n        this.logDebug('ngOnChanges', {\n            multimediaChanged: !!changes['multimedia'],\n            itemsChanged: !!changes['items'],\n            dataChanged: !!changes['data'],\n            slides: this.slides.length,\n        });\n\n        if (this.viewInitialized && isPlatformBrowser(this.platformId)) {\n            this.destroySlider();\n            this.initSlider();\n        }\n    }\n\n    ngOnDestroy(): void {\n        this.destroySlider();\n    }\n\n    trackSlide(index: number): number {\n        return index;\n    }\n\n    formatCounter(value: number): string {\n        return value < 10 ? `0${value}` : `${value}`;\n    }\n\n    backgroundImage(slide: SliC2ImgTxtRV2Slide): string {\n        const imageUrl = slide.dataLazyimg || slide.backgroundImage;\n        return `url(${imageUrl})`;\n    }\n\n    private initSlider(): void {\n        if (\n            this.sliderInitialized ||\n            typeof window === 'undefined' ||\n            !this.sectionSlider\n        ) {\n            return;\n        }\n\n        queueMicrotask(() => {\n            if (this.sliderInitialized || !this.sectionSlider) {\n                return;\n            }\n\n            const slides = this.slides;\n            if (slides.length === 0) {\n                this.logDebug('initSlider skipped: no slides');\n                return;\n            }\n\n            const domSlides =\n                this.sectionSlider.nativeElement.querySelectorAll(\n                    '.swiper-slide'\n                ).length;\n            if (domSlides === 0) {\n                this.logDebug('initSlider skipped: DOM slides not ready');\n                return;\n            }\n\n            this.logDebug('initSlider', { slides: slides.length, domSlides });\n            const sliderConfig = this.data.slider;\n            const maxSlidesPerView = Math.max(\n                sliderConfig.slidesPc,\n                sliderConfig.slidesLaptop,\n                sliderConfig.slidesTablet,\n                sliderConfig.slidesMobile\n            );\n            const hasMultipleSlides = slides.length > 1;\n            const shouldLoop =\n                hasMultipleSlides && slides.length > maxSlidesPerView;\n            const hasNavigation =\n                hasMultipleSlides &&\n                sliderConfig.showButtons &&\n                this.sliderPrev &&\n                this.sliderNext;\n            const hasPagination =\n                hasMultipleSlides &&\n                sliderConfig.showDots &&\n                this.sliderPagination;\n\n            this.totalSlides = slides.length;\n\n            this.ngZone.runOutsideAngular(() => {\n                this.swiperInstance = new Swiper(\n                    this.sectionSlider!.nativeElement,\n                    {\n                        modules: [Navigation, Pagination, Autoplay, EffectFade],\n                        slidesPerView: sliderConfig.slidesMobile,\n                        slidesPerGroup: sliderConfig.slidesMobile,\n                        speed: 300,\n                        loop: shouldLoop,\n                        autoHeight: true,\n                        effect: 'slide',\n                        fadeEffect: sliderConfig.fade\n                            ? { crossFade: true }\n                            : undefined,\n                        autoplay: sliderConfig.autoplay\n                            ? {\n                                  delay: 3000,\n                                  disableOnInteraction: false,\n                              }\n                            : false,\n                        navigation: hasNavigation\n                            ? {\n                                  nextEl: this.sliderNext!.nativeElement,\n                                  prevEl: this.sliderPrev!.nativeElement,\n                              }\n                            : false,\n                        pagination: hasPagination\n                            ? {\n                                  el: this.sliderPagination!.nativeElement,\n                                  clickable: true,\n                              }\n                            : false,\n                        breakpoints: {\n                            768: {\n                                slidesPerView: sliderConfig.slidesTablet,\n                                slidesPerGroup: sliderConfig.slidesTablet,\n                            },\n                            1280: {\n                                slidesPerView: sliderConfig.slidesLaptop,\n                                slidesPerGroup: sliderConfig.slidesLaptop,\n                            },\n                            1680: {\n                                slidesPerView: sliderConfig.slidesPc,\n                                slidesPerGroup: sliderConfig.slidesPc,\n                            },\n                        },\n                        on: {\n                            init: (swiper) => {\n                                this.ngZone.run(() => {\n                                    this.totalSlides = this.slides.length;\n                                    const activeIndex = swiper?.realIndex ?? 0;\n                                    this.currentSlide = activeIndex + 1;\n                                    this.updateActiveTexts(activeIndex);\n                                    this.cdr.detectChanges();\n                                });\n                            },\n                            slideChange: (swiper) => {\n                                this.ngZone.run(() => {\n                                    const activeIndex = swiper?.realIndex ?? 0;\n                                    this.currentSlide = activeIndex + 1;\n                                    this.updateActiveTexts(activeIndex);\n                                    this.cdr.detectChanges();\n                                });\n                            },\n                        },\n                    }\n                );\n                this.sliderInitialized = true;\n            });\n        });\n    }\n\n    private destroySlider(): void {\n        if (!this.sliderInitialized || !this.swiperInstance) {\n            return;\n        }\n\n        this.swiperInstance.destroy(true, true);\n        this.swiperInstance = undefined;\n        this.sliderInitialized = false;\n    }\n\n    private syncSlidesState(): void {\n        this.totalSlides = this.slides.length;\n        this.currentSlide = Math.min(this.currentSlide, this.totalSlides) || 1;\n    }\n\n    private mapMultimediaToSlides(\n        images?: BabylonImageI[]\n    ): SliC2ImgTxtRV2Slide[] {\n        if (!Array.isArray(images)) {\n            return [];\n        }\n\n        return images.reduce<SliC2ImgTxtRV2Slide[]>((acc, image) => {\n            const src = this.resolveImageSrc(image);\n            const alt = image?.img?.alt ?? image?.alt ?? '';\n            if (!src) {\n                return acc;\n            }\n\n            acc.push({\n                backgroundImage: src,\n                ariaLabel: alt,\n                dataFilename: alt,\n                dataLazyimg: src,\n                texts: this.extractTextsFromImage(image),\n            });\n            return acc;\n        }, []);\n    }\n\n    private mapItemsToSlides(\n        items?: BabylonItemI[] | BabylonImageI[]\n    ): SliC2ImgTxtRV2Slide[] {\n        if (!Array.isArray(items) || items.length === 0) {\n            return [];\n        }\n\n        const first = items[0] as BabylonItemI & BabylonImageI;\n        if ((first as BabylonItemI)?.multimedia?.imagenes?.length) {\n            return (items as BabylonItemI[]).flatMap((item) =>\n                this.mapMultimediaToSlides(item?.multimedia?.imagenes)\n            );\n        }\n\n        return this.mapMultimediaToSlides(items as BabylonImageI[]);\n    }\n\n    private resolveImageSrc(image: any): string {\n        const rawSrc =\n            image?.img?.src ??\n            image?.src ??\n            image?.path?.webp ??\n            image?.path?.original ??\n            image?.thumbnails?.[1366]?.webp ??\n            image?.thumbnails?.[1280]?.webp ??\n            image?.thumbnails?.[1024]?.webp ??\n            '';\n\n        if (!rawSrc || typeof rawSrc !== 'string') {\n            return '';\n        }\n\n        if (\n            rawSrc.startsWith('http://') ||\n            rawSrc.startsWith('https://') ||\n            rawSrc.startsWith('//') ||\n            rawSrc.startsWith('data:') ||\n            rawSrc.startsWith('blob:') ||\n            rawSrc.startsWith('/')\n        ) {\n            return rawSrc;\n        }\n\n        return `/${rawSrc}`;\n    }\n\n    private updateActiveTexts(activeIndex?: number): void {\n        const slides = this.slides;\n        if (slides.length === 0) {\n            this.activeTexts = this.texts;\n            return;\n        }\n\n        const index =\n            typeof activeIndex === 'number'\n                ? activeIndex\n                : Math.max(\n                      0,\n                      Math.min(this.currentSlide - 1, slides.length - 1)\n                  );\n        const slideTexts = slides[index]?.texts;\n        this.activeTexts = this.hasAnyText(slideTexts)\n            ? slideTexts\n            : this.texts;\n    }\n\n    private hasAnyText(texts?: BabylonTextInfoI): boolean {\n        if (!texts) {\n            return false;\n        }\n\n        return Boolean(\n            texts.pretitle ||\n            texts.subtitle ||\n            texts.title ||\n            texts.description ||\n            texts.text\n        );\n    }\n\n    private extractTextsFromImage(\n        image: BabylonImageI\n    ): BabylonTextInfoI | undefined {\n        const pretitle =\n            image?.pretitle ??\n            image?.ndPretitle ??\n            (image as any)?.nd_pretitle ??\n            '';\n        const subtitle =\n            image?.subtitle ??\n            image?.ndSubtitle ??\n            (image as any)?.nd_subtitle ??\n            '';\n        const title =\n            image?.title ?? image?.ndTitle ?? (image as any)?.nd_title ?? '';\n        const description = image?.description ?? '';\n\n        const texts: BabylonTextInfoI = {\n            subtitle: subtitle || pretitle || '',\n            title,\n            description,\n        };\n\n        return this.hasAnyText(texts) ? texts : undefined;\n    }\n\n    private logDebug(message: string, payload?: unknown): void {\n        // Debug temporal para verificar ciclo de vida y entrada de datos del slider.\n        console.log('[SliC2ImgTxtRV2]', message, payload ?? '');\n    }\n}\n","<section [attr.class]=\"data.sectionClass\"  *ngIf=\"hasValidSlides\">\n  <div [attr.class]=\"data.wrapperClass\">\n\n    <div class=\"wrap-section-gallery\">\n      <div class=\"section-gallery-content js-active-slider\" [attr.data-slider_name]=\"data.slider.name\"\n        [attr.data-slider_showbtns]=\"data.slider.showButtons\" [attr.data-slider_btns]=\"data.slider.buttonsClass\"\n        [attr.data-slider_showdots]=\"data.slider.showDots\" [attr.data-slider_fade]=\"data.slider.fade\"\n        [attr.data-slider_autoplay]=\"data.slider.autoplay\" [attr.data-slides_pc]=\"data.slider.slidesPc\"\n        [attr.data-slides_laptop]=\"data.slider.slidesLaptop\" [attr.data-slides_tablet]=\"data.slider.slidesTablet\"\n        [attr.data-slides_mobile]=\"data.slider.slidesMobile\">\n        <div class=\"wrap-gallery-content\">\n          <div class=\"section-slider-arrows js-slider-arrows m-botonesarrow\">\n            @if (slides.length > 1 && data.slider.showButtons) {\n              <div class=\"complex-info-media_counter counter m-counter\">\n                <span class=\"counter-num actual\">{{ formatCounter(currentSlide) }}</span>\n                <span class=\"counter-num total\">{{ formatCounter(totalSlides) }}</span>\n              </div>\n              <button class=\"swiper-btn swiper-arrow swiper-button-prev\" [ngClass]=\"data.slider.buttonsClass\"\n                type=\"button\" aria-label=\"Anterior\" #sliderPrev></button>\n              <button class=\"swiper-btn swiper-arrow swiper-button-next\" [ngClass]=\"data.slider.buttonsClass\"\n                type=\"button\" aria-label=\"Siguiente\" #sliderNext></button>\n            }\n          </div>\n          <div class=\"gallery-content-element\">\n            <div class=\"gallery-content-multimedia\">\n              <div class=\"wrap-content-multimedia\">\n                <div class=\"content-multimedia-photos js-section-slider swiper\" #sectionSlider babylonSwiperCssLoader>\n                  <div class=\"swiper-wrapper\" style=\"display: flex;\">\n                    @for (slide of slides; track trackSlide($index)) {\n                    <div class=\"multimedia-photos-element swiper-slide\" style=\"flex-shrink: 0;\">\n                      <div class=\"wrap-photos-element js-section-arrows-zone\">\n                        <figure class=\"photos-element-img responsive-resize\" role=\"img\"\n                          [attr.aria-label]=\"slide.ariaLabel || null\" [attr.data-filename]=\"slide.dataFilename\"\n                          [attr.data-src]=\"slide.dataLazyimg\" [style.backgroundImage]=\"backgroundImage(slide)\"></figure>\n                      </div>\n                    </div>\n                    }\n                  </div>\n                  @if (slides.length > 1 && data.slider.showDots) {\n                  <div class=\"swiper-pagination\" #sliderPagination></div>\n                  }\n                </div>\n              </div>\n            </div>\n            <div class=\"gallery-content-info\">\n              <div class=\"wrap-content-info\">\n                <div class=\"content-info-box\">\n                  <div class=\"wrap-info-box\">\n                    @if (activeTexts?.subtitle) {\n                    <p class=\"info-box-subtitle\">{{ activeTexts?.subtitle }}</p>\n                    }\n                    @if (activeTexts?.title) {\n                    <h2 class=\"info-box-title\">{{ activeTexts?.title }}</h2>\n                    }\n                    @if (activeTexts?.description) {\n                    <p class=\"info-box-text\">{{ activeTexts?.description }}</p>\n\n                    }\n                    @if( buttons?.length && buttons?.[0]?.url) {\n                      <a\n                            class=\"m-buttonD\"\n                            [href]=\"buttons?.[0]?.url\"\n                            [linkType]=\"buttons?.[0]?.linkType\"\n                            [attr.target]=\"buttons?.[0]?.target || '_self'\"\n                            [attr.rel]=\"\n                                (buttons?.[0]?.target || '_self') === '_blank'\n                                    ? 'noopener noreferrer'\n                                    : null\n                            \"\n                            [attr.aria-label]=\"buttons?.[0]?.label\"\n                        >\n                            {{ buttons?.[0]?.label }}\n                        </a>\n\n                    }\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</section>\n","import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  inject,\n  Input,\n  NgZone,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  PLATFORM_ID,\n  SimpleChanges,\n  ViewChild,\n  ViewEncapsulation\n} from '@angular/core';\nimport Swiper from 'swiper';\nimport { Autoplay, Navigation } from 'swiper';\nimport { BabylonSwiperCssLoaderDirective } from '../../../../directives/babylon-sliders/babylon-swiper-css-loader.directive';\nimport { BabylonLinkTypeDirective } from '../../../../directives/link-type/link-type.directive';\nimport { BabylonButtonI, BabylonItemI, BabylonTextInfoI } from '../../../../interfaces';\nimport {\n  SliC2ImgTxtV2Action,\n  SliC2ImgTxtV2Button,\n  SliC2ImgTxtV2Image,\n  SliC2ImgTxtV2Multimedia,\n  SliC2ImgTxtV2Slide\n} from './sli-c2-img-txt-v2.interfaces';\n\n@Component({\n  selector: 'sli-c2-img-txt-v2',\n  standalone: true,\n  imports: [CommonModule, BabylonSwiperCssLoaderDirective, BabylonLinkTypeDirective],\n  templateUrl: './sli-c2-img-txt-v2.component.html',\n  styleUrl: './sli-c2-img-txt-v2.component.scss',\n  encapsulation: ViewEncapsulation.Emulated\n})\nexport class SliC2ImgTxtV2Component implements OnInit, AfterViewInit, OnChanges, OnDestroy {\n  private sliderInitialized = false;\n  private viewInitialized = false;\n  private swiperInstance?: Swiper;\n  private readonly platformId = inject(PLATFORM_ID);\n  private initAttempts = 0;\n  private readonly maxInitAttempts = 8;\n\n  currentSlide = 1;\n  totalSlides = 0;\n\n  @Input() texts?: BabylonTextInfoI;\n  @Input() items?: BabylonItemI[];\n  @Input() multimedia?: SliC2ImgTxtV2Multimedia;\n\n  @ViewChild('sectionSlider', { static: false }) sectionSlider?: ElementRef<HTMLElement>;\n  @ViewChild('sliderPrev', { static: false }) sliderPrev?: ElementRef<HTMLButtonElement>;\n  @ViewChild('sliderNext', { static: false }) sliderNext?: ElementRef<HTMLButtonElement>;\n\n  constructor(\n    private readonly ngZone: NgZone,\n    private readonly cdr: ChangeDetectorRef\n  ) {}\n\n  get slides(): SliC2ImgTxtV2Slide[] {\n    return this.mapMultimediaToSlides(this.getSourceMultimedia());\n  }\n\n  ngOnInit(): void {\n    this.logDebug('ngOnInit input snapshot', {\n      hasMultimediaInput: !!this.multimedia,\n      itemsLength: this.items?.length ?? 0,\n      texts: this.texts\n    });\n    this.syncSlidesState();\n  }\n\n  ngAfterViewInit(): void {\n    this.viewInitialized = true;\n    this.logDebug('ngAfterViewInit');\n    this.syncSlidesState();\n    this.initSlider();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    const shouldRefresh = !!changes['multimedia'] || !!changes['items'] || !!changes['texts'];\n    if (!shouldRefresh) {\n      return;\n    }\n\n    this.logDebug('ngOnChanges', {\n      multimediaChanged: !!changes['multimedia'],\n      itemsChanged: !!changes['items'],\n      textsChanged: !!changes['texts'],\n      multimediaValue: this.multimedia,\n      itemsLength: this.items?.length ?? 0\n    });\n    this.syncSlidesState();\n\n    if (this.viewInitialized && isPlatformBrowser(this.platformId)) {\n      this.destroySlider();\n      this.initSlider();\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.destroySlider();\n  }\n\n  trackSlide(index: number): number {\n    return index;\n  }\n\n  private initSlider(): void {\n    const slides = this.slides;\n\n    if (this.sliderInitialized || typeof window === 'undefined' || !this.sectionSlider) {\n      this.logDebug('initSlider skipped', {\n        sliderInitialized: this.sliderInitialized,\n        hasWindow: typeof window !== 'undefined',\n        hasSectionSlider: !!this.sectionSlider,\n        slidesLength: slides.length,\n        initAttempts: this.initAttempts\n      });\n\n      // Si hay slides pero el ViewChild aún no está disponible, reintentamos.\n      if (!this.sliderInitialized && typeof window !== 'undefined' && slides.length > 0 && !this.sectionSlider && this.initAttempts < this.maxInitAttempts) {\n        this.initAttempts += 1;\n        setTimeout(() => this.initSlider(), 50);\n      }\n      return;\n    }\n\n    queueMicrotask(() => {\n      if (this.sliderInitialized || !this.sectionSlider) {\n        this.logDebug('initSlider microtask skipped', {\n          sliderInitialized: this.sliderInitialized,\n          hasSectionSlider: !!this.sectionSlider\n        });\n        return;\n      }\n\n      if (slides.length === 0) {\n        this.logDebug('initSlider skipped: no slides', {\n          multimedia: this.getSourceMultimedia()\n        });\n        return;\n      }\n\n      const domSlides = this.sectionSlider.nativeElement.querySelectorAll('.swiper-slide').length;\n      if (domSlides === 0) {\n        this.logDebug('initSlider skipped: domSlides=0');\n        return;\n      }\n\n      const hasMultipleSlides = slides.length > 1;\n      const hasNavigation = hasMultipleSlides && this.sliderPrev && this.sliderNext;\n      this.totalSlides = slides.length;\n      this.logDebug('initSlider start', {\n        slidesLength: slides.length,\n        domSlides,\n        hasMultipleSlides,\n        hasNavigation: !!hasNavigation\n      });\n\n      this.ngZone.runOutsideAngular(() => {\n        this.swiperInstance = new Swiper(this.sectionSlider!.nativeElement, {\n          modules: [Navigation, Autoplay],\n          slidesPerView: 1,\n          slidesPerGroup: 1,\n          speed: 400,\n          loop: hasMultipleSlides,\n          autoplay: hasMultipleSlides\n            ? {\n                delay: 3000,\n                disableOnInteraction: false\n              }\n            : false,\n          navigation: hasNavigation\n            ? {\n                nextEl: this.sliderNext!.nativeElement,\n                prevEl: this.sliderPrev!.nativeElement\n              }\n            : false,\n          on: {\n            init: (swiper) => {\n              this.ngZone.run(() => {\n                this.totalSlides = this.slides.length;\n                this.currentSlide = (swiper?.realIndex ?? 0) + 1;\n                this.logDebug('swiper init', {\n                  realIndex: swiper?.realIndex,\n                  totalSlides: this.totalSlides\n                });\n                this.cdr.detectChanges();\n              });\n            },\n            slideChange: (swiper) => {\n              this.ngZone.run(() => {\n                this.currentSlide = (swiper?.realIndex ?? 0) + 1;\n                this.logDebug('swiper slideChange', {\n                  realIndex: swiper?.realIndex,\n                  currentSlide: this.currentSlide\n                });\n                this.cdr.detectChanges();\n              });\n            }\n          }\n        });\n\n        this.sliderInitialized = true;\n        this.initAttempts = 0;\n        this.logDebug('initSlider done');\n      });\n    });\n  }\n\n  private destroySlider(): void {\n    if (!this.sliderInitialized || !this.swiperInstance) {\n      return;\n    }\n\n    this.logDebug('destroySlider');\n    this.swiperInstance.destroy(true, true);\n    this.swiperInstance = undefined;\n    this.sliderInitialized = false;\n  }\n\n  private syncSlidesState(): void {\n    this.totalSlides = this.slides.length;\n    this.currentSlide = Math.min(this.currentSlide, this.totalSlides) || 1;\n    this.logDebug('syncSlidesState', {\n      totalSlides: this.totalSlides,\n      currentSlide: this.currentSlide\n    });\n  }\n\n  private getSourceMultimedia(): SliC2ImgTxtV2Multimedia | undefined {\n    if (this.multimedia) {\n      this.logDebug('getSourceMultimedia from @Input multimedia', {\n        contextLength: this.multimedia.imagenescontext?.length ?? 0,\n        smallLength: this.multimedia.imagenespequeas?.length ?? 0\n      });\n      return this.multimedia;\n    }\n\n    const itemWithMultimedia = this.items?.find((item: any) => !!item?.multimedia || !!item?.props?.multimedia);\n    const resolved = this.extractMultimediaFromSource(itemWithMultimedia);\n    this.logDebug('getSourceMultimedia from items', {\n      hasItemWithMultimedia: !!itemWithMultimedia,\n      contextLength: resolved?.imagenescontext?.length ?? 0,\n      smallLength: resolved?.imagenespequeas?.length ?? 0,\n      resolvedKeys: resolved ? Object.keys(resolved) : []\n    });\n    return resolved;\n  }\n\n  private mapMultimediaToSlides(multimedia?: SliC2ImgTxtV2Multimedia): SliC2ImgTxtV2Slide[] {\n    const contextImages = Array.isArray(multimedia?.imagenescontext) ? multimedia?.imagenescontext ?? [] : [];\n    const smallImages = Array.isArray(multimedia?.imagenespequeas) ? multimedia?.imagenespequeas ?? [] : [];\n    this.logDebug('mapMultimediaToSlides input', {\n      contextLength: contextImages.length,\n      smallLength: smallImages.length\n    });\n\n    return contextImages.reduce<SliC2ImgTxtV2Slide[]>((acc, contextImage, index) => {\n      const bigSrc = this.resolveImageSrc(contextImage);\n      if (!bigSrc) {\n        this.logDebug('slide skipped: no big image src', { index, contextImage });\n        return acc;\n      }\n\n      const smallImage = smallImages[index];\n      const smallSrc = this.resolveImageSrc(smallImage);\n      const texts = this.extractTexts(contextImage);\n\n      acc.push({\n        texts,\n        bigImage: {\n          src: bigSrc,\n          alt: contextImage?.img?.alt ?? contextImage?.alt ?? texts.title ?? ''\n        },\n        smallImage: smallSrc\n          ? {\n              src: smallSrc,\n              alt: smallImage?.img?.alt ?? smallImage?.alt ?? texts.title ?? ''\n            }\n          : undefined,\n        button: this.extractButton(contextImage?.buttons),\n        reverse: index % 2 === 0\n      });\n\n      return acc;\n    }, []);\n  }\n\n  private extractTexts(image?: SliC2ImgTxtV2Image): BabylonTextInfoI {\n    return {\n      pretitle: image?.pretitle ?? image?.ndPretitle ?? image?.nd_pretitle ?? this.texts?.pretitle ?? '',\n      subtitle: image?.subtitle ?? image?.ndSubtitle ?? image?.nd_subtitle ?? this.texts?.subtitle ?? '',\n      title: image?.title ?? image?.ndTitle ?? image?.nd_title ?? this.texts?.title ?? '',\n      description: image?.description ?? this.texts?.description ?? ''\n    };\n  }\n\n  private extractButton(buttons?: Array<SliC2ImgTxtV2Button | BabylonButtonI>): SliC2ImgTxtV2Action | undefined {\n    if (!Array.isArray(buttons) || buttons.length === 0) {\n      return undefined;\n    }\n\n    const button = buttons[0] as SliC2ImgTxtV2Button;\n    const label = button?.label?.trim();\n    if (!label) {\n      return undefined;\n    }\n\n    return {\n      label,\n      href: button?.url ?? button?.link_value ?? button?.linkValue ?? '#',\n      linkType: button?.linkType ?? button?.link_type ?? 'external_link',\n      target: button?.target ?? '_self'\n    };\n  }\n\n  private resolveImageSrc(image?: SliC2ImgTxtV2Image): string {\n    const rawSrc =\n      image?.img?.src ??\n      image?.src ??\n      image?.path?.webp ??\n      image?.path?.original ??\n      image?.thumbnails?.[1366]?.webp ??\n      image?.thumbnails?.[1280]?.webp ??\n      image?.thumbnails?.[1024]?.webp ??\n      '';\n\n    if (!rawSrc || typeof rawSrc !== 'string') {\n      return '';\n    }\n\n    if (\n      rawSrc.startsWith('http://') ||\n      rawSrc.startsWith('https://') ||\n      rawSrc.startsWith('//') ||\n      rawSrc.startsWith('data:') ||\n      rawSrc.startsWith('blob:') ||\n      rawSrc.startsWith('/')\n    ) {\n      return rawSrc;\n    }\n\n    return `/${rawSrc}`;\n  }\n\n  private logDebug(message: string, payload?: unknown): void {\n    void message;\n    void payload;\n  }\n\n  private extractMultimediaFromSource(source: any): SliC2ImgTxtV2Multimedia | undefined {\n    if (!source) {\n      return undefined;\n    }\n\n    return (source?.multimedia ?? source?.props?.multimedia) as SliC2ImgTxtV2Multimedia | undefined;\n  }\n}\n","@if (slides.length > 0) {\n  <section class=\"mdl-SliC2ImgTxtV2\">\n    <div class=\"mdl-container\">\n      <div class=\"swiper\" #sectionSlider babylonSwiperCssLoader>\n        <div class=\"swiper-wrapper\">\n          @for (slide of slides; track trackSlide($index)) {\n            <div class=\"swiper-slide\" [class.reverse]=\"slide.reverse\">\n              <div class=\"m-left\">\n                @if (slide.texts.title) {\n                  <div class=\"m-titulo\" [innerHTML]=\"slide.texts.title\"></div>\n                }\n                <div class=\"m-content\">\n                  @if (slide.texts.subtitle) {\n                    <div class=\"m-subtitulo\" [innerHTML]=\"slide.texts.subtitle\"></div>\n                  }\n                  @if (slide.texts.description) {\n                    <div class=\"m-texto\" [innerHTML]=\"slide.texts.description\"></div>\n                  }\n                  @if (slide.button; as button) {\n                    <a\n                      class=\"m-buttonD\"\n                      [href]=\"button.href\"\n                      [linkType]=\"button.linkType\"\n                      [attr.target]=\"button.target\"\n                      [attr.rel]=\"button.target === '_blank' ? 'noopener noreferrer' : null\"\n                      [attr.aria-label]=\"button.label\"\n                    >\n                      {{ button.label }}\n                    </a>\n                  }\n                </div>\n              </div>\n              <div class=\"m-right\">\n                <div class=\"m-bigimage\">\n                  <img [src]=\"slide.bigImage.src\" [alt]=\"slide.bigImage.alt\" loading=\"lazy\" />\n                </div>\n                @if (slide.smallImage) {\n                  <div class=\"m-smallimage\">\n                    <img [src]=\"slide.smallImage.src\" [alt]=\"slide.smallImage.alt\" loading=\"lazy\" />\n                  </div>\n                }\n              </div>\n            </div>\n          }\n        </div>\n        @if (slides.length > 1) {\n          <button class=\"swiper-button-prev\" type=\"button\" aria-label=\"Anterior\" #sliderPrev></button>\n          <button class=\"swiper-button-next\" type=\"button\" aria-label=\"Siguiente\" #sliderNext></button>\n        }\n      </div>\n    </div>\n  </section>\n}\n","import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n  AfterViewInit,\n  Component,\n  ElementRef,\n  inject,\n  Input,\n  NgZone,\n  OnChanges,\n  OnInit,\n  OnDestroy,\n  PLATFORM_ID,\n  SimpleChanges,\n  ViewChild,\n  ViewEncapsulation\n} from '@angular/core';\nimport Swiper from 'swiper';\nimport { Autoplay } from 'swiper';\nimport { BabylonSwiperCssLoaderDirective } from '../../../../directives/babylon-sliders/babylon-swiper-css-loader.directive';\nimport { BabylonLinkTypeDirective } from '../../../../directives/link-type/link-type.directive';\nimport { BabylonButtonI, BabylonItemI, BabylonTextInfoI } from '../../../../interfaces';\nimport {\n  SliC5ImgTxtV2Button,\n  SliC5ImgTxtV2FooterAction,\n  SliC5ImgTxtV2ImageButton,\n  SliC5ImgTxtV2Multimedia,\n  SliC5ImgTxtV2Slide,\n  SliC5ImgTxtV2SlideAction,\n  SliC5ImgTxtV2SlideImage,\n  SliC5ImgTxtV2ViewModel\n} from './sli-c5-img-txt-v2.interfaces';\n\n@Component({\n  selector: 'sli-c5-img-txt-v2',\n  standalone: true,\n  imports: [CommonModule, BabylonSwiperCssLoaderDirective, BabylonLinkTypeDirective],\n  templateUrl: './sli-c5-img-txt-v2.component.html',\n  styleUrl: './sli-c5-img-txt-v2.component.scss',\n  encapsulation: ViewEncapsulation.Emulated\n})\nexport class SliC5ImgTxtV2Component implements OnInit, AfterViewInit, OnChanges, OnDestroy {\n  private readonly platformId = inject(PLATFORM_ID);\n  private sliderInitialized = false;\n  private swiperInstance?: Swiper;\n\n  @Input() texts?: BabylonTextInfoI;\n  @Input() buttons?: BabylonButtonI[];\n  @Input() multimedia?: SliC5ImgTxtV2Multimedia;\n  @Input() items?: BabylonItemI[];\n  @Input() props?: {\n    texts?: BabylonTextInfoI;\n    buttons?: BabylonButtonI[];\n    multimedia?: SliC5ImgTxtV2Multimedia;\n    items?: BabylonItemI[];\n  };\n\n  @ViewChild('sectionSlider', { static: false }) sectionSlider?: ElementRef<HTMLElement>;\n\n  readonly viewModel: SliC5ImgTxtV2ViewModel = {\n    title: undefined,\n    slides: [],\n    footerAction: undefined,\n    hasSlides: false\n  };\n\n  constructor(private readonly ngZone: NgZone) {}\n\n  get vm(): SliC5ImgTxtV2ViewModel {\n    return this.viewModel;\n  }\n\n  ngOnInit(): void {\n    this.rebuildViewModel();\n  }\n\n  ngAfterViewInit(): void {\n    this.initSlider();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (!changes['multimedia'] && !changes['items'] && !changes['texts'] && !changes['buttons'] && !changes['props']) {\n      return;\n    }\n\n    this.rebuildViewModel();\n\n    if (!this.sliderInitialized || !isPlatformBrowser(this.platformId)) {\n      return;\n    }\n\n    this.destroySlider();\n    queueMicrotask(() => this.initSlider());\n  }\n\n  ngOnDestroy(): void {\n    this.destroySlider();\n  }\n\n  trackSlide(index: number): number {\n    return index;\n  }\n\n  private initSlider(): void {\n    if (this.sliderInitialized || !isPlatformBrowser(this.platformId) || !this.sectionSlider) {\n      return;\n    }\n\n    const slides = this.viewModel.slides;\n    if (!slides.length) {\n      return;\n    }\n\n    this.ngZone.runOutsideAngular(() => {\n      this.swiperInstance = new Swiper(this.sectionSlider!.nativeElement, {\n        modules: [Autoplay],\n        loop: slides.length > 1,\n        slidesPerView: 5,\n        spaceBetween: 65,\n        speed: 600,\n        autoplay:\n          slides.length > 1\n            ? {\n                delay: 3000,\n                disableOnInteraction: false\n              }\n            : false,\n        breakpoints: {\n          0: {\n            slidesPerView: 1.2,\n            spaceBetween: 25\n          },\n          600: {\n            slidesPerView: 3,\n            spaceBetween: 35\n          },\n          1124: {\n            slidesPerView: 5,\n            spaceBetween: 65\n          }\n        }\n      });\n\n      this.sliderInitialized = true;\n    });\n  }\n\n  private destroySlider(): void {\n    if (!this.sliderInitialized || !this.swiperInstance) {\n      return;\n    }\n\n    this.swiperInstance.destroy(true, true);\n    this.swiperInstance = undefined;\n    this.sliderInitialized = false;\n  }\n\n  private buildSlides(): SliC5ImgTxtV2Slide[] {\n    const resolvedImages = this.getResolvedImages();\n\n    return resolvedImages.reduce<SliC5ImgTxtV2Slide[]>((acc, image) => {\n      if (image?.active === false) {\n        return acc;\n      }\n\n      const src = this.resolveImageSrc(image);\n      if (!src) {\n        return acc;\n      }\n\n      const action = this.extractSlideAction(image?.buttons?.[0]);\n\n      acc.push({\n        src,\n        alt: image?.img?.alt ?? image?.alt ?? '',\n        action\n      });\n\n      return acc;\n    }, []);\n  }\n\n  private rebuildViewModel(): void {\n    const texts = this.texts ?? this.props?.texts;\n    const buttons = this.resolveFooterButtonsSource();\n\n    this.viewModel.title = texts?.title?.trim() || texts?.pretitle?.trim() || undefined;\n    this.viewModel.slides = this.buildSlides();\n    this.viewModel.footerAction = this.extractFooterAction(buttons);\n    this.viewModel.hasSlides = this.viewModel.slides.length > 0;\n\n    this.logButtonDebug('rebuildViewModel', {\n      buttonsInput: this.buttons,\n      buttonsFromProps: this.props?.buttons,\n      buttonsResolved: buttons,\n      footerAction: this.viewModel.footerAction,\n      hasSlides: this.viewModel.hasSlides\n    });\n  }\n\n  private getResolvedImages(): SliC5ImgTxtV2SlideImage[] {\n    const multimediaSource = this.multimedia ?? this.props?.multimedia;\n    const multimediaImages = multimediaSource?.imagenes;\n    if (Array.isArray(multimediaImages) && multimediaImages.length > 0) {\n      return multimediaImages as SliC5ImgTxtV2SlideImage[];\n    }\n\n    const itemsSource = this.items ?? this.props?.items;\n    const itemImages =\n      itemsSource\n        ?.flatMap((item) => {\n          const imagesFromMultimedia = (item?.multimedia as SliC5ImgTxtV2Multimedia | undefined)?.imagenes;\n          if (Array.isArray(imagesFromMultimedia) && imagesFromMultimedia.length > 0) {\n            return imagesFromMultimedia;\n          }\n\n          const fallbackImage = item?.img;\n          if (fallbackImage?.src) {\n            return [\n              {\n                img: fallbackImage,\n                alt: fallbackImage.alt,\n                buttons: item?.buttons\n              } as SliC5ImgTxtV2SlideImage\n            ];\n          }\n\n          return [];\n        })\n        .filter(Boolean) ?? [];\n\n    return itemImages as SliC5ImgTxtV2SlideImage[];\n  }\n\n  private resolveFooterButtonsSource(): BabylonButtonI[] | undefined {\n    const directButtons = this.normalizeButtons(this.buttons);\n    if (directButtons?.length) {\n      this.logButtonDebug('resolveFooterButtonsSource: using @Input buttons', { directButtons });\n      return directButtons;\n    }\n\n    const propsButtons = this.normalizeButtons(this.props?.buttons);\n    if (propsButtons?.length) {\n      this.logButtonDebug('resolveFooterButtonsSource: using props.buttons', { propsButtons });\n      return propsButtons;\n    }\n\n    const itemsSource = this.items ?? this.props?.items;\n    const firstItemWithButtons = itemsSource?.find((item) => this.normalizeButtons(item?.buttons)?.length);\n    const itemButtons = this.normalizeButtons(firstItemWithButtons?.buttons);\n    if (itemButtons?.length) {\n      this.logButtonDebug('resolveFooterButtonsSource: using first item.buttons', { itemButtons, firstItemWithButtons });\n      return itemButtons;\n    }\n\n    const multimediaSource = this.multimedia ?? this.props?.multimedia;\n    const imageWithButtons = multimediaSource?.imagenes?.find((img) => this.normalizeButtons(img?.buttons)?.length);\n    const imageButtons = this.normalizeButtons(imageWithButtons?.buttons);\n    if (imageButtons?.length) {\n      this.logButtonDebug('resolveFooterButtonsSource: using multimedia.imagenes[].buttons', {\n        imageButtons,\n        imageWithButtons\n      });\n      return imageButtons;\n    }\n\n    this.logButtonDebug('resolveFooterButtonsSource: no buttons found in any source');\n    return undefined;\n  }\n\n  private extractSlideAction(button?: SliC5ImgTxtV2ImageButton): SliC5ImgTxtV2SlideAction {\n    return {\n      href: this.getFirstNonEmptyLink(button?.url, button?.link_value, button?.linkValue) ?? '#',\n      linkType: button?.linkType ?? button?.link_type ?? 'external_link',\n      target: button?.target ?? '_self'\n    };\n  }\n\n  private extractFooterAction(buttons?: BabylonButtonI[]): SliC5ImgTxtV2FooterAction | undefined {\n    this.logButtonDebug('extractFooterAction input', { buttons });\n\n    if (!Array.isArray(buttons) || buttons.length === 0) {\n      this.logButtonDebug('extractFooterAction skipped: buttons vacío/no array');\n      return undefined;\n    }\n\n    const button = buttons[0] as SliC5ImgTxtV2Button;\n    const label = button?.label?.trim();\n    if (!label) {\n      this.logButtonDebug('extractFooterAction skipped: label vacío', { button });\n      return undefined;\n    }\n\n    const action: SliC5ImgTxtV2FooterAction = {\n      label,\n      href: this.getFirstNonEmptyLink(button?.url, button?.link_value, button?.linkValue) ?? '#',\n      linkType: button?.linkType ?? button?.link_type ?? 'external_link',\n      target: button?.target ?? '_self'\n    };\n\n    this.logButtonDebug('extractFooterAction output', { action, sourceButton: button });\n    return action;\n  }\n\n  private getFirstNonEmptyLink(...candidates: Array<string | undefined>): string | undefined {\n    return candidates.find((value) => typeof value === 'string' && value.trim().length > 0)?.trim();\n  }\n\n  private normalizeButtons(value: BabylonButtonI[] | BabylonButtonI | undefined): BabylonButtonI[] | undefined {\n    if (!value) {\n      return undefined;\n    }\n\n    if (Array.isArray(value)) {\n      return value.filter(Boolean);\n    }\n\n    return [value];\n  }\n\n  private logButtonDebug(_message: string, _payload?: unknown): void {\n    // Intentionally left blank: debug logging disabled.\n  }\n\n  private resolveImageSrc(image?: SliC5ImgTxtV2SlideImage): string {\n    const rawSrc =\n      image?.img?.src ??\n      image?.src ??\n      image?.path?.webp ??\n      image?.path?.original ??\n      image?.thumbnails?.[1366]?.webp ??\n      image?.thumbnails?.[1280]?.webp ??\n      image?.thumbnails?.[1024]?.webp ??\n      image?.thumbnails?.[768]?.webp ??\n      image?.thumbnails?.[540]?.webp ??\n      image?.thumbnails?.[375]?.webp ??\n      image?.thumbnails?.[1366]?.original ??\n      image?.thumbnails?.[1280]?.original ??\n      image?.thumbnails?.[1024]?.original ??\n      image?.thumbnails?.[768]?.original ??\n      image?.thumbnails?.[540]?.original ??\n      image?.thumbnails?.[375]?.original ??\n      '';\n\n    if (!rawSrc || typeof rawSrc !== 'string') {\n      return '';\n    }\n\n    if (\n      rawSrc.startsWith('http://') ||\n      rawSrc.startsWith('https://') ||\n      rawSrc.startsWith('//') ||\n      rawSrc.startsWith('data:') ||\n      rawSrc.startsWith('blob:') ||\n      rawSrc.startsWith('/')\n    ) {\n      return rawSrc;\n    }\n\n    return `/${rawSrc}`;\n  }\n}\n","@if (vm.hasSlides) {\n  <section class=\"mdl-slic5img\" babylonSwiperCssLoader>\n    <div class=\"mdl-container\">\n      @if (vm.title) {\n        <div class=\"m-pretitulo\" [innerHTML]=\"vm.title\"></div>\n      }\n\n      <div class=\"swiper\" #sectionSlider>\n        <div class=\"swiper-wrapper\">\n          @for (slide of vm.slides; track trackSlide($index)) {\n            <a\n              class=\"swiper-slide\"\n              [href]=\"slide.action.href\"\n              [linkType]=\"slide.action.linkType\"\n              [attr.target]=\"slide.action.target\"\n              [attr.rel]=\"slide.action.target === '_blank' ? 'noopener noreferrer' : null\"\n            >\n              <img [src]=\"slide.src\" [alt]=\"slide.alt\" loading=\"lazy\" />\n            </a>\n          }\n        </div>\n      </div>\n\n      @if (vm.footerAction; as action) {\n        <div class=\"m-foot\">\n          <a\n            class=\"m-texto\"\n            [href]=\"action.href\"\n            [linkType]=\"action.linkType\"\n            [attr.target]=\"action.target\"\n            [attr.rel]=\"action.target === '_blank' ? 'noopener noreferrer' : null\"\n          >\n            {{ action.label }}\n          </a>\n        </div>\n      }\n    </div>\n  </section>\n}\n","import { CommonModule, isPlatformBrowser } from '@angular/common';\nimport {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  inject,\n  Input,\n  NgZone,\n  OnChanges,\n  OnInit,\n  OnDestroy,\n  PLATFORM_ID,\n  QueryList,\n  SimpleChanges,\n  ViewChildren,\n  ViewEncapsulation\n} from '@angular/core';\nimport Swiper from 'swiper';\nimport { Autoplay } from 'swiper';\nimport { BabylonLinkTypeDirective } from '../../../../directives/link-type/link-type.directive';\nimport { BabylonSwiperCssLoaderDirective } from '../../../../directives/babylon-sliders/babylon-swiper-css-loader.directive';\nimport { BabylonButtonI, BabylonItemI, BabylonMultimediaI, BabylonTextInfoI } from '../../../../interfaces';\nimport {\n  SliC6ImgTxtButton,\n  SliC6ImgTxtLane,\n  SliC6ImgTxtLaneImage,\n  SliC6ImgTxtMultimedia,\n  SliC6ImgTxtSlideImage,\n  SliC6ImgTxtViewModel\n} from './sli-c6-img-txt.interfaces';\n\n@Component({\n  selector: 'sli-c6-img-txt',\n  standalone: true,\n  imports: [CommonModule, BabylonSwiperCssLoaderDirective, BabylonLinkTypeDirective],\n  templateUrl: './sli-c6-img-txt.component.html',\n  styleUrl: './sli-c6-img-txt.component.scss',\n  encapsulation: ViewEncapsulation.Emulated\n})\nexport class SliC6ImgTxtComponent implements OnInit, AfterViewInit, OnChanges, OnDestroy {\n  private readonly platformId = inject(PLATFORM_ID);\n  private readonly swipers: Swiper[] = [];\n  private viewInitialized = false;\n\n  @Input() texts?: BabylonTextInfoI;\n  @Input() buttons?: BabylonButtonI[];\n  @Input() multimedia?: SliC6ImgTxtMultimedia;\n  @Input() items?: BabylonItemI[];\n\n  @ViewChildren('laneSlider') laneSliders?: QueryList<ElementRef<HTMLElement>>;\n\n  constructor(\n    private readonly ngZone: NgZone,\n    private readonly cdr: ChangeDetectorRef\n  ) {}\n\n  viewModel: SliC6ImgTxtViewModel = {\n    texts: undefined,\n    action: undefined,\n    lanes: [],\n    hasImages: false\n  };\n\n  get vm(): SliC6ImgTxtViewModel {\n    return this.viewModel;\n  }\n\n  ngOnInit(): void {\n    this.rebuildViewModel();\n  }\n\n  private rebuildViewModel(): void {\n    const images = this.getResolvedImages();\n    const normalized = this.normalizeImages(images);\n    const imagesForAnimation = this.ensureMinImages(normalized, 40);\n\n    this.viewModel = {\n      texts: this.texts,\n      action: this.extractAction(this.buttons),\n      lanes: this.buildLanes(imagesForAnimation),\n      hasImages: imagesForAnimation.length > 0\n    };\n  }\n\n  ngAfterViewInit(): void {\n    this.viewInitialized = true;\n    this.initSwipers();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (!changes['multimedia'] && !changes['items'] && !changes['buttons'] && !changes['texts']) {\n      return;\n    }\n\n    this.rebuildViewModel();\n\n    if (!this.viewInitialized || !isPlatformBrowser(this.platformId)) {\n      return;\n    }\n\n    this.destroySwipers();\n    queueMicrotask(() => {\n      this.cdr.detectChanges();\n      this.initSwipers();\n    });\n  }\n\n  ngOnDestroy(): void {\n    this.destroySwipers();\n  }\n\n  trackLane(index: number): number {\n    return index;\n  }\n\n  trackImage(index: number): number {\n    return index;\n  }\n\n  private initSwipers(): void {\n    if (!isPlatformBrowser(this.platformId) || !this.laneSliders?.length) {\n      return;\n    }\n\n    const lanes = this.vm.lanes;\n    if (!lanes.length) {\n      return;\n    }\n\n    this.ngZone.runOutsideAngular(() => {\n      this.laneSliders?.forEach((sliderRef, index) => {\n        const lane = lanes[index];\n        if (!lane || lane.images.length === 0) {\n          return;\n        }\n\n        const swiper = new Swiper(sliderRef.nativeElement, {\n          modules: [Autoplay],\n          direction: 'vertical',\n          loop: true,\n          slidesPerView: 'auto',\n          spaceBetween: 83,\n          speed: lane.speed,\n          autoplay: {\n            delay: 0,\n            disableOnInteraction: false\n          },\n          freeMode: true,\n          allowTouchMove: false,\n          touchRatio: 0,\n          simulateTouch: false,\n          grabCursor: false,\n          touchStartPreventDefault: false,\n          on: {\n            init: (sw) => {\n              sw.wrapperEl.style.transitionTimingFunction = 'linear';\n              sw.wrapperEl.style.transitionDuration = `${lane.speed}ms`;\n            },\n            slideChangeTransitionStart: (sw) => {\n              sw.wrapperEl.style.transitionTimingFunction = 'linear';\n            }\n          }\n        });\n\n        this.swipers.push(swiper);\n      });\n    });\n  }\n\n  private destroySwipers(): void {\n    this.swipers.forEach((swiper) => swiper.destroy(true, true));\n    this.swipers.length = 0;\n  }\n\n  private getResolvedImages(): SliC6ImgTxtSlideImage[] {\n    const multimediaImages = this.multimedia?.imagenes;\n    if (Array.isArray(multimediaImages) && multimediaImages.length > 0) {\n      return multimediaImages as SliC6ImgTxtSlideImage[];\n    }\n\n    const itemImages = this.items?.flatMap((item) => {\n      const itemMultimedia = item?.multimedia as SliC6ImgTxtMultimedia | undefined;\n      return itemMultimedia?.imagenes ?? [];\n    });\n\n    return itemImages ?? [];\n  }\n\n  private normalizeImages(images: SliC6ImgTxtSlideImage[]): SliC6ImgTxtLaneImage[] {\n    return images.reduce<SliC6ImgTxtLaneImage[]>((acc, image) => {\n      const src = this.resolveImageSrc(image);\n      if (!src) {\n        return acc;\n      }\n\n      acc.push({\n        src,\n        alt: image?.img?.alt ?? image?.alt ?? ''\n      });\n\n      return acc;\n    }, []);\n  }\n\n  private ensureMinImages(images: SliC6ImgTxtLaneImage[], minCount: number): SliC6ImgTxtLaneImage[] {\n    if (images.length === 0 || images.length >= minCount) {\n      return images;\n    }\n\n    const duplicated: SliC6ImgTxtLaneImage[] = [...images];\n    let cursor = 0;\n    while (duplicated.length < minCount) {\n      duplicated.push(images[cursor % images.length]);\n      cursor += 1;\n    }\n\n    return duplicated;\n  }\n\n  private buildLanes(images: SliC6ImgTxtLaneImage[]): SliC6ImgTxtLane[] {\n    const laneCount = 6;\n    const laneSpeed = 5000;\n    const lanes: SliC6ImgTxtLane[] = Array.from({ length: laneCount }, () => ({\n      images: [],\n      speed: laneSpeed\n    }));\n\n    images.forEach((image, index) => {\n      lanes[index % laneCount].images.push(image);\n    });\n\n    return lanes;\n  }\n\n  private extractAction(buttons?: BabylonButtonI[]): SliC6ImgTxtViewModel['action'] {\n    if (!Array.isArray(buttons) || buttons.length === 0) {\n      return undefined;\n    }\n\n    const button = buttons[0] as SliC6ImgTxtButton;\n    const label = button?.label?.trim();\n    if (!label) {\n      return undefined;\n    }\n\n    return {\n      label,\n      href: button?.url ?? button?.link_value ?? button?.linkValue ?? '#',\n      linkType: button?.linkType ?? button?.link_type ?? 'external_link',\n      target: button?.target ?? '_self'\n    };\n  }\n\n  private resolveImageSrc(image?: SliC6ImgTxtSlideImage): string {\n    const rawSrc =\n      image?.img?.src ??\n      image?.src ??\n      image?.path?.webp ??\n      image?.path?.original ??\n      image?.thumbnails?.[1366]?.webp ??\n      image?.thumbnails?.[1280]?.webp ??\n      image?.thumbnails?.[1024]?.webp ??\n      '';\n\n    if (!rawSrc || typeof rawSrc !== 'string') {\n      return '';\n    }\n\n    if (\n      rawSrc.startsWith('http://') ||\n      rawSrc.startsWith('https://') ||\n      rawSrc.startsWith('//') ||\n      rawSrc.startsWith('data:') ||\n      rawSrc.startsWith('blob:') ||\n      rawSrc.startsWith('/')\n    ) {\n      return rawSrc;\n    }\n\n    return `/${rawSrc}`;\n  }\n}\n","@if (vm.hasImages) {\n  <section class=\"mdl-slic6img\" babylonSwiperCssLoader>\n    <div class=\"mdl-container\">\n      <div class=\"swipers-container\">\n        @for (lane of vm.lanes; track trackLane($index)) {\n          <div class=\"swiper swiper-container\" #laneSlider>\n            <div class=\"swiper-wrapper\">\n              @for (image of lane.images; track trackImage($index)) {\n                <div class=\"swiper-slide\">\n                  <img [src]=\"image.src\" [alt]=\"image.alt\" class=\"m-logo\" loading=\"lazy\" />\n                </div>\n              }\n            </div>\n          </div>\n        }\n      </div>\n\n      <div class=\"m-content\">\n        @if (vm.texts?.title) {\n          <div class=\"m-titulo\" [innerHTML]=\"vm.texts?.title\"></div>\n        }\n        @if (vm.texts?.pretitle) {\n          <div class=\"m-subtitulo\" [innerHTML]=\"vm.texts?.pretitle\"></div>\n        }\n        @if (vm.texts?.description) {\n          <div class=\"m-texto\" [innerHTML]=\"vm.texts?.description\"></div>\n        }\n\n        @if (vm.action; as action) {\n          <a\n            class=\"m-button1\"\n            [href]=\"action.href\"\n            [linkType]=\"action.linkType\"\n            [attr.target]=\"action.target\"\n            [attr.rel]=\"action.target === '_blank' ? 'noopener noreferrer' : null\"\n            [attr.aria-label]=\"action.label\"\n          >\n            <span>{{ action.label }}</span>\n          </a>\n        }\n      </div>\n    </div>\n  </section>\n}\n","import { CommonModule } from '@angular/common';\nimport {\n    AfterViewInit,\n    Component,\n    ElementRef,\n    Input,\n    OnDestroy,\n    Renderer2,\n    ViewChild,\n    ViewEncapsulation,\n} from '@angular/core';\nimport {\n    BabylonButtonI,\n    BabylonRoomDetailI,\n    BabylonTextInfoI,\n} from '../../../../interfaces';\nimport { ModuloMenuHotelContent } from './modulo-menu-hotel.interfaces';\n\nconst defaultData = {\n    mainNav: {\n        headerTitle: '',\n        headerSubtitle: '',\n        headerLogoSrc: '',\n        headerLogoAlt: '',\n        headerStars: 0,\n        linksButtonText: '',\n        menuButtonText: '',\n        menuButtonSubnav: '',\n        bookLabel: '',\n        languageCode: '',\n        languagePopupId: 'languages',\n        links: [{ label: '', href: '', home: false, dataSubnav: '' }],\n    },\n    subnavs: [\n        {\n            id: '',\n            title: '',\n            backLabel: '',\n            mediaPlaceholder: '',\n            mediaAriaLabel: '',\n            items: [\n                {\n                    label: '',\n                    href: '',\n                    placeholder: '',\n                },\n            ],\n        },\n    ],\n    popupLanguages: {\n        id: 'languages',\n        title: '',\n        subtitle: '',\n        iconClass: '',\n        options: [{ label: '', href: '', rel: 'alternate', active: false }],\n    },\n    popupUser: {\n        id: 'user',\n        subtitle: '',\n        options: [{ label: '', href: '' }],\n    },\n    deviceNav: {\n        menuButtonText: '',\n        languageCode: '',\n        languagePopupId: 'languages',\n        userPopupId: 'user',\n        bookLabel: '',\n        shortcutItems: [\n            {\n                label: '',\n                iconClass: '',\n                dataSubnav: '',\n                href: '',\n                menuButton: false,\n            },\n        ],\n    },\n    asideButtons: [{ label: '', href: '', className: '' }],\n    responsiveHeader: {\n        title: '',\n        subtitle: '',\n        href: '',\n        logoSrc: '',\n        logoAlt: '',\n    },\n} as ModuloMenuHotelContent;\n\n@Component({\n    selector: 'modulo-menu-hotel',\n    standalone: true,\n    imports: [CommonModule],\n    templateUrl: './modulo-menu-hotel.component.html',\n    styleUrl: './modulo-menu-hotel.component.scss',\n    encapsulation: ViewEncapsulation.Emulated,\n})\nexport class ModuloMenuHotelComponent implements AfterViewInit, OnDestroy {\n    hoveredRoomIndex: number | null = null;\n    private _data: ModuloMenuHotelContent = defaultData;\n    private cleanupFns: Array<() => void> = [];\n    private scheduleHandle: ReturnType<typeof setTimeout> | null = null;\n    private readonly bodyLocks = new Set<string>();\n\n    @Input() texts?: BabylonTextInfoI;\n    @Input() links?: BabylonButtonI[];\n    @Input() rooms?: BabylonRoomDetailI[];\n\n    @ViewChild('moduleRoot', { static: true })\n    moduleRoot?: ElementRef<HTMLElement>;\n\n    constructor(private readonly renderer: Renderer2) {}\n\n    @Input()\n    set data(value: ModuloMenuHotelContent) {\n        this._data = value ?? defaultData;\n        this.scheduleSetup();\n    }\n\n    get data(): ModuloMenuHotelContent {\n        return this._data;\n    }\n\n    openSubmenu(event: Event, submenuId: string): void {\n        event.preventDefault();\n        const host = this.moduleRoot?.nativeElement;\n        if (!host) return;\n        const submenu = host.querySelector<HTMLElement>(\n            `.subnav-box[data-subnav='${submenuId}']`\n        );\n        submenu?.classList.add('open');\n        this.lockBody(`submenu-${submenuId}`);\n    }\n\n    trackByIndex(index: number): number {\n        return index;\n    }\n\n    createStars(count: number): number[] {\n        return Array.from(\n            { length: Math.max(count ?? 0, 0) },\n            (_value, index) => index\n        );\n    }\n\n    ngAfterViewInit(): void {\n        this.scheduleSetup();\n    }\n\n    ngOnDestroy(): void {\n        this.cleanupInteractions();\n        if (this.scheduleHandle) {\n            clearTimeout(this.scheduleHandle);\n        }\n        this.bodyLocks.clear();\n        if (typeof document !== 'undefined') {\n            document.body.classList.remove('noscroll');\n        }\n    }\n\n    private scheduleSetup(): void {\n        if (this.scheduleHandle) {\n            clearTimeout(this.scheduleHandle);\n        }\n        this.scheduleHandle = setTimeout(() => {\n            this.scheduleHandle = null;\n            this.setupInteractions();\n        });\n    }\n\n    private setupInteractions(): void {\n        this.cleanupInteractions();\n        const host = this.moduleRoot?.nativeElement;\n        if (!host) {\n            return;\n        }\n\n        this.setupKeyboardActivation(host);\n\n        const navLinks = host.querySelector('.nav-links');\n        const motor = host.querySelector('.motor-fixed');\n\n        const openMenu = () => {\n            navLinks?.classList.add('open');\n            this.lockBody('menu');\n        };\n        const closeMenu = () => {\n            navLinks?.classList.remove('open');\n            this.unlockBody('menu');\n        };\n\n        this.bindClick(host.querySelectorAll('.js-open-menu'), openMenu);\n        this.bindClick(host.querySelectorAll('.js-close-menu'), closeMenu);\n\n        this.bindClick(host.querySelectorAll('.js-open-motor'), () => {\n            motor?.classList.add('open');\n            this.lockBody('motor');\n        });\n        this.bindClick(host.querySelectorAll('.js-close-motor'), () => {\n            motor?.classList.remove('open');\n            this.unlockBody('motor');\n        });\n\n        this.bindClick(host.querySelectorAll('.js-open-submenu'), (event) => {\n            const trigger = event.currentTarget as HTMLElement;\n            const submenuId = trigger?.getAttribute('data-submenu');\n            if (!submenuId) {\n                return;\n            }\n            const submenu = host.querySelector<HTMLElement>(\n                `.subnav-box[data-subnav='${submenuId}']`\n            );\n            submenu?.classList.add('open');\n            this.lockBody(`submenu-${submenuId}`);\n        });\n\n        this.bindClick(host.querySelectorAll('.js-close-submenu'), (event) => {\n            const trigger = event.currentTarget as HTMLElement;\n            const parent = trigger?.closest<HTMLElement>('.subnav-box');\n            if (parent?.dataset['subnav']) {\n                this.unlockBody(`submenu-${parent.dataset['subnav']}`);\n            }\n            parent?.classList.remove('open');\n            if (!host.querySelector('.subnav-box.open')) {\n                this.unlockBody('submenu-fallback');\n            }\n        });\n\n        this.bindClick(host.querySelectorAll('.js-close-all'), () => {\n            host.querySelectorAll<HTMLElement>('.subnav-box.open').forEach(\n                (box) => {\n                    if (box.dataset['subnav']) {\n                        this.unlockBody(`submenu-${box.dataset['subnav']}`);\n                    }\n                    box.classList.remove('open');\n                }\n            );\n            closeMenu();\n            this.unlockBody('submenu-fallback');\n        });\n\n        this.bindClick(host.querySelectorAll('.js-toggle-popup'), (event) => {\n            const trigger = event.currentTarget as HTMLElement;\n            const popupId = trigger?.getAttribute('data-popup');\n            if (!popupId) {\n                return;\n            }\n            const popup = host.querySelector<HTMLElement>(\n                `#${popupId}.popup-module`\n            );\n            popup?.classList.toggle('open');\n        });\n    }\n\n    private setupKeyboardActivation(root: HTMLElement): void {\n        const focusables =\n            root.querySelectorAll<HTMLElement>('[tabindex=\\\"0\\\"]');\n        this.bindKey(focusables, (event) => {\n            if (event.key === 'Enter') {\n                (event.currentTarget as HTMLElement)?.click();\n            }\n        });\n    }\n\n    private bindClick(\n        elements: NodeListOf<Element>,\n        handler: (event: Event) => void\n    ): void {\n        elements.forEach((element) => {\n            this.cleanupFns.push(\n                this.renderer.listen(element, 'click', handler)\n            );\n        });\n    }\n\n    private bindKey(\n        elements: NodeListOf<Element>,\n        handler: (event: KeyboardEvent) => void\n    ): void {\n        elements.forEach((element) => {\n            this.cleanupFns.push(\n                this.renderer.listen(element, 'keyup', handler)\n            );\n        });\n    }\n\n    private cleanupInteractions(): void {\n        while (this.cleanupFns.length) {\n            const dispose = this.cleanupFns.pop();\n            try {\n                dispose?.();\n            } catch {\n                // ignore\n            }\n        }\n    }\n\n    private lockBody(token: string): void {\n        if (typeof document === 'undefined') {\n            return;\n        }\n        this.bodyLocks.add(token);\n        document.body.classList.add('noscroll');\n    }\n\n    private unlockBody(token: string): void {\n        if (typeof document === 'undefined') {\n            return;\n        }\n        this.bodyLocks.delete(token);\n        if (this.bodyLocks.size === 0) {\n            document.body.classList.remove('noscroll');\n        }\n    }\n}\n","<div #moduleRoot>\n    <aside class=\"motor-fixed loaded\" data-kids=\"on\" data-babies=\"on\">\n        <div class=\"motor-fixed-backmask js-close-motor\"></div>\n\n        <div class=\"wrap-motor-fixed\">\n            <!--\n            <div class=\"button-plane\">\n                <div class=\"button-plane_container plane\">\n                    <a href=\"\" class=\"aside-btns_element-text\">Vuelo + Hotel</a>\n                </div>\n            </div>\n\n            <div class=\"button-phone\">\n                <div class=\"button-phone_container phone\">\n                    <a href=\"\" class=\"aside-btns_element-text\">Llámanos</a>\n                </div>\n            </div>\n            -->\n\n            <i\n                class=\"motor-close-btn btn-close icon-close js-close-motor\"\n                role=\"button\"\n                tabindex=\"0\"\n            ></i>\n\n            <div class=\"motor-fixed-box\">\n                <p class=\"motor-box-title\">Reserva tu habitación</p>\n                <p class=\"motor-box-subtitle\">Hotel Royal Passeig de Gràcia</p>\n                <div class=\"wrap-motor-box\">\n                    <div class=\"motor-box-links\" style=\"display: none\">\n                        <div class=\"motor-links-element\">\n                            <a href=\"\">\n                                <div class=\"wrap-links-element\">\n                                    <i\n                                        class=\"links-element-icon icon-present\"\n                                    ></i>\n                                    <p class=\"links-element-text\">Ver oferta</p>\n                                </div>\n                            </a>\n                        </div>\n                        <div class=\"motor-links-element\">\n                            <a href=\"\">\n                                <div class=\"wrap-links-element\">\n                                    <i class=\"links-element-icon icon-star\"></i>\n                                    <p class=\"links-element-text\">\n                                        Ver ventajas\n                                    </p>\n                                </div>\n                            </a>\n                        </div>\n                        <div class=\"motor-links-element\">\n                            <a href=\"\">\n                                <div class=\"wrap-links-element\">\n                                    <i\n                                        class=\"links-element-icon icon-check\"\n                                    ></i>\n                                    <p class=\"links-element-text\">\n                                        Check-in online\n                                    </p>\n                                </div>\n                            </a>\n                        </div>\n                        <div class=\"motor-links-element transfer\">\n                            <a href=\"\">\n                                <div class=\"wrap-links-element\">\n                                    <i\n                                        class=\"links-element-icon icon-transfer\"\n                                    ></i>\n                                    <p class=\"links-element-text\">Transfer</p>\n                                </div>\n                            </a>\n                        </div>\n                    </div>\n                    <form>\n                        <div class=\"motor-box-element\">\n                            <div class=\"wrap-motor-element\">\n                                <div class=\"motor-element-field\">\n                                    <div class=\"wrap-motor-field\">\n                                        <span class=\"motor-field-text\"\n                                            >Hoteles y destinos</span\n                                        >\n                                        <select class=\"motor-field-input\">\n                                            <option selected disabled>\n                                                Todos los hoteles\n                                            </option>\n                                            <option>Hotel 1</option>\n                                            <option>Hotel 2</option>\n                                            <option>Hotel 3</option>\n                                        </select>\n                                        <i\n                                            class=\"motor-field-icon icon-pointer-down\"\n                                        ></i>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                        <div class=\"motor-box-element\">\n                            <div class=\"wrap-motor-element\">\n                                <div class=\"motor-element-field\">\n                                    <div class=\"wrap-motor-field\">\n                                        <span class=\"motor-field-text\"\n                                            >Llegada</span\n                                        >\n                                        <input\n                                            name=\"datein\"\n                                            id=\"datein\"\n                                            readonly=\"true\"\n                                            type=\"text\"\n                                            placeholder=\"0/00/0000\"\n                                            autocomplete=\"off\"\n                                            class=\"motor-field-input\"\n                                        />\n                                        <i\n                                            class=\"motor-field-icon icon-calendar\"\n                                        ></i>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                        <div class=\"motor-box-element\">\n                            <div class=\"wrap-motor-element\">\n                                <div class=\"motor-element-field\">\n                                    <div class=\"wrap-motor-field\">\n                                        <span class=\"motor-field-text\"\n                                            >Salida</span\n                                        >\n                                        <input\n                                            name=\"dateout\"\n                                            id=\"dateout\"\n                                            readonly=\"true\"\n                                            type=\"text\"\n                                            placeholder=\"0/00/000\"\n                                            autocomplete=\"off\"\n                                            class=\"motor-field-input\"\n                                        />\n                                        <i\n                                            class=\"motor-field-icon icon-calendar\"\n                                        ></i>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                        <!-- llegada/salida devices -->\n                        <div\n                            class=\"motor-box-element devices-only\"\n                            style=\"display: none\"\n                        >\n                            <div class=\"wrap-motor-element\">\n                                <div class=\"motor-element-field\">\n                                    <div class=\"wrap-motor-field\">\n                                        <span class=\"motor-field-text\"\n                                            >Llegada</span\n                                        >\n                                        <input\n                                            name=\"datein\"\n                                            type=\"date\"\n                                            placeholder=\"0/00/0000\"\n                                            autocomplete=\"off\"\n                                            class=\"motor-field-input\"\n                                        />\n                                        <i\n                                            class=\"motor-field-icon icon-calendar\"\n                                        ></i>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                        <div\n                            class=\"motor-box-element devices-only\"\n                            style=\"display: none\"\n                        >\n                            <div class=\"wrap-motor-element\">\n                                <div class=\"motor-element-field\">\n                                    <div class=\"wrap-motor-field\">\n                                        <span class=\"motor-field-text\"\n                                            >Salida</span\n                                        >\n                                        <input\n                                            name=\"dateout\"\n                                            type=\"date\"\n                                            placeholder=\"0/00/000\"\n                                            autocomplete=\"off\"\n                                            class=\"motor-field-input\"\n                                        />\n                                        <i\n                                            class=\"motor-field-icon icon-calendar\"\n                                        ></i>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                        <!-- // llegada/salida devices //-->\n                        <div class=\"motor-box-element\">\n                            <div class=\"wrap-motor-element\">\n                                <div\n                                    class=\"motor-element-field js-toggle-guests\"\n                                >\n                                    <div class=\"wrap-motor-field\">\n                                        <span class=\"motor-field-text\"\n                                            >Huéspedes</span\n                                        >\n                                        <p class=\"motor-field-input guests\">\n                                            02\n                                        </p>\n                                        <i\n                                            class=\"motor-field-icon icon-pointer-down\"\n                                        ></i>\n                                    </div>\n                                </div>\n                            </div>\n                            <!-- todo: toggle box guests -->\n                            <div class=\"motor-subox motor-subox-guests\">\n                                <div class=\"wrap-motor-subox\">\n                                    <div class=\"motor-subox-container\">\n                                        <div\n                                            class=\"motor-subox--row motor-subox--head\"\n                                        >\n                                            <div class=\"motor-subox-col\">\n                                                <div class=\"motor-subox-tit\">\n                                                    <i\n                                                        class=\"icon icon-room\"\n                                                    ></i>\n                                                    <p\n                                                        class=\"motor-subox-title\"\n                                                    >\n                                                        Habitaciones\n                                                    </p>\n                                                </div>\n                                                <div class=\"wrap-select\">\n                                                    <select\n                                                        form=\"motor-form\"\n                                                        name=\"room-select\"\n                                                        class=\"subox-select\"\n                                                        id=\"room-select\"\n                                                    >\n                                                        <option value=\"1\">\n                                                            01\n                                                        </option>\n                                                        <option value=\"2\">\n                                                            02\n                                                        </option>\n                                                        <option value=\"3\">\n                                                            03\n                                                        </option>\n                                                        <option value=\"4\">\n                                                            04\n                                                        </option>\n                                                        <option value=\"5\">\n                                                            05\n                                                        </option>\n                                                    </select>\n                                                </div>\n                                            </div>\n                                            <div class=\"motor-subox-col\">\n                                                <div class=\"motor-subox-tit\">\n                                                    <i\n                                                        class=\"icon icon-adult\"\n                                                    ></i>\n                                                    <p\n                                                        class=\"motor-subox-title\"\n                                                    >\n                                                        Adultos\n                                                    </p>\n                                                </div>\n                                            </div>\n                                            <div class=\"motor-subox-col\">\n                                                <div class=\"motor-subox-tit\">\n                                                    <i\n                                                        class=\"icon icon-nino\"\n                                                    ></i>\n                                                    <p\n                                                        class=\"motor-subox-title\"\n                                                    >\n                                                        Niños\n                                                        <small\n                                                            >3 - 12 años</small\n                                                        >\n                                                    </p>\n                                                </div>\n                                            </div>\n                                            <div\n                                                class=\"motor-subox-col col-age\"\n                                            >\n                                                <div\n                                                    class=\"motor-subox-col col-age-1\"\n                                                >\n                                                    <div\n                                                        class=\"motor-subox-tit\"\n                                                    >\n                                                        <p\n                                                            class=\"motor-subox-title\"\n                                                        >\n                                                            Edades\n                                                            <small\n                                                                >Niño 1</small\n                                                            >\n                                                        </p>\n                                                    </div>\n                                                </div>\n                                                <div\n                                                    class=\"motor-subox-col col-age-2\"\n                                                >\n                                                    <div\n                                                        class=\"motor-subox-tit\"\n                                                    >\n                                                        <p\n                                                            class=\"motor-subox-title\"\n                                                        >\n                                                            <small\n                                                                >Niño 2</small\n                                                            >\n                                                        </p>\n                                                    </div>\n                                                </div>\n                                                <div\n                                                    class=\"motor-subox-col col-age-3\"\n                                                >\n                                                    <div\n                                                        class=\"motor-subox-tit\"\n                                                    >\n                                                        <p\n                                                            class=\"motor-subox-title\"\n                                                        >\n                                                            <small\n                                                                >Niño 3</small\n                                                            >\n                                                        </p>\n                                                    </div>\n                                                </div>\n                                                <div\n                                                    class=\"motor-subox-col col-age-4\"\n                                                >\n                                                    <div\n                                                        class=\"motor-subox-tit\"\n                                                    >\n                                                        <p\n                                                            class=\"motor-subox-title\"\n                                                        >\n                                                            <small\n                                                                >Niño 4</small\n                                                            >\n                                                        </p>\n                                                    </div>\n                                                </div>\n                                            </div>\n                                            <div class=\"motor-subox-col\">\n                                                <div class=\"motor-subox-tit\">\n                                                    <i\n                                                        class=\"icon icon-baby\"\n                                                    ></i>\n                                                    <p\n                                                        class=\"motor-subox-title\"\n                                                    >\n                                                        Bebes\n                                                        <small\n                                                            >0 - 2 años</small\n                                                        >\n                                                    </p>\n                                                </div>\n                                            </div>\n                                        </div>\n                                        <div\n                                            class=\"motor-subox--row motor-subox--room room-1 active open\"\n                                        >\n                                            <div class=\"motor-subox-col\">\n                                                <div class=\"motor-subox-tit\">\n                                                    <p\n                                                        class=\"motor-subox-title\"\n                                                    >\n                                                        Habitación 1\n                                                    </p>\n                                                    <i\n                                                        class=\"icon icon-pointer-down js-open-room open\"\n                                                        data-room=\"room-1\"\n                                                    ></i>\n                                                </div>\n                                            </div>\n                                            <div class=\"motor-subox-col\">\n                                                <div class=\"motor-subox-tit\">\n                                                    <i\n                                                        class=\"icon icon-adult\"\n                                                    ></i>\n                                                    <p\n                                                        class=\"motor-subox-title\"\n                                                    >\n                                                        Adultos\n                                                    </p>\n                                                </div>\n                                                <div class=\"wrap-select\">\n                                                    <select\n                                                        form=\"motor-form\"\n                                                        name=\"adult-select\"\n                                                        class=\"subox-select\"\n                                                    >\n                                                        <option>01</option>\n                                                        <option>02</option>\n                                                        <option>03</option>\n                                                        <option>04</option>\n                                                    </select>\n                                                </div>\n                                            </div>\n                                            <div class=\"motor-subox-col\">\n                                                <div class=\"motor-subox-tit\">\n                                                    <i\n                                                        class=\"icon icon-nino\"\n                                                    ></i>\n                                                    <p\n                                                        class=\"motor-subox-title\"\n                                                    >\n                                                        Niños\n                                                        <small\n                                                            >3 - 12 años</small\n                                                        >\n                                                    </p>\n                                                </div>\n                                                <div class=\"wrap-select\">\n                                                    <select\n                                                        form=\"motor-form\"\n                                                        name=\"nino-select\"\n                                                        class=\"subox-select nino-select\"\n                                                        data-room=\"room-1\"\n                                                        id=\"nino-select-room-1\"\n                                                    >\n                                                        <option value=\"0\">\n                                                            00\n                                                        </option>\n                                                        <option value=\"1\">\n                                                            01\n                                                        </option>\n                                                        <option value=\"2\">\n                                                            02\n                                                        </option>\n                                                        <option value=\"3\">\n                                                            03\n                                                        </option>\n                                                        <option value=\"4\">\n                                                            04\n                                                        </option>\n                                                    </select>\n                                                </div>\n                                            </div>\n                                            <div\n                                                class=\"motor-subox-col col-age\"\n                                            >\n                                                <p class=\"motor-subox-title\">\n                                                    Edades Niños\n                                                </p>\n                                                <div\n                                                    class=\"motor-subox-col col-age-1\"\n                                                >\n                                                    <div class=\"wrap-select\">\n                                                        <select\n                                                            form=\"motor-form\"\n                                                            name=\"kid-1-edad-select\"\n                                                            class=\"subox-select-color\"\n                                                        >\n                                                            <option>03</option>\n                                                            <option>04</option>\n                                                            <option>05</option>\n                                                            <option>06</option>\n                                                            <option>07</option>\n                                                            <option>08</option>\n                                                            <option>09</option>\n                                                            <option>10</option>\n                                                            <option>11</option>\n                                                            <option>12</option>\n                                                        </select>\n                                                    </div>\n                                                </div>\n                                                <div\n                                                    class=\"motor-subox-col col-age-2\"\n                                                >\n                                                    <div class=\"wrap-select\">\n                                                        <select\n                                                            form=\"motor-form\"\n                                                            name=\"kid-2-edad-select\"\n                                                            class=\"subox-select-color\"\n                                                        >\n                                                            <option>03</option>\n                                                            <option>04</option>\n                                                            <option>05</option>\n                                                            <option>06</option>\n                                                            <option>07</option>\n                                                            <option>08</option>\n                                                            <option>09</option>\n                                                            <option>10</option>\n                                                            <option>11</option>\n                                                            <option>12</option>\n                                                        </select>\n                                                    </div>\n                                                </div>\n                                                <div\n                                                    class=\"motor-subox-col col-age-3\"\n                                                >\n                                                    <div class=\"wrap-select\">\n                                                        <select\n                                                            form=\"motor-form\"\n                                                            name=\"kid-3-edad-select\"\n                                                            class=\"subox-select-color\"\n                                                        >\n                                                            <option>03</option>\n                                                            <option>04</option>\n                                                            <option>05</option>\n                                                            <option>06</option>\n                                                            <option>07</option>\n                                                            <option>08</option>\n                                                            <option>09</option>\n                                                            <option>10</option>\n                                                            <option>11</option>\n                                                            <option>12</option>\n                                                        </select>\n                                                    </div>\n                                                </div>\n                                                <div\n                                                    class=\"motor-subox-col col-age-4\"\n                                                >\n                                                    <div class=\"wrap-select\">\n                                                        <select\n                                                            form=\"motor-form\"\n                                                            name=\"kid-4-edad-select\"\n                                                            class=\"subox-select-color\"\n                                                        >\n                                                            <option>03</option>\n                                                            <option>04</option>\n                                                            <option>05</option>\n                                                            <option>06</option>\n                                                            <option>07</option>\n                                                            <option>08</option>\n                                                            <option>09</option>\n                                                            <option>10</option>\n                                                            <option>11</option>\n                                                            <option>12</option>\n                                                        </select>\n                                                    </div>\n                                                </div>\n                                            </div>\n                                            <div class=\"motor-subox-col\">\n                                                <div class=\"motor-subox-tit\">\n                                                    <i\n                                                        class=\"icon icon-baby\"\n                                                    ></i>\n                                                    <p\n                                                        class=\"motor-subox-title\"\n                                                    >\n                                                        Bebes\n                                                        <small\n                                                            >0 - 2 años</small\n                                                        >\n                                                    </p>\n                                                </div>\n                                                <div class=\"wrap-select\">\n                                                    <select\n                                                        form=\"motor-form\"\n                                                        name=\"baby-select\"\n                                                        class=\"subox-select\"\n                                                    >\n                                                        <option>00</option>\n                                                        <option>01</option>\n                                                        <option>02</option>\n                                                    </select>\n                                                </div>\n                                            </div>\n                                        </div>\n                                        <div\n                                            class=\"motor-subox--row motor-subox--room room-2 close\"\n                                        >\n                                            <div class=\"motor-subox-col\">\n                                                <div class=\"motor-subox-tit\">\n                                                    <p\n                                                        class=\"motor-subox-title\"\n                                                    >\n                                                        Habitación 2\n                                                    </p>\n                                                    <i\n                                                        class=\"icon icon-pointer-down js-open-room close\"\n                                                        data-room=\"room-2\"\n                                                    ></i>\n                                                </div>\n                                                <i\n                                                    class=\"icon icon-delete js-remove-room\"\n                                                    data-room=\"room-2\"\n                                                ></i>\n                                                <div class=\"toolTip\">\n                                                    Quitar habitación\n                                                </div>\n                                            </div>\n                                            <div class=\"motor-subox-col\">\n                                                <div class=\"motor-subox-tit\">\n                                                    <i\n                                                        class=\"icon icon-adult\"\n                                                    ></i>\n                                                    <p\n                                                        class=\"motor-subox-title\"\n                                                    >\n                                                        Adultos\n                                                    </p>\n                                                </div>\n                                                <div class=\"wrap-select\">\n                                                    <select\n                                                        form=\"motor-form\"\n                                                        name=\"adult-select\"\n                                                        class=\"subox-select\"\n                                                    >\n                                                        <option>01</option>\n                                                        <option>02</option>\n                                                        <option>03</option>\n                                                        <option>04</option>\n                                                    </select>\n                                                </div>\n                                            </div>\n                                            <div class=\"motor-subox-col\">\n                                                <div class=\"motor-subox-tit\">\n                                                    <i\n                                                        class=\"icon icon-nino\"\n                                                    ></i>\n                                                    <p\n                                                        class=\"motor-subox-title\"\n                                                    >\n                                                        Niños\n                                                    </p>\n                                                </div>\n                                                <div class=\"wrap-select\">\n                                                    <select\n                                                        form=\"motor-form\"\n                                                        name=\"nino-select\"\n                                                        class=\"subox-select nino-select\"\n                                                        data-room=\"room-2\"\n                                                        id=\"nino-select-room-2\"\n                                                    >\n                                                        <option value=\"0\">\n                                                            00\n                                                        </option>\n                                                        <option value=\"1\">\n                                                            01\n                                                        </option>\n                                                        <option value=\"2\">\n                                                            02\n                                                        </option>\n                                                        <option value=\"3\">\n                                                            03\n                                                        </option>\n                                                        <option value=\"4\">\n                                                            04\n                                                        </option>\n                                                    </select>\n                                                </div>\n                                            </div>\n                                            <div\n                                                class=\"motor-subox-col col-age\"\n                                            >\n                                                <div\n                                                    class=\"motor-subox-col col-age-1\"\n                                                >\n                                                    <div class=\"wrap-select\">\n                                                        <select\n                                                            form=\"motor-form\"\n                                                            name=\"kid-1-edad-select\"\n                                                            class=\"subox-select-color\"\n                                                        >\n                                                            <option>03</option>\n                                                            <option>04</option>\n                                                            <option>05</option>\n                                                            <option>06</option>\n                                                            <option>07</option>\n                                                            <option>08</option>\n                                                            <option>09</option>\n                                                            <option>10</option>\n                                                            <option>11</option>\n                                                            <option>12</option>\n                                                        </select>\n                                                    </div>\n                                                </div>\n                                                <div\n                                                    class=\"motor-subox-col col-age-2\"\n                                                >\n                                                    <div class=\"wrap-select\">\n                                                        <select\n                                                            form=\"motor-form\"\n                                                            name=\"kid-2-edad-select\"\n                                                            class=\"subox-select-color\"\n                                                        >\n                                                            <option>03</option>\n                                                            <option>04</option>\n                                                            <option>05</option>\n                                                            <option>06</option>\n                                                            <option>07</option>\n                                                            <option>08</option>\n                                                            <option>09</option>\n                                                            <option>10</option>\n                                                            <option>11</option>\n                                                            <option>12</option>\n                                                        </select>\n                                                    </div>\n                                                </div>\n                                                <div\n                                                    class=\"motor-subox-col col-age-3\"\n                                                >\n                                                    <div class=\"wrap-select\">\n                                                        <select\n                                                            form=\"motor-form\"\n                                                            name=\"kid-3-edad-select\"\n                                                            class=\"subox-select-color\"\n                                                        >\n                                                            <option>03</option>\n                                                            <option>04</option>\n                                                            <option>05</option>\n                                                            <option>06</option>\n                                                            <option>07</option>\n                                                            <option>08</option>\n                                                            <option>09</option>\n                                                            <option>10</option>\n                                                            <option>11</option>\n                                                            <option>12</option>\n                                                        </select>\n                                                    </div>\n                                                </div>\n                                                <div\n                                                    class=\"motor-subox-col col-age-4\"\n                                                >\n                                                    <div class=\"wrap-select\">\n                                                        <select\n                                                            form=\"motor-form\"\n                                                            name=\"kid-4-edad-select\"\n                                                            class=\"subox-select-color\"\n                                                        >\n                                                            <option>03</option>\n                                                            <option>04</option>\n                                                            <option>05</option>\n                                                            <option>06</option>\n                                                            <option>07</option>\n                                                            <option>08</option>\n                                                            <option>09</option>\n                                                            <option>10</option>\n                                                            <option>11</option>\n                                                            <option>12</option>\n                                                        </select>\n                                                    </div>\n                                                </div>\n                                            </div>\n                                            <div class=\"motor-subox-col\">\n                                                <div class=\"motor-subox-tit\">\n                                                    <i\n                                                        class=\"icon icon-baby\"\n                                                    ></i>\n                                                    <p\n                                                        class=\"motor-subox-title\"\n                                                    >\n                                                        Bebes\n                                                    </p>\n                                                </div>\n                                                <div class=\"wrap-select\">\n                                                    <select\n                                                        form=\"motor-form\"\n                                                        name=\"baby-select\"\n                                                        class=\"subox-select\"\n                                                    >\n                                                        <option>00</option>\n                                                        <option>01</option>\n                                                        <option>02</option>\n                                                    </select>\n                                                </div>\n                                            </div>\n                                        </div>\n                                        <div\n                                            class=\"motor-subox--row motor-subox--room room-3 close\"\n                                        >\n                                            <div class=\"motor-subox-col\">\n                                                <div class=\"motor-subox-tit\">\n                                                    <p\n                                                        class=\"motor-subox-title\"\n                                                    >\n                                                        Habitación 3\n                                                    </p>\n                                                    <i\n                                                        class=\"icon icon-pointer-down js-open-room close\"\n                                                        data-room=\"room-3\"\n                                                    ></i>\n                                                </div>\n                                                <i\n                                                    class=\"icon icon-delete js-remove-room\"\n                                                    data-room=\"room-3\"\n                                                ></i>\n                                                <div class=\"toolTip\">\n                                                    Quitar habitación\n                                                </div>\n                                            </div>\n                                            <div class=\"motor-subox-col\">\n                                                <div class=\"motor-subox-tit\">\n                                                    <i\n                                                        class=\"icon icon-adult\"\n                                                    ></i>\n                                                    <p\n                                                        class=\"motor-subox-title\"\n                                                    >\n                                                        Adultos\n                                                    </p>\n                                                </div>\n                                                <div class=\"wrap-select\">\n                                                    <select\n                                                        form=\"motor-form\"\n                                                        name=\"adult-select\"\n                                                        class=\"subox-select\"\n                                                    >\n                                                        <option>01</option>\n                                                        <option>02</option>\n                                                        <option>03</option>\n                                                        <option>04</option>\n                                                    </select>\n                                                </div>\n                                            </div>\n                                            <div class=\"motor-subox-col\">\n                                                <div class=\"motor-subox-tit\">\n                                                    <i\n                                                        class=\"icon icon-nino\"\n                                                    ></i>\n                                                    <p\n                                                        class=\"motor-subox-title\"\n                                                    >\n                                                        Niños\n                                                    </p>\n                                                </div>\n                                                <div class=\"wrap-select\">\n                                                    <select\n                                                        form=\"motor-form\"\n                                                        name=\"nino-select\"\n                                                        class=\"subox-select nino-select\"\n                                                        data-room=\"room-3\"\n                                                        id=\"nino-select-room-3\"\n                                                    >\n                                                        <option value=\"0\">\n                                                            00\n                                                        </option>\n                                                        <option value=\"1\">\n                                                            01\n                                                        </option>\n                                                        <option value=\"2\">\n                                                            02\n                                                        </option>\n                                                        <option value=\"3\">\n                                                            03\n                                                        </option>\n                                                        <option value=\"4\">\n                                                            04\n                                                        </option>\n                                                    </select>\n                                                </div>\n                                            </div>\n                                            <div\n                                                class=\"motor-subox-col col-age\"\n                                            >\n                                                <div\n                                                    class=\"motor-subox-col col-age-1\"\n                                                >\n                                                    <div class=\"wrap-select\">\n                                                        <select\n                                                            form=\"motor-form\"\n                                                            name=\"kid-1-edad-select\"\n                                                            class=\"subox-select-color\"\n                                                        >\n                                                            <option>03</option>\n                                                            <option>04</option>\n                                                            <option>05</option>\n                                                            <option>06</option>\n                                                            <option>07</option>\n                                                            <option>08</option>\n                                                            <option>09</option>\n                                                            <option>10</option>\n                                                            <option>11</option>\n                                                            <option>12</option>\n                                                        </select>\n                                                    </div>\n                                                </div>\n                                                <div\n                                                    class=\"motor-subox-col col-age-2\"\n                                                >\n                                                    <div class=\"wrap-select\">\n                                                        <select\n                                                            form=\"motor-form\"\n                                                            name=\"kid-2-edad-select\"\n                                                            class=\"subox-select-color\"\n                                                        >\n                                                            <option>03</option>\n                                                            <option>04</option>\n                                                            <option>05</option>\n                                                            <option>06</option>\n                                                            <option>07</option>\n                                                            <option>08</option>\n                                                            <option>09</option>\n                                                            <option>10</option>\n                                                            <option>11</option>\n                                                            <option>12</option>\n                                                        </select>\n                                                    </div>\n                                                </div>\n                                                <div\n                                                    class=\"motor-subox-col col-age-3\"\n                                                >\n                                                    <div class=\"wrap-select\">\n                                                        <select\n                                                            form=\"motor-form\"\n                                                            name=\"kid-3-edad-select\"\n                                                            class=\"subox-select-color\"\n                                                        >\n                                                            <option>03</option>\n                                                            <option>04</option>\n                                                            <option>05</option>\n                                                            <option>06</option>\n                                                            <option>07</option>\n                                                            <option>08</option>\n                                                            <option>09</option>\n                                                            <option>10</option>\n                                                            <option>11</option>\n                                                            <option>12</option>\n                                                        </select>\n                                                    </div>\n                                                </div>\n                                                <div\n                                                    class=\"motor-subox-col col-age-4\"\n                                                >\n                                                    <div class=\"wrap-select\">\n                                                        <select\n                                                            form=\"motor-form\"\n                                                            name=\"kid-4-edad-select\"\n                                                            class=\"subox-select-color\"\n                                                        >\n                                                            <option>03</option>\n                                                            <option>04</option>\n                                                            <option>05</option>\n                                                            <option>06</option>\n                                                            <option>07</option>\n                                                            <option>08</option>\n                                                            <option>09</option>\n                                                            <option>10</option>\n                                                            <option>11</option>\n                                                            <option>12</option>\n                                                        </select>\n                                                    </div>\n                                                </div>\n                                            </div>\n                                            <div class=\"motor-subox-col\">\n                                                <div class=\"motor-subox-tit\">\n                                                    <i\n                                                        class=\"icon icon-baby\"\n                                                    ></i>\n                                                    <p\n                                                        class=\"motor-subox-title\"\n                                                    >\n                                                        Bebes\n                                                    </p>\n                                                </div>\n                                                <div class=\"wrap-select\">\n                                                    <select\n                                                        form=\"motor-form\"\n                                                        name=\"baby-select\"\n                                                        class=\"subox-select\"\n                                                    >\n                                                        <option>00</option>\n                                                        <option>01</option>\n                                                        <option>02</option>\n                                                    </select>\n                                                </div>\n                                            </div>\n                                        </div>\n                                        <div\n                                            class=\"motor-subox--row motor-subox--room room-4 close\"\n                                        >\n                                            <div class=\"motor-subox-col\">\n                                                <div class=\"motor-subox-tit\">\n                                                    <p\n                                                        class=\"motor-subox-title\"\n                                                    >\n                                                        Habitación 4\n                                                    </p>\n                                                    <i\n                                                        class=\"icon icon-pointer-down js-open-room close\"\n                                                        data-room=\"room-4\"\n                                                    ></i>\n                                                </div>\n                                                <i\n                                                    class=\"icon icon-delete js-remove-room\"\n                                                    data-room=\"room-4\"\n                                                ></i>\n                                                <div class=\"toolTip\">\n                                                    Quitar habitación\n                                                </div>\n                                            </div>\n                                            <div class=\"motor-subox-col\">\n                                                <div class=\"motor-subox-tit\">\n                                                    <i\n                                                        class=\"icon icon-adult\"\n                                                    ></i>\n                                                    <p\n                                                        class=\"motor-subox-title\"\n                                                    >\n                                                        Adultos\n                                                    </p>\n                                                </div>\n                                                <div class=\"wrap-select\">\n                                                    <select\n                                                        form=\"motor-form\"\n                                                        name=\"adult-select\"\n                                                        class=\"subox-select\"\n                                                    >\n                                                        <option>01</option>\n                                                        <option>02</option>\n                                                        <option>03</option>\n                                                        <option>04</option>\n                                                    </select>\n                                                </div>\n                                            </div>\n                                            <div class=\"motor-subox-col\">\n                                                <div class=\"motor-subox-tit\">\n                                                    <i\n                                                        class=\"icon icon-nino\"\n                                                    ></i>\n                                                    <p\n                                                        class=\"motor-subox-title\"\n                                                    >\n                                                        Niños\n                                                    </p>\n                                                </div>\n                                                <div class=\"wrap-select\">\n                                                    <select\n                                                        form=\"motor-form\"\n                                                        name=\"nino-select\"\n                                                        class=\"subox-select nino-select\"\n                                                        data-room=\"room-4\"\n                                                        id=\"nino-select-room-4\"\n                                                    >\n                                                        <option value=\"0\">\n                                                            00\n                                                        </option>\n                                                        <option value=\"1\">\n                                                            01\n                                                        </option>\n                                                        <option value=\"2\">\n                                                            02\n                                                        </option>\n                                                        <option value=\"3\">\n                                                            03\n                                                        </option>\n                                                        <option value=\"4\">\n                                                            04\n                                                        </option>\n                                                    </select>\n                                                </div>\n                                            </div>\n                                            <div\n                                                class=\"motor-subox-col col-age\"\n                                            >\n                                                <div\n                                                    class=\"motor-subox-col col-age-1\"\n                                                >\n                                                    <div class=\"wrap-select\">\n                                                        <select\n                                                            form=\"motor-form\"\n                                                            name=\"kid-1-edad-select\"\n                                                            class=\"subox-select-color\"\n                                                        >\n                                                            <option>03</option>\n                                                            <option>04</option>\n                                                            <option>05</option>\n                                                            <option>06</option>\n                                                            <option>07</option>\n                                                            <option>08</option>\n                                                            <option>09</option>\n                                                            <option>10</option>\n                                                            <option>11</option>\n                                                            <option>12</option>\n                                                        </select>\n                                                    </div>\n                                                </div>\n                                                <div\n                                                    class=\"motor-subox-col col-age-2\"\n                                                >\n                                                    <div class=\"wrap-select\">\n                                                        <select\n                                                            form=\"motor-form\"\n                                                            name=\"kid-2-edad-select\"\n                                                            class=\"subox-select-color\"\n                                                        >\n                                                            <option>03</option>\n                                                            <option>04</option>\n                                                            <option>05</option>\n                                                            <option>06</option>\n                                                            <option>07</option>\n                                                            <option>08</option>\n                                                            <option>09</option>\n                                                            <option>10</option>\n                                                            <option>11</option>\n                                                            <option>12</option>\n                                                        </select>\n                                                    </div>\n                                                </div>\n                                                <div\n                                                    class=\"motor-subox-col col-age-3\"\n                                                >\n                                                    <div class=\"wrap-select\">\n                                                        <select\n                                                            form=\"motor-form\"\n                                                            name=\"kid-3-edad-select\"\n                                                            class=\"subox-select-color\"\n                                                        >\n                                                            <option>03</option>\n                                                            <option>04</option>\n                                                            <option>05</option>\n                                                            <option>06</option>\n                                                            <option>07</option>\n                                                            <option>08</option>\n                                                            <option>09</option>\n                                                            <option>10</option>\n                                                            <option>11</option>\n                                                            <option>12</option>\n                                                        </select>\n                                                    </div>\n                                                </div>\n                                                <div\n                                                    class=\"motor-subox-col col-age-4\"\n                                                >\n                                                    <div class=\"wrap-select\">\n                                                        <select\n                                                            form=\"motor-form\"\n                                                            name=\"kid-4-edad-select\"\n                                                            class=\"subox-select-color\"\n                                                        >\n                                                            <option>03</option>\n                                                            <option>04</option>\n                                                            <option>05</option>\n                                                            <option>06</option>\n                                                            <option>07</option>\n                                                            <option>08</option>\n                                                            <option>09</option>\n                                                            <option>10</option>\n                                                            <option>11</option>\n                                                            <option>12</option>\n                                                        </select>\n                                                    </div>\n                                                </div>\n                                            </div>\n                                            <div class=\"motor-subox-col\">\n                                                <div class=\"motor-subox-tit\">\n                                                    <i\n                                                        class=\"icon icon-baby\"\n                                                    ></i>\n                                                    <p\n                                                        class=\"motor-subox-title\"\n                                                    >\n                                                        Bebes\n                                                    </p>\n                                                </div>\n                                                <div class=\"wrap-select\">\n                                                    <select\n                                                        form=\"motor-form\"\n                                                        name=\"baby-select\"\n                                                        class=\"subox-select\"\n                                                    >\n                                                        <option>00</option>\n                                                        <option>01</option>\n                                                        <option>02</option>\n                                                    </select>\n                                                </div>\n                                            </div>\n                                        </div>\n                                        <div\n                                            class=\"motor-subox--row motor-subox--room room-5 close\"\n                                        >\n                                            <div class=\"motor-subox-col\">\n                                                <div class=\"motor-subox-tit\">\n                                                    <p\n                                                        class=\"motor-subox-title\"\n                                                    >\n                                                        Habitación 5\n                                                    </p>\n                                                    <i\n                                                        class=\"icon icon-pointer-down js-open-room close\"\n                                                        data-room=\"room-5\"\n                                                    ></i>\n                                                </div>\n                                                <i\n                                                    class=\"icon icon-delete js-remove-room\"\n                                                    data-room=\"room-5\"\n                                                ></i>\n                                                <div class=\"toolTip\">\n                                                    Quitar habitación\n                                                </div>\n                                            </div>\n                                            <div class=\"motor-subox-col\">\n                                                <div class=\"motor-subox-tit\">\n                                                    <i\n                                                        class=\"icon icon-adult\"\n                                                    ></i>\n                                                    <p\n                                                        class=\"motor-subox-title\"\n                                                    >\n                                                        Adultos\n                                                    </p>\n                                                </div>\n                                                <div class=\"wrap-select\">\n                                                    <select\n                                                        form=\"motor-form\"\n                                                        name=\"adult-select\"\n                                                        class=\"subox-select\"\n                                                    >\n                                                        <option>01</option>\n                                                        <option>02</option>\n                                                        <option>03</option>\n                                                        <option>04</option>\n                                                    </select>\n                                                </div>\n                                            </div>\n                                            <div class=\"motor-subox-col\">\n                                                <div class=\"motor-subox-tit\">\n                                                    <i\n                                                        class=\"icon icon-nino\"\n                                                    ></i>\n                                                    <p\n                                                        class=\"motor-subox-title\"\n                                                    >\n                                                        Niños\n                                                    </p>\n                                                </div>\n                                                <div class=\"wrap-select\">\n                                                    <select\n                                                        form=\"motor-form\"\n                                                        name=\"nino-select\"\n                                                        class=\"subox-select nino-select\"\n                                                        data-room=\"room-5\"\n                                                        id=\"nino-select-room-5\"\n                                                    >\n                                                        <option value=\"0\">\n                                                            00\n                                                        </option>\n                                                        <option value=\"1\">\n                                                            01\n                                                        </option>\n                                                        <option value=\"2\">\n                                                            02\n                                                        </option>\n                                                        <option value=\"3\">\n                                                            03\n                                                        </option>\n                                                        <option value=\"4\">\n                                                            04\n                                                        </option>\n                                                    </select>\n                                                </div>\n                                            </div>\n                                            <div\n                                                class=\"motor-subox-col col-age\"\n                                            >\n                                                <div\n                                                    class=\"motor-subox-col col-age-1\"\n                                                >\n                                                    <div class=\"wrap-select\">\n                                                        <select\n                                                            form=\"motor-form\"\n                                                            name=\"kid-1-edad-select\"\n                                                            class=\"subox-select-color\"\n                                                        >\n                                                            <option>03</option>\n                                                            <option>04</option>\n                                                            <option>05</option>\n                                                            <option>06</option>\n                                                            <option>07</option>\n                                                            <option>08</option>\n                                                            <option>09</option>\n                                                            <option>10</option>\n                                                            <option>11</option>\n                                                            <option>12</option>\n                                                        </select>\n                                                    </div>\n                                                </div>\n                                                <div\n                                                    class=\"motor-subox-col col-age-2\"\n                                                >\n                                                    <div class=\"wrap-select\">\n                                                        <select\n                                                            form=\"motor-form\"\n                                                            name=\"kid-2-edad-select\"\n                                                            class=\"subox-select-color\"\n                                                        >\n                                                            <option>03</option>\n                                                            <option>04</option>\n                                                            <option>05</option>\n                                                            <option>06</option>\n                                                            <option>07</option>\n                                                            <option>08</option>\n                                                            <option>09</option>\n                                                            <option>10</option>\n                                                            <option>11</option>\n                                                            <option>12</option>\n                                                        </select>\n                                                    </div>\n                                                </div>\n                                                <div\n                                                    class=\"motor-subox-col col-age-3\"\n                                                >\n                                                    <div class=\"wrap-select\">\n                                                        <select\n                                                            form=\"motor-form\"\n                                                            name=\"kid-3-edad-select\"\n                                                            class=\"subox-select-color\"\n                                                        >\n                                                            <option>03</option>\n                                                            <option>04</option>\n                                                            <option>05</option>\n                                                            <option>06</option>\n                                                            <option>07</option>\n                                                            <option>08</option>\n                                                            <option>09</option>\n                                                            <option>10</option>\n                                                            <option>11</option>\n                                                            <option>12</option>\n                                                        </select>\n                                                    </div>\n                                                </div>\n                                                <div\n                                                    class=\"motor-subox-col col-age-4\"\n                                                >\n                                                    <div class=\"wrap-select\">\n                                                        <select\n                                                            form=\"motor-form\"\n                                                            name=\"kid-4-edad-select\"\n                                                            class=\"subox-select-color\"\n                                                        >\n                                                            <option>03</option>\n                                                            <option>04</option>\n                                                            <option>05</option>\n                                                            <option>06</option>\n                                                            <option>07</option>\n                                                            <option>08</option>\n                                                            <option>09</option>\n                                                            <option>10</option>\n                                                            <option>11</option>\n                                                            <option>12</option>\n                                                        </select>\n                                                    </div>\n                                                </div>\n                                            </div>\n                                            <div class=\"motor-subox-col\">\n                                                <div class=\"motor-subox-tit\">\n                                                    <i\n                                                        class=\"icon icon-baby\"\n                                                    ></i>\n                                                    <p\n                                                        class=\"motor-subox-title\"\n                                                    >\n                                                        Bebes\n                                                    </p>\n                                                </div>\n                                                <div class=\"wrap-select\">\n                                                    <select\n                                                        form=\"motor-form\"\n                                                        name=\"baby-select\"\n                                                        class=\"subox-select\"\n                                                    >\n                                                        <option>00</option>\n                                                        <option>01</option>\n                                                        <option>02</option>\n                                                    </select>\n                                                </div>\n                                            </div>\n                                        </div>\n                                        <div\n                                            class=\"motor-subox--row motor-subox--foot\"\n                                        >\n                                            <div class=\"motor-subox-buttons\">\n                                                <div\n                                                    class=\"btn-corp btn-border-color js-add-room active\"\n                                                >\n                                                    <p class=\"btn-corp-link\">\n                                                        Añadir habitación\n                                                    </p>\n                                                </div>\n                                                <div\n                                                    class=\"btn-corp btn-color js-apply-guests\"\n                                                >\n                                                    <p class=\"btn-corp-link\">\n                                                        Aplicar\n                                                    </p>\n                                                </div>\n                                            </div>\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                        <div class=\"motor-box-element\">\n                            <div class=\"wrap-motor-element\">\n                                <div class=\"motor-element-field\">\n                                    <div class=\"wrap-motor-field\">\n                                        <span class=\"motor-field-text\"\n                                            >Promo code</span\n                                        >\n                                        <input\n                                            type=\"text\"\n                                            class=\"motor-field-input\"\n                                            placeholder=\"...\"\n                                        />\n                                        <i\n                                            class=\"motor-field-icon icon-tag\"\n                                        ></i>\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                        <div class=\"motor-box-btn\">\n                            <a href=\"\" rel=\"external nofollow\" target=\"_blank\">\n                                <div class=\"wrap-motor-btn\">\n                                    <p class=\"motor-btn-text\">Book Now</p>\n                                    <p class=\"motor-btn-subtext\">\n                                        - Mejor precio garantizado -\n                                    </p>\n                                </div>\n                            </a>\n                        </div>\n                        <div class=\"motor-box-checkin\">\n                            <a href=\"\">\n                                <div class=\"wrap-links-element check-in-button\">\n                                    <i\n                                        class=\"links-element-icon icon-check\"\n                                    ></i>\n                                    <span class=\"links-element-text\"\n                                        >Check-in online</span\n                                    >\n                                </div>\n                            </a>\n                        </div>\n                    </form>\n                </div>\n                <div class=\"motor-box-close js-close-motor\">\n                    <i class=\"btn-close btn-white\"></i>\n                    <p class=\"motor-box-close_text\">Cerrar</p>\n                </div>\n            </div>\n        </div>\n    </aside>\n    <!-- variables: \"sta-menu-white\" \"sta-show-links\" \"sta-book-fixed\" \"sta-logo-off\" \"sta-logo-center\" \"sta-logo-between_links\" \"sta-book-aside\" \"sta-book-btn\" -->\n    <aside class=\"tgl-internbar-air\">\n        <div class=\"sta-internbar-air_header add-logo1\">\n            <p class=\"sta-internbar-air_header-title\">\n                {{ data.mainNav.headerTitle }}\n            </p>\n            <!-- todo: logo con el nombre del hotel \"wipton\" / \"embassy\" / \"casona\" / \"bcn\" / \"valparaiso\" / \"malabar\" / \"roseto\" -->\n            <img\n                [src]=\"data.mainNav.headerLogoSrc\"\n                [alt]=\"data.mainNav.headerLogoAlt\"\n                class=\"sta-internbar-air_header-logo\"\n            />\n            <div class=\"sta-internbar-air_text-icons\">\n                <p class=\"sta-internbar-air_text-hotel\">\n                    {{ data.mainNav.headerSubtitle }}\n                </p>\n                <div class=\"sta-internbar-air_icons\">\n                    @for (\n                        star of createStars(data.mainNav.headerStars);\n                        track trackByIndex($index)\n                    ) {\n                        <div class=\"sta-internbar-air_icons--star\"></div>\n                    }\n                </div>\n            </div>\n        </div>\n        <div class=\"sta-internbar-air_links-btn\" role=\"button\" tabindex=\"0\">\n            <p class=\"sta-internbar-air_links-btn-text\">\n                {{ data.mainNav.linksButtonText }}\n            </p>\n            <i class=\"sta-internbar-air_links-btn-icon icon-menu\"></i>\n        </div>\n        <div class=\"sta-internbar-air_links\">\n            <div class=\"sta-internbar-air_links-close btn-close\"></div>\n            @for (link of links; track trackByIndex($index)) {\n                @if (link?.url) {\n                    <a\n                        [attr.href]=\"$index === 1 ? null : link.url\"\n                        (click)=\"\n                            $index === 1\n                                ? openSubmenu($event, 'popup-rooms')\n                                : null\n                        \"\n                        class=\"sta-internbar-air_links-element\"\n                        [ngClass]=\"$index === 0 ? 'home' : null\"\n                        tabindex=\"0\"\n                        [attr.data-submenu]=\"$index === 1 ? 'popup-rooms' : ''\"\n                    >\n                        <p class=\"sta-internbar-air_element-text\">\n                            {{ link.label }}\n                        </p>\n                    </a>\n                } @else {\n                    <div\n                        class=\"sta-internbar-air_links-element js-open-submenu\"\n                        [attr.data-submenu]=\"$index === 1 ? 'popup-rooms' : ''\"\n                        role=\"button\"\n                        tabindex=\"0\"\n                    >\n                        <p class=\"sta-internbar-air_element-text\">\n                            {{ link.label }}\n                        </p>\n                    </div>\n                }\n            }\n        </div>\n        <div class=\"nav-book\">\n            <div class=\"nav-book_btn js-open-motor\" tabindex=\"0\" role=\"button\">\n                <p class=\"nav-book_btn-link\">{{ data.mainNav.bookLabel }}</p>\n            </div>\n        </div>\n        <div\n            class=\"sta-internbar-air_main-menu js-open-submenu\"\n            [attr.data-submenu]=\"data.mainNav.menuButtonSubnav\"\n            role=\"button\"\n            tabindex=\"0\"\n        >\n            <p class=\"sta-internbar-air_main-menu-text\">\n                {{ data.mainNav.menuButtonText }}\n            </p>\n            <i class=\"sta-internbar-air_main-menu-icon icon-menu\"></i>\n        </div>\n        <div class=\"sta-internbar-air_nav\">\n            <div class=\"sta-menus-air_nav-morebtns\">\n                <div\n                    class=\"sta-menus-air_nav-morebtns-element sta-lang js-toggle-popup\"\n                    [attr.data-popup]=\"data.mainNav.languagePopupId\"\n                    role=\"button\"\n                    tabindex=\"0\"\n                >\n                    <div class=\"sta-menus-air_morebtns-element-wrapper\">\n                        <span class=\"sta-menus-air_morebtns-element-text\">{{\n                            data.mainNav.languageCode\n                        }}</span>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </aside>\n\n    @for (subnav of data.subnavs; track trackByIndex($index)) {\n        <article class=\"subnav-box\" data-subnav=\"popup-rooms\">\n            <div class=\"wrap-subnav-box\">\n                <i\n                    class=\"subnav-box_close btn-close icon-close js-close-all\"\n                    tabindex=\"0\"\n                    role=\"button\"\n                ></i>\n                <div class=\"subnav-box_half-list\">\n                    <div class=\"wrap-half-list\">\n                        <p class=\"half-list-title\">{{ subnav.title }}</p>\n                        <div class=\"half-list-box\">\n                            @for (room of rooms; track trackByIndex($index)) {\n                                <div\n                                    class=\"half-list-element\"\n                                    [attr.data-placeholder]=\"room?.title\"\n                                    (mouseenter)=\"hoveredRoomIndex = $index\"\n                                    (mouseleave)=\"hoveredRoomIndex = null\"\n                                >\n                                    @if (links?.length) {\n                                        <a\n                                            [href]=\"room?.links?.[0]?.url\"\n                                            class=\"wrap-list-element\"\n                                        >\n                                            <div class=\"half-list-element_img\">\n                                                <figure\n                                                    class=\"half-list-element_img-photo\"\n                                                    role=\"img\"\n                                                    [style.backgroundImage]=\"\n                                                        hoveredRoomIndex ===\n                                                            $index &&\n                                                        room?.multimedia\n                                                            ?.imagenes?.[\n                                                            hoveredRoomIndex\n                                                        ]?.img?.src\n                                                            ? 'url(' +\n                                                              room?.multimedia\n                                                                  ?.imagenes?.[\n                                                                  hoveredRoomIndex\n                                                              ]?.img?.src +\n                                                              ')'\n                                                            : ''\n                                                    \"\n                                                ></figure>\n                                            </div>\n                                            <div class=\"half-list-element_info\">\n                                                <p\n                                                    class=\"half-list-element_info-text\"\n                                                >\n                                                    {{ room.title }}\n                                                </p>\n                                            </div>\n                                        </a>\n                                    }\n                                </div>\n                            }\n                        </div>\n                        <div class=\"half-list-back\">\n                            <div\n                                class=\"btn-linker toleft js-close-submenu\"\n                                role=\"button\"\n                                tabindex=\"0\"\n                            >\n                                <p class=\"btn-linker-text\">\n                                    {{ subnav.backLabel }}\n                                </p>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n                <div class=\"subnav-box_half-media\">\n                    <div class=\"wrap-half-media\">\n                        <figure\n                            class=\"half-media-img adjust-png\"\n                            role=\"img\"\n                            [attr.aria-label]=\"subnav.mediaAriaLabel || null\"\n                            [attr.data-default-placeholder]=\"\n                                subnav.mediaPlaceholder\n                            \"\n                            [style.backgroundImage]=\"\n                                'url(' + subnav.mediaPlaceholder + ')'\n                            \"\n                        ></figure>\n                    </div>\n                </div>\n            </div>\n        </article>\n    }\n\n    <div [id]=\"data.popupLanguages.id\" class=\"popup-module\">\n        <div class=\"wrap-popup-module\">\n            <div\n                class=\"popup-module-backmask popup-box-close js-toggle-popup\"\n                [attr.data-popup]=\"data.popupLanguages.id\"\n            ></div>\n            <div class=\"popup-module-box\">\n                <i\n                    class=\"popup-box-close btn-close js-toggle-popup\"\n                    [attr.data-popup]=\"data.popupLanguages.id\"\n                ></i>\n                <div class=\"wrap-popup-box\">\n                    <div class=\"row-flex pop-title-border-bottom text-left\">\n                        <div class=\"col-flex\">\n                            @if (data.popupLanguages.title) {\n                                <p class=\"popup-box-title\">\n                                    {{ data.popupLanguages.title }}\n                                </p>\n                            }\n                            <p class=\"popup-box-subtitle\">\n                                {{ data.popupLanguages.subtitle }}\n                            </p>\n                        </div>\n                        <div class=\"col-flex\">\n                            @if (data.popupLanguages.iconClass) {\n                                <i\n                                    [ngClass]=\"data.popupLanguages.iconClass\"\n                                ></i>\n                            }\n                        </div>\n                    </div>\n                    <div class=\"popup-box-languages\">\n                        @for (\n                            option of data.popupLanguages.options;\n                            track trackByIndex($index)\n                        ) {\n                            <a\n                                [href]=\"option.href\"\n                                [attr.rel]=\"option.rel ?? null\"\n                                class=\"btn-languages btn-corp btn-small\"\n                                [ngClass]=\"option.active ? 'active' : null\"\n                            >\n                                <p class=\"btn-corp-text\">{{ option.label }}</p>\n                            </a>\n                        }\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n\n    <aside class=\"aside-btns\">\n        @for (button of data.asideButtons; track trackByIndex($index)) {\n            <div\n                class=\"aside-btns_element\"\n                [ngClass]=\"button.className ?? null\"\n            >\n                <a [href]=\"button.href\" class=\"aside-btns_element-text\">{{\n                    button.label\n                }}</a>\n            </div>\n        }\n    </aside>\n\n    <!-- Responsive top header -->\n    <div class=\"responsive-header responsive-header-intern add-logo1\">\n        <a [href]=\"data.responsiveHeader.href\">\n            <div class=\"wrap-responsive-header\">\n                @if (texts?.title) {\n                    <p\n                        class=\"sta-internbar-air_header-title\"\n                        [innerHTML]=\"texts?.title\"\n                    ></p>\n                }\n                <div class=\"sta-internbar-air_text-icons\">\n                    <p class=\"sta-internbar-air_text-hotel\">\n                        {{ data.responsiveHeader.subtitle }}\n                    </p>\n                </div>\n                <img\n                    [src]=\"data.responsiveHeader.logoSrc\"\n                    [alt]=\"data.responsiveHeader.logoAlt\"\n                    class=\"responsive-header-logo\"\n                />\n            </div>\n        </a>\n    </div>\n</div>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { BabylonMultimediaI, BabylonTextInfoI } from '../../../../interfaces';\n\n@Component({\n    selector: 'lis-c3-img-txt',\n    standalone: true,\n    imports: [CommonModule],\n    templateUrl: './lis-c3-img-txt.component.html',\n    styleUrl: './lis-c3-img-txt.component.scss',\n    encapsulation: ViewEncapsulation.Emulated,\n})\nexport class LisC3ImgTxtComponent {\n    @Input() texts?: BabylonTextInfoI;\n    @Input() multimedia?: BabylonMultimediaI;\n\n    trackItem(index: number): number {\n        return index;\n    }\n}\n","<section class=\"items-gallery\">\n  <div class=\"big-wrapper\">\n    <div class=\"wrap-items-gallery module-spacer\">\n      @if ( texts?.title ) {\n        <h2 class=\"items-gallery-title\">{{ texts?.title }}</h2>\n      }\n      <div class=\"items-gallery-list\">\n        @for (item of multimedia?.imagenes; track trackItem($index)) {\n          <div class=\"items-gallery-element\">\n            <div class=\"wrap-items-element\">\n              <div class=\"items-element-media\">\n                <figure\n                  class=\"element-media-img responsive-resize\"\n                  role=\"img\"\n                  [attr.aria-label]=\"item?.img?.alt ?? 'image'\"\n                  [attr.data-filename]=\"item?.img?.alt ?? 'image'\"\n                  [style.background-image]=\"'url(' + item?.img?.src + ')'\"\n                ></figure>\n              </div>\n              @if (item?.title) {\n                <h3 class=\"items-element-title\">{{ item.title }}</h3>\n              }\n              @if (item?.description) {\n                <p class=\"items-element-text\" [innerHTML]=\"item.description\"></p>\n              }\n\n            </div>\n          </div>\n        }\n      </div>\n    </div>\n  </div>\n</section>\n","import { CommonModule } from '@angular/common';\nimport {\n  AfterViewInit,\n  Component,\n  ElementRef,\n  HostListener,\n  inject,\n  Input,\n  NgZone,\n  OnChanges,\n  OnDestroy,\n  SimpleChanges,\n  ViewChild,\n  ViewEncapsulation\n} from '@angular/core';\nimport Swiper from 'swiper';\nimport { Autoplay, Navigation } from 'swiper';\nimport { BabylonLinkTypeDirective } from '../../../../directives/link-type/link-type.directive';\nimport { BabylonSwiperCssLoaderDirective } from '../../../../directives/babylon-sliders/babylon-swiper-css-loader.directive';\nimport { BabylonItemI, BabylonTextInfoI } from '../../../../interfaces';\nimport { BabylonGlobalExperience } from '../../../../interfaces/babylon-global-experience.interface';\nimport { SITE_CONFIG_SERVICE_TOKEN } from '../../../../services/mapper/mapper.service.token';\nimport sliderSettings from './slider-settings.json';\nimport { SliC3ImgTxtSlideItem } from './sli-c3-img-txt.interfaces';\nimport { getFirstImageByTagFromImages } from '../../../../utils/mutimedia.utils';\n\n@Component({\n  selector: 'sli-c3-img-txt',\n  standalone: true,\n  imports: [CommonModule, BabylonSwiperCssLoaderDirective, BabylonLinkTypeDirective],\n  templateUrl: './sli-c3-img-txt.component.html',\n  styleUrl: './sli-c3-img-txt.component.scss',\n  encapsulation: ViewEncapsulation.Emulated\n})\nexport class SliC3ImgTxtComponent implements AfterViewInit, OnChanges, OnDestroy {\n  private readonly siteSvc = inject(SITE_CONFIG_SERVICE_TOKEN);\n  private sliderInitialized = false;\n  private swiperInstance?: Swiper;\n  private readonly tagName = 'SliC3ImgTxt';\n\n  @Input() texts?: BabylonTextInfoI;\n  @Input() items?: BabylonItemI[];\n  @Input() experiences?: BabylonGlobalExperience[];\n\n  @ViewChild('sectionSlider', { static: false }) sectionSlider?: ElementRef<HTMLElement>;\n  @ViewChild('sliderPrev', { static: false }) sliderPrev?: ElementRef<HTMLButtonElement>;\n  @ViewChild('sliderNext', { static: false }) sliderNext?: ElementRef<HTMLButtonElement>;\n\n  readonly sliderConfig = sliderSettings;\n\n  constructor(private readonly ngZone: NgZone) {}\n\n  get normalizedItems(): SliC3ImgTxtSlideItem[] {\n    const source = this.items?.length ? this.items : (this.experiences as BabylonItemI[] | undefined);\n\n    return (\n      source\n        ?.map((item) => {\n          const image = this.resolveImage(item);\n          if (!image) return undefined;\n\n          const title =\n            item?.texts?.title ??\n            item?.texts?.name ??\n            item?.title ??\n            item?.label ??\n            (item as any)?.nameIdentifier ??\n            '';\n\n          const description =\n            item?.texts?.description ??\n            item?.description ??\n            item?.text ??\n            '';\n\n          const primaryLink = item?.buttons?.[0] ?? item?.links?.[0];\n          const itemUrl = (item as any)?.url;\n\n          return {\n            id: (item as any)?.id,\n            title,\n            description,\n            image,\n            url: primaryLink?.url ?? itemUrl ?? '#',\n            linkType: primaryLink?.linkType,\n            target: primaryLink?.target\n          };\n        })\n        ?.filter(Boolean) as SliC3ImgTxtSlideItem[]\n    ) ?? [];\n  }\n\n  ngAfterViewInit(): void {\n    this.initSlider();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if ((changes['items'] || changes['experiences']) && this.sliderInitialized) {\n      this.destroySlider();\n      queueMicrotask(() => this.initSlider());\n    }\n  }\n\n  ngOnDestroy(): void {\n    this.destroySlider();\n  }\n\n  @HostListener('window:resize')\n  onWindowResize(): void {\n    if (!this.sliderInitialized) return;\n\n    this.destroySlider();\n    queueMicrotask(() => this.initSlider());\n  }\n\n  trackItem(index: number): number {\n    return index;\n  }\n\n  private resolveImage(item: BabylonItemI): { src: string; alt?: string } | undefined {\n    const taggedMappedImage =\n      getFirstImageByTagFromImages(item?.multimedia?.imagenes, this.tagName) ??\n      item?.multimedia?.imagenes?.[0];\n\n    const mappedTaggedSrc = taggedMappedImage?.img?.src;\n    if (mappedTaggedSrc) {\n      return {\n        src: this.normalizeImageUrl(mappedTaggedSrc),\n        alt: taggedMappedImage?.img?.alt ?? item?.texts?.title ?? item?.title ?? item?.label\n      };\n    }\n\n    const direct = item?.img?.src;\n    if (direct) {\n      return {\n        src: this.normalizeImageUrl(direct),\n        alt: item?.img?.alt ?? item?.texts?.title ?? item?.title ?? item?.label\n      };\n    }\n\n    const fromMapped = item?.multimedia?.imagenes?.[0]?.img?.src;\n    if (fromMapped) {\n      return {\n        src: this.normalizeImageUrl(fromMapped),\n        alt:\n          item?.multimedia?.imagenes?.[0]?.img?.alt ??\n          item?.texts?.title ??\n          item?.title ??\n          item?.label\n      };\n    }\n\n    const rawImages = (item as any)?.multimedia as any[] | undefined;\n    const raw =\n      getFirstImageByTagFromImages(rawImages as any, this.tagName) ??\n      rawImages?.[0];\n    const rawSrc =\n      raw?.path?.webp ??\n      raw?.path?.original ??\n      raw?.thumbnails?.[1366]?.webp ??\n      raw?.thumbnails?.[1280]?.webp ??\n      raw?.thumbnails?.[1024]?.webp ??\n      raw?.thumbnails?.[768]?.webp ??\n      raw?.thumbnails?.[540]?.webp ??\n      raw?.thumbnails?.[375]?.webp ??\n      raw?.thumbnails?.[1366]?.original ??\n      raw?.thumbnails?.[1280]?.original ??\n      raw?.thumbnails?.[1024]?.original ??\n      raw?.thumbnails?.[768]?.original ??\n      raw?.thumbnails?.[540]?.original ??\n      raw?.thumbnails?.[375]?.original;\n\n    if (!rawSrc) return undefined;\n\n    return {\n      src: this.normalizeImageUrl(rawSrc),\n      alt: raw?.alt ?? item?.texts?.title ?? item?.title ?? item?.label\n    };\n  }\n\n  private normalizeImageUrl(src: string): string {\n    if (/^(https?:)?\\/\\//i.test(src) || /^(data|blob):/i.test(src)) {\n      return src;\n    }\n\n    const cdnBase = (this.siteSvc?.cdnImagesInstant ?? '').toString();\n    if (!cdnBase) return src;\n\n    const cleanBase = cdnBase.endsWith('/') ? cdnBase : `${cdnBase}/`;\n    const cleanSrc = src.replace(/^\\/+/, '');\n    return `${cleanBase}${cleanSrc}`;\n  }\n\n  private initSlider(): void {\n    if (this.sliderInitialized || typeof window === 'undefined' || !this.sectionSlider) {\n      return;\n    }\n\n    const items = this.normalizedItems;\n    const hasMultipleSlides = items.length > 1;\n    const slidesPerViewForViewport = this.getSlidesPerViewForViewport();\n    const hasInsufficientSlides = items.length <= slidesPerViewForViewport;\n    const shouldLoop = hasMultipleSlides && !hasInsufficientSlides;\n\n    this.ngZone.runOutsideAngular(() => {\n      this.swiperInstance = new Swiper(this.sectionSlider!.nativeElement, {\n        modules: [Navigation, Autoplay],\n        slidesPerView: 1,\n        slidesPerGroup: 1,\n        speed: 300,\n        loop: shouldLoop,\n        watchOverflow: true,\n        centerInsufficientSlides: true,\n        navigation:\n          hasMultipleSlides && this.sliderConfig.showButtons && this.sliderPrev && this.sliderNext\n            ? {\n                nextEl: this.sliderNext.nativeElement,\n                prevEl: this.sliderPrev.nativeElement\n              }\n            : false,\n        autoplay: this.sliderConfig.autoplay\n          ? {\n              delay: 3000,\n              disableOnInteraction: false\n            }\n          : false,\n        breakpoints: {\n          768: {\n            slidesPerView: 2.2,\n            slidesPerGroup: 1\n          },\n          1124: {\n            slidesPerView: 3.2,\n            slidesPerGroup: 1\n          }\n        }\n      });\n\n      this.sliderInitialized = true;\n    });\n  }\n\n  private getSlidesPerViewForViewport(): number {\n    if (typeof window === 'undefined') return 1;\n\n    const width = window.innerWidth;\n    if (width >= 1124) return 3.2;\n    if (width >= 768) return 2.2;\n    return 1;\n  }\n\n  private destroySlider(): void {\n    if (!this.sliderInitialized || !this.swiperInstance) {\n      return;\n    }\n\n    this.swiperInstance.destroy(true, true);\n    this.swiperInstance = undefined;\n    this.sliderInitialized = false;\n  }\n}\n","<section class=\"mdl-slider\" babylonSwiperCssLoader>\n  <div class=\"mdl-container\">\n    @if (texts?.title) {\n      <h2 class=\"mdl-title\">{{ texts?.title }}</h2>\n    }\n\n    <div class=\"swiper\" #sectionSlider>\n      <div class=\"swiper-wrapper\">\n        @for (item of normalizedItems; track trackItem($index)) {\n          <a\n            class=\"swiper-slide\"\n            [href]=\"item.url\"\n            [attr.target]=\"item.target || null\"\n            [linkType]=\"item.linkType\"\n          >\n            <img [src]=\"item.image.src\" [alt]=\"item.image.alt || item.title || 'slide image'\" />\n            <div class=\"m-content\">\n              @if (item.title) {\n                <h3 class=\"m-titulo\">{{ item.title }}</h3>\n              }\n              @if (item.description) {\n                <p class=\"m-texto\" [innerHTML]=\"item.description\"></p>\n              }\n            </div>\n          </a>\n        }\n      </div>\n\n      @if (normalizedItems.length > 1 && sliderConfig.showButtons) {\n        <button class=\"swiper-button-prev\" type=\"button\" aria-label=\"Anterior\" #sliderPrev></button>\n        <button class=\"swiper-button-next\" type=\"button\" aria-label=\"Siguiente\" #sliderNext></button>\n      }\n    </div>\n  </div>\n</section>\n","import { CommonModule, Location } from '@angular/common';\nimport { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { BabylonLinkTypeDirective } from '../../../../directives/link-type/link-type.directive';\nimport { BabylonOfferDetailI } from '../../../../interfaces/babylon-offer-detail.interface';\nimport { BabylonCurrencyPipe } from '../../../../pipes/babylon-currency.pipe';\nimport { OfferDetailV2Content } from './offer-detail-v2.interfaces';\nimport { BabylonButtonI, BabylonTextInfoI } from '../../../../interfaces';\n\nconst defaultData: OfferDetailV2Content = {\n    sectionClass: 'offers-card',\n    titleBar: {\n        text: '',\n    },\n    media: {\n        role: 'img',\n        ariaLabel: '',\n        dataFilename: '',\n        backgroundImage: '',\n    },\n    header: {\n        tag: '',\n        backButtonText: '',\n        title: '',\n        subtitle: '',\n        mobileImage: {\n            sourceSrcset: '',\n            sourceMedia: '(max-width: 767px)',\n            imgSrc: '',\n            imgAlt: '',\n        },\n    },\n    price: {\n        title: '',\n        value: '',\n        currency: '€',\n        button: {\n            href: '',\n            text: '',\n            target: '_blank',\n            rel: 'external nofollow',\n        },\n    },\n    description: '',\n    conditions: {\n        title: '',\n        items: [],\n    },\n    footerButton: {\n        href: '',\n        text: '',\n        target: '_blank',\n        rel: 'external nofollow',\n    },\n    backLink: {\n        text: '',\n    },\n};\n\n@Component({\n    selector: 'offer-detail-v2',\n    standalone: true,\n    imports: [CommonModule, BabylonLinkTypeDirective, BabylonCurrencyPipe],\n    templateUrl: './offer-detail-v2.component.html',\n    styleUrl: './offer-detail-v2.component.scss',\n    encapsulation: ViewEncapsulation.Emulated,\n})\nexport class OfferDetailV2Component {\n    private _data: OfferDetailV2Content = defaultData;\n\n    constructor(private readonly location: Location) {}\n\n    @Input() offer?: BabylonOfferDetailI;\n    @Input() buttons?: BabylonButtonI[];\n    @Input() texts?: BabylonTextInfoI;\n\n    @Input()\n    set data(value: OfferDetailV2Content) {\n        this._data = value ?? defaultData;\n    }\n\n    get data(): OfferDetailV2Content {\n        return this._data;\n    }\n\n    goBack(event?: Event): void {\n        event?.preventDefault();\n        this.location.back();\n    }\n\n    trackItem(index: number): number {\n        return index;\n    }\n}\n","<section [attr.class]=\"data.sectionClass\">\n    <div class=\"offers-card-title\">\n        <p>{{ data.titleBar.text }}</p>\n    </div>\n    <div class=\"half-multimedia\">\n        <div class=\"wrap-half-multimedia\">\n            <div class=\"half-multimedia-box\">\n                <div class=\"wrap-multimedia-box\">\n                    <figure\n                        class=\"multimedia-box-element responsive-resize\"\n                        [attr.role]=\"data.media.role\"\n                        [attr.aria-label]=\"data.media.ariaLabel\"\n                        [attr.data-filename]=\"data.media.dataFilename\"\n                        [style.background-image]=\"\n                            offer?.multimedia?.imagenes?.[0]?.img?.src\n                                ? 'url(' +\n                                  offer?.multimedia?.imagenes?.[0]?.img?.src +\n                                  ')'\n                                : null\n                        \"\n                    ></figure>\n                </div>\n            </div>\n        </div>\n    </div>\n    <div class=\"half-wrapper\">\n        <div class=\"wrapper\">\n            <div class=\"wrap-offers-card\">\n                <header class=\"offers-card-header\">\n                    <div class=\"wrap-card-header\">\n                        @if (offer?.additional3) {\n                            <span class=\"card-header-tag\">{{\n                                offer?.additional3\n                            }}</span>\n                        }\n                        <div\n                            class=\"card-header-btn btn-linker toleft\"\n                            role=\"button\"\n                            tabindex=\"0\"\n                        >\n                            @if (buttons?.[0]?.label) {\n                                <p class=\"btn-linker-text\">\n                                    <a\n                                        [href]=\"buttons?.[0]?.url\"\n                                        [linkType]=\"buttons?.[0]?.linkType\"\n                                        role=\"button\"\n                                        (click)=\"goBack($event)\"\n                                        class=\"btn-corp-text m-label\"\n                                    >\n                                        {{ buttons?.[0]?.label }}\n                                    </a>\n                                </p>\n                            }\n                        </div>\n                        @if (offer?.title) {\n                            <h1 class=\"card-header-title\">\n                                {{ offer?.title }}\n                            </h1>\n                        }\n                        @if (offer?.subtitle) {\n                            <p class=\"card-header-subtitle\">\n                                {{ offer?.subtitle }}\n                            </p>\n                        }\n                        @if (offer?.multimedia?.imagenes?.[0]?.img?.src) {\n                            <div class=\"multimedia-box-element-mobile\">\n                                <div class=\"box-img\">\n                                    <picture>\n                                        <source\n                                            [attr.srcset]=\"\n                                                data.header.mobileImage\n                                                    .sourceSrcset\n                                            \"\n                                            [attr.media]=\"\n                                                data.header.mobileImage\n                                                    .sourceMedia\n                                            \"\n                                        />\n                                        <img\n                                            [src]=\"\n                                                offer?.multimedia?.imagenes?.[0]\n                                                    ?.img?.src ||\n                                                'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                            \"\n                                            [alt]=\"\n                                                offer?.multimedia?.imagenes?.[0]\n                                                    ?.img?.alt\n                                            \"\n                                        />\n                                    </picture>\n                                </div>\n                            </div>\n                        }\n                    </div>\n                </header>\n\n                <div class=\"offers-card-price\">\n                    <div class=\"wrap-card-price\">\n                        @if (offer?.additional1) {\n                            <p class=\"card-price-title\">\n                                {{ offer?.additional1 }}\n                            </p>\n                        }\n                        <div class=\"card-price-box\">\n                            @if (offer?.price) {\n                                <span class=\"price-box-num\">{{\n                                    offer?.price\n                                }}</span>\n                                <span class=\"price-box-val\">{{\n                                    offer?.currency || 'EUR' | currencySymbol\n                                }}</span>\n                            }\n                        </div>\n                        @if (offer?.button?.url) {\n                            <div class=\"card-btns-element btn-corp\">\n                                <a\n                                    role=\"button\"\n                                    [href]=\"offer?.button?.url\"\n                                    [linkType]=\"offer?.button?.linkType\"\n                                    class=\"btn-corp-text\"\n                                >\n                                    {{ offer?.button?.label }}\n                                </a>\n                            </div>\n                        }\n                    </div>\n                </div>\n                <div class=\"offers-card-content\">\n                    @if (offer?.description) {\n                        <div class=\"wrap-card-content\">\n                            <p\n                                class=\"card-content-text\"\n                                [innerHTML]=\"offer?.description\"\n                            ></p>\n                        </div>\n                    }\n                </div>\n                <div class=\"offers-card-conditions\">\n                    <div class=\"wrap-card-conditions\">\n                        @if (texts?.conditionsTitle) {\n                            <p class=\"card-conditions-title\">\n                                {{ texts?.conditionsTitle }}\n                            </p>\n                        }\n                        @if (offer?.conditions) {\n                            <p\n                                class=\"conditions-element-text\"\n                                [innerHTML]=\"offer?.conditions\"\n                            ></p>\n                        }\n                    </div>\n                </div>\n                @if (offer?.button?.url) {\n                    <div class=\"offers-card-btns\">\n                        <div class=\"wrap-card-btns\">\n                            <div class=\"card-btns-element btn-corp\">\n                                <a\n                                    [href]=\"offer?.button?.url\"\n                                    class=\"btn-corp-text\"\n                                    [linkType]=\"offer?.button?.linkType\"\n                                    role=\"button\"\n                                >\n                                    {{ offer?.button?.label }}\n                                </a>\n                            </div>\n                        </div>\n                    </div>\n                }\n                @if (offer?.buttons?.[1]?.url) {\n                    <div class=\"offers-card-foot\">\n                        <div class=\"wrap-card-foot\">\n                            <div\n                                class=\"card-foot-btn btn-linker toleft\"\n                                role=\"button\"\n                                tabindex=\"0\"\n                            >\n                                <p class=\"btn-linker-text\">\n                                    <a\n                                        role=\"button\"\n                                        [href]=\"offer?.buttons?.[1]?.url\"\n                                        [linkType]=\"\n                                            offer?.buttons?.[1]?.linkType\n                                        \"\n                                        class=\"btn-corp-text\"\n                                    >\n                                        {{ offer?.buttons?.[1]?.label }}\n                                    </a>\n                                </p>\n                            </div>\n                        </div>\n                    </div>\n                }\n            </div>\n        </div>\n    </div>\n</section>\n<div id=\"half-endpoint\"></div>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { BabylonLinkTypeDirective } from '../../../../directives/link-type/link-type.directive';\nimport {\n    BabylonButtonI,\n    BabylonMultimediaI,\n    BabylonSocialMediaI,\n    BabylonTextInfoI,\n} from '../../../../interfaces';\nimport { BabylonAddressItemI } from '../../../../interfaces/babylon-address-item.interface';\nimport { BabylonAdvantageItemI } from '../../../../interfaces/babylon-advantages-item.interface';\nimport { BabylonStyleGlobalItem } from '../../../../interfaces/babylon-style.interface';\nimport { ForC0TxtImgVHContent } from './for-c0-txt-img-vh.interfaces';\n\nconst defaultData: ForC0TxtImgVHContent = {\n    sectionClass: '',\n    mainColumn: {\n        title: '',\n        responsiveMap: {\n            image: {\n                src: '',\n                alt: '',\n            },\n            button: {\n                text: '',\n                scrollTo: '',\n                scrollSpacer: '',\n            },\n        },\n        details: {\n            address: {\n                title: '',\n                iconClass: '',\n                lines: ['', '', ''],\n            },\n            contact: {\n                title: '',\n                phone: {\n                    iconClass: '',\n                    items: [\n                        {\n                            href: '',\n                            text: '',\n                            small: '',\n                        },\n                    ],\n                },\n                email: {\n                    iconClass: '',\n                    items: [\n                        {\n                            href: '',\n                            text: '',\n                        },\n                    ],\n                },\n            },\n            message: {\n                headerIconClass: '',\n                text: '.',\n                buttonText: '',\n            },\n            schedule: {\n                titles: [],\n                iconClass: '',\n                lines: [],\n            },\n            coordinates: {\n                titles: [],\n                iconClass: '',\n                lines: [\n                    {\n                        label: '',\n                        value: '',\n                    },\n                ],\n            },\n            social: {\n                title: '',\n                links: [\n                    {\n                        href: '',\n                        class: '',\n                        rel: '',\n                        target: '',\n                    },\n                ],\n            },\n        },\n        guides: {\n            id: '',\n            title: '',\n            subtitle: '',\n            items: [\n                {\n                    iconClass: '',\n                    title: '',\n                    text: '',\n                    button: {\n                        href: '',\n                        text: '',\n                        rel: '',\n                    },\n                },\n            ],\n        },\n    },\n    sideMedia: {\n        image: {\n            src: 'https://picsum.photos/900/1000',\n            alt: 'noalt',\n        },\n        button: {\n            text: 'Cómo llegar',\n            scrollTo: '.contact-page-guides',\n            scrollSpacer: '60',\n            tabIndex: 0,\n            role: 'button',\n        },\n    },\n};\n@Component({\n    selector: 'for-c0-txt-img-vh',\n    standalone: true,\n    imports: [CommonModule, BabylonLinkTypeDirective],\n    templateUrl: './for-c0-txt-img-vh.component.html',\n    styleUrl: './for-c0-txt-img-vh.component.scss',\n    encapsulation: ViewEncapsulation.Emulated,\n})\nexport class ForC0TxtImgVHComponent {\n    private _data: ForC0TxtImgVHContent = defaultData;\n    guideOpenState: boolean[] = this.createGuideState(\n        defaultData.mainColumn.guides.items.length\n    );\n\n    constructor() {}\n\n    @Input()\n    set data(value: ForC0TxtImgVHContent) {\n        this._data = value ?? defaultData;\n        this.guideOpenState = this.createGuideState(\n            this._data.mainColumn.guides.items.length\n        );\n    }\n\n    @Input() multimedia?: BabylonMultimediaI;\n    @Input() texts?: BabylonTextInfoI;\n    @Input() lists?: BabylonAdvantageItemI[];\n    @Input() footerLinks?: BabylonButtonI[];\n    @Input() socialMedia?: BabylonSocialMediaI[];\n    @Input() addressHotel?: BabylonAddressItemI[];\n    @Input() buttons?: BabylonButtonI[];\n    @Input() styles?: BabylonStyleGlobalItem;\n\n    get data(): ForC0TxtImgVHContent {\n        return this._data;\n    }\n\n    trackLine(index: number): number {\n        return index;\n    }\n\n    trackContactItem(index: number): number {\n        return index;\n    }\n\n    trackLink(index: number): number {\n        return index;\n    }\n\n    trackGuide(index: number): number {\n        return index;\n    }\n\n    toggleGuide(index: number): void {\n        this.guideOpenState[index] = !this.guideOpenState[index];\n    }\n\n    isGuideOpen(index: number): boolean {\n        return this.guideOpenState[index];\n    }\n\n    scrollTo(target: string, spacer: string): void {\n        if (typeof window === 'undefined' || typeof document === 'undefined') {\n            return;\n        }\n\n        const element = document.querySelector(target);\n        if (!element) {\n            return;\n        }\n\n        const offset = Number(spacer) || 0;\n        const top =\n            (element as HTMLElement).getBoundingClientRect().top +\n            window.scrollY -\n            offset;\n        window.scrollTo({ top, behavior: 'smooth' });\n    }\n\n    getFullAddress(): string {\n        if (!this.addressHotel?.[0]) return '';\n        const addr = this.addressHotel[0];\n\n        // Si existe full_address, usarlo\n        if (addr.full_address) {\n            return addr.full_address;\n        }\n\n        // Si no, construir la dirección combinando los campos disponibles\n        const parts = [\n            addr.address,\n            addr.cp,\n            addr.city,\n            addr.province,\n            addr.country,\n        ].filter((part) => part);\n\n        return parts.join(', ');\n    }\n\n    private createGuideState(length: number): boolean[] {\n        return Array.from({ length }, () => false);\n    }\n}\n","@if (data) {\n    <section class=\"contact-page-intern\">\n        <div class=\"wrapper\">\n            <div class=\"contact-page-form\">\n                <div class=\"wrap-contact-form\">\n                    @if (texts?.title) {\n                        <h2 class=\"contact-form-title\">{{ texts?.title }}</h2>\n                    }\n                </div>\n            </div>\n            <div class=\"wrap-contact-page\">\n                <div class=\"contact-page-details\">\n                    <div class=\"wrap-contact-details\">\n                        <div class=\"contact-details-element\">\n                            <div class=\"wrap-details-element\">\n                                <div class=\"details-element-header\">\n                                    <div class=\"wrap-details-header\">\n                                        @if (texts?.addressTitle) {\n                                            <p\n                                                class=\"details-header-title\"\n                                                [innerHTML]=\"\n                                                    texts?.addressTitle\n                                                \"\n                                            ></p>\n                                        }\n                                    </div>\n                                </div>\n                                <div class=\"details-element-content\">\n                                    <div class=\"wrap-details-content\">\n                                        @if (addressHotel?.[0]?.address) {\n                                            <svg class=\"details-content-icon\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n                                              <rect width=\"24\" height=\"24\" fill=\"none\"/>\n                                              <path d=\"M12 2C7.03 2 3 6.03 3 11c0 5.25 7.11 10.61 8.09 11.32a1 1 0 0 0 1.18 0C13.89 21.61 21 16.25 21 11c0-4.97-4.03-9-9-9Zm0 17.88C10.13 18.13 5 14.11 5 11c0-3.87 3.13-7 7-7s7 3.13 7 7c0 3.11-5.13 7.13-7 8.88ZM12 6a5 5 0 1 0 0 10 5 5 0 0 0 0-10Zm0 8a3 3 0 1 1 0-6 3 3 0 0 1 0 6Z\" fill=\"var(--cl_text)\"/>\n                                            </svg>\n                                            <a\n                                                class=\"details-content-text\"\n                                                [href]=\" addressHotel?.[0]?.url ||\n                                                    'https://www.google.com/maps/search/?api=1&query=' +\n                                                    addressHotel?.[0]?.address +\n                                                    ' ' +\n                                                    addressHotel?.[0]?.country\n                                                \"\n                                                target=\"_blank\"\n                                                rel=\"noopener noreferrer\"\n                                                linkType=\"external\"\n                                            >\n                                                <span\n                                                    [innerHTML]=\"\n                                                        addressHotel?.[0]\n                                                            ?.address\n                                                    \"\n                                                ></span>\n\n                                                @if (\n                                                    addressHotel?.[0]?.country\n                                                ) {\n                                                    <br />\n                                                    <span\n                                                        class=\"details-content-text country\"\n                                                        [innerHTML]=\"\n                                                            addressHotel?.[0]\n                                                                ?.country\n                                                        \"\n                                                    ></span>\n                                                }\n                                            </a>\n                                        }\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                        <div class=\"contact-details-element\">\n                            <div class=\"wrap-details-element\">\n                                <div class=\"details-element-header\">\n                                    <div class=\"wrap-details-header\">\n                                        @if (texts?.contactTitle) {\n                                            <p\n                                                class=\"details-header-title\"\n                                                [innerHTML]=\"\n                                                    texts?.contactTitle\n                                                \"\n                                            ></p>\n                                        }\n                                    </div>\n                                </div>\n                                <div class=\"details-element-content\">\n                                    <div class=\"wrap-details-content\">\n                                        <svg\n                                            class=\"details-content-icon\"\n                                            width=\"22\"\n                                            height=\"22\"\n                                            viewBox=\"0 0 24 24\"\n                                            fill=\"none\"\n                                            xmlns=\"http://www.w3.org/2000/svg\"\n                                        >\n                                            <path\n                                                d=\"M6.62 10.79a15.05 15.05 0 0 0 6.59 6.59l2.2-2.2c.27-.27.67-.36 1.02-.24 1.12.37 2.33.57 3.57.57.55 0 1 .45 1 1V20c0 .55-.45 1-1 1C10.07 21 3 13.93 3 5c0-.55.45-1 1-1h3.5c.55 0 1 .45 1 1 0 1.24.2 2.45.57 3.57.11.35.03.74-.25 1.02l-2.2 2.2Z\"\n                                                fill=\"var(--cl_text)\"\n                                            />\n                                        </svg>\n                                        @if (addressHotel?.[0]?.phone) {\n                                            @if (addressHotel?.[0]?.phone) {\n                                                <a\n                                                    [href]=\"\n                                                        'T:' +\n                                                        (addressHotel?.[0]\n                                                            ?.phone ?? '')\n                                                    \"\n                                                    linkType=\"external\"\n                                                    class=\"details-content-text link\"\n                                                >\n                                                    <small\n                                                        >{{\n                                                            addressHotel?.[0]\n                                                                ?.phone\n                                                        }}\n                                                    </small>\n                                                    <br />\n                                                </a>\n                                            }\n                                        }\n                                    </div>\n                                    @if (addressHotel?.[0]?.email) {\n                                        <div class=\"wrap-details-content\">\n                                            <svg class=\"details-content-icon icon-email\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n                                                <rect width=\"24\" height=\"24\" fill=\"none\"/>\n                                                <path d=\"M2 6.75A2.75 2.75 0 0 1 4.75 4h14.5A2.75 2.75 0 0 1 22 6.75v10.5A2.75 2.75 0 0 1 19.25 20H4.75A2.75 2.75 0 0 1 2 17.25V6.75Zm2.75-1.25A1.25 1.25 0 0 0 3.5 6.75v.38l8.5 6.36 8.5-6.36v-.38A1.25 1.25 0 0 0 19.25 5.5H4.75Zm16.5 3.07-7.97 5.96a1 1 0 0 1-1.16 0L3.5 8.57v8.68c0 .69.56 1.25 1.25 1.25h14.5c.69 0 1.25-.56 1.25-1.25V8.57Z\" fill=\"var(--cl_text)\"/>\n                                            </svg>\n                                            <a\n                                                [href]=\"\n                                                    'mailto:' +\n                                                    (addressHotel?.[0]?.email ??\n                                                        '')\n                                                \"\n                                                linkType=\"external\"\n                                                class=\"details-content-text link\"\n                                                >{{\n                                                    addressHotel?.[0]?.email\n                                                }}</a\n                                            >\n                                        </div>\n                                    }\n                                </div>\n                            </div>\n                        </div>\n                        <div\n                            class=\"contact-details-element special-details-element\"\n                        >\n                            <div class=\"wrap-details-element\">\n                                <div class=\"details-element-header\">\n                                    <div class=\"wrap-details-header\">\n                                        <svg\n                                            class=\"icon-style-big details-content-icon\"\n                                            width=\"24\"\n                                            height=\"24\"\n                                            viewBox=\"0 0 24 24\"\n                                            fill=\"none\"\n                                            xmlns=\"http://www.w3.org/2000/svg\"\n                                        >\n                                            <circle\n                                                cx=\"12\"\n                                                cy=\"12\"\n                                                r=\"9\"\n                                                stroke=\"var(--cl_text)\"\n                                                stroke-width=\"0.5\"\n                                            />\n                                            <rect\n                                                x=\"11.5\"\n                                                y=\"10\"\n                                                width=\"1\"\n                                                height=\"7\"\n                                                rx=\"1\"\n                                                fill=\"var(--cl_text)\"\n                                            />\n                                            <circle\n                                                cx=\"12\"\n                                                cy=\"7\"\n                                                r=\"0.8\"\n                                                fill=\"var(--cl_text)\"\n                                            />\n                                        </svg>\n                                    </div>\n                                </div>\n                                <div class=\"details-element-content\">\n                                    <div class=\"wrap-details-content\">\n                                        @if (texts?.contactInfo) {\n                                            <p\n                                                class=\"details-content-text\"\n                                                [innerHTML]=\"texts?.contactInfo\"\n                                            ></p>\n                                        }\n                                        @if (buttons?.[0]; as btn) {\n                                            <a\n                                                class=\"links-content-btn btn-linker toright\"\n                                                [href]=\"\n                                                    btn?.url ??\n                                                    btn?.linkValue ??\n                                                    btn?.link_value ??\n                                                    '#'\n                                                \"\n                                                [linkType]=\"\n                                                    btn?.linkType ??\n                                                    btn?.link_type ??\n                                                    'external_link'\n                                                \"\n                                                [attr.aria-label]=\"\n                                                    btn?.label ??\n                                                    texts?.contactTitle\n                                                \"\n                                                [attr.target]=\"\n                                                    (\n                                                        btn?.linkType ??\n                                                        btn?.link_type\n                                                    ) === 'external_link'\n                                                        ? '_blank'\n                                                        : null\n                                                \"\n                                                [attr.rel]=\"\n                                                    (\n                                                        btn?.linkType ??\n                                                        btn?.link_type\n                                                    ) === 'external_link'\n                                                        ? 'noopener noreferrer'\n                                                        : null\n                                                \"\n                                            >\n                                                <p\n                                                    class=\"btn-linker-text\"\n                                                    [innerHTML]=\"\n                                                        btn?.label ??\n                                                        texts?.contactTitle\n                                                    \"\n                                                ></p>\n                                                <i\n                                                    class=\"arrow details-content-icon icon-style-small\"\n                                                >\n                                                    <svg width=\"18\" height=\"9\" viewBox=\"0 0 20 5\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n                                                        <path d=\"M17.4262 3.76232L13.8362 0.185325C13.7056 0.0632832 13.5327 -0.00313999 13.3539 0.000114164C13.1752 0.00336832 13.0048 0.0760505 12.8787 0.202766C12.7527 0.329482 12.6809 0.500279 12.6785 0.679008C12.6762 0.857737 12.7435 1.03037 12.8662 1.16033L15.2792 3.56033H0.714225C0.621735 3.5568 0.529484 3.57197 0.442995 3.60493C0.356506 3.63789 0.277556 3.68797 0.210873 3.75216C0.144189 3.81635 0.0911428 3.89332 0.0549093 3.97849C0.0186758 4.06366 0 4.15527 0 4.24783C0 4.34038 0.0186758 4.43199 0.0549093 4.51716C0.0911428 4.60233 0.144189 4.67932 0.210873 4.74351C0.277556 4.8077 0.356506 4.85776 0.442995 4.89072C0.529484 4.92368 0.621735 4.93885 0.714225 4.93533H15.2782L12.8652 7.33533C12.7425 7.4653 12.6752 7.63791 12.6775 7.81664C12.6799 7.99537 12.7517 8.16618 12.8777 8.2929C13.0038 8.41962 13.1742 8.49228 13.353 8.49554C13.5317 8.49879 13.7046 8.43237 13.8352 8.31033L17.4292 4.73432C17.5576 4.60494 17.6293 4.42993 17.6287 4.2477C17.6282 4.06547 17.5553 3.89091 17.4262 3.76232Z\" fill=\"#383838b8\"/>\n                                                    </svg>\n                                                </i>\n                                            </a>\n                                        }\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                        <div class=\"contact-details-element\">\n                            <div class=\"wrap-details-element\">\n                                <div class=\"details-element-header\">\n                                    @if (texts?.receptionTitle) {\n                                        <div class=\"wrap-details-header\">\n                                            <p\n                                                class=\"details-header-title\"\n                                                [innerHTML]=\"\n                                                    texts?.receptionTitle\n                                                \"\n                                            ></p>\n                                        </div>\n                                    }\n                                </div>\n                                <div class=\"details-element-content\">\n                                    <div class=\"wrap-details-content\">\n                                        @if (\n                                            texts?.scheduleInfo ||\n                                            texts?.reception\n                                        ) {\n                                            <svg class=\"details-content-icon icon-clock\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n                                              <rect width=\"24\" height=\"24\" fill=\"none\"/>\n                                              <path d=\"M12 2a10 10 0 1 0 0 20 10 10 0 0 0 0-20Zm0 18a8 8 0 1 1 0-16 8 8 0 0 1 0 16Zm.5-13h-1v6l5.25 3.15.5-.85-4.75-2.8V7Z\" fill=\"var(--cl_text)\"/>\n                                            </svg>\n                                            <p\n                                                class=\"details-content-text\"\n                                                [innerHTML]=\"\n                                                    texts?.scheduleInfo ||\n                                                    texts?.reception\n                                                \"\n                                            ></p>\n                                        }\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                        <div class=\"contact-details-element\">\n                            <div class=\"wrap-details-element\">\n                                <div class=\"details-element-header\">\n                                    @if (texts?.gpsTitle) {\n                                        <div class=\"wrap-details-header\">\n                                            <p\n                                                class=\"details-header-title\"\n                                                [innerHTML]=\"texts?.gpsTitle\"\n                                            ></p>\n                                        </div>\n                                    }\n                                </div>\n                                <div class=\"details-element-content\">\n                                    <div class=\"wrap-details-content\">\n                                      <svg class=\"details-content-icon icon-location\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" aria-hidden=\"true\">\n                                        <rect width=\"24\" height=\"24\" fill=\"none\"/>\n                                        <path d=\"M12 2C7.03 2 3 6.03 3 11c0 5.25 7.11 10.61 8.09 11.32a1 1 0 0 0 1.18 0C13.89 21.61 21 16.25 21 11c0-4.97-4.03-9-9-9Zm0 17.88C10.13 18.13 5 14.11 5 11c0-3.87 3.13-7 7-7s7 3.13 7 7c0 3.11-5.13 7.13-7 8.88ZM12 6a5 5 0 1 0 0 10 5 5 0 0 0 0-10Zm0 8a3 3 0 1 1 0-6 3 3 0 0 1 0 6Z\" fill=\"var(--cl_text)\"/>\n                                      </svg>\n                                        @if (addressHotel?.[0]?.lat) {\n                                            <p class=\"details-content-text\">\n                                                <strong class=\"coordenates\">{{\n                                                    texts?.latitudeTitle\n                                                }}</strong>\n                                                {{ addressHotel?.[0]?.lat }}\n                                            </p>\n                                        }\n                                        @if (addressHotel?.[0]?.lon) {\n                                            <p class=\"details-content-text\">\n                                                <strong class=\"coordenates\">{{\n                                                    texts?.longitudeTitle\n                                                }}</strong>\n                                                {{ addressHotel?.[0]?.lon }}\n                                            </p>\n                                        }\n                                    </div>\n                                </div>\n                            </div>\n                        </div>\n                        @if (socialMedia?.length) {\n                            <div class=\"contact-details-element\">\n                                <div class=\"wrap-details-element\">\n                                    <div class=\"details-element-header\">\n                                        @if (texts?.socialTitle) {\n                                            <div class=\"wrap-details-header\">\n                                                <p\n                                                    class=\"details-header-title\"\n                                                    [innerHTML]=\"\n                                                        texts?.socialTitle\n                                                    \"\n                                                ></p>\n                                            </div>\n                                        }\n                                    </div>\n                                    <div class=\"details-element-content\">\n                                        <div class=\"wrap-details-content\">\n                                            @for (\n                                                link of socialMedia;\n                                                track trackLink($index)\n                                            ) {\n                                                <a\n                                                    [href]=\"link.url\"\n                                                    class=\"links-content-social icon-border\"\n                                                    rel=\"external\"\n                                                    target=\"_blank\"\n                                                    [ngClass]=\"\n                                                                'icon-' + link.name.toLowerCase()\n                                                            \"\n                                                >\n\n                                                </a>\n                                            }\n                                        </div>\n                                    </div>\n                                </div>\n                            </div>\n                        }\n                    </div>\n                    <div\n                        [attr.id]=\"data.mainColumn.guides.id\"\n                        class=\"contact-page-guides dropdown-module\"\n                    >\n                        <div class=\"wrap-contact-guides\">\n                            @if (texts?.secondaryTitle) {\n                                <h2 class=\"contact-guides-title\">\n                                    {{ texts?.secondaryTitle }}\n                                </h2>\n                            }\n                            @if (texts?.secondaryPretitle) {\n                                <p\n                                    class=\"contact-guides-subtitle\"\n                                    [innerHTML]=\"texts?.secondaryPretitle\"\n                                ></p>\n                            }\n                            @for (guide of lists; track trackGuide($index)) {\n                                <div class=\"contact-guides-element\">\n                                    <div\n                                        class=\"wrap-guides-element js-dropdown\"\n                                        [class.open]=\"isGuideOpen($index)\"\n                                    >\n                                        <i\n                                            class=\"guides-header-icon\"\n                                            [ngClass]=\"guide.icon\"\n                                            [style.color]=\"'var(--cl_text)'\"\n                                        ></i>\n                                        <div class=\"guides-element-header\">\n                                            <div\n                                                class=\"wrap-guides-header\"\n                                                role=\"button\"\n                                                tabindex=\"0\"\n                                                (click)=\"toggleGuide($index)\"\n                                                (keyup.enter)=\"\n                                                    toggleGuide($index)\n                                                \"\n                                            >\n                                                <p class=\"guides-header-title\">\n                                                    {{ guide.title }}\n                                                </p>\n                                                <div\n                                                    class=\"arrow\"\n                                                    [class.open]=\"\n                                                        isGuideOpen($index)\n                                                    \"\n                                                >\n                                                    <div\n                                                        class=\"cs_custom_slide_arrows\"\n                                                    >\n                                                        <span\n                                                            class=\"babylon-arrow-right\"\n                                                        ></span>\n                                                    </div>\n                                                </div>\n                                            </div>\n                                        </div>\n                                        <div\n                                            class=\"guides-element-content\"\n                                            [class.open]=\"isGuideOpen($index)\"\n                                        >\n                                            <div class=\"wrap-guides-content\">\n                                                <p class=\"guides-content-text\">\n                                                    {{ guide.text }}\n                                                </p>\n                                                @if (buttons?.[$index]?.url) {\n                                                    <div\n                                                        class=\"guides-content-btn btn-linker toright contact\"\n                                                    >\n                                                        <a\n                                                            [href]=\"\n                                                                buttons?.[\n                                                                    $index\n                                                                ]?.url\n                                                            \"\n                                                            [linkType]=\"\n                                                                buttons?.[\n                                                                    $index\n                                                                ]?.linkType\n                                                            \"\n                                                            class=\"btn-linker-text\"\n                                                        >\n                                                            {{\n                                                                buttons?.[\n                                                                    $index\n                                                                ]?.label\n                                                            }}\n                                                        </a>\n                                                    </div>\n                                                }\n                                            </div>\n                                        </div>\n                                    </div>\n                                </div>\n                            }\n                        </div>\n                    </div>\n                </div>\n\n                <div class=\"responsive-map\">\n                    <div class=\"half-multimedia-box\">\n                        @if (multimedia?.imagenes?.[0]?.img?.src) {\n                            <div class=\"wrap-multimedia-box\">\n                                <div class=\"box-img\">\n                                    <a\n                                        [href]=\"\n                                          addressHotel?.[0]?.url || 'c/' + getFullAddress()\n                                           \"\n                                        linkType=\"external\"\n                                    >\n                                        <img\n                                            [src]=\"\n                                                multimedia?.imagenes?.[0]?.img\n                                                    ?.src\n                                            \"\n                                            [alt]=\"\n                                                multimedia?.imagenes?.[0]?.img\n                                                    ?.alt\n                                            \"\n                                        />\n                                    </a>\n                                </div>\n                            </div>\n                        }\n                    </div>\n                </div>\n            </div>\n        </div>\n    </section>\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { BabylonLinkTypeDirective } from '../../../../directives/link-type/link-type.directive';\nimport {\n    BabylonButtonI,\n    BabylonImageI,\n    BabylonMultimediaI,\n    BabylonRoomDetailI,\n    BabylonTextInfoI,\n} from '../../../../interfaces';\nimport { getOrderedImages, getImagesByTagFromMultimedia } from '../../../../utils/mutimedia.utils';\nimport { TopC2ImgTxtContent } from './top-c2-img-txt.interfaces';\n\n@Component({\n    selector: 'top-c2-img-txt',\n    standalone: true,\n    imports: [CommonModule, BabylonLinkTypeDirective],\n    templateUrl: './top-c2-img-txt.component.html',\n    styleUrl: './top-c2-img-txt.component.scss',\n    encapsulation: ViewEncapsulation.None,\n})\nexport class TopC2ImgTxtComponent {\n    @Input() identifier?: string;\n    private _multimedia?: BabylonMultimediaI | BabylonRoomDetailI;\n\n    @Input()\n    set multimedia(value: BabylonMultimediaI | BabylonRoomDetailI | undefined) {\n        this._multimedia = value;\n        this.updateNormalizedMultimedia();\n    }\n\n    get multimedia(): BabylonMultimediaI | BabylonRoomDetailI | undefined {\n        return this._multimedia;\n    }\n    @Input() buttons?: BabylonButtonI[];\n    @Input() content?: TopC2ImgTxtContent;\n    @Input() reverse = false;\n    @Input() imageOrder?: number | string;\n    @Input() texts?: BabylonTextInfoI;\n\n    private _normalizedMultimedia?: BabylonMultimediaI | undefined;\n    private readonly imageErrors = new Set<string>();\n\n    private updateNormalizedMultimedia(): void {\n        const multimedia = this._multimedia;\n        if (!multimedia) {\n            this._normalizedMultimedia = undefined;\n            return;\n        }\n        const TAG = 'TopC2ImgTxt';\n        if (this.isRoomDetail(multimedia)) {\n            let imagenes = (multimedia.multimedia?.imagenes ?? multimedia.images ?? []) as BabylonImageI[];\n            imagenes = getImagesByTagFromMultimedia({ imagenes }, TAG);\n            const [first, ...rest] = imagenes;\n            const contentImage: BabylonImageI | undefined = first\n                ? {\n                      ...first,\n                      title: first.title || multimedia.texts?.name,\n                      description:\n                          first.description || multimedia.texts?.description,\n                  }\n                : undefined;\n            this.texts = multimedia.texts;\n            this._normalizedMultimedia = {\n                imagenes: contentImage ? [contentImage, ...rest] : imagenes\n            };\n            return;\n        }\n        // Si no es RoomDetail, NO filtramos por tag, solo devolvemos las imágenes tal cual\n        if ('imagenes' in multimedia && Array.isArray((multimedia as any).imagenes)) {\n            this._normalizedMultimedia = {\n                ...multimedia,\n                imagenes: (multimedia as any).imagenes\n            };\n            return;\n        }\n        this._normalizedMultimedia = multimedia;\n    }\n\n    ngOnChanges(changes: any): void {\n        if (changes['multimedia']) {\n            this.updateNormalizedMultimedia();\n        }\n    }\n\n    get reverseLayout(): boolean {\n        // Usar el mismo par de imágenes que se muestran (consecutivas)\n        const [first, second] = this.getConsecutiveImages();\n        if (!this.hasText(first) && this.hasText(second)) {\n            return true;\n        }\n        return this.content?.reverse ?? this.reverse;\n    }\n\n    get contentImage(): BabylonImageI | undefined {\n        const images = this.normalizedMultimedia?.imagenes ?? [];\n        const first = this.getImageByOrder(1, images);\n        const second = this.getImageByOrder(2, images);\n        if (this.hasText(first)) return first;\n        if (this.hasText(second)) return second;\n        return first ?? second;\n    }\n\n    private getImageByOrder(\n        order: number | string | undefined,\n        images: BabylonImageI[]\n    ): BabylonImageI | undefined {\n        if (order == null) {\n            return images[0];\n        }\n        return images.find((img) => {\n            const imgOrder = (img as any).order;\n            return imgOrder != null && imgOrder.toString() === order.toString();\n        });\n    }\n\n    /**\n     * Devuelve las imágenes filtradas por tag y ordenadas por order ascendente.\n     * Se usa como base para mostrar imágenes en el HTML, asegurando que siempre estén en el orden correcto.\n     */\n    get orderedImages(): BabylonImageI[] {\n        return getOrderedImages(this.normalizedMultimedia?.imagenes ?? []);\n    }\n\n    /**\n     * Devuelve la imagen principal (izquierda en layout normal, derecha si reverseLayout=true).\n     * El HTML siempre usa firstImage para la columna de contenido/texto.\n     */\n    /**\n     * Encuentra el par de imágenes consecutivas más bajo (por ejemplo, 1-2, 2-3, etc.)\n     * Si no hay pares consecutivos, usa los dos primeros ordenados.\n     */\n    private getConsecutiveImages(): [BabylonImageI | undefined, BabylonImageI | undefined] {\n        const images = this.orderedImages;\n        if (images.length < 2) return [images[0], undefined];\n        // search the lowest consecutive pair (1-2, 2-3, etc.)\n        for (let i = 0; i < images.length - 1; i++) {\n            const orderA = images[i]?.order;\n            const orderB = images[i + 1]?.order;\n            const numA = typeof orderA === 'number' ? orderA : (orderA !== undefined ? parseInt(orderA as any, 10) : undefined);\n            const numB = typeof orderB === 'number' ? orderB : (orderB !== undefined ? parseInt(orderB as any, 10) : undefined);\n            if (typeof numA === 'number' && typeof numB === 'number' && numB - numA === 1) {\n                return [images[i], images[i + 1]];\n            }\n        }\n        // Si no hay pares consecutivos, usar los dos primeros\n        return [images[0], images[1]];\n    }\n\n    get firstImage(): BabylonImageI | undefined {\n        const [imgA, imgB] = this.getConsecutiveImages();\n        return this.reverseLayout ? imgB : imgA;\n    }\n\n    /**\n     * Devuelve la imagen secundaria (derecha en layout normal, izquierda si reverseLayout=true).\n     * El HTML siempre usa secondImage para la columna de imagen secundaria.\n     */\n    get secondImage(): BabylonImageI | undefined {\n        const [imgA, imgB] = this.getConsecutiveImages();\n        return this.reverseLayout ? imgA : imgB;\n    }\n\n    get mediaImage(): BabylonImageI | undefined {\n        const first = this.normalizedMultimedia?.imagenes?.[0];\n        const second = this.normalizedMultimedia?.imagenes?.[1];\n\n        if (this.contentImage === first) return second ?? first;\n        if (this.contentImage === second) return first ?? second;\n\n        return second ?? first;\n    }\n\n    get ctaButton(): BabylonButtonI | undefined {\n        return this.contentImage?.buttons?.[0] ?? this.buttons?.[0];\n    }\n\n    private hasText(image?: BabylonImageI): boolean {\n        return !!(\n            image?.title?.trim() ||\n            image?.subtitle?.trim() ||\n            image?.description?.trim()\n        );\n    }\n\n    private isRoomDetail(\n        value: BabylonMultimediaI | BabylonRoomDetailI\n    ): value is BabylonRoomDetailI {\n        return 'images' in value || 'texts' in value;\n    }\n\n    get normalizedMultimedia(): BabylonMultimediaI | undefined {\n        return this._normalizedMultimedia;\n    }\n\n    hasImageSrc(image?: BabylonImageI): boolean {\n        return !!image?.img?.src?.trim();\n    }\n\n    hasImageError(key: 'first' | 'second'): boolean {\n        return this.imageErrors.has(key);\n    }\n\n    onImageError(key: 'first' | 'second'): void {\n        this.imageErrors.add(key);\n    }\n}\n","@if (firstImage || secondImage) {\n    <section\n        class=\"mdl-topc2imgtext\"\n        [class.reverse]=\"reverseLayout\"\n        [attr.id]=\"identifier\"\n    >\n        <div class=\"mdl-container\">\n            <div class=\"m-columleft\">\n                <div class=\"m-content\">\n                    @if (firstImage?.title || texts?.title || texts?.name) {\n                        <div\n                            class=\"m-titulo\"\n                            [innerHTML]=\"\n                                firstImage?.title || texts?.title || texts?.name\n                            \"\n                        ></div>\n                    }\n                    @if (firstImage?.subtitle || texts?.subtitle) {\n                        <div class=\"m-subtitulo\">\n                            {{ firstImage?.subtitle || texts?.subtitle }}\n                        </div>\n                    }\n                    <div class=\"m-image\" *ngIf=\"firstImage\">\n                        @if (\n                            hasImageSrc(firstImage) && !hasImageError('first')\n                        ) {\n                            <img\n                                [src]=\"\n                                    firstImage?.img?.src ||\n                                    'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                                \"\n                                [alt]=\"\n                                    firstImage?.img?.alt ??\n                                    firstImage?.alt ??\n                                    ''\n                                \"\n                                loading=\"lazy\"\n                                (error)=\"onImageError('first')\"\n                            />\n                        } @else {\n                            <div\n                                class=\"m-image-placeholder\"\n                                aria-hidden=\"true\"\n                            ></div>\n                        }\n                    </div>\n                    @if (firstImage?.description || texts?.description) {\n                        <div\n                            class=\"m-texto\"\n                            [innerHTML]=\"\n                                firstImage?.description || texts?.description\n                            \"\n                        ></div>\n                    }\n                    @if (ctaButton; as btn) {\n                        <a\n                            class=\"m-buttonD\"\n                            [href]=\"btn?.url\"\n                            [linkType]=\"btn?.linkType\"\n                            [attr.target]=\"btn?.target || '_self'\"\n                            [attr.rel]=\"\n                                (btn?.target || '_self') === '_blank'\n                                    ? 'noopener noreferrer'\n                                    : null\n                            \"\n                            [attr.aria-label]=\"btn?.label\"\n                        >\n                            {{ btn?.label }}\n                        </a>\n                    }\n                </div>\n            </div>\n            <div class=\"m-columright\" *ngIf=\"secondImage\">\n                <div class=\"m-image\">\n                    @if (hasImageSrc(secondImage) && !hasImageError('second')) {\n                        <img\n                            [src]=\"\n                                secondImage?.img?.src ||\n                                'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                            \"\n                            [alt]=\"\n                                secondImage?.img?.alt ?? secondImage?.alt ?? ''\n                            \"\n                            loading=\"lazy\"\n                            (error)=\"onImageError('second')\"\n                        />\n                    } @else {\n                        <div\n                            class=\"m-image-placeholder\"\n                            aria-hidden=\"true\"\n                        ></div>\n                    }\n                </div>\n            </div>\n        </div>\n    </section>\n}\n","import { CommonModule } from '@angular/common';\nimport {\n    AfterViewInit,\n    Component,\n    ElementRef,\n    Input,\n    NgZone,\n    OnDestroy,\n    ViewChild,\n    ViewEncapsulation,\n} from '@angular/core';\nimport Swiper, { Autoplay, EffectFade } from 'swiper';\nimport { BabylonLinkTypeDirective } from '../../../../directives/link-type/link-type.directive';\nimport {\n    BabylonButtonI,\n    BabylonMultimediaI,\n    BabylonSocialMediaI,\n    BabylonTextInfoI,\n} from '../../../../interfaces';\nimport { BabylonAddressItemI } from '../../../../interfaces/babylon-address-item.interface';\nimport { BabylonImageI } from '../../../../interfaces/babylon-image.interface';\n\n@Component({\n    selector: 'fo-c3-txt-ico-v2',\n    standalone: true,\n    imports: [CommonModule, BabylonLinkTypeDirective],\n    templateUrl: './fo-c3-txt-ico-v2.component.html',\n    styleUrl: './fo-c3-txt-ico-v2.component.scss',\n    encapsulation: ViewEncapsulation.Emulated,\n})\nexport class FoC3TxtIcoV2Component implements AfterViewInit, OnDestroy {\n    @Input() texts?: BabylonTextInfoI;\n    @Input() footerLinks?: BabylonButtonI[];\n    @Input() socialMedia?: BabylonSocialMediaI[];\n    @Input() address?: BabylonAddressItemI[];\n    @Input() addressHotel?: BabylonAddressItemI[];\n    @Input() multimedia?: BabylonMultimediaI;\n    @Input() buttons?: BabylonButtonI[];\n\n    @ViewChild('partnersSlider', { static: false })\n    partnersSlider?: ElementRef<HTMLElement>;\n\n    currentYear = new Date().getFullYear();\n\n    private sliderInitialized = false;\n    private swiperInstance?: Swiper;\n\n    constructor(private readonly ngZone: NgZone) {}\n\n    ngAfterViewInit(): void {\n        this.initSlider();\n    }\n\n    ngOnDestroy(): void {\n        this.destroySlider();\n    }\n\n    getFullAddress(): string {\n        const addr = this.addressHotel?.[0];\n        if (!addr) return '';\n\n        if (addr.full_address) {\n            return addr.full_address;\n        }\n\n        return [addr.address, addr.cp, addr.city, addr.province, addr.country]\n            .filter(Boolean)\n            .join(' ');\n    }\n\n    getAddressHref(): string {\n        const addr = this.addressHotel?.[0];\n        return addr?.url || addr?.mapLink || '#';\n    }\n\n    getPhoneHref(): string {\n        const phone = this.addressHotel?.[0]?.phone;\n        return phone ? `tel:${phone.replace(/\\s+/g, '')}` : '#';\n    }\n\n    getEmailHref(): string {\n        const email = this.addressHotel?.[0]?.email;\n        return email ? `mailto:${email}` : '#';\n    }\n\n    getPrimaryAddressHref(): string {\n        const addr = this.address?.[0];\n        if (!addr) return '#';\n\n        return (\n            addr.url ||\n            addr.mapLink ||\n            this.buildMapsHref(\n                addr.full_address ||\n                    [addr.address, addr.cp, addr.city, addr.province, addr.country]\n                        .filter(Boolean)\n                        .join(' ')\n            )\n        );\n    }\n\n    getPhoneLink(phone?: string): string {\n        return phone ? `tel:${phone.replace(/\\s+/g, '')}` : '#';\n    }\n\n    getEmailLink(email?: string): string {\n        return email ? `mailto:${email}` : '#';\n    }\n\n    getPartnerSlides(): BabylonImageI[] {\n        return this.multimedia?.imagenes ?? [];\n    }\n\n    getPartnerHref(image: BabylonImageI): string {\n        const buttonUrl = image.buttons?.[0]?.url;\n        const linkUrl = image.links?.[0]?.url;\n        return buttonUrl || linkUrl || '#';\n    }\n\n    getPartnerLinkType(image: BabylonImageI): string {\n        const buttonType = image.buttons?.[0]?.linkType;\n        const linkType = image.links?.[0]?.linkType;\n        return buttonType || linkType || 'external';\n    }\n\n    scrollToTop(): void {\n        if (typeof window === 'undefined') {\n            return;\n        }\n\n        window.scrollTo({\n            top: 0,\n            behavior: 'smooth',\n        });\n    }\n\n    trackByIndex(index: number): number {\n        return index;\n    }\n\n    private buildMapsHref(query: string): string {\n        return query\n            ? `https://www.google.com/maps/search/?api=1&query=${encodeURIComponent(query)}`\n            : '#';\n    }\n\n    private initSlider(): void {\n        if (\n            this.sliderInitialized ||\n            !this.partnersSlider ||\n            typeof window === 'undefined'\n        ) {\n            return;\n        }\n\n        const slides = this.getPartnerSlides();\n        if (!slides.length) {\n            return;\n        }\n\n        this.ngZone.runOutsideAngular(() => {\n            this.swiperInstance = new Swiper(this.partnersSlider!.nativeElement, {\n                modules: [Autoplay, EffectFade],\n                slidesPerView: 1,\n                slidesPerGroup: 1,\n                speed: 750,\n                loop: slides.length > 1,\n                effect: 'fade',\n                fadeEffect: { crossFade: true },\n                autoplay:\n                    slides.length > 1\n                        ? {\n                              delay: 5000,\n                              disableOnInteraction: false,\n                              pauseOnMouseEnter: false,\n                          }\n                        : false,\n            });\n\n            this.ngZone.run(() => {\n                this.sliderInitialized = true;\n            });\n        });\n    }\n\n    private destroySlider(): void {\n        if (!this.sliderInitialized || !this.swiperInstance) {\n            return;\n        }\n\n        this.swiperInstance.destroy(true, true);\n        this.swiperInstance = undefined;\n        this.sliderInitialized = false;\n    }\n}\n","<svg xmlns=\"http://www.w3.org/2000/svg\" class=\"hidden\">\n    <symbol id=\"instagram\" viewBox=\"0 0 15 15\" fill=\"none\">\n        <path\n            d=\"M14.9205 4.05791C14.9192 2.97458 14.4963 1.95521 13.7302 1.18905C12.964 0.423542 11.9446 0.00130521 10.8613 0H4.05855C2.97523 0.000652606 1.95651 0.423542 1.19035 1.18905C0.424194 1.95586 0.00130521 2.97458 0 4.05791V10.8607C0.00130521 11.944 0.423541 12.9627 1.19035 13.7295C1.95651 14.4957 2.97523 14.9186 4.05855 14.9199H10.8613C11.9446 14.9186 12.9634 14.4963 13.7302 13.7302C14.4963 12.9634 14.9192 11.9447 14.9205 10.8613V4.05791ZM13.8352 10.8607C13.8346 11.6549 13.5246 12.4008 12.964 12.9627C12.4028 13.5246 11.6562 13.8339 10.862 13.8346H4.05855C3.26433 13.8339 2.51775 13.5246 1.95716 12.9627C1.39592 12.4021 1.08594 11.6555 1.08528 10.862V4.05791C1.08659 3.26368 1.39658 2.51776 1.95716 1.95717C2.51775 1.39592 3.26368 1.08659 4.05855 1.08528H10.8613C11.6555 1.08594 12.4021 1.39527 12.9634 1.95717C13.5246 2.5171 13.8346 3.26368 13.8352 4.05791V10.8607Z\"\n            fill=\"currentColor\"\n        />\n        <path\n            d=\"M3.96799 6.01406C3.68085 6.70713 3.60645 7.46219 3.75263 8.19833C3.89882 8.93382 4.25579 9.60274 4.78701 10.1353C5.31758 10.6658 5.98716 11.0235 6.7233 11.1696C7.45356 11.3158 8.21776 11.2401 8.90822 10.9543C9.60129 10.6678 10.188 10.1855 10.605 9.56163C11.022 8.93839 11.2426 8.21204 11.2426 7.46089C11.2419 6.45065 10.8478 5.50176 10.1338 4.78781C9.41921 4.07386 8.47032 3.68034 7.46139 3.67969C6.7109 3.67969 5.98455 3.90027 5.36065 4.31728C4.73676 4.73365 4.25514 5.32099 3.96799 6.01406ZM5.55578 5.55528C5.9343 5.17677 6.41135 4.9216 6.93605 4.81783C7.45682 4.71276 8.00175 4.76693 8.49316 4.96989C8.98719 5.17481 9.40551 5.51873 9.70309 5.9625C10.0007 6.40758 10.1573 6.92575 10.1573 7.46024C10.1567 8.18006 9.87603 8.85681 9.367 9.36519C8.85862 9.87423 8.18187 10.1548 7.46205 10.1555C6.92691 10.1555 6.40939 9.99887 5.96432 9.70129C5.51989 9.405 5.17662 8.98603 4.9717 8.49135C4.76678 7.99668 4.71392 7.45828 4.81834 6.93423C4.92276 6.41019 5.17792 5.93314 5.55578 5.55528Z\"\n            fill=\"currentColor\"\n        />\n        <path\n            d=\"M10.7811 3.7986C10.8744 3.97284 11.0265 4.11054 11.2086 4.18559C11.3913 4.26129 11.5962 4.27174 11.7855 4.21365C11.9741 4.15623 12.1385 4.03484 12.2488 3.86973C12.3585 3.70593 12.4081 3.50688 12.3891 3.30979C12.3696 3.11336 12.2821 2.92802 12.1424 2.78902L12.1411 2.78706C11.9793 2.62652 11.7646 2.53711 11.5355 2.53711C11.3378 2.53711 11.1446 2.60629 10.9919 2.73224C10.8392 2.85819 10.7335 3.0344 10.6956 3.22757C10.6578 3.42009 10.6878 3.6237 10.7811 3.7986Z\"\n            fill=\"currentColor\"\n        />\n    </symbol>\n    <symbol id=\"facebook\" viewBox=\"0 0 10 18\" fill=\"none\">\n        <path\n            d=\"M9.84473 5.86045H6.76862V4.51372C6.76862 3.87694 6.86339 3.59716 7.77349 3.59716H9.88235V0.158519L9.43381 0.114486C8.65755 0.0386136 7.87188 0 7.09851 0H7.04063C4.3588 0 2.62685 1.66174 2.62685 4.23326V5.86249H0V9.64729H2.62034V17.2941H6.76862V9.64594H9.3224L9.84473 5.86045ZM8.43762 8.7077H5.76447V16.3552H3.62377V8.7077H1.00487V6.80208H3.63028V4.23326C3.63028 2.14 4.89849 0.940274 7.11009 0.940274C7.62374 0.940274 8.15113 0.958565 8.67925 0.995146L8.88037 1.00937V2.65959H7.77349C6.42208 2.65959 5.76519 3.26657 5.76519 4.51508V6.80344H8.70168L8.43762 8.7077Z\"\n            fill=\"currentColor\"\n        />\n    </symbol>\n    <symbol id=\"twitter\" viewBox=\"0 0 16 15\" fill=\"none\">\n        <path\n            d=\"M0.0387825 0L6.11849 8.22972L0 14.9205H1.37854L6.73557 9.06236L11.0633 14.9205H15.7494L9.3251 6.2296L15.0202 0.00137895H13.6417L8.70874 5.39639L4.72297 0.00137895L0.0387825 0ZM2.0638 1.02667H4.21687L13.7231 13.8939H11.5707L2.0638 1.02667Z\"\n            fill=\"currentColor\"\n        />\n    </symbol>\n    <symbol id=\"youtube\" viewBox=\"0 0 22 15\" fill=\"none\">\n        <path\n            d=\"M9.45099 10.9985L14.3626 8.15C14.5439 8.04545 14.6801 7.86864 14.7356 7.666C14.7898 7.46402 14.7607 7.24461 14.6568 7.06134C14.5871 6.93937 14.4845 6.83612 14.3619 6.76384L9.48133 3.93603C9.35549 3.8786 9.19803 3.84375 9.04122 3.84375C8.91344 3.84375 8.7876 3.86634 8.66822 3.91022C8.55787 3.96894 8.44816 4.0709 8.37201 4.19545C8.29522 4.32194 8.25392 4.46649 8.25392 4.61233V10.3041C8.25328 10.4093 8.27393 10.5125 8.31459 10.6113C8.3546 10.7081 8.41267 10.7958 8.48818 10.8713C8.56174 10.9449 8.6495 11.003 8.7463 11.0436C8.84181 11.0836 8.94635 11.1043 9.04832 11.1043V11.2972L9.05219 11.1043C9.19287 11.1049 9.33096 11.0675 9.45099 10.9985ZM9.15028 4.77753L13.7727 7.45627L9.15028 10.1376V4.77753Z\"\n            fill=\"currentColor\"\n        />\n        <path\n            d=\"M20.7604 11.8185C20.9456 10.3833 21.0295 8.91838 21.0095 7.47027C21.0301 5.99829 20.945 4.5192 20.7565 3.06981C20.4474 1.19514 19.1871 0.191661 17.0098 0.0948628C15.7191 0.035493 13.3172 0 10.5849 0H10.4294C7.6971 0 5.29456 0.0361383 4.00198 0.0948628C1.79303 0.193597 0.566926 1.17643 0.252008 3.09885C0.0655097 4.53469 -0.0183886 5.99893 0.00355237 7.44575C-0.019034 8.92031 0.0661522 10.3981 0.257168 11.8456C0.563051 13.7177 1.82466 14.7231 4.00586 14.827C5.29457 14.8857 7.66935 14.9205 10.3565 14.9205H10.6578C13.3585 14.9205 15.7327 14.8838 17.0098 14.8237C19.2181 14.7218 20.4448 13.7396 20.7604 11.8185ZM16.9691 13.928C15.6559 13.9868 13.2378 14.0229 10.6572 14.0229H10.3558C7.67839 14.0229 5.31908 13.9887 4.0465 13.9306C2.29832 13.8467 1.37552 13.1427 1.14191 11.7146C0.957991 10.302 0.876681 8.86675 0.898622 7.44317C0.877326 6.04281 0.957343 4.62246 1.13739 3.22727C1.37487 1.77722 2.29768 1.06672 4.04263 0.986701C5.31457 0.928621 7.70226 0.893774 10.4288 0.893774L10.5849 0.892483C13.2972 0.892483 15.6836 0.927331 16.9698 0.98541C18.7128 1.06543 19.6349 1.76883 19.8724 3.19887C20.0544 4.61536 20.1351 6.05056 20.1138 7.46962C20.1351 8.86998 20.055 10.2903 19.875 11.6855C19.6356 13.1375 18.7134 13.848 16.9691 13.928Z\"\n            fill=\"currentColor\"\n        />\n    </symbol>\n    <symbol id=\"arrow-icon\" viewBox=\"0 0 10 6\" fill=\"none\">\n        <path\n            d=\"M4.54692 0C4.40691 0 4.27256 0.055155 4.17569 0.153443L0.148004 4.1995C0.0999198 4.24759 0.0624438 4.30628 0.0348668 4.37063C-0.0372582 4.5573 0.00304681 4.79277 0.150832 4.94197C0.251949 5.04026 0.382763 5.09471 0.523476 5.094C0.633786 5.094 0.733486 5.05087 0.821876 4.98794L4.54055 1.26926L8.23236 4.96106C8.32711 5.04308 8.44096 5.09188 8.56824 5.09188C8.71107 5.0933 8.83976 5.03814 8.94017 4.94056C9.03917 4.84157 9.09291 4.71003 9.09574 4.57003C9.09574 4.43144 9.04058 4.29708 8.94229 4.1988L4.91815 0.152029C4.81845 0.053741 4.68693 0 4.54692 0Z\"\n            fill=\"currentColor\"\n        />\n    </symbol>\n</svg>\n\n<footer class=\"FoC3TxtIcoV2 js-active-slider\">\n    <div class=\"FoC3TxtIcoV2__top\">\n        <div class=\"FoC3TxtIcoV2__top--inner\">\n            <div class=\"FoC3TxtIcoV2__left\">\n                @if (addressHotel?.length) {\n                    <!-- TODO for hotel address-->\n                    <div class=\"FoC3TxtIcoV2__item\">\n                        <h2>{{ addressHotel?.[0]?.name || 'contacto' }}</h2>\n                        <a [href]=\"getAddressHref()\" target=\"_blank\">{{\n                            getFullAddress()\n                        }}</a>\n                    </div>\n                }\n                @if (\n                    texts?.title1 ||\n                    address?.[0]?.full_address ||\n                    address?.[0]?.address ||\n                    buttons?.[0]?.url ||\n                    texts?.description1\n                ) {\n                    <div class=\"FoC3TxtIcoV2__item\">\n                        @if (texts?.title1) {\n                            <h2>{{ texts?.title1 }}</h2>\n                        }\n                        @if (address?.[0]?.full_address) {\n                            <a [href]=\"getPrimaryAddressHref()\" target=\"_blank\">\n                                <p>\n                                    {{ address?.[0]?.address }}\n                                </p>\n                                <p>\n                                    {{ address?.[0]?.country }}\n                                </p>\n                            </a>\n                        } @else if (texts?.description1) {\n                            <p [innerHTML]=\"texts?.description1\"></p>\n                        }\n                        @if (buttons?.[0]?.url) {\n                            <a\n                                class=\"m-buttonfooter btn__link btn__link--reverse\"\n                                [href]=\"buttons?.[0]?.url\"\n                                >{{ buttons?.[0]?.label }}</a\n                            >\n                        }\n                    </div>\n                }\n                @if (texts?.title2) {\n                    <div class=\"FoC3TxtIcoV2__item\">\n                        @if (texts?.title2) {\n                            <h2>{{ texts?.title2 }}</h2>\n                        }\n                        @if (texts?.description2) {\n                            <p [innerHTML]=\"texts?.description2\"></p>\n                        }\n                        @if (buttons?.[1]?.url) {\n                            <a\n                                class=\"m-buttonfooter btn__link btn__link--reverse\"\n                                [href]=\"buttons?.[1]?.url\"\n                                >{{ buttons?.[1]?.label }}</a\n                            >\n                        }\n                    </div>\n                }\n            </div>\n\n            <div class=\"FoC3TxtIcoV2__right\">\n                <div class=\"FoC3TxtIcoV2__social\" *ngIf=\"socialMedia?.length\">\n                    <h2>{{ texts?.title3 || 'social' }}</h2>\n                    <ul>\n                        <li\n                            *ngFor=\"\n                                let social of socialMedia;\n                                trackBy: trackByIndex\n                            \"\n                            class=\"FoC3TxtIcoV2__social--icons\"\n                            [ngClass]=\"\n                                'FoC3TxtIcoV2__social--icons-' +\n                                social.name.toLowerCase()\n                            \"\n                        >\n                            <a\n                                [href]=\"social.url\"\n                                [attr.aria-label]=\"social.name\"\n                                linkType=\"external\"\n                                target=\"_blank\"\n                                rel=\"noopener noreferrer\"\n                            >\n                                <i\n                                    [ngClass]=\"\n                                        'icon-' + social.name.toLowerCase()\n                                    \"\n                                ></i>\n                                <img\n                                    class=\"CanBordoy-Map__icon-btn--graphic\"\n                                    src=\"{{ social.icon }}\"\n                                    alt=\"\"\n                                />\n                            </a>\n                        </li>\n                    </ul>\n                </div>\n\n                <div\n                    class=\"FoC3TxtIcoV2__partners\"\n                    *ngIf=\"getPartnerSlides().length\"\n                >\n                    <h2>{{ texts?.additional || 'partners' }}</h2>\n                    <div\n                        #partnersSlider\n                        class=\"swiper FoC3TxtIcoV2__partners--slider\"\n                    >\n                        <div class=\"swiper-wrapper\">\n                            @for (partner of getPartnerSlides(); track $index) {\n                                @if (partner) {\n                                    <a\n                                        class=\"swiper-slide\"\n                                        [href]=\"getPartnerHref(partner)\"\n                                        [linkType]=\"getPartnerLinkType(partner)\"\n                                    >\n                                        <img\n                                            [src]=\"\n                                                partner.src || partner.img?.src\n                                            \"\n                                            [alt]=\"\n                                                partner.alt ||\n                                                partner.img?.alt ||\n                                                'partner'\n                                            \"\n                                            width=\"194\"\n                                            height=\"73\"\n                                        />\n                                    </a>\n                                }\n                            }\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </div>\n    </div>\n\n    <div class=\"FoC3TxtIcoV2__bottom\">\n        <div class=\"FoC3TxtIcoV2__bottom--inner\">\n            <ul class=\"grid-columnas\" *ngIf=\"footerLinks?.length\">\n                <li *ngFor=\"let item of footerLinks; trackBy: trackByIndex\">\n                    <a [href]=\"item.url\" [linkType]=\"item.linkType\">{{\n                        item.label\n                    }}</a>\n                </li>\n            </ul>\n        </div>\n        <div\n            class=\"FoC3TxtIcoV2__scrollTop js-scrollto\"\n            role=\"button\"\n            (click)=\"scrollToTop()\"\n        >\n            <span class=\"FoC3TxtIcoV2__scrollTop--btn\">\n                <svg aria-hidden=\"true\" focusable=\"false\">\n                    <use href=\"#arrow-icon\"></use>\n                </svg>\n            </span>\n            <span class=\"FoC3TxtIcoV2__scrollTop--btn-label\">{{\n                texts?.topButton || texts?.scrolltext || 'Top'\n            }}</span>\n        </div>\n    </div>\n\n    <div class=\"FoC3TxtIcoV2__copyright\">\n        @if (texts?.copyrighttext) {\n            <p [innerHTML]=\"texts?.copyrighttext || 'hoteles'\"></p>\n        }\n    </div>\n</footer>\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, ViewEncapsulation, inject } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { BabylonButtonI, BabylonImageI, BabylonTextInfoI } from '../../../../interfaces';\nimport { buildFilterOptions, filteredItems, getItemBrand } from '../../../../utils/filter.utils';\nimport { BabylonLinkTypeDirective } from '../../../../directives/link-type/link-type.directive';\nimport { BabylonCurrencyPipe } from '../../../../pipes/babylon-currency.pipe';\nimport { getFirstImageByTagFromMultimediaRaw } from '../../../../utils/mutimedia.utils';\n\nimport { OnChanges, SimpleChanges, OnInit, OnDestroy, ChangeDetectorRef } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { Subscription } from 'rxjs';\nimport { BabylonGlobalItem } from '../../../../interfaces/babylon-global-item.interface';\nimport { getFirstImageByTagFromImages } from '../../../../utils/mutimedia.utils';\nimport { normalizeGlobalItems } from '../../../../utils/normalize-items.utils';\nimport { Utils } from '../../../../utils';\n\n@Component({\n    selector: 'lis-c3-img-txt-cta',\n    standalone: true,\n    imports: [\n        CommonModule,\n        BabylonLinkTypeDirective,\n        BabylonCurrencyPipe,\n        FormsModule,\n    ],\n    templateUrl: './lis-c3-img-txt-cta.component.html',\n    styleUrl: './lis-c3-img-txt-cta.component.scss',\n    encapsulation: ViewEncapsulation.Emulated,\n})\nexport class LisC3ImgTxtCtaComponent implements OnChanges, OnInit, OnDestroy {\n    @Input() texts?: BabylonTextInfoI;\n    @Input() items?: BabylonGlobalItem[];\n    @Input() links?: BabylonButtonI[];\n    @Input() additional1LikeMarca?: boolean = false;\n    @Input() showCleanFilters: boolean = true;\n    @Input() showFilters: boolean = true;\n\n    tagName: string = 'LisC3ImgTxtCta';\n\n    selectedHotelType: string = '';\n    selectedDestination: string = '';\n    selectedBrand: string = '';\n\n    hotelTypeOptions: string[] = [];\n    destinationOptions: string[] = [];\n    brandOptions: string[] = [];\n\n    filterLabelToSlug = new Map<string, string>();\n    destinationLabelToSlug = new Map<string, string>();\n    brandLabelToSlug = new Map<string, string>();\n\n    private route = inject(ActivatedRoute);\n    private cdr = inject(ChangeDetectorRef);\n    private qpSub?: Subscription;\n    private pendingDestination?: string;\n\n    // Items filtrados sin normalizar (usados para lógica)\n    private _filteredItemsRaw: BabylonGlobalItem[] = [];\n\n    /**\n     * Devuelve las imágenes sincronizadas con filteredItems, evitando incongruencias.\n     */\n    public get imagesToShow(): any[] {\n        return this.filteredItems.map((item) => {\n            const selectedFromMultimedia = this.getFirstImageByTag(\n                this.tagName,\n                item?.multimedia?.imagenes ?? []\n            );\n            const selectedFromImages = this.getFirstImageByTag(\n                this.tagName,\n                item?.images ?? []\n            );\n\n            const selected = selectedFromMultimedia ?? selectedFromImages ??\n                getFirstImageByTagFromMultimediaRaw(item?.multimedia, this.tagName) ??\n                item?.multimedia?.imagenes?.[0] ??\n                item?.images?.[0] ??\n                undefined;\n            return selected;\n        });\n    }\n\n    private findAndSelectDestination(destinationName: string): void {\n        const normalizedName = destinationName.toLowerCase().trim();\n\n        // Primero buscar en el array de strings de destinos\n        let found = this.destinationOptions?.find(\n            (destination) => destination.toLowerCase().trim() === normalizedName\n        );\n\n        if (found) {\n            this.selectedDestination = found;\n            this.updateFilteredItems();\n            return;\n        }\n\n        // Si no encuentra en destinationOptions, buscar en los items por country\n        const itemWithCountry = this.items?.find(\n            (item) => item.country?.toLowerCase().trim() === normalizedName\n        );\n\n        if (itemWithCountry && itemWithCountry.country) {\n            // Filtrar directamente por country aunque no exista en destinationOptions\n            this.selectedDestination = itemWithCountry.country;\n            this.updateFilteredItems();\n        }\n    }\n\n    /**\n     * Devuelve el label del botón en la posición index, buscando en item.buttons[index].label\n     * y si no existe, en item.multimedia.imagenes[0].buttons[index].label\n     */\n    getButtonLabel(item: BabylonGlobalItem, index: number): string | undefined {\n        if (item?.buttons?.[index]?.label) {\n            return item.buttons[index].label;\n        }\n        return item?.multimedia?.imagenes?.[0]?.buttons?.[index]?.label;\n    }\n\n    getButtonUrl(item: BabylonGlobalItem, index: number): string | undefined {\n        return (\n            this.buildMenuUrl(item?.multimedia?.imagenes?.[0]?.buttons?.[index]) ||\n            this.buildMenuUrl(item?.buttons?.[index])\n        );\n    }\n\n    getButtonLinkType(item: BabylonGlobalItem, index: number): any {\n        return (\n          item?.multimedia?.imagenes?.[0]?.buttons?.[index]?.linkType ||\n            item?.buttons?.[index]?.linkType\n\n        );\n    }\n\n    buildMenuUrl(item: BabylonButtonI | undefined): string {\n      if (!item?.url) return '';\n\n      const baseUrl = item.url.replace(/\\/+$/, '');\n      const destination = (item.vars ?? '').toString().trim();\n\n      if (!destination) return baseUrl;\n\n      const slug = Utils.toSlug(destination);\n      if (!slug) return baseUrl;\n\n      return `${baseUrl}?destinations=${destination}`;\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if (changes['items']) {\n            const opts = buildFilterOptions(\n                this.items ?? [],\n                this.additional1LikeMarca ?? false\n            );\n            this.hotelTypeOptions = opts.hotelTypeOptions;\n            this.destinationOptions = opts.destinationOptions;\n\n            // Rellenar brandOptions usando getItemBrand para coherencia\n            const brands = new Set<string>();\n            (this.items ?? []).forEach((it) => {\n                const brand = getItemBrand(\n                    it,\n                    this.additional1LikeMarca ?? false\n                );\n                if (brand) brands.add(brand);\n            });\n            this.brandOptions = Array.from(brands);\n            this.filterLabelToSlug = opts.filterLabelToSlug;\n            this.destinationLabelToSlug = opts.destinationLabelToSlug;\n            this.brandLabelToSlug = opts.brandLabelToSlug;\n\n            // Solo resetear si no hay un destino pendiente de la URL\n            if (!this.pendingDestination) {\n                this.selectedHotelType = '';\n                this.selectedDestination = '';\n                this.selectedBrand = '';\n            } else {\n                // Si hay un destino pendiente de la URL, intenta seleccionarlo ahora\n                this.findAndSelectDestination(this.pendingDestination);\n            }\n\n            // Actualizar items filtrados\n            this.updateFilteredItems();\n        }\n    }\n\n    ngOnInit(): void {\n        // Suscribirse a los cambios de query params\n        this.qpSub = this.route.queryParamMap.subscribe((params) => {\n            const destinationsParam = params.get('destinations');\n\n            if (destinationsParam) {\n                const decodedDestination = decodeURIComponent(destinationsParam);\n                this.pendingDestination = decodedDestination;\n\n                // Si ya tenemos destinationOptions, buscar y seleccionar\n                if (this.destinationOptions && this.destinationOptions.length > 0) {\n                    this.findAndSelectDestination(decodedDestination);\n                } else {\n                }\n\n                this.cdr.markForCheck();\n            }\n        });\n    }\n\n    ngOnDestroy(): void {\n        this.qpSub?.unsubscribe();\n    }\n\n    /**\n     * Devuelve un array normalizado de BabylonGlobalItem\n     */\n    get normalizedItems(): BabylonGlobalItem[] {\n        return normalizeGlobalItems(this.items);\n    }\n\n    getFirstImageByTag(tagName: string, imagenes: BabylonImageI[]) {\n        return getFirstImageByTagFromImages(imagenes, tagName);\n    }\n\n    get filteredItems() {\n        // Devolver los items filtrados normalizados\n        return normalizeGlobalItems(this._filteredItemsRaw);\n    }\n\n    private updateFilteredItems(): void {\n        let items = filteredItems({\n            items: this.items ?? [],\n            selectedHotelType: this.selectedHotelType,\n            selectedDestination: this.selectedDestination,\n            selectedBrand: this.selectedBrand,\n            additional1LikeMarca: this.additional1LikeMarca ?? false,\n        });\n\n        // Si hay destinationSelected y no tiene resultados, intentar filtrar por country\n        if (this.selectedDestination && items.length === 0 && this.items) {\n            items = this.items.filter((item) => {\n                const hotelTypeOk =\n                    !this.selectedHotelType ||\n                    (item as any)?.hoteltype === this.selectedHotelType;\n\n                const destinationOk =\n                    !this.selectedDestination ||\n                    item.country?.toLowerCase().trim() ===\n                        this.selectedDestination.toLowerCase().trim();\n\n                const brandOk =\n                    !this.selectedBrand ||\n                    Utils.toSlug(getItemBrand(item, this.additional1LikeMarca ?? false)) ===\n                        Utils.toSlug(this.selectedBrand);\n\n                return hotelTypeOk && destinationOk && brandOk;\n            });\n        }\n\n        this._filteredItemsRaw = items;\n        this.cdr.markForCheck();\n    }\n\n    get hasActiveFilters(): boolean {\n        return [\n            this.selectedHotelType,\n            this.selectedDestination,\n            this.selectedBrand,\n        ].some((v) => v && v !== '');\n    }\n\n    onHotelTypeChange(value: string | undefined) {\n        this.selectedHotelType = value ?? '';\n        this.updateFilteredItems();\n    }\n\n    onDestinationChange(value: string | undefined) {\n        this.selectedDestination = value ?? '';\n        this.updateFilteredItems();\n    }\n\n    onBrandChange(value: string | undefined) {\n        this.selectedBrand = value ?? '';\n        this.updateFilteredItems();\n    }\n\n    clearFilters() {\n        this.selectedHotelType = '';\n        this.selectedDestination = '';\n        this.selectedBrand = '';\n        this.updateFilteredItems();\n    }\n\n    trackFilter(index: number): number {\n        return index;\n    }\n    trackOption(index: number): number {\n        return index;\n    }\n    trackOffer(index: number): number {\n        return index;\n    }\n}\n","  <div class=\"page-container first-module offers-page\">\n    <div class=\"big-wrapper\">\n      <div class=\"wrap-page-container\">\n        <header class=\"global-header\">\n          <div class=\"wrap-global-header visible\">\n            @if (texts?.title) {\n              <h1 class=\"global-header-title\">{{ texts?.title }}</h1>\n            }\n             @if (texts?.subtitle) {\n              <p class=\"global-header-subtitle\" [innerHTML]=\"texts?.subtitle\"></p>\n             }\n            <div class=\"offers-inputs\" *ngIf=\"showFilters\">\n              <div class=\"global-header-form\">\n                <!--filters-->\n                <!-- Brand filter -->\n                  <div class=\"header-form-element\">\n                    <div class=\"input-element select\">\n                      <div class=\"wrap-input-element\">\n                        @if (texts?.marca) {\n                          <span class=\"input-element-text\">{{ texts?.marca ?? 'marca' }}</span>\n                        }\n                          <select\n                            class=\"input-element-field js-filter-offers\"\n                            [(ngModel)]=\"selectedBrand\"\n                            (ngModelChange)=\"onBrandChange($event)\"\n                          >\n                            <option value=\"\">{{ texts?.marca ?? 'marca' }}</option>\n                            @for (opt of brandOptions; track $index) {\n                              <option [value]=\"opt\">{{ opt }}</option>\n                            }\n                          </select>\n                      </div>\n                    </div>\n                  </div>\n                  <!-- services-->\n                    <div class=\"header-form-element\">\n                      <div class=\"input-element select\">\n                        <div class=\"wrap-input-element\">\n                          @if (texts?.destinations) {\n                            <span class=\"input-element-text\">{{ texts?.destinations ?? 'destinos' }}</span>\n                          }\n                          <select\n                            class=\"input-element-field js-filter-offers\"\n                            [(ngModel)]=\"selectedDestination\"\n                            (ngModelChange)=\"onDestinationChange($event)\"\n                          >\n                            <option value=\"\">{{ texts?.destinations ?? 'destinos' }}</option>\n                            @for (opt of destinationOptions; track $index) {\n                              <option [value]=\"opt\">{{ opt }}</option>\n                            }\n                          </select>\n                        </div>\n                      </div>\n                  </div>\n                <!--end filters-->\n              </div>\n            </div>\n          </div>\n        </header>\n      </div>\n    </div>\n  </div>\n  <section class=\"promo-module offers-page\">\n    <div class=\"big-wrapper\">\n      <div class=\"wrap-promo-module module-spacer\">\n        <div class=\"promo-module-content\">\n          @if (filteredItems?.length) {\n            @for (item of filteredItems; track trackOffer($index)) {\n              <div class=\"promo-module-element\">\n                <div class=\"wrap-promo-element\">\n                  <a\n                    [href]=\"getButtonUrl(item, 1)\"\n                    [linkType]=\"getButtonLinkType(item, 1)\"\n                    >\n                    <div class=\"promo-element-media js-section-arrows-zone\">\n                      @if (imagesToShow[$index]?.img?.src) {\n                        <figure\n                          class=\"promo-element-media_img responsive-resize\"\n                          role=\"img\"\n                          [attr.aria-label]=\"imagesToShow[$index]?.img?.alt ?? 'itemImage'\"\n                          [attr.data-filename]=\"imagesToShow[$index]?.img?.alt ?? 'itemFileName'\"\n                          [style.background-image]=\"'url(' + imagesToShow[$index]?.img?.src + ')'\"\n                        ></figure>\n                      }\n                    </div>\n                    <div class=\"promo-element-info\">\n                      @if (item?.texts?.additional3) {\n                        <span class=\"promo-element-info_tag\">{{ item?.texts?.additional3 }}</span>\n                      }\n                      @if ( item?.texts?.title || item?.texts?.name) {\n                        <p class=\"promo-element-info_title\" [innerHTML]=\"item?.texts?.title || item?.texts?.name\"></p>\n                      }\n                      @if ( item?.texts?.additional2) {\n                        <p class=\"promo-element-info_subtitle\" [innerHTML]=\"item?.texts?.additional2\"></p>\n                      }\n                    </div>\n                  </a>\n                  <div class=\"promo-element-foot\">\n                    <div class=\"promo-element-price\">\n                      @if ((item?.price || item?.discount) && item?.texts?.additional1) {\n                        <span class=\"promo-element-price_since\" >{{ item?.texts?.additional1 }}</span>\n                      }\n                      @if (item?.price) {\n                        <span class=\"promo-element-price_num\">\n                          {{ item?.price }}<small>{{ (item?.currency || 'EUR') | currencySymbol }}</small>\n                        </span>\n                      }\n                      @if (item.discount) {\n                        <span class=\"promo-element-price_num\">\n                          {{ item?.discount }}<small> %</small>\n                        </span>\n                      }\n                    </div>\n                    <div class=\"promo-element-btns\">\n                      @if (getButtonLabel(item, 0)) {\n                      <div class=\"btn-corp\">\n                        <a\n                          [href]=\"getButtonUrl(item, 0)\"\n                          [linkType]=\"getButtonLinkType(item, 0)\"\n                          class=\"btn-corp-text\">\n                          {{ getButtonLabel(item, 0) }}\n                        </a>\n                      </div>\n                    }\n                    @if (getButtonLabel(item, 1)) {\n                      <a [href]=\"getButtonUrl(item, 1)\"\n                          [linkType]=\"getButtonLinkType(item, 1)\" class=\"btn-linker toright\">\n                        <p class=\"btn-linker-text\" [innerHTML]=\"getButtonLabel(item, 1)\"></p>\n                      </a>\n                    }\n                    </div>\n                  </div>\n                </div>\n              </div>\n            }\n          }\n        </div>\n        <div class=\"offers-message\" [class.show]=\"filteredItems?.length\">\n          <div class=\"wrap-message\">\n            @if (texts?.notFound) {\n              <p class=\"message-text\" [innerHTML]=\"texts?.notFound\"></p>\n            }\n          </div>\n        </div>\n        <div class=\"temp-trash\"></div>\n      </div>\n    </div>\n  </section>\n","import { CommonModule } from '@angular/common';\nimport {\n    Component,\n    Input,\n    ViewEncapsulation,\n    inject,\n} from '@angular/core';\nimport { BabylonLinkTypeDirective } from '../../../../directives/link-type/link-type.directive';\nimport {\n    BabylonButtonI,\n    BabylonGlobalIconI,\n    BabylonMultimediaI,\n    BabylonOfferItemI,\n    BabylonTextInfoI,\n} from '../../../../interfaces';\nimport { SITE_CONFIG_SERVICE_TOKEN } from '../../../../services/mapper/mapper.service.token';\nimport { BabylonCurrencyPipe } from '../../../../pipes/babylon-currency.pipe';\n\n@Component({\n    selector: 'grid-c2-img-txt',\n    standalone: true,\n    imports: [CommonModule, BabylonLinkTypeDirective, BabylonCurrencyPipe],\n    templateUrl: './grid-c2-img-txt.component.html',\n    styleUrl: './grid-c2-img-txt.component.scss',\n    encapsulation: ViewEncapsulation.None,\n})\nexport class GridC2ImgTxtComponent {\n    private readonly siteSvc = inject(SITE_CONFIG_SERVICE_TOKEN);\n\n    @Input() texts?: BabylonTextInfoI;\n    @Input() text?: BabylonTextInfoI;\n    @Input() multimedia?: BabylonMultimediaI;\n    @Input() offers?: BabylonOfferItemI[];\n    @Input() items?: BabylonOfferItemI[];\n    @Input() buttons?: BabylonButtonI[];\n    @Input() advantages?: BabylonGlobalIconI[];\n    @Input() ventajas?: BabylonGlobalIconI[];\n    @Input() Ventajas?: BabylonGlobalIconI[];\n    @Input() reverse = false;\n\n    get offersTitle(): string {\n        return (\n            ((this.effectiveTexts as any)?.['Titulo-ofertas'] as string) ??\n            this.effectiveTexts?.title ??\n            ''\n        );\n    }\n\n    get footerPretitle(): string {\n        return (\n            ((this.effectiveTexts as any)?.Pretitulo as string) ??\n            this.effectiveTexts?.pretitle ??\n            ''\n        );\n    }\n\n    get footerTitle(): string {\n        return (\n            ((this.effectiveTexts as any)?.Titulo as string) ??\n            this.effectiveTexts?.title ??\n            ''\n        );\n    }\n\n    get footerText(): string {\n        return (\n            ((this.effectiveTexts as any)?.Texto as string) ??\n            this.effectiveTexts?.text ??\n            ''\n        );\n    }\n\n    get footerIcon(): string {\n        const iconFromMappedAdvantages = this.advantages?.[0]?.icon ?? '';\n        const iconFromLists =\n            this.ventajas?.[0]?.icon ?? this.Ventajas?.[0]?.icon ?? '';\n        const iconFromTexts = ((this.effectiveTexts as any)?.icon as string) ?? '';\n        const iconFromCompOfertas =\n            ((this.effectiveTexts as any)?.compofertas_icon as string) ?? '';\n        return (\n            iconFromMappedAdvantages ||\n            iconFromLists ||\n            iconFromTexts ||\n            iconFromCompOfertas\n        );\n    }\n\n    isIconClass(icon?: string): boolean {\n        if (!icon) return false;\n        return !icon.includes('/') && !icon.includes('.svg') && !icon.includes('#');\n    }\n\n    getIconHref(icon?: string): string {\n        if (!icon) return '';\n        if (this.isIconClass(icon)) return '';\n        if (icon.startsWith('#')) return icon;\n        if (icon.includes('.svg#')) return icon;\n        if (icon.startsWith('/')) return icon;\n        return `#${icon}`;\n    }\n\n    getIconClass(icon?: string): string {\n        return icon && this.isIconClass(icon) ? icon : '';\n    }\n\n    get heroImage(): any | undefined {\n        return this.multimedia?.imagenes?.[0];\n    }\n\n    get heroButton(): BabylonButtonI | undefined {\n        return this.heroImage?.buttons?.[0];\n    }\n\n    get moduleButton(): BabylonButtonI | undefined {\n        return this.buttons?.[0];\n    }\n\n    get moduleOffers(): BabylonOfferItemI[] {\n        return [...(this.offers ?? this.items ?? [])].sort(\n            (a, b) => ((a as any)?.order ?? 9999) - ((b as any)?.order ?? 9999)\n        );\n    }\n\n    getImageSrc(image: any): string | undefined {\n        const src =\n            image?.img?.src ??\n            image?.src ??\n            image?.path?.webp ??\n            image?.path?.original ??\n            image?.webp ??\n            image?.original ??\n            image?.thumbnails?.[1366]?.webp ??\n            image?.thumbnails?.[1280]?.webp ??\n            image?.thumbnails?.[1024]?.webp ??\n            image?.thumbnails?.[768]?.webp ??\n            image?.thumbnails?.[540]?.webp ??\n            image?.thumbnails?.[375]?.webp ??\n            image?.thumbnails?.[1366]?.original ??\n            image?.thumbnails?.[1280]?.original ??\n            image?.thumbnails?.[1024]?.original ??\n            image?.thumbnails?.[768]?.original ??\n            image?.thumbnails?.[540]?.original ??\n            image?.thumbnails?.[375]?.original;\n\n        return this.normalizeImageUrl(src);\n    }\n\n    getImageAlt(image: any): string {\n        return (\n            image?.img?.alt ??\n            image?.alt ??\n            image?.title ??\n            image?.name ??\n            ''\n        );\n    }\n\n    getOfferImage(offer: BabylonOfferItemI): any | undefined {\n        return (\n            (offer as any)?.images?.[0] ??\n            (offer as any)?.images ??\n            (offer as any)?.multimedia?.[0] ??\n            (offer as any)?.multimedia?.imagenes?.[0] ??\n            (offer as any)?.image\n        );\n    }\n\n    getOfferPretitle(offer: BabylonOfferItemI): string {\n        return offer.name ?? '';\n    }\n\n    getOfferTitle(offer: BabylonOfferItemI): string {\n        return (\n            offer?.texts?.title ??\n            offer?.texts?.subtitle ??\n            offer?.texts?.description ??\n            ''\n        );\n    }\n\n    getOfferBadgeLabel(offer: BabylonOfferItemI): string {\n        return offer?.labelFrom ?? offer?.texts?.additional1 ?? '';\n    }\n\n    getOfferPrimaryButton(offer: BabylonOfferItemI): any | undefined {\n        return (\n            offer?.buttons?.[0] ??\n            offer?.links?.[0] ??\n            (offer as any)?.buttons?.[0] ??\n            (offer as any)?.links?.[0]\n        );\n    }\n\n    getButtonUrl(button: any): string {\n        return button?.url ?? button?.linkValue ?? button?.link_value ?? '#';\n    }\n\n    getButtonLinkType(button: any): string {\n        return button?.linkType ?? button?.link_type ?? 'external';\n    }\n\n    trackOffer(index: number, offer: BabylonOfferItemI): number | string {\n        return (offer as any)?.id ?? offer?.name ?? index;\n    }\n\n    private get effectiveTexts(): BabylonTextInfoI | undefined {\n        return this.texts ?? this.text;\n    }\n\n    private normalizeImageUrl(src?: string): string | undefined {\n        if (!src) return undefined;\n        if (/^(https?:)?\\/\\//i.test(src) || /^(data|blob):/i.test(src)) {\n            return src;\n        }\n\n        const cleanSrc = src.replace(/^\\/+/, '');\n        const cdnBase = (this.siteSvc?.cdnImagesInstant ?? '').toString();\n        if (!cdnBase) return src;\n\n        const cleanBase = cdnBase.endsWith('/') ? cdnBase : `${cdnBase}/`;\n        return `${cleanBase}${cleanSrc}`;\n    }\n}\n","@if (heroImage || moduleOffers.length) {\n<section class=\"mdl-gridc2imgtext\" [class.reverse]=\"reverse\">\n    <div class=\"mdl-container\">\n        <div class=\"m-columleft\">\n            <div class=\"m-content-item\">\n                @if (offersTitle) {\n                <div class=\"m-titulo\" [innerHTML]=\"offersTitle\"></div>\n                }\n\n                @for (offer of moduleOffers; track trackOffer($index, offer)) {\n                <a\n                    class=\"m-item\"\n                    [href]=\"getButtonUrl(getOfferPrimaryButton(offer))\"\n                    [linkType]=\"getButtonLinkType(getOfferPrimaryButton(offer))\"\n                >\n                    @if (getOfferImage(offer); as offerImage) {\n                    <div class=\"m-image\">\n                        <img\n                            [src]=\"getImageSrc(offerImage)\"\n                            [alt]=\"getImageAlt(offerImage)\"\n                            loading=\"lazy\"\n                        />\n                        @if (offer.price || offer.discount) {\n                        <div class=\"m-yellow\">\n                            @if (getOfferBadgeLabel(offer)) {\n                            <div class=\"m-desde\">\n                                {{ getOfferBadgeLabel(offer) }}\n                            </div>\n                            }\n                            <div class=\"m-precio\">\n                                @if (offer.price) {\n                                {{ offer.price\n                                }}<span>{{ (offer.currency || 'EUR') | currencySymbol }}</span>\n                                } @else {\n                                {{ offer.discount }}<span>%</span>\n                                }\n                            </div>\n                        </div>\n                        }\n                    </div>\n                    }\n\n                    @if (getOfferTitle(offer)) {\n                    <div class=\"m-texto\" [innerHTML]=\"getOfferTitle(offer)\"></div>\n                    }\n                </a>\n                }\n\n                @if (moduleButton; as btn) {\n                <a\n                    class=\"m-button\"\n                    [href]=\"getButtonUrl(btn)\"\n                    [linkType]=\"getButtonLinkType(btn)\"\n                    [innerHTML]=\"btn.label || ''\"\n                ></a>\n                }\n            </div>\n\n            @if (footerPretitle || footerTitle || footerText || footerIcon) {\n            <div class=\"m-foot\">\n                <div class=\"m-content\">\n                    @if (footerPretitle) {\n                    <div class=\"m-pretitulo\" [innerHTML]=\"footerPretitle\"></div>\n                    }\n                    @if (footerIcon) {\n                        @if (isIconClass(footerIcon)) {\n                    <i\n                        [class]=\"'m-icon ' + getIconClass(footerIcon)\"\n                        aria-hidden=\"true\"\n                    ></i>\n                        } @else {\n                    <svg class=\"m-icon\" aria-hidden=\"true\" focusable=\"false\">\n                        <use [attr.href]=\"getIconHref(footerIcon)\"></use>\n                    </svg>\n                        }\n                    }\n                    @if (footerTitle) {\n                    <div class=\"m-titulo\" [innerHTML]=\"footerTitle\"></div>\n                    }\n                    @if (footerText) {\n                    <div class=\"m-texto\" [innerHTML]=\"footerText\"></div>\n                    }\n                </div>\n            </div>\n            }\n        </div>\n\n        @if (heroImage) {\n        <div class=\"m-columright\">\n            <div class=\"m-image\">\n                <img\n                    [src]=\"getImageSrc(heroImage)\"\n                    [alt]=\"getImageAlt(heroImage)\"\n                    loading=\"lazy\"\n                />\n                <div class=\"m-content\">\n                    @if (heroImage.pretitle) {\n                    <div class=\"m-pretitulo\" [innerHTML]=\"heroImage.pretitle\"></div>\n                    }\n                    @if (heroImage.title) {\n                    <div class=\"m-titulo\" [innerHTML]=\"heroImage.title\"></div>\n                    }\n                    @if (heroImage.description) {\n                    <div class=\"m-texto\" [innerHTML]=\"heroImage.description\"></div>\n                    }\n                    @if (heroButton; as heroBtn) {\n                    <a\n                        class=\"m-button\"\n                        [href]=\"getButtonUrl(heroBtn)\"\n                        [linkType]=\"getButtonLinkType(heroBtn)\"\n                        [innerHTML]=\"heroBtn.label || ''\"\n                    ></a>\n                    }\n                </div>\n            </div>\n        </div>\n        }\n    </div>\n</section>\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\nimport { BabylonLinkTypeDirective } from '../../../../directives/link-type/link-type.directive';\nimport {\n    BabylonButtonI,\n    BabylonImageI,\n    BabylonMultimediaI,\n    BabylonTextInfoI,\n} from '../../../../interfaces';\n\ninterface MapPinItem {\n    pinImage: string;\n    modalImage?: BabylonImageI;\n    modalIndex: number;\n}\n\ninterface MapDropdownItem {\n    title: string;\n    subtitle: string;\n    description: string;\n}\n\n@Component({\n    selector: 'map-txt-v2',\n    standalone: true,\n    imports: [CommonModule, BabylonLinkTypeDirective],\n    templateUrl: './map-txt-v2.component.html',\n    styleUrl: './map-txt-v2.component.scss',\n})\nexport class MapTxtV2Component implements OnInit, OnChanges {\n    @Input() texts?: BabylonTextInfoI;\n    @Input() multimedia?: BabylonMultimediaI;\n    @Input() links?: BabylonButtonI[];\n    @Input() buttons?: BabylonButtonI[];\n\n    isExpanded = false;\n    activeModalIndex: number | null = null;\n    dropDownItems: MapDropdownItem[] = [];\n\n    ngOnInit(): void {\n        this.buildDropDownItems();\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if (changes['texts']) {\n            this.buildDropDownItems();\n        }\n    }\n\n    private buildDropDownItems(): void {\n        const items: MapDropdownItem[] = [];\n        const source = (this.texts ?? {}) as Record<string, unknown>;\n\n        for (let i = 1; i <= 4; i++) {\n            const title = this.getTextByKeys(source, [\n                `Titulo-detalle-${i}`,\n                `Título-detalle-${i}`,\n            ]);\n            const subtitle = this.getTextByKeys(source, [\n                `Subtitulo-detalle-${i}`,\n                `Subítulo-detalle-${i}`,\n                `Subitulo-detalle-${i}`,\n            ]);\n            const description = this.getTextByKeys(source, [\n                `Descripcion-detalle-${i}`,\n                `Descripción-detalle-${i}`,\n            ]);\n\n            if (title || subtitle || description) {\n                items.push({\n                    title,\n                    subtitle,\n                    description,\n                });\n            }\n        }\n\n        this.dropDownItems = items;\n    }\n\n    get pinItems(): MapPinItem[] {\n        const pins = (this.links ?? [])\n            .map((item) => item?.label?.trim() ?? '')\n            .filter((label) => !!label)\n            .slice(0, 7);\n\n        return pins.map((pinImage, index) => ({\n            pinImage,\n            modalImage: this.multimedia?.imagenes?.[index],\n            modalIndex: index + 1,\n        }));\n    }\n\n    toggleMoreLess(): void {\n        this.isExpanded = !this.isExpanded;\n    }\n\n    openModal(index: number): void {\n        this.activeModalIndex = index;\n    }\n\n    closeModal(): void {\n        this.activeModalIndex = null;\n    }\n\n    private getTextByKeys(source: Record<string, unknown>, keys: string[]): string {\n        for (const key of keys) {\n            const value = source[key];\n            if (typeof value === 'string' && value.trim().length > 0) {\n                return value;\n            }\n        }\n\n        return '';\n    }\n}\n","<section class=\"CanBordoy-Map\" [class.moreLess--active]=\"isExpanded\">\n    <div class=\"CanBordoy-Map__heading\">\n        @if (texts?.title) {\n            <h2 [innerHTML]=\"texts?.title\"></h2>\n        }\n        @if (texts?.subtitle) {\n            <p [innerHTML]=\"texts?.subtitle\"></p>\n        }\n        <span class=\"CanBordoy-Map__icon-btn\">\n            <svg\n                aria-hidden=\"true\"\n                class=\"CanBordoy-Map__icon-btn--graphic\"\n                focusable=\"false\"\n            >\n                <use\n                    href=\"/assets/babylon/svg/heading_graphic.svg#heading_graphic\"\n                ></use>\n            </svg>\n            <span\n                class=\"CanBordoy-Map__icon-btn--plus btn__moreLess\"\n                role=\"button\"\n                (click)=\"toggleMoreLess()\"\n            >\n                <svg aria-hidden=\"true\" focusable=\"false\">\n                    <use\n                        href=\"/assets/babylon/svg/plus-icon.svg#plus-icon\"\n                    ></use>\n                </svg>\n            </span>\n        </span>\n    </div>\n\n    <div class=\"more-content\">\n        <div>\n            <div class=\"CanBordoy-Map__dropDown\">\n                <div class=\"CanBordoy-Map__dropDown--list\">\n                    @for (detail of dropDownItems; track $index) {\n                        <div class=\"CanBordoy-Map__dropDown--item\">\n                            <h3>\n                                {{ detail.title }}\n                                <span>{{ detail.subtitle }}</span>\n                            </h3>\n                            <p [innerHTML]=\"detail.description\"></p>\n                        </div>\n                    }\n                </div>\n                <span class=\"CanBordoy-Map__btn\">\n                    <a\n                        role=\"button\"\n                        class=\"btn__link btn__link--reverse btn__moreLess\"\n                        (click)=\"toggleMoreLess()\"\n                    >\n                        <span>hide</span>\n                    </a>\n                    <svg\n                        aria-hidden=\"true\"\n                        class=\"CanBordoy-Map__btn--graphic\"\n                        focusable=\"false\"\n                    >\n                        <use\n                            href=\"/assets/babylon/svg/heading_graphic.svg#heading_graphic\"\n                        ></use>\n                    </svg>\n                </span>\n            </div>\n        </div>\n    </div>\n\n    <div class=\"CanBordoy-Map__map-box\">\n        <figure>\n            <img\n                [src]=\"texts?.description\"\n                class=\"CanBordoy-Map__img--desktop\"\n                [alt]=\"texts?.title || 'Map image'\"\n            />\n            <img\n                [src]=\"texts?.description\"\n                class=\"CanBordoy-Map__img--mobile\"\n                [alt]=\"texts?.title || 'Map image'\"\n            />\n        </figure>\n        <ul class=\"CanBordoy-Map__map-pinList\">\n            <li class=\"CanBordoy-Map__map-pinList--logo\">\n                <svg aria-hidden=\"true\" focusable=\"false\">\n                    <use\n                        href=\"/assets/babylon/svg/canbordoy-icon-logo.svg#canbordoy-icon-logo\"\n                    ></use>\n                </svg>\n            </li>\n\n            @for (pin of pinItems; track pin.modalIndex) {\n                <li\n                    class=\"CanBordoy-Map__map-pinList--{{ pin.modalIndex }}\"\n                    (click)=\"openModal(pin.modalIndex)\"\n                >\n                    <figure>\n                        <img\n                            [src]=\"pin.pinImage\"\n                            [alt]=\"pin.modalImage?.title || 'Map pin'\"\n                        />\n                    </figure>\n                    <span\n                        class=\"CanBordoy-Map__map-pinList--plus CanBordoy-Map__map-pinList--{{\n                            pin.modalIndex\n                        }}-plus\"\n                    >\n                        <svg aria-hidden=\"true\" focusable=\"false\">\n                            <use\n                                href=\"/assets/babylon/svg/plus-icon.svg#plus-icon\"\n                            ></use>\n                        </svg>\n                    </span>\n                </li>\n            }\n        </ul>\n    </div>\n\n    @if (buttons?.[0]?.label) {\n        <span class=\"CanBordoy-Map__btn\">\n            <a\n                role=\"button\"\n                class=\"btn__link btn__link--reverse\"\n                [href]=\"buttons?.[0]?.url\"\n                [linkType]=\"buttons?.[0]?.linkType\"\n            >\n                <span>{{ buttons?.[0]?.label }}</span>\n            </a>\n        </span>\n    }\n</section>\n\n@for (pin of pinItems; track pin.modalIndex) {\n    @if (pin.modalImage) {\n        <div\n            class=\"modal modal__mapInfo modal__mapInfo-{{ pin.modalIndex }}\"\n            [class.modal--open]=\"activeModalIndex === pin.modalIndex\"\n            (click)=\"closeModal()\"\n        >\n            <div class=\"modal__inner\" (click)=\"$event.stopPropagation()\">\n                <div class=\"modal__close\" role=\"button\" (click)=\"closeModal()\">\n                    <svg aria-hidden=\"true\" focusable=\"false\">\n                        <use\n                            href=\"/assets/babylon/svg/close-icon.svg#close-icon\"\n                        ></use>\n                    </svg>\n                </div>\n                <div class=\"modal__mapInfo--graphic\">\n                    <figure>\n                        <img\n                            [src]=\"\n                                pin.modalImage?.img?.src ||\n                                'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7'\n                            \"\n                            [alt]=\"\n                                pin.modalImage?.img?.alt ||\n                                pin.modalImage?.title ||\n                                'Map modal image'\n                            \"\n                        />\n                    </figure>\n                </div>\n                <div class=\"modal__mapInfo--content\">\n                    <h2>\n                        {{ pin.modalImage?.title }}\n                        <span>{{ pin.modalImage?.subtitle }}</span>\n                    </h2>\n                    @if (pin.modalImage?.description) {\n                        <p [innerHTML]=\"pin.modalImage?.description\"></p>\n                    }\n                </div>\n            </div>\n        </div>\n    }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\ntype CleanOptions = {\n    /** Si true: elimina también null */\n    removeNull?: boolean;\n    /** Si true: elimina strings vacíos/whitespace */\n    removeEmptyString?: boolean;\n    /** Si true: si un objeto/array queda vacío => devuelve undefined */\n    pruneEmpty?: boolean;\n};\n\n@Pipe({\n    name: 'babylonCleanProps',\n    standalone: true,\n    pure: true,\n})\nexport class BabylonCleanPropsPipe implements PipeTransform {\n    transform<T>(value: T, options: CleanOptions = {}): T | undefined {\n        const opts: Required<CleanOptions> = {\n            removeNull: false,\n            removeEmptyString: false,\n            pruneEmpty: true,\n            ...options,\n        };\n\n        return deepClean(value, opts) as T | undefined;\n    }\n}\n\nfunction deepClean(value: any, opts: Required<CleanOptions>): any {\n    // 1) valores “vacíos”\n    if (value === undefined) return undefined;\n    if (opts.removeNull && value === null) return undefined;\n    if (\n        opts.removeEmptyString &&\n        typeof value === 'string' &&\n        value.trim().length === 0\n    ) {\n        return undefined;\n    }\n\n    // 2) arrays\n    if (Array.isArray(value)) {\n        const cleanedArr = value\n            .map((v) => deepClean(v, opts))\n            .filter((v) => v !== undefined);\n\n        if (opts.pruneEmpty && cleanedArr.length === 0) return undefined;\n        return cleanedArr;\n    }\n\n    // 3) objetos\n    if (value && typeof value === 'object') {\n        // Mantén Date, File, etc.\n        const tag = Object.prototype.toString.call(value);\n        const isPlainObject = tag === '[object Object]';\n        if (!isPlainObject) return value;\n\n        const out: Record<string, any> = {};\n        for (const [k, v] of Object.entries(value)) {\n            const cleaned = deepClean(v, opts);\n            if (cleaned !== undefined) out[k] = cleaned;\n        }\n\n        if (opts.pruneEmpty && Object.keys(out).length === 0) return undefined;\n        return out;\n    }\n\n    // 4) primitivos\n    return value;\n}\n","/*\n * Public API Surface of babylon\n */\n\n/* COMPONENTS  */\nexport * from './lib/components/core/index';\nexport * from './lib/components/shared/index';\n\n/*   SERVICES   */\nexport * from './lib/services';\n\n/*   INTERFACES   */\nexport * from './lib/interfaces/index';\n\n/*   UTILS   */\nexport * from './lib/utils';\nexport * from './lib/utils/complex-links.token';\nexport * from './lib/utils/organization-name.token';\nexport * from './lib/utils/scroll-config.token';\n\n/*   ENUMS   */\nexport * from './lib/Enum';\n\n/*   EXTERNAL   */\nexport * from './lib/components/external/core/index';\n\nexport * from './lib/pipes/babylon-clean-props.pipe';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","Swiper","i2","i3","i4","i2.ScreenSizerService","i1.BabylonWidgetSearchLoaderService","map","catchError","i6","i1.ScreenSizerService","i1.BabylonModalService","DEFAULT_CONTENT","defaultData","defaultSettings","content","sliderSettingsJson"],"mappings":"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"}