ctt-puro 0.47.9 → 0.48.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2660,6 +2660,85 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
2660
2660
  args: [{ providedIn: 'root' }]
2661
2661
  }] });
2662
2662
 
2663
+ class EngineModalScriptsDirective {
2664
+ constructor(platformId) {
2665
+ this.platformId = platformId;
2666
+ this.active = input.required();
2667
+ effect(() => {
2668
+ if (!this.active())
2669
+ return;
2670
+ this.init();
2671
+ });
2672
+ }
2673
+ init() {
2674
+ if (!isPlatformBrowser(this.platformId))
2675
+ return;
2676
+ if (typeof $ === 'undefined')
2677
+ return;
2678
+ setTimeout(() => {
2679
+ DatepickerLocaleUtil.setLocale(DatepickerLocaleUtil.detectLanguage());
2680
+ this.initDatepickers();
2681
+ this.initGuests();
2682
+ }, 50);
2683
+ }
2684
+ /* ======================
2685
+ * DATEPICKER (MODAL)
2686
+ * ====================== */
2687
+ initDatepickers() {
2688
+ const init = (selector) => {
2689
+ $(selector).each(function () {
2690
+ if ($(this).hasClass('hasDatepicker')) {
2691
+ $(this).datepicker('destroy');
2692
+ }
2693
+ $(this).datepicker({
2694
+ showAnim: 'fadeIn',
2695
+ changeMonth: true,
2696
+ changeYear: true,
2697
+ showOtherMonths: true,
2698
+ selectOtherMonths: true,
2699
+ });
2700
+ });
2701
+ };
2702
+ init('#In-date2');
2703
+ init('#Out-date2');
2704
+ }
2705
+ /* ======================
2706
+ * GUESTS (MODAL)
2707
+ * ====================== */
2708
+ initGuests() {
2709
+ $('.js-personas-subfields')
2710
+ .off('click.engine')
2711
+ .on('click.engine', function () {
2712
+ $(this).next('.js-fieldSub').slideToggle();
2713
+ });
2714
+ $('.js-apply-guests1')
2715
+ .off('click.engine')
2716
+ .on('click.engine', function () {
2717
+ const wrapper = $(this).parents('.booking__fieldSub');
2718
+ const adults = parseInt($('#adult1').val(), 10) || 0;
2719
+ const kids = parseInt($('#child1').val(), 10) || 0;
2720
+ const total = adults + kids;
2721
+ wrapper.hide();
2722
+ wrapper
2723
+ .siblings('.js-personas-subfields')
2724
+ .find('.booking__fieldControl')
2725
+ .text(total <= 9 ? '0' + total : total);
2726
+ });
2727
+ }
2728
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EngineModalScriptsDirective, deps: [{ token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Directive }); }
2729
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "17.3.12", type: EngineModalScriptsDirective, isStandalone: true, selector: "[engineModalScripts]", inputs: { active: { classPropertyName: "active", publicName: "active", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0 }); }
2730
+ }
2731
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EngineModalScriptsDirective, decorators: [{
2732
+ type: Directive,
2733
+ args: [{
2734
+ selector: '[engineModalScripts]',
2735
+ standalone: true,
2736
+ }]
2737
+ }], ctorParameters: () => [{ type: Object, decorators: [{
2738
+ type: Inject,
2739
+ args: [PLATFORM_ID]
2740
+ }] }] });
2741
+
2663
2742
  class PuroEngineModalComponent {
2664
2743
  constructor() {
2665
2744
  this.fb = inject(FormBuilder);
@@ -2768,10 +2847,12 @@ class PuroEngineModalComponent {
2768
2847
  this.saveEngineData();
2769
2848
  });
2770
2849
  if (isPlatformBrowser(this.platformId)) {
2771
- setTimeout(() => {
2772
- this.bindDatepickerEvents();
2773
- this.bindLocationChange();
2774
- }, 400);
2850
+ this.ngZone.runOutsideAngular(() => {
2851
+ setTimeout(() => {
2852
+ this.bindDatepickerEvents();
2853
+ this.bindLocationChange();
2854
+ }, 400);
2855
+ });
2775
2856
  }
2776
2857
  this.updateGeneratedUrl();
2777
2858
  this.cdr.markForCheck();
@@ -2873,19 +2954,6 @@ class PuroEngineModalComponent {
2873
2954
  }
2874
2955
  });
2875
2956
  };
2876
- // 🔁 Watcher con requestAnimationFrame (ultraligero)
2877
- const watchInput = (el, onChange) => {
2878
- let last = '';
2879
- const tick = () => {
2880
- const cur = el.value;
2881
- if (cur !== last) {
2882
- last = cur;
2883
- onChange();
2884
- }
2885
- requestAnimationFrame(tick);
2886
- };
2887
- requestAnimationFrame(tick);
2888
- };
2889
2957
  // Dispara también en eventos “por si acaso”
2890
2958
  ['input', 'change', 'blur', 'keyup', 'paste', 'click'].forEach((evt) => {
2891
2959
  inInput.addEventListener(evt, applySync);
@@ -2893,8 +2961,6 @@ class PuroEngineModalComponent {
2893
2961
  });
2894
2962
  // Arranque
2895
2963
  applySync();
2896
- watchInput(inInput, applySync);
2897
- watchInput(outInput, applySync);
2898
2964
  }
2899
2965
  // helpers
2900
2966
  extractDMY(raw) {
@@ -3015,7 +3081,7 @@ class PuroEngineModalComponent {
3015
3081
  this.modal.closeEngine();
3016
3082
  }
3017
3083
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PuroEngineModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3018
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: PuroEngineModalComponent, isStandalone: true, selector: "lib-puro-engine-modal", inputs: { isHotel: "isHotel" }, ngImport: i0, template: "@if (isOpen()) {\n <section class=\"engine-modal\">\n <div class=\"engine-modal__overlay\" (click)=\"close()\"></div>\n <div class=\"engine-modal__content\">\n <button class=\"engine-modal__close\" type=\"button\" (click)=\"close()\">\n \u2715\n </button>\n\n <section class=\"booking\">\n <!-- \uD83D\uDD39 Slider de ventajas -->\n <div\n class=\"booking__advantages js-active-slider\"\n [puroSlider]=\"data()?.advantages\"\n data-slidesrows_pc=\"3\"\n data-slidesrows_laptop=\"3\"\n data-slidesrows_tablet=\"3\"\n data-slidesrows_mobile=\"3\"\n data-slidesrows_mobile_small=\"3\"\n data-slides_infinite=\"true\"\n data-slider_name=\"js-adv-slider\"\n data-slider_showbtns=\"true\"\n data-slider_showdots=\"false\"\n data-slider_fade=\"false\"\n data-slider_autoplay=\"false\"\n data-slides_pc=\"1\"\n >\n <div class=\"booking__advantages--inner\">\n @if (data()?.titleAdvantages) {\n <lib-puro-dynamic-heading\n [tag]=\"data()?.tags?.title || 'span'\"\n cssClass=\"booking__title\"\n [content]=\"data()?.titleAdvantages\"\n ></lib-puro-dynamic-heading>\n }\n <div class=\"js-adv-slider adv__slider\">\n @for (\n item of data()?.advantages;\n track $index\n ) {\n <div class=\"booking__advItem\">\n @if (item.icon) {\n <div class=\"booking__advIcon\">\n <i class=\"icon-{{ item.icon }}\"></i>\n </div>\n }\n @if (item.title) {\n <span class=\"booking__advText\">{{ item.title }}</span>\n }\n </div>\n }\n </div>\n <div class=\"js-slider-arrows\"></div>\n </div>\n </div>\n\n <!-- \uD83D\uDD39 FORMULARIO -->\n @if (form) {\n <div class=\"booking__form\">\n <div class=\"booking__form--inner\">\n <form\n [formGroup]=\"form\"\n (submit)=\"onSubmit($event)\"\n scriptLoader\n [dataLoaded]=\"true\"\n >\n @if (data()?.engine?.title) {\n <span class=\"booking__title\">{{\n data()?.engine?.title\n }}</span>\n }\n\n <div class=\"booking__box\">\n @if (!isHotel) {\n <!-- \uD83D\uDD39 LOCATION -->\n <div class=\"booking__fieldGroup\">\n <div\n class=\"booking__fieldInner\"\n style=\"\n --label-left-position: 34rem;\n \"\n >\n @if (\n data()?.engine\n ?.locationDropdown\n ?.title\n ) {\n <label\n class=\"booking__fieldLabel\"\n for=\"location\"\n >\n <span>{{\n data()?.engine\n ?.locationDropdown\n ?.title\n }}</span>\n </label>\n }\n <select\n class=\"booking__fieldControl\"\n formControlName=\"location\"\n id=\"location\"\n (input)=\"\n changeHotelLabelPosition(\n $event\n )\n \"\n >\n @for (\n option of data()?.engine\n ?.locationDropdown\n ?.options;\n track $index\n ) {\n <option\n [value]=\"\n option.code\n \"\n >\n {{ option.name }}\n </option>\n }\n </select>\n <div class=\"booking__fieldIcon\">\n <i class=\"icon-62\"></i>\n </div>\n </div>\n </div>\n }\n\n <!-- \uD83D\uDD39 DATEPICKERS -->\n <div class=\"booking__fieldGroup\">\n <div class=\"booking__fieldInner\">\n <label\n class=\"booking__fieldLabel\"\n for=\"In-date2\"\n style=\"\n --label-left-position: 14rem;\n \"\n >\n <span>{{\n data()?.engine?.datepickerIn\n ?.title\n }}</span>\n </label>\n <input\n type=\"text\"\n class=\"booking__fieldControl\"\n id=\"In-date2\"\n formControlName=\"datepickerIn\"\n [placeholder]=\"\n data()?.engine?.datepickerIn\n ?.placeholder\n \"\n data-toggle=\"datepicker1\"\n (input)=\"\n changeLabelPosition($event)\n \"\n />\n <div class=\"booking__fieldIcon\">\n <i class=\"icon-89\"></i>\n </div>\n </div>\n </div>\n\n <div class=\"booking__fieldGroup\">\n <div class=\"booking__fieldInner\">\n <label\n class=\"booking__fieldLabel\"\n for=\"Out-date2\"\n style=\"\n --label-left-position: 14rem;\n \"\n >\n <span>{{\n data()?.engine\n ?.datepickerOut?.title\n }}</span>\n </label>\n <input\n type=\"text\"\n class=\"booking__fieldControl\"\n id=\"Out-date2\"\n formControlName=\"datepickerOut\"\n [placeholder]=\"\n data()?.engine\n ?.datepickerOut\n ?.placeholder\n \"\n data-toggle=\"datepicker1\"\n (input)=\"\n changeLabelPosition($event)\n \"\n />\n <div class=\"booking__fieldIcon\">\n <i class=\"icon-89\"></i>\n </div>\n </div>\n </div>\n\n <!-- \uD83D\uDD39 GUESTS -->\n <div class=\"booking__fieldGroup\">\n <div\n class=\"booking__fieldInner js-personas-subfields\"\n role=\"button\"\n >\n <label\n class=\"booking__fieldLabel\"\n for=\"guests\"\n style=\"\n --label-left-position: 6rem;\n \"\n >\n <span>{{\n data()?.engine?.guestsInput\n ?.title\n }}</span>\n </label>\n <div class=\"booking__fieldControl\">\n 00\n </div>\n <div class=\"booking__fieldIcon\">\n <svg width=\"15\" height=\"8\">\n <use\n href=\"#select-arrow\"\n ></use>\n </svg>\n </div>\n </div>\n\n <div\n class=\"booking__fieldSub js-fieldSub\"\n >\n <div class=\"booking__fieldInner\">\n <label\n class=\"booking__fieldLabel\"\n for=\"adult\"\n style=\"\n --label-left-position: 6rem;\n \"\n >\n <span>{{\n data()?.engine\n ?.adultsDropdown\n ?.title\n }}</span>\n </label>\n <select\n class=\"booking__fieldControl\"\n id=\"adult1\"\n (change)=\"applyGuests()\"\n >\n @for (\n option of data()?.engine\n ?.adultsDropdown\n ?.options;\n track $index\n ) {\n <option\n [value]=\"\n option.code\n \"\n >\n {{ option.name }}\n </option>\n }\n </select>\n <div class=\"booking__fieldIcon\">\n <i class=\"icon-92\"></i>\n </div>\n </div>\n\n <div class=\"booking__fieldInner\">\n <label\n class=\"booking__fieldLabel\"\n for=\"child\"\n style=\"\n --label-left-position: 6rem;\n \"\n >\n <span>{{\n data()?.engine\n ?.kidsDropdown\n ?.title\n }}</span>\n </label>\n <select\n class=\"booking__fieldControl\"\n id=\"child1\"\n (change)=\"applyGuests()\"\n >\n @for (\n option of data()?.engine\n ?.kidsDropdown\n ?.options;\n track $index\n ) {\n <option\n [value]=\"\n option.code\n \"\n >\n {{ option.name }}\n </option>\n }\n </select>\n <div class=\"booking__fieldIcon\">\n <svg width=\"22\" height=\"22\"><use href=\"#little-girl\"></use></svg>\n </div>\n </div>\n\n <div class=\"btn__group\">\n <button\n type=\"button\"\n class=\"btn btn__primary js-apply-guests1\"\n (click)=\"applyGuests()\"\n >\n <span>{{\n data()?.engine?.btnApply\n ?.label ?? 'Apply'\n }}</span>\n </button>\n </div>\n </div>\n </div>\n\n <!-- \uD83D\uDD39 PROMO -->\n <div class=\"booking__fieldGroup\">\n <div class=\"booking__fieldInner\">\n <label\n class=\"booking__fieldLabel\"\n style=\"\n --label-left-position: 9rem;\n \"\n for=\"promo\"\n >\n <span>{{\n data()?.engine?.promoInput\n ?.title\n }}</span>\n </label>\n <input\n id=\"promo\"\n type=\"text\"\n placeholder=\"xxxx\"\n class=\"booking__fieldControl\"\n formControlName=\"promoInput\"\n (input)=\"\n changeLabelPosition($event)\n \"\n />\n <div class=\"booking__fieldIcon\">\n <i class=\"icon-90\"></i>\n </div>\n </div>\n </div>\n\n <!-- \uD83D\uDD39 SUBMIT -->\n <div class=\"btn__group\">\n <button\n type=\"submit\"\n class=\"btn btn__primary\"\n >\n <span>{{\n data()?.engine?.button?.label\n }}</span>\n </button>\n </div>\n </div>\n </form>\n </div>\n </div>\n }\n </section>\n </div>\n </section>\n}\n", styles: [":host ::ng-deep .booking__fieldLabel{margin-left:var(--label-left-position, 0)}.booking__fieldControl{font-family:var(--font-text)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$3.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: PuroSliderDirective, selector: "[puroSlider]", inputs: ["puroSlider"] }, { kind: "component", type: PuroDynamicHeadingComponent, selector: "lib-puro-dynamic-heading", inputs: ["tag", "wrapper", "cssClass", "content", "color"] }, { kind: "directive", type: PuroScriptDirective, selector: "[scriptLoader]", inputs: ["dataLoaded"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3084
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: PuroEngineModalComponent, isStandalone: true, selector: "lib-puro-engine-modal", inputs: { isHotel: "isHotel" }, ngImport: i0, template: "@if (isOpen()) {\n <section class=\"engine-modal\" ngSkipHydration>\n <div class=\"engine-modal__overlay\" (click)=\"close()\"></div>\n <div class=\"engine-modal__content\">\n <button class=\"engine-modal__close\" type=\"button\" (click)=\"close()\">\n \u2715\n </button>\n\n <section class=\"booking\">\n <!-- \uD83D\uDD39 Slider de ventajas -->\n <div\n class=\"booking__advantages js-active-slider\"\n [puroSlider]=\"data()?.advantages\"\n data-slidesrows_pc=\"3\"\n data-slidesrows_laptop=\"3\"\n data-slidesrows_tablet=\"3\"\n data-slidesrows_mobile=\"3\"\n data-slidesrows_mobile_small=\"3\"\n data-slides_infinite=\"true\"\n data-slider_name=\"js-adv-slider\"\n data-slider_showbtns=\"true\"\n data-slider_showdots=\"false\"\n data-slider_fade=\"false\"\n data-slider_autoplay=\"false\"\n data-slides_pc=\"1\"\n >\n <div class=\"booking__advantages--inner\">\n @if (data()?.titleAdvantages) {\n <lib-puro-dynamic-heading\n [tag]=\"data()?.tags?.title || 'span'\"\n cssClass=\"booking__title\"\n [content]=\"data()?.titleAdvantages\"\n ></lib-puro-dynamic-heading>\n }\n <div class=\"js-adv-slider adv__slider\">\n @for (\n item of data()?.advantages;\n track $index\n ) {\n <div class=\"booking__advItem\">\n @if (item.icon) {\n <div class=\"booking__advIcon\">\n <i class=\"icon-{{ item.icon }}\"></i>\n </div>\n }\n @if (item.title) {\n <span class=\"booking__advText\">{{ item.title }}</span>\n }\n </div>\n }\n </div>\n <div class=\"js-slider-arrows\"></div>\n </div>\n </div>\n\n <!-- \uD83D\uDD39 FORMULARIO -->\n @if (form) {\n <div class=\"booking__form\">\n <div class=\"booking__form--inner\">\n <form\n [formGroup]=\"form\"\n (submit)=\"onSubmit($event)\"\n engineModalScripts\n [active]=\"isOpen()\"\n >\n @if (data()?.engine?.title) {\n <span class=\"booking__title\">{{\n data()?.engine?.title\n }}</span>\n }\n\n <div class=\"booking__box\">\n @if (!isHotel) {\n <!-- \uD83D\uDD39 LOCATION -->\n <div class=\"booking__fieldGroup\">\n <div\n class=\"booking__fieldInner\"\n style=\"\n --label-left-position: 34rem;\n \"\n >\n @if (\n data()?.engine\n ?.locationDropdown\n ?.title\n ) {\n <label\n class=\"booking__fieldLabel\"\n for=\"location\"\n >\n <span>{{\n data()?.engine\n ?.locationDropdown\n ?.title\n }}</span>\n </label>\n }\n <select\n class=\"booking__fieldControl\"\n formControlName=\"location\"\n id=\"location\"\n (input)=\"\n changeHotelLabelPosition(\n $event\n )\n \"\n >\n @for (\n option of data()?.engine\n ?.locationDropdown\n ?.options;\n track $index\n ) {\n <option\n [value]=\"\n option.code\n \"\n >\n {{ option.name }}\n </option>\n }\n </select>\n <div class=\"booking__fieldIcon\">\n <i class=\"icon-62\"></i>\n </div>\n </div>\n </div>\n }\n\n <!-- \uD83D\uDD39 DATEPICKERS -->\n <div class=\"booking__fieldGroup\">\n <div class=\"booking__fieldInner\">\n <label\n class=\"booking__fieldLabel\"\n for=\"In-date2\"\n style=\"\n --label-left-position: 14rem;\n \"\n >\n <span>{{\n data()?.engine?.datepickerIn\n ?.title\n }}</span>\n </label>\n <input\n type=\"text\"\n class=\"booking__fieldControl\"\n id=\"In-date2\"\n formControlName=\"datepickerIn\"\n [placeholder]=\"\n data()?.engine?.datepickerIn\n ?.placeholder\n \"\n (input)=\"\n changeLabelPosition($event)\n \"\n />\n <div class=\"booking__fieldIcon\">\n <i class=\"icon-89\"></i>\n </div>\n </div>\n </div>\n\n <div class=\"booking__fieldGroup\">\n <div class=\"booking__fieldInner\">\n <label\n class=\"booking__fieldLabel\"\n for=\"Out-date2\"\n style=\"\n --label-left-position: 14rem;\n \"\n >\n <span>{{\n data()?.engine\n ?.datepickerOut?.title\n }}</span>\n </label>\n <input\n type=\"text\"\n class=\"booking__fieldControl\"\n id=\"Out-date2\"\n formControlName=\"datepickerOut\"\n [placeholder]=\"\n data()?.engine\n ?.datepickerOut\n ?.placeholder\n \"\n (input)=\"\n changeLabelPosition($event)\n \"\n />\n <div class=\"booking__fieldIcon\">\n <i class=\"icon-89\"></i>\n </div>\n </div>\n </div>\n\n <!-- \uD83D\uDD39 GUESTS -->\n <div class=\"booking__fieldGroup\">\n <div\n class=\"booking__fieldInner js-personas-subfields\"\n role=\"button\"\n >\n <label\n class=\"booking__fieldLabel\"\n for=\"guests\"\n style=\"\n --label-left-position: 6rem;\n \"\n >\n <span>{{\n data()?.engine?.guestsInput\n ?.title\n }}</span>\n </label>\n <div class=\"booking__fieldControl\">\n 00\n </div>\n <div class=\"booking__fieldIcon\">\n <svg width=\"15\" height=\"8\">\n <use\n href=\"#select-arrow\"\n ></use>\n </svg>\n </div>\n </div>\n\n <div\n class=\"booking__fieldSub js-fieldSub\"\n >\n <div class=\"booking__fieldInner\">\n <label\n class=\"booking__fieldLabel\"\n for=\"adult\"\n style=\"\n --label-left-position: 6rem;\n \"\n >\n <span>{{\n data()?.engine\n ?.adultsDropdown\n ?.title\n }}</span>\n </label>\n <select\n class=\"booking__fieldControl\"\n id=\"adult1\"\n (change)=\"applyGuests()\"\n >\n @for (\n option of data()?.engine\n ?.adultsDropdown\n ?.options;\n track $index\n ) {\n <option\n [value]=\"\n option.code\n \"\n >\n {{ option.name }}\n </option>\n }\n </select>\n <div class=\"booking__fieldIcon\">\n <i class=\"icon-92\"></i>\n </div>\n </div>\n\n <div class=\"booking__fieldInner\">\n <label\n class=\"booking__fieldLabel\"\n for=\"child\"\n style=\"\n --label-left-position: 6rem;\n \"\n >\n <span>{{\n data()?.engine\n ?.kidsDropdown\n ?.title\n }}</span>\n </label>\n <select\n class=\"booking__fieldControl\"\n id=\"child1\"\n (change)=\"applyGuests()\"\n >\n @for (\n option of data()?.engine\n ?.kidsDropdown\n ?.options;\n track $index\n ) {\n <option\n [value]=\"\n option.code\n \"\n >\n {{ option.name }}\n </option>\n }\n </select>\n <div class=\"booking__fieldIcon\">\n <svg width=\"22\" height=\"22\"><use href=\"#little-girl\"></use></svg>\n </div>\n </div>\n\n <div class=\"btn__group\">\n <button\n type=\"button\"\n class=\"btn btn__primary js-apply-guests1\"\n (click)=\"applyGuests()\"\n >\n <span>{{\n data()?.engine?.btnApply\n ?.label ?? 'Apply'\n }}</span>\n </button>\n </div>\n </div>\n </div>\n\n <!-- \uD83D\uDD39 PROMO -->\n <div class=\"booking__fieldGroup\">\n <div class=\"booking__fieldInner\">\n <label\n class=\"booking__fieldLabel\"\n style=\"\n --label-left-position: 9rem;\n \"\n for=\"promo\"\n >\n <span>{{\n data()?.engine?.promoInput\n ?.title\n }}</span>\n </label>\n <input\n id=\"promo\"\n type=\"text\"\n placeholder=\"xxxx\"\n class=\"booking__fieldControl\"\n formControlName=\"promoInput\"\n (input)=\"\n changeLabelPosition($event)\n \"\n />\n <div class=\"booking__fieldIcon\">\n <i class=\"icon-90\"></i>\n </div>\n </div>\n </div>\n\n <!-- \uD83D\uDD39 SUBMIT -->\n <div class=\"btn__group\">\n <button\n type=\"submit\"\n class=\"btn btn__primary\"\n >\n <span>{{\n data()?.engine?.button?.label\n }}</span>\n </button>\n </div>\n </div>\n </form>\n </div>\n </div>\n }\n </section>\n </div>\n </section>\n}\n", styles: [":host ::ng-deep .booking__fieldLabel{margin-left:var(--label-left-position, 0)}.booking__fieldControl{font-family:var(--font-text)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$3.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: PuroSliderDirective, selector: "[puroSlider]", inputs: ["puroSlider"] }, { kind: "component", type: PuroDynamicHeadingComponent, selector: "lib-puro-dynamic-heading", inputs: ["tag", "wrapper", "cssClass", "content", "color"] }, { kind: "directive", type: EngineModalScriptsDirective, selector: "[engineModalScripts]", inputs: ["active"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
3019
3085
  }
3020
3086
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PuroEngineModalComponent, decorators: [{
3021
3087
  type: Component,
@@ -3024,8 +3090,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
3024
3090
  ReactiveFormsModule,
3025
3091
  PuroSliderDirective,
3026
3092
  PuroDynamicHeadingComponent,
3027
- PuroScriptDirective,
3028
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (isOpen()) {\n <section class=\"engine-modal\">\n <div class=\"engine-modal__overlay\" (click)=\"close()\"></div>\n <div class=\"engine-modal__content\">\n <button class=\"engine-modal__close\" type=\"button\" (click)=\"close()\">\n \u2715\n </button>\n\n <section class=\"booking\">\n <!-- \uD83D\uDD39 Slider de ventajas -->\n <div\n class=\"booking__advantages js-active-slider\"\n [puroSlider]=\"data()?.advantages\"\n data-slidesrows_pc=\"3\"\n data-slidesrows_laptop=\"3\"\n data-slidesrows_tablet=\"3\"\n data-slidesrows_mobile=\"3\"\n data-slidesrows_mobile_small=\"3\"\n data-slides_infinite=\"true\"\n data-slider_name=\"js-adv-slider\"\n data-slider_showbtns=\"true\"\n data-slider_showdots=\"false\"\n data-slider_fade=\"false\"\n data-slider_autoplay=\"false\"\n data-slides_pc=\"1\"\n >\n <div class=\"booking__advantages--inner\">\n @if (data()?.titleAdvantages) {\n <lib-puro-dynamic-heading\n [tag]=\"data()?.tags?.title || 'span'\"\n cssClass=\"booking__title\"\n [content]=\"data()?.titleAdvantages\"\n ></lib-puro-dynamic-heading>\n }\n <div class=\"js-adv-slider adv__slider\">\n @for (\n item of data()?.advantages;\n track $index\n ) {\n <div class=\"booking__advItem\">\n @if (item.icon) {\n <div class=\"booking__advIcon\">\n <i class=\"icon-{{ item.icon }}\"></i>\n </div>\n }\n @if (item.title) {\n <span class=\"booking__advText\">{{ item.title }}</span>\n }\n </div>\n }\n </div>\n <div class=\"js-slider-arrows\"></div>\n </div>\n </div>\n\n <!-- \uD83D\uDD39 FORMULARIO -->\n @if (form) {\n <div class=\"booking__form\">\n <div class=\"booking__form--inner\">\n <form\n [formGroup]=\"form\"\n (submit)=\"onSubmit($event)\"\n scriptLoader\n [dataLoaded]=\"true\"\n >\n @if (data()?.engine?.title) {\n <span class=\"booking__title\">{{\n data()?.engine?.title\n }}</span>\n }\n\n <div class=\"booking__box\">\n @if (!isHotel) {\n <!-- \uD83D\uDD39 LOCATION -->\n <div class=\"booking__fieldGroup\">\n <div\n class=\"booking__fieldInner\"\n style=\"\n --label-left-position: 34rem;\n \"\n >\n @if (\n data()?.engine\n ?.locationDropdown\n ?.title\n ) {\n <label\n class=\"booking__fieldLabel\"\n for=\"location\"\n >\n <span>{{\n data()?.engine\n ?.locationDropdown\n ?.title\n }}</span>\n </label>\n }\n <select\n class=\"booking__fieldControl\"\n formControlName=\"location\"\n id=\"location\"\n (input)=\"\n changeHotelLabelPosition(\n $event\n )\n \"\n >\n @for (\n option of data()?.engine\n ?.locationDropdown\n ?.options;\n track $index\n ) {\n <option\n [value]=\"\n option.code\n \"\n >\n {{ option.name }}\n </option>\n }\n </select>\n <div class=\"booking__fieldIcon\">\n <i class=\"icon-62\"></i>\n </div>\n </div>\n </div>\n }\n\n <!-- \uD83D\uDD39 DATEPICKERS -->\n <div class=\"booking__fieldGroup\">\n <div class=\"booking__fieldInner\">\n <label\n class=\"booking__fieldLabel\"\n for=\"In-date2\"\n style=\"\n --label-left-position: 14rem;\n \"\n >\n <span>{{\n data()?.engine?.datepickerIn\n ?.title\n }}</span>\n </label>\n <input\n type=\"text\"\n class=\"booking__fieldControl\"\n id=\"In-date2\"\n formControlName=\"datepickerIn\"\n [placeholder]=\"\n data()?.engine?.datepickerIn\n ?.placeholder\n \"\n data-toggle=\"datepicker1\"\n (input)=\"\n changeLabelPosition($event)\n \"\n />\n <div class=\"booking__fieldIcon\">\n <i class=\"icon-89\"></i>\n </div>\n </div>\n </div>\n\n <div class=\"booking__fieldGroup\">\n <div class=\"booking__fieldInner\">\n <label\n class=\"booking__fieldLabel\"\n for=\"Out-date2\"\n style=\"\n --label-left-position: 14rem;\n \"\n >\n <span>{{\n data()?.engine\n ?.datepickerOut?.title\n }}</span>\n </label>\n <input\n type=\"text\"\n class=\"booking__fieldControl\"\n id=\"Out-date2\"\n formControlName=\"datepickerOut\"\n [placeholder]=\"\n data()?.engine\n ?.datepickerOut\n ?.placeholder\n \"\n data-toggle=\"datepicker1\"\n (input)=\"\n changeLabelPosition($event)\n \"\n />\n <div class=\"booking__fieldIcon\">\n <i class=\"icon-89\"></i>\n </div>\n </div>\n </div>\n\n <!-- \uD83D\uDD39 GUESTS -->\n <div class=\"booking__fieldGroup\">\n <div\n class=\"booking__fieldInner js-personas-subfields\"\n role=\"button\"\n >\n <label\n class=\"booking__fieldLabel\"\n for=\"guests\"\n style=\"\n --label-left-position: 6rem;\n \"\n >\n <span>{{\n data()?.engine?.guestsInput\n ?.title\n }}</span>\n </label>\n <div class=\"booking__fieldControl\">\n 00\n </div>\n <div class=\"booking__fieldIcon\">\n <svg width=\"15\" height=\"8\">\n <use\n href=\"#select-arrow\"\n ></use>\n </svg>\n </div>\n </div>\n\n <div\n class=\"booking__fieldSub js-fieldSub\"\n >\n <div class=\"booking__fieldInner\">\n <label\n class=\"booking__fieldLabel\"\n for=\"adult\"\n style=\"\n --label-left-position: 6rem;\n \"\n >\n <span>{{\n data()?.engine\n ?.adultsDropdown\n ?.title\n }}</span>\n </label>\n <select\n class=\"booking__fieldControl\"\n id=\"adult1\"\n (change)=\"applyGuests()\"\n >\n @for (\n option of data()?.engine\n ?.adultsDropdown\n ?.options;\n track $index\n ) {\n <option\n [value]=\"\n option.code\n \"\n >\n {{ option.name }}\n </option>\n }\n </select>\n <div class=\"booking__fieldIcon\">\n <i class=\"icon-92\"></i>\n </div>\n </div>\n\n <div class=\"booking__fieldInner\">\n <label\n class=\"booking__fieldLabel\"\n for=\"child\"\n style=\"\n --label-left-position: 6rem;\n \"\n >\n <span>{{\n data()?.engine\n ?.kidsDropdown\n ?.title\n }}</span>\n </label>\n <select\n class=\"booking__fieldControl\"\n id=\"child1\"\n (change)=\"applyGuests()\"\n >\n @for (\n option of data()?.engine\n ?.kidsDropdown\n ?.options;\n track $index\n ) {\n <option\n [value]=\"\n option.code\n \"\n >\n {{ option.name }}\n </option>\n }\n </select>\n <div class=\"booking__fieldIcon\">\n <svg width=\"22\" height=\"22\"><use href=\"#little-girl\"></use></svg>\n </div>\n </div>\n\n <div class=\"btn__group\">\n <button\n type=\"button\"\n class=\"btn btn__primary js-apply-guests1\"\n (click)=\"applyGuests()\"\n >\n <span>{{\n data()?.engine?.btnApply\n ?.label ?? 'Apply'\n }}</span>\n </button>\n </div>\n </div>\n </div>\n\n <!-- \uD83D\uDD39 PROMO -->\n <div class=\"booking__fieldGroup\">\n <div class=\"booking__fieldInner\">\n <label\n class=\"booking__fieldLabel\"\n style=\"\n --label-left-position: 9rem;\n \"\n for=\"promo\"\n >\n <span>{{\n data()?.engine?.promoInput\n ?.title\n }}</span>\n </label>\n <input\n id=\"promo\"\n type=\"text\"\n placeholder=\"xxxx\"\n class=\"booking__fieldControl\"\n formControlName=\"promoInput\"\n (input)=\"\n changeLabelPosition($event)\n \"\n />\n <div class=\"booking__fieldIcon\">\n <i class=\"icon-90\"></i>\n </div>\n </div>\n </div>\n\n <!-- \uD83D\uDD39 SUBMIT -->\n <div class=\"btn__group\">\n <button\n type=\"submit\"\n class=\"btn btn__primary\"\n >\n <span>{{\n data()?.engine?.button?.label\n }}</span>\n </button>\n </div>\n </div>\n </form>\n </div>\n </div>\n }\n </section>\n </div>\n </section>\n}\n", styles: [":host ::ng-deep .booking__fieldLabel{margin-left:var(--label-left-position, 0)}.booking__fieldControl{font-family:var(--font-text)}\n"] }]
3093
+ EngineModalScriptsDirective,
3094
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (isOpen()) {\n <section class=\"engine-modal\" ngSkipHydration>\n <div class=\"engine-modal__overlay\" (click)=\"close()\"></div>\n <div class=\"engine-modal__content\">\n <button class=\"engine-modal__close\" type=\"button\" (click)=\"close()\">\n \u2715\n </button>\n\n <section class=\"booking\">\n <!-- \uD83D\uDD39 Slider de ventajas -->\n <div\n class=\"booking__advantages js-active-slider\"\n [puroSlider]=\"data()?.advantages\"\n data-slidesrows_pc=\"3\"\n data-slidesrows_laptop=\"3\"\n data-slidesrows_tablet=\"3\"\n data-slidesrows_mobile=\"3\"\n data-slidesrows_mobile_small=\"3\"\n data-slides_infinite=\"true\"\n data-slider_name=\"js-adv-slider\"\n data-slider_showbtns=\"true\"\n data-slider_showdots=\"false\"\n data-slider_fade=\"false\"\n data-slider_autoplay=\"false\"\n data-slides_pc=\"1\"\n >\n <div class=\"booking__advantages--inner\">\n @if (data()?.titleAdvantages) {\n <lib-puro-dynamic-heading\n [tag]=\"data()?.tags?.title || 'span'\"\n cssClass=\"booking__title\"\n [content]=\"data()?.titleAdvantages\"\n ></lib-puro-dynamic-heading>\n }\n <div class=\"js-adv-slider adv__slider\">\n @for (\n item of data()?.advantages;\n track $index\n ) {\n <div class=\"booking__advItem\">\n @if (item.icon) {\n <div class=\"booking__advIcon\">\n <i class=\"icon-{{ item.icon }}\"></i>\n </div>\n }\n @if (item.title) {\n <span class=\"booking__advText\">{{ item.title }}</span>\n }\n </div>\n }\n </div>\n <div class=\"js-slider-arrows\"></div>\n </div>\n </div>\n\n <!-- \uD83D\uDD39 FORMULARIO -->\n @if (form) {\n <div class=\"booking__form\">\n <div class=\"booking__form--inner\">\n <form\n [formGroup]=\"form\"\n (submit)=\"onSubmit($event)\"\n engineModalScripts\n [active]=\"isOpen()\"\n >\n @if (data()?.engine?.title) {\n <span class=\"booking__title\">{{\n data()?.engine?.title\n }}</span>\n }\n\n <div class=\"booking__box\">\n @if (!isHotel) {\n <!-- \uD83D\uDD39 LOCATION -->\n <div class=\"booking__fieldGroup\">\n <div\n class=\"booking__fieldInner\"\n style=\"\n --label-left-position: 34rem;\n \"\n >\n @if (\n data()?.engine\n ?.locationDropdown\n ?.title\n ) {\n <label\n class=\"booking__fieldLabel\"\n for=\"location\"\n >\n <span>{{\n data()?.engine\n ?.locationDropdown\n ?.title\n }}</span>\n </label>\n }\n <select\n class=\"booking__fieldControl\"\n formControlName=\"location\"\n id=\"location\"\n (input)=\"\n changeHotelLabelPosition(\n $event\n )\n \"\n >\n @for (\n option of data()?.engine\n ?.locationDropdown\n ?.options;\n track $index\n ) {\n <option\n [value]=\"\n option.code\n \"\n >\n {{ option.name }}\n </option>\n }\n </select>\n <div class=\"booking__fieldIcon\">\n <i class=\"icon-62\"></i>\n </div>\n </div>\n </div>\n }\n\n <!-- \uD83D\uDD39 DATEPICKERS -->\n <div class=\"booking__fieldGroup\">\n <div class=\"booking__fieldInner\">\n <label\n class=\"booking__fieldLabel\"\n for=\"In-date2\"\n style=\"\n --label-left-position: 14rem;\n \"\n >\n <span>{{\n data()?.engine?.datepickerIn\n ?.title\n }}</span>\n </label>\n <input\n type=\"text\"\n class=\"booking__fieldControl\"\n id=\"In-date2\"\n formControlName=\"datepickerIn\"\n [placeholder]=\"\n data()?.engine?.datepickerIn\n ?.placeholder\n \"\n (input)=\"\n changeLabelPosition($event)\n \"\n />\n <div class=\"booking__fieldIcon\">\n <i class=\"icon-89\"></i>\n </div>\n </div>\n </div>\n\n <div class=\"booking__fieldGroup\">\n <div class=\"booking__fieldInner\">\n <label\n class=\"booking__fieldLabel\"\n for=\"Out-date2\"\n style=\"\n --label-left-position: 14rem;\n \"\n >\n <span>{{\n data()?.engine\n ?.datepickerOut?.title\n }}</span>\n </label>\n <input\n type=\"text\"\n class=\"booking__fieldControl\"\n id=\"Out-date2\"\n formControlName=\"datepickerOut\"\n [placeholder]=\"\n data()?.engine\n ?.datepickerOut\n ?.placeholder\n \"\n (input)=\"\n changeLabelPosition($event)\n \"\n />\n <div class=\"booking__fieldIcon\">\n <i class=\"icon-89\"></i>\n </div>\n </div>\n </div>\n\n <!-- \uD83D\uDD39 GUESTS -->\n <div class=\"booking__fieldGroup\">\n <div\n class=\"booking__fieldInner js-personas-subfields\"\n role=\"button\"\n >\n <label\n class=\"booking__fieldLabel\"\n for=\"guests\"\n style=\"\n --label-left-position: 6rem;\n \"\n >\n <span>{{\n data()?.engine?.guestsInput\n ?.title\n }}</span>\n </label>\n <div class=\"booking__fieldControl\">\n 00\n </div>\n <div class=\"booking__fieldIcon\">\n <svg width=\"15\" height=\"8\">\n <use\n href=\"#select-arrow\"\n ></use>\n </svg>\n </div>\n </div>\n\n <div\n class=\"booking__fieldSub js-fieldSub\"\n >\n <div class=\"booking__fieldInner\">\n <label\n class=\"booking__fieldLabel\"\n for=\"adult\"\n style=\"\n --label-left-position: 6rem;\n \"\n >\n <span>{{\n data()?.engine\n ?.adultsDropdown\n ?.title\n }}</span>\n </label>\n <select\n class=\"booking__fieldControl\"\n id=\"adult1\"\n (change)=\"applyGuests()\"\n >\n @for (\n option of data()?.engine\n ?.adultsDropdown\n ?.options;\n track $index\n ) {\n <option\n [value]=\"\n option.code\n \"\n >\n {{ option.name }}\n </option>\n }\n </select>\n <div class=\"booking__fieldIcon\">\n <i class=\"icon-92\"></i>\n </div>\n </div>\n\n <div class=\"booking__fieldInner\">\n <label\n class=\"booking__fieldLabel\"\n for=\"child\"\n style=\"\n --label-left-position: 6rem;\n \"\n >\n <span>{{\n data()?.engine\n ?.kidsDropdown\n ?.title\n }}</span>\n </label>\n <select\n class=\"booking__fieldControl\"\n id=\"child1\"\n (change)=\"applyGuests()\"\n >\n @for (\n option of data()?.engine\n ?.kidsDropdown\n ?.options;\n track $index\n ) {\n <option\n [value]=\"\n option.code\n \"\n >\n {{ option.name }}\n </option>\n }\n </select>\n <div class=\"booking__fieldIcon\">\n <svg width=\"22\" height=\"22\"><use href=\"#little-girl\"></use></svg>\n </div>\n </div>\n\n <div class=\"btn__group\">\n <button\n type=\"button\"\n class=\"btn btn__primary js-apply-guests1\"\n (click)=\"applyGuests()\"\n >\n <span>{{\n data()?.engine?.btnApply\n ?.label ?? 'Apply'\n }}</span>\n </button>\n </div>\n </div>\n </div>\n\n <!-- \uD83D\uDD39 PROMO -->\n <div class=\"booking__fieldGroup\">\n <div class=\"booking__fieldInner\">\n <label\n class=\"booking__fieldLabel\"\n style=\"\n --label-left-position: 9rem;\n \"\n for=\"promo\"\n >\n <span>{{\n data()?.engine?.promoInput\n ?.title\n }}</span>\n </label>\n <input\n id=\"promo\"\n type=\"text\"\n placeholder=\"xxxx\"\n class=\"booking__fieldControl\"\n formControlName=\"promoInput\"\n (input)=\"\n changeLabelPosition($event)\n \"\n />\n <div class=\"booking__fieldIcon\">\n <i class=\"icon-90\"></i>\n </div>\n </div>\n </div>\n\n <!-- \uD83D\uDD39 SUBMIT -->\n <div class=\"btn__group\">\n <button\n type=\"submit\"\n class=\"btn btn__primary\"\n >\n <span>{{\n data()?.engine?.button?.label\n }}</span>\n </button>\n </div>\n </div>\n </form>\n </div>\n </div>\n }\n </section>\n </div>\n </section>\n}\n", styles: [":host ::ng-deep .booking__fieldLabel{margin-left:var(--label-left-position, 0)}.booking__fieldControl{font-family:var(--font-text)}\n"] }]
3029
3095
  }], ctorParameters: () => [], propDecorators: { isHotel: [{
3030
3096
  type: Input
3031
3097
  }] } });
@@ -5089,7 +5155,7 @@ class MapperService {
5089
5155
  url: props?.url,
5090
5156
  },
5091
5157
  ...(props?.hotels?.map((hotel) => ({
5092
- code: hotel?.modelId,
5158
+ code: hotel?.modelId ?? 4,
5093
5159
  name: hotel?.name,
5094
5160
  url: hotel?.url,
5095
5161
  })) ?? []),
@@ -8790,7 +8856,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
8790
8856
 
8791
8857
  class PuroWebmapComponent {
8792
8858
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PuroWebmapComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8793
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: PuroWebmapComponent, isStandalone: true, selector: "lib-puro-webmap", inputs: { title: "title", links: "links", img: "img" }, ngImport: i0, template: "<section class=\"webmap\">\n <div class=\"webmap__inner\">\n <div class=\"webmap__graphic\">\n <div class=\"webmap__graphicInner\">\n @if (img) {\n <img\n [ngSrc]=\"img.src\"\n [alt]=\"img.alt\"\n class=\"webmap__graphicInner--img\"\n loading=\"lazy\"\n width=\"765\"\n height=\"725\"\n decoding=\"async\"\n />\n }\n </div>\n </div>\n <div class=\"webmap__content\">\n @if (title) {\n <span class=\"webmap__title\">{{ title }}</span>\n }\n @if (links && links.length) {\n <ul class=\"webmap__list\">\n @for (link of links; track $index) {\n @if (link) {\n <li class=\"webmap__link\">\n <a\n [href]=\"link.url\"\n [linkType]=\"link.linkType\"\n [attr.aria-label]=\"link.label\"\n >{{ link.label }}</a\n >\n </li>\n }\n }\n </ul>\n }\n </div>\n </div>\n</section>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: PuroLinkTypeDirective, selector: "[linkType]", inputs: ["linkType", "href", "modalClick"], outputs: ["bookClick", "anchorClicked"] }, { kind: "directive", type: NgOptimizedImage, selector: "img[ngSrc]", inputs: ["ngSrc", "ngSrcset", "sizes", "width", "height", "loading", "priority", "loaderParams", "disableOptimizedSrcset", "fill", "placeholder", "placeholderConfig", "src", "srcset"] }, { kind: "directive", type: AutoImageZoomWrapperDirective, selector: "img[ngSrc], img[src]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
8859
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: PuroWebmapComponent, isStandalone: true, selector: "lib-puro-webmap", inputs: { title: "title", links: "links", img: "img" }, ngImport: i0, template: "<section class=\"webmap generalMargin\">\n <div class=\"webmap__inner\">\n <div class=\"webmap__graphic\">\n <div class=\"webmap__graphicInner\">\n @if (img) {\n <img\n [ngSrc]=\"img.src\"\n [alt]=\"img.alt\"\n class=\"webmap__graphicInner--img\"\n loading=\"lazy\"\n width=\"765\"\n height=\"725\"\n decoding=\"async\"\n />\n }\n </div>\n </div>\n <div class=\"webmap__content\">\n @if (title) {\n <span class=\"webmap__title\">{{ title }}</span>\n }\n @if (links && links.length) {\n <ul class=\"webmap__list\">\n @for (link of links; track $index) {\n @if (link) {\n <li class=\"webmap__link\">\n <a\n [href]=\"link.url\"\n [linkType]=\"link.linkType\"\n [attr.aria-label]=\"link.label\"\n >{{ link.label }}</a\n >\n </li>\n }\n }\n </ul>\n }\n </div>\n </div>\n</section>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: PuroLinkTypeDirective, selector: "[linkType]", inputs: ["linkType", "href", "modalClick"], outputs: ["bookClick", "anchorClicked"] }, { kind: "directive", type: NgOptimizedImage, selector: "img[ngSrc]", inputs: ["ngSrc", "ngSrcset", "sizes", "width", "height", "loading", "priority", "loaderParams", "disableOptimizedSrcset", "fill", "placeholder", "placeholderConfig", "src", "srcset"] }, { kind: "directive", type: AutoImageZoomWrapperDirective, selector: "img[ngSrc], img[src]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
8794
8860
  }
8795
8861
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PuroWebmapComponent, decorators: [{
8796
8862
  type: Component,
@@ -8799,7 +8865,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
8799
8865
  PuroLinkTypeDirective,
8800
8866
  NgOptimizedImage,
8801
8867
  AutoImageZoomWrapperDirective,
8802
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<section class=\"webmap\">\n <div class=\"webmap__inner\">\n <div class=\"webmap__graphic\">\n <div class=\"webmap__graphicInner\">\n @if (img) {\n <img\n [ngSrc]=\"img.src\"\n [alt]=\"img.alt\"\n class=\"webmap__graphicInner--img\"\n loading=\"lazy\"\n width=\"765\"\n height=\"725\"\n decoding=\"async\"\n />\n }\n </div>\n </div>\n <div class=\"webmap__content\">\n @if (title) {\n <span class=\"webmap__title\">{{ title }}</span>\n }\n @if (links && links.length) {\n <ul class=\"webmap__list\">\n @for (link of links; track $index) {\n @if (link) {\n <li class=\"webmap__link\">\n <a\n [href]=\"link.url\"\n [linkType]=\"link.linkType\"\n [attr.aria-label]=\"link.label\"\n >{{ link.label }}</a\n >\n </li>\n }\n }\n </ul>\n }\n </div>\n </div>\n</section>\n" }]
8868
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<section class=\"webmap generalMargin\">\n <div class=\"webmap__inner\">\n <div class=\"webmap__graphic\">\n <div class=\"webmap__graphicInner\">\n @if (img) {\n <img\n [ngSrc]=\"img.src\"\n [alt]=\"img.alt\"\n class=\"webmap__graphicInner--img\"\n loading=\"lazy\"\n width=\"765\"\n height=\"725\"\n decoding=\"async\"\n />\n }\n </div>\n </div>\n <div class=\"webmap__content\">\n @if (title) {\n <span class=\"webmap__title\">{{ title }}</span>\n }\n @if (links && links.length) {\n <ul class=\"webmap__list\">\n @for (link of links; track $index) {\n @if (link) {\n <li class=\"webmap__link\">\n <a\n [href]=\"link.url\"\n [linkType]=\"link.linkType\"\n [attr.aria-label]=\"link.label\"\n >{{ link.label }}</a\n >\n </li>\n }\n }\n </ul>\n }\n </div>\n </div>\n</section>\n" }]
8803
8869
  }], propDecorators: { title: [{
8804
8870
  type: Input
8805
8871
  }], links: [{