ctt-babylon 0.8.14 → 0.8.16

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.
Files changed (51) hide show
  1. package/esm2022/lib/components/core/babylon-advantages-v2/babylon-advantages-v2.component.mjs +16 -0
  2. package/esm2022/lib/components/core/babylon-advantages-v2/index.mjs +2 -0
  3. package/esm2022/lib/components/core/babylon-faq/babylon-faq.component.mjs +1 -1
  4. package/esm2022/lib/components/core/babylon-faq/babylon-faq.interface.mjs +1 -1
  5. package/esm2022/lib/components/core/babylon-faq-v2/babylon-faq-v2.component.mjs +30 -0
  6. package/esm2022/lib/components/core/babylon-faq-v2/index.mjs +2 -0
  7. package/esm2022/lib/components/core/babylon-footer-contact/babylon-footer-contact.component.mjs +3 -3
  8. package/esm2022/lib/components/core/babylon-modal-multiple-motors/babylon-modal-multiple-motors.component.mjs +3 -3
  9. package/esm2022/lib/components/core/babylon-slider-img-static-v2/babylon-slider-img-static-v2.component.mjs +19 -0
  10. package/esm2022/lib/components/core/babylon-slider-img-static-v2/index.mjs +2 -0
  11. package/esm2022/lib/components/core/babylon-social-bar/babylon-social-bar.component.mjs +20 -0
  12. package/esm2022/lib/components/core/babylon-social-bar/index.mjs +2 -0
  13. package/esm2022/lib/components/core/babylon-top-slider-video-v2/babylon-top-slider-video-v2.component.mjs +14 -0
  14. package/esm2022/lib/components/core/babylon-top-slider-video-v2/index.mjs +2 -0
  15. package/esm2022/lib/components/core/index.mjs +7 -1
  16. package/esm2022/lib/directives/sliders/slick-init.directive.mjs +211 -0
  17. package/esm2022/lib/directives/sliders/slider-fix-arrows.directive.mjs +105 -0
  18. package/esm2022/lib/directives/utils/sticky-avoid-footer.directive.mjs +91 -0
  19. package/esm2022/lib/interfaces/babylon-advantages-item.interface.mjs +2 -0
  20. package/esm2022/lib/interfaces/babylon-advantages.interface.mjs +2 -0
  21. package/esm2022/lib/interfaces/babylon-global.interface.mjs +2 -0
  22. package/esm2022/lib/interfaces/babylon-image.interface.mjs +1 -1
  23. package/esm2022/lib/interfaces/babylon-item.interface.mjs +2 -0
  24. package/esm2022/lib/interfaces/babylon-multimedia.interface.mjs +2 -0
  25. package/esm2022/lib/services/mapper/mapper.service.mjs +55 -5
  26. package/fesm2022/ctt-babylon.mjs +544 -9
  27. package/fesm2022/ctt-babylon.mjs.map +1 -1
  28. package/lib/components/core/babylon-advantages-v2/babylon-advantages-v2.component.d.ts +9 -0
  29. package/lib/components/core/babylon-advantages-v2/index.d.ts +1 -0
  30. package/lib/components/core/babylon-faq/babylon-faq.component.d.ts +2 -5
  31. package/lib/components/core/babylon-faq/babylon-faq.interface.d.ts +2 -2
  32. package/lib/components/core/babylon-faq-v2/babylon-faq-v2.component.d.ts +16 -0
  33. package/lib/components/core/babylon-faq-v2/index.d.ts +1 -0
  34. package/lib/components/core/babylon-slider-img-static-v2/babylon-slider-img-static-v2.component.d.ts +10 -0
  35. package/lib/components/core/babylon-slider-img-static-v2/index.d.ts +1 -0
  36. package/lib/components/core/babylon-social-bar/babylon-social-bar.component.d.ts +9 -0
  37. package/lib/components/core/babylon-social-bar/index.d.ts +1 -0
  38. package/lib/components/core/babylon-top-slider-video-v2/babylon-top-slider-video-v2.component.d.ts +7 -0
  39. package/lib/components/core/babylon-top-slider-video-v2/index.d.ts +1 -0
  40. package/lib/components/core/index.d.ts +6 -0
  41. package/lib/directives/sliders/slick-init.directive.d.ts +14 -0
  42. package/lib/directives/sliders/slider-fix-arrows.directive.d.ts +21 -0
  43. package/lib/directives/utils/sticky-avoid-footer.directive.d.ts +24 -0
  44. package/lib/interfaces/babylon-advantages-item.interface.d.ts +5 -0
  45. package/lib/interfaces/babylon-advantages.interface.d.ts +6 -0
  46. package/lib/interfaces/babylon-global.interface.d.ts +22 -0
  47. package/lib/interfaces/babylon-image.interface.d.ts +4 -0
  48. package/lib/interfaces/babylon-item.interface.d.ts +4 -0
  49. package/lib/interfaces/babylon-multimedia.interface.d.ts +5 -0
  50. package/lib/services/mapper/mapper.service.d.ts +3 -1
  51. package/package.json +1 -1
@@ -0,0 +1,211 @@
1
+ import { isPlatformBrowser } from '@angular/common';
2
+ import { Directive, Inject, PLATFORM_ID, } from '@angular/core';
3
+ import * as i0 from "@angular/core";
4
+ export class SlickInitDirective {
5
+ constructor(host, platformId) {
6
+ this.host = host;
7
+ this.platformId = platformId;
8
+ }
9
+ async ngAfterViewInit() {
10
+ if (!isPlatformBrowser(this.platformId))
11
+ return;
12
+ await this.waitForSlick(); // espera a $ y $.fn.slick
13
+ const parent = this.host.nativeElement;
14
+ const get = (name) => parent.getAttribute(name);
15
+ const getBool = (name) => {
16
+ const v = get(name);
17
+ return v === 'true' || v === '1' || v === '' || v === true;
18
+ };
19
+ const getNum = (name, def = 0) => {
20
+ const v = Number(get(name));
21
+ return Number.isFinite(v) ? v : def;
22
+ };
23
+ const sliderName = get('data-slider_name') || '';
24
+ const sliderSpeed = getNum('data-slider_speed', 750);
25
+ const showBtns = getBool('data-slider_showbtns');
26
+ const showDots = getBool('data-slider_showdots');
27
+ const fade = getBool('data-slider_fade');
28
+ const centerMode = getBool('data-slider_centermode');
29
+ const autoplay = getBool('data-slider_autoplay');
30
+ const slidesPc = getNum('data-slides_pc', 1);
31
+ const slidesLaptop = getNum('data-slides_laptop') || slidesPc;
32
+ const slidesTablet = getNum('data-slides_tablet') || slidesLaptop;
33
+ const slidesMobile = getNum('data-slides_mobile') || slidesTablet;
34
+ const slidesMobileSmall = getNum('data-slides_mobile_small') || slidesMobile;
35
+ const slidesMobileXSmall = getNum('data-slides_mobile_xsmall') || slidesMobileSmall;
36
+ const infinite = getBool('data-slides_infinite');
37
+ let rowsPc = getNum('data-slidesrows_pc', 1);
38
+ let rowsLaptop = getNum('data-slidesrows_laptop', 1);
39
+ let rowsTablet = getNum('data-slidesrows_tablet', 1);
40
+ let rowsMobile = getNum('data-slidesrows_mobile', 1);
41
+ let rowsMobileSmall = getNum('data-slidesrows_mobile_small', 1);
42
+ let rowsMobileXSmall = getNum('data-slidesrows_mobile_xsmall', 1);
43
+ const asNavFor = get('data-slider_asNavFor') || undefined;
44
+ const vertical = getBool('data-slider_vertical');
45
+ const adaptiveHeight = getBool('data-slider_adaptive_height');
46
+ const pause = getBool('data-slider_pause');
47
+ const draggable = getBool('data-slider_draggable');
48
+ const rtl = getBool('data-slider_rtl');
49
+ const variableWidth = getBool('data-slider_variable_width');
50
+ const btnsMode = get('data-slider_btns') || '';
51
+ if (window.innerWidth < 540 && parent.classList.contains('rows-2')) {
52
+ rowsPc = 1;
53
+ }
54
+ const sliderArrows = parent.querySelector('.js-slider-arrows');
55
+ const sliderDots = parent.querySelector('.js-slider-dots');
56
+ const sliderSelector = parent.querySelector('.' + sliderName);
57
+ if (!sliderSelector)
58
+ return;
59
+ this.sliderEl = sliderSelector;
60
+ if ($(sliderSelector).hasClass('slick-initialized'))
61
+ return;
62
+ let prevArrow = '';
63
+ let nextArrow = '';
64
+ if (btnsMode.includes('icon-small')) {
65
+ prevArrow +=
66
+ "<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>";
67
+ nextArrow +=
68
+ "<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>";
69
+ }
70
+ if (btnsMode.includes('icon-large')) {
71
+ prevArrow +=
72
+ "<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>";
73
+ nextArrow +=
74
+ "<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>";
75
+ }
76
+ // --- normalizar altura en vertical (sin 'this' implícito) ---
77
+ const updateVerticalHeight = () => {
78
+ const $el = $(sliderSelector);
79
+ if (window.innerWidth >= 541) {
80
+ let maxH = 0;
81
+ $el.find('.slick-slide:not(.slick-cloned)').each((_, el) => {
82
+ const h = $(el).outerHeight();
83
+ if (h > maxH)
84
+ maxH = h;
85
+ });
86
+ $el.find('.slick-slide').each((_, el) => {
87
+ $(el).css('height', `${maxH}px`);
88
+ });
89
+ }
90
+ else {
91
+ $(sliderSelector).find('.slick-slide').css('height', '');
92
+ }
93
+ };
94
+ if (vertical) {
95
+ $(sliderSelector).on('setPosition', updateVerticalHeight);
96
+ $(sliderSelector).on('init', () => setTimeout(updateVerticalHeight, 0));
97
+ this.resizeHandler = () => updateVerticalHeight();
98
+ window.addEventListener('resize', this.resizeHandler, {
99
+ passive: true,
100
+ });
101
+ }
102
+ // --- INIT SLICK ---
103
+ $(sliderSelector).slick({
104
+ dots: showDots,
105
+ arrows: showBtns,
106
+ appendArrows: sliderArrows || parent,
107
+ prevArrow,
108
+ nextArrow,
109
+ appendDots: sliderDots || parent,
110
+ infinite,
111
+ useTransform: true,
112
+ fade,
113
+ centerMode,
114
+ centerPadding: '0',
115
+ cssEase: 'cubic-bezier(0.785, 0.135, 0.15, 0.86)',
116
+ speed: sliderSpeed,
117
+ slidesToShow: slidesPc,
118
+ slidesToScroll: 1,
119
+ rows: rowsPc,
120
+ autoplay,
121
+ autoplaySpeed: 5000,
122
+ swipeToSlide: true,
123
+ vertical,
124
+ verticalSwiping: vertical,
125
+ adaptiveHeight,
126
+ asNavFor,
127
+ pauseOnFocus: pause,
128
+ pauseOnHover: pause,
129
+ draggable,
130
+ swipe: draggable,
131
+ rtl,
132
+ variableWidth,
133
+ responsive: [
134
+ {
135
+ breakpoint: 1680,
136
+ settings: { slidesToShow: slidesLaptop, rows: rowsLaptop },
137
+ },
138
+ {
139
+ breakpoint: 1366,
140
+ settings: { slidesToShow: slidesTablet, rows: rowsTablet },
141
+ },
142
+ {
143
+ breakpoint: 1280,
144
+ settings: { slidesToShow: slidesMobile, rows: rowsMobile },
145
+ },
146
+ {
147
+ breakpoint: 1023,
148
+ settings: {
149
+ slidesToShow: slidesMobileSmall,
150
+ rows: rowsMobileSmall,
151
+ },
152
+ },
153
+ {
154
+ breakpoint: 767,
155
+ settings: {
156
+ slidesToShow: slidesMobileXSmall,
157
+ rows: rowsMobileXSmall,
158
+ vertical: false,
159
+ verticalSwiping: false,
160
+ },
161
+ },
162
+ ],
163
+ });
164
+ }
165
+ ngOnDestroy() {
166
+ if (!isPlatformBrowser(this.platformId))
167
+ return;
168
+ if (this.sliderEl && $(this.sliderEl).hasClass('slick-initialized')) {
169
+ try {
170
+ $(this.sliderEl).slick('unslick');
171
+ }
172
+ catch {
173
+ /* nada */
174
+ }
175
+ }
176
+ if (this.resizeHandler) {
177
+ window.removeEventListener('resize', this.resizeHandler);
178
+ }
179
+ }
180
+ // Espera a $ y slick: resuelve (no rechaza) y loguea si no llegan
181
+ waitForSlick(timeoutMs = 4000, stepMs = 100) {
182
+ if (!isPlatformBrowser(this.platformId))
183
+ return Promise.resolve();
184
+ const start = performance.now();
185
+ return new Promise((resolve) => {
186
+ const check = () => {
187
+ if (typeof $ !== 'undefined' && $.fn && $.fn.slick)
188
+ return resolve();
189
+ if (performance.now() - start > timeoutMs) {
190
+ console.warn('[SlickInitDirective] Slick no disponible. ¿Cargaste jQuery y slick?');
191
+ return resolve(); // evita error si no llega
192
+ }
193
+ setTimeout(check, stepMs);
194
+ };
195
+ check();
196
+ });
197
+ }
198
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SlickInitDirective, deps: [{ token: i0.ElementRef }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Directive }); }
199
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: SlickInitDirective, isStandalone: true, selector: ".js-active-slider,[appSlickInit]", ngImport: i0 }); }
200
+ }
201
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SlickInitDirective, decorators: [{
202
+ type: Directive,
203
+ args: [{
204
+ selector: '.js-active-slider,[appSlickInit]',
205
+ standalone: true,
206
+ }]
207
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: undefined, decorators: [{
208
+ type: Inject,
209
+ args: [PLATFORM_ID]
210
+ }] }] });
211
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpY2staW5pdC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYWJ5bG9uL3NyYy9saWIvZGlyZWN0aXZlcy9zbGlkZXJzL3NsaWNrLWluaXQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFFSCxTQUFTLEVBRVQsTUFBTSxFQUVOLFdBQVcsR0FDZCxNQUFNLGVBQWUsQ0FBQzs7QUFTdkIsTUFBTSxPQUFPLGtCQUFrQjtJQUkzQixZQUNZLElBQTZCLEVBQ1IsVUFBa0I7UUFEdkMsU0FBSSxHQUFKLElBQUksQ0FBeUI7UUFDUixlQUFVLEdBQVYsVUFBVSxDQUFRO0lBQ2hELENBQUM7SUFFSixLQUFLLENBQUMsZUFBZTtRQUNqQixJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztZQUFFLE9BQU87UUFDaEQsTUFBTSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQywwQkFBMEI7UUFFckQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDdkMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxJQUFZLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEQsTUFBTSxPQUFPLEdBQUcsQ0FBQyxJQUFZLEVBQUUsRUFBRTtZQUM3QixNQUFNLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDcEIsT0FBTyxDQUFDLEtBQUssTUFBTSxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSyxDQUFTLEtBQUssSUFBSSxDQUFDO1FBQ3hFLENBQUMsQ0FBQztRQUNGLE1BQU0sTUFBTSxHQUFHLENBQUMsSUFBWSxFQUFFLEdBQUcsR0FB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RTtvQkFDdkMsT0FBTyxDQUFDLElBQUksQ0FDUixxRUFBcUUsQ0FDeEUsQ0FBQztvQkFDRixPQUFPLE9BQU8sRUFBRSxDQUFDLENBQUMsMEJBQTBCO2lCQUMvQztnQkFDRCxVQUFVLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBQzlCLENBQUMsQ0FBQztZQUNGLEtBQUssRUFBRSxDQUFDO1FBQ1osQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOytHQXhOUSxrQkFBa0IsNENBTWYsV0FBVzttR0FOZCxrQkFBa0I7OzRGQUFsQixrQkFBa0I7a0JBSjlCLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGtDQUFrQztvQkFDNUMsVUFBVSxFQUFFLElBQUk7aUJBQ25COzswQkFPUSxNQUFNOzJCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSW5qZWN0LFxuICAgIE9uRGVzdHJveSxcbiAgICBQTEFURk9STV9JRCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8vIFNpIG5vIHRpZW5lcyBAdHlwZXMvanF1ZXJ5LCBkw6lqYWxvIGNvbW8gYW55XG5kZWNsYXJlIGNvbnN0ICQ6IGFueTtcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICcuanMtYWN0aXZlLXNsaWRlcixbYXBwU2xpY2tJbml0XScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgU2xpY2tJbml0RGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgICBwcml2YXRlIHJlc2l6ZUhhbmRsZXI/OiAoKSA9PiB2b2lkO1xuICAgIHByaXZhdGUgc2xpZGVyRWw/OiBIVE1MRWxlbWVudDtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGhvc3Q6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgICAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IG9iamVjdFxuICAgICkge31cblxuICAgIGFzeW5jIG5nQWZ0ZXJWaWV3SW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSByZXR1cm47XG4gICAgICAgIGF3YWl0IHRoaXMud2FpdEZvclNsaWNrKCk7IC8vIGVzcGVyYSBhICQgeSAkLmZuLnNsaWNrXG5cbiAgICAgICAgY29uc3QgcGFyZW50ID0gdGhpcy5ob3N0Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGdldCA9IChuYW1lOiBzdHJpbmcpID0+IHBhcmVudC5nZXRBdHRyaWJ1dGUobmFtZSk7XG4gICAgICAgIGNvbnN0IGdldEJvb2wgPSAobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB2ID0gZ2V0KG5hbWUpO1xuICAgICAgICAgICAgcmV0dXJuIHYgPT09ICd0cnVlJyB8fCB2ID09PSAnMScgfHwgdiA9PT0gJycgfHwgKHYgYXMgYW55KSA9PT0gdHJ1ZTtcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgZ2V0TnVtID0gKG5hbWU6IHN0cmluZywgZGVmID0gMCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdiA9IE51bWJlcihnZXQobmFtZSkpO1xuICAgICAgICAgICAgcmV0dXJuIE51bWJlci5pc0Zpbml0ZSh2KSA/IHYgOiBkZWY7XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3Qgc2xpZGVyTmFtZSA9IGdldCgnZGF0YS1zbGlkZXJfbmFtZScpIHx8ICcnO1xuICAgICAgICBjb25zdCBzbGlkZXJTcGVlZCA9IGdldE51bSgnZGF0YS1zbGlkZXJfc3BlZWQnLCA3NTApO1xuICAgICAgICBjb25zdCBzaG93QnRucyA9IGdldEJvb2woJ2RhdGEtc2xpZGVyX3Nob3didG5zJyk7XG4gICAgICAgIGNvbnN0IHNob3dEb3RzID0gZ2V0Qm9vbCgnZGF0YS1zbGlkZXJfc2hvd2RvdHMnKTtcbiAgICAgICAgY29uc3QgZmFkZSA9IGdldEJvb2woJ2RhdGEtc2xpZGVyX2ZhZGUnKTtcbiAgICAgICAgY29uc3QgY2VudGVyTW9kZSA9IGdldEJvb2woJ2RhdGEtc2xpZGVyX2NlbnRlcm1vZGUnKTtcbiAgICAgICAgY29uc3QgYXV0b3BsYXkgPSBnZXRCb29sKCdkYXRhLXNsaWRlcl9hdXRvcGxheScpO1xuICAgICAgICBjb25zdCBzbGlkZXNQYyA9IGdldE51bSgnZGF0YS1zbGlkZXNfcGMnLCAxKTtcbiAgICAgICAgY29uc3Qgc2xpZGVzTGFwdG9wID0gZ2V0TnVtKCdkYXRhLXNsaWRlc19sYXB0b3AnKSB8fCBzbGlkZXNQYztcbiAgICAgICAgY29uc3Qgc2xpZGVzVGFibGV0ID0gZ2V0TnVtKCdkYXRhLXNsaWRlc190YWJsZXQnKSB8fCBzbGlkZXNMYXB0b3A7XG4gICAgICAgIGNvbnN0IHNsaWRlc01vYmlsZSA9IGdldE51bSgnZGF0YS1zbGlkZXNfbW9iaWxlJykgfHwgc2xpZGVzVGFibGV0O1xuICAgICAgICBjb25zdCBzbGlkZXNNb2JpbGVTbWFsbCA9XG4gICAgICAgICAgICBnZXROdW0oJ2RhdGEtc2xpZGVzX21vYmlsZV9zbWFsbCcpIHx8IHNsaWRlc01vYmlsZTtcbiAgICAgICAgY29uc3Qgc2xpZGVzTW9iaWxlWFNtYWxsID1cbiAgICAgICAgICAgIGdldE51bSgnZGF0YS1zbGlkZXNfbW9iaWxlX3hzbWFsbCcpIHx8IHNsaWRlc01vYmlsZVNtYWxsO1xuICAgICAgICBjb25zdCBpbmZpbml0ZSA9IGdldEJvb2woJ2RhdGEtc2xpZGVzX2luZmluaXRlJyk7XG5cbiAgICAgICAgbGV0IHJvd3NQYyA9IGdldE51bSgnZGF0YS1zbGlkZXNyb3dzX3BjJywgMSk7XG4gICAgICAgIGxldCByb3dzTGFwdG9wID0gZ2V0TnVtKCdkYXRhLXNsaWRlc3Jvd3NfbGFwdG9wJywgMSk7XG4gICAgICAgIGxldCByb3dzVGFibGV0ID0gZ2V0TnVtKCdkYXRhLXNsaWRlc3Jvd3NfdGFibGV0JywgMSk7XG4gICAgICAgIGxldCByb3dzTW9iaWxlID0gZ2V0TnVtKCdkYXRhLXNsaWRlc3Jvd3NfbW9iaWxlJywgMSk7XG4gICAgICAgIGxldCByb3dzTW9iaWxlU21hbGwgPSBnZXROdW0oJ2RhdGEtc2xpZGVzcm93c19tb2JpbGVfc21hbGwnLCAxKTtcbiAgICAgICAgbGV0IHJvd3NNb2JpbGVYU21hbGwgPSBnZXROdW0oJ2RhdGEtc2xpZGVzcm93c19tb2JpbGVfeHNtYWxsJywgMSk7XG5cbiAgICAgICAgY29uc3QgYXNOYXZGb3IgPSBnZXQoJ2RhdGEtc2xpZGVyX2FzTmF2Rm9yJykgfHwgdW5kZWZpbmVkO1xuICAgICAgICBjb25zdCB2ZXJ0aWNhbCA9IGdldEJvb2woJ2RhdGEtc2xpZGVyX3ZlcnRpY2FsJyk7XG4gICAgICAgIGNvbnN0IGFkYXB0aXZlSGVpZ2h0ID0gZ2V0Qm9vbCgnZGF0YS1zbGlkZXJfYWRhcHRpdmVfaGVpZ2h0Jyk7XG4gICAgICAgIGNvbnN0IHBhdXNlID0gZ2V0Qm9vbCgnZGF0YS1zbGlkZXJfcGF1c2UnKTtcbiAgICAgICAgY29uc3QgZHJhZ2dhYmxlID0gZ2V0Qm9vbCgnZGF0YS1zbGlkZXJfZHJhZ2dhYmxlJyk7XG4gICAgICAgIGNvbnN0IHJ0bCA9IGdldEJvb2woJ2RhdGEtc2xpZGVyX3J0bCcpO1xuICAgICAgICBjb25zdCB2YXJpYWJsZVdpZHRoID0gZ2V0Qm9vbCgnZGF0YS1zbGlkZXJfdmFyaWFibGVfd2lkdGgnKTtcbiAgICAgICAgY29uc3QgYnRuc01vZGUgPSBnZXQoJ2RhdGEtc2xpZGVyX2J0bnMnKSB8fCAnJztcblxuICAgICAgICBpZiAod2luZG93LmlubmVyV2lkdGggPCA1NDAgJiYgcGFyZW50LmNsYXNzTGlzdC5jb250YWlucygncm93cy0yJykpIHtcbiAgICAgICAgICAgIHJvd3NQYyA9IDE7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzbGlkZXJBcnJvd3MgPSBwYXJlbnQucXVlcnlTZWxlY3RvcihcbiAgICAgICAgICAgICcuanMtc2xpZGVyLWFycm93cydcbiAgICAgICAgKSBhcyBIVE1MRWxlbWVudCB8IG51bGw7XG4gICAgICAgIGNvbnN0IHNsaWRlckRvdHMgPSBwYXJlbnQucXVlcnlTZWxlY3RvcihcbiAgICAgICAgICAgICcuanMtc2xpZGVyLWRvdHMnXG4gICAgICAgICkgYXMgSFRNTEVsZW1lbnQgfCBudWxsO1xuICAgICAgICBjb25zdCBzbGlkZXJTZWxlY3RvciA9IHBhcmVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgICAgICAgJy4nICsgc2xpZGVyTmFtZVxuICAgICAgICApIGFzIEhUTUxFbGVtZW50IHwgbnVsbDtcbiAgICAgICAgaWYgKCFzbGlkZXJTZWxlY3RvcikgcmV0dXJuO1xuICAgICAgICB0aGlzLnNsaWRlckVsID0gc2xpZGVyU2VsZWN0b3I7XG5cbiAgICAgICAgaWYgKCQoc2xpZGVyU2VsZWN0b3IpLmhhc0NsYXNzKCdzbGljay1pbml0aWFsaXplZCcpKSByZXR1cm47XG5cbiAgICAgICAgbGV0IHByZXZBcnJvdyA9ICcnO1xuICAgICAgICBsZXQgbmV4dEFycm93ID0gJyc7XG4gICAgICAgIGlmIChidG5zTW9kZS5pbmNsdWRlcygnaWNvbi1zbWFsbCcpKSB7XG4gICAgICAgICAgICBwcmV2QXJyb3cgKz1cbiAgICAgICAgICAgICAgICBcIjxidXR0b24gdHlwZT0nYnV0dG9uJyBjbGFzcz0nc2xpY2stcHJldiBpY29uLXNtYWxsJz48c3ZnIGFyaWEtaGlkZGVuPSd0cnVlJyBmb2N1c2FibGU9J2ZhbHNlJyBjbGFzcz0nbGluZSc+PHVzZSBocmVmPScvYXNzZXRzL2JhYnlsb24vc3ZnL2Fycm93LWxpbmUuc3ZnI2Fycm93LWxpbmUnPjwvdXNlPjwvc3ZnPjxzdmcgYXJpYS1oaWRkZW49J3RydWUnIGZvY3VzYWJsZT0nZmFsc2UnPjx1c2UgaHJlZj0nL2Fzc2V0cy9iYWJ5bG9uL3N2Zy9pY29uLWFycm93LnN2ZyNpY29uLWFycm93Jz48L3VzZT48L3N2Zz48L2J1dHRvbj5cIjtcbiAgICAgICAgICAgIG5leHRBcnJvdyArPVxuICAgICAgICAgICAgICAgIFwiPGJ1dHRvbiB0eXBlPSdidXR0b24nIGNsYXNzPSdzbGljay1uZXh0IGljb24tc21hbGwnPjxzdmcgYXJpYS1oaWRkZW49J3RydWUnIGZvY3VzYWJsZT0nZmFsc2UnIGNsYXNzPSdsaW5lJz48dXNlIGhyZWY9Jy9hc3NldHMvYmFieWxvbi9zdmcvYXJyb3ctbGluZS5zdmcjYXJyb3ctbGluZSc+PC91c2U+PC9zdmc+PHN2ZyBhcmlhLWhpZGRlbj0ndHJ1ZScgZm9jdXNhYmxlPSdmYWxzZSc+PHVzZSBocmVmPScvYXNzZXRzL2JhYnlsb24vc3ZnL2ljb24tYXJyb3cuc3ZnI2ljb24tYXJyb3cnPjwvdXNlPjwvc3ZnPjwvYnV0dG9uPlwiO1xuICAgICAgICB9XG4gICAgICAgIGlmIChidG5zTW9kZS5pbmNsdWRlcygnaWNvbi1sYXJnZScpKSB7XG4gICAgICAgICAgICBwcmV2QXJyb3cgKz1cbiAgICAgICAgICAgICAgICBcIjxidXR0b24gdHlwZT0nYnV0dG9uJyBjbGFzcz0nc2xpY2stcHJldiBpY29uLWxhcmdlJz48c3ZnIGFyaWEtaGlkZGVuPSd0cnVlJyBmb2N1c2FibGU9J2ZhbHNlJz48dXNlIGhyZWY9Jy9hc3NldHMvYmFieWxvbi9zdmcvaWNvbi1hcnJvdy1sYXJnZS5zdmcjaWNvbi1hcnJvdy1sYXJnZSc+PC91c2U+PC9zdmc+PC9idXR0b24+XCI7XG4gICAgICAgICAgICBuZXh0QXJyb3cgKz1cbiAgICAgICAgICAgICAgICBcIjxidXR0b24gdHlwZT0nYnV0dG9uJyBjbGFzcz0nc2xpY2stbmV4dCBpY29uLWxhcmdlJz48c3ZnIGFyaWEtaGlkZGVuPSd0cnVlJyBmb2N1c2FibGU9J2ZhbHNlJz48dXNlIGhyZWY9Jy9hc3NldHMvYmFieWxvbi9zdmcvaWNvbi1hcnJvdy1sYXJnZS5zdmcjaWNvbi1hcnJvdy1sYXJnZSc+PC91c2U+PC9zdmc+PC9idXR0b24+XCI7XG4gICAgICAgIH1cblxuICAgICAgICAvLyAtLS0gbm9ybWFsaXphciBhbHR1cmEgZW4gdmVydGljYWwgKHNpbiAndGhpcycgaW1wbMOtY2l0bykgLS0tXG4gICAgICAgIGNvbnN0IHVwZGF0ZVZlcnRpY2FsSGVpZ2h0ID0gKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgJGVsID0gJChzbGlkZXJTZWxlY3Rvcik7XG4gICAgICAgICAgICBpZiAod2luZG93LmlubmVyV2lkdGggPj0gNTQxKSB7XG4gICAgICAgICAgICAgICAgbGV0IG1heEggPSAwO1xuICAgICAgICAgICAgICAgICRlbC5maW5kKCcuc2xpY2stc2xpZGU6bm90KC5zbGljay1jbG9uZWQpJykuZWFjaChcbiAgICAgICAgICAgICAgICAgICAgKF86IG51bWJlciwgZWw6IEhUTUxFbGVtZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBoID0gKCQoZWwpIGFzIGFueSkub3V0ZXJIZWlnaHQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoID4gbWF4SCkgbWF4SCA9IGg7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICRlbC5maW5kKCcuc2xpY2stc2xpZGUnKS5lYWNoKChfOiBudW1iZXIsIGVsOiBIVE1MRWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAoJChlbCkgYXMgYW55KS5jc3MoJ2hlaWdodCcsIGAke21heEh9cHhgKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgJChzbGlkZXJTZWxlY3RvcikuZmluZCgnLnNsaWNrLXNsaWRlJykuY3NzKCdoZWlnaHQnLCAnJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKHZlcnRpY2FsKSB7XG4gICAgICAgICAgICAkKHNsaWRlclNlbGVjdG9yKS5vbignc2V0UG9zaXRpb24nLCB1cGRhdGVWZXJ0aWNhbEhlaWdodCk7XG4gICAgICAgICAgICAkKHNsaWRlclNlbGVjdG9yKS5vbignaW5pdCcsICgpID0+XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCh1cGRhdGVWZXJ0aWNhbEhlaWdodCwgMClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLnJlc2l6ZUhhbmRsZXIgPSAoKSA9PiB1cGRhdGVWZXJ0aWNhbEhlaWdodCgpO1xuICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHRoaXMucmVzaXplSGFuZGxlciwge1xuICAgICAgICAgICAgICAgIHBhc3NpdmU6IHRydWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIC0tLSBJTklUIFNMSUNLIC0tLVxuICAgICAgICAkKHNsaWRlclNlbGVjdG9yKS5zbGljayh7XG4gICAgICAgICAgICBkb3RzOiBzaG93RG90cyxcbiAgICAgICAgICAgIGFycm93czogc2hvd0J0bnMsXG4gICAgICAgICAgICBhcHBlbmRBcnJvd3M6IHNsaWRlckFycm93cyB8fCBwYXJlbnQsXG4gICAgICAgICAgICBwcmV2QXJyb3csXG4gICAgICAgICAgICBuZXh0QXJyb3csXG4gICAgICAgICAgICBhcHBlbmREb3RzOiBzbGlkZXJEb3RzIHx8IHBhcmVudCxcbiAgICAgICAgICAgIGluZmluaXRlLFxuICAgICAgICAgICAgdXNlVHJhbnNmb3JtOiB0cnVlLFxuICAgICAgICAgICAgZmFkZSxcbiAgICAgICAgICAgIGNlbnRlck1vZGUsXG4gICAgICAgICAgICBjZW50ZXJQYWRkaW5nOiAnMCcsXG4gICAgICAgICAgICBjc3NFYXNlOiAnY3ViaWMtYmV6aWVyKDAuNzg1LCAwLjEzNSwgMC4xNSwgMC44NiknLFxuICAgICAgICAgICAgc3BlZWQ6IHNsaWRlclNwZWVkLFxuICAgICAgICAgICAgc2xpZGVzVG9TaG93OiBzbGlkZXNQYyxcbiAgICAgICAgICAgIHNsaWRlc1RvU2Nyb2xsOiAxLFxuICAgICAgICAgICAgcm93czogcm93c1BjLFxuICAgICAgICAgICAgYXV0b3BsYXksXG4gICAgICAgICAgICBhdXRvcGxheVNwZWVkOiA1MDAwLFxuICAgICAgICAgICAgc3dpcGVUb1NsaWRlOiB0cnVlLFxuICAgICAgICAgICAgdmVydGljYWwsXG4gICAgICAgICAgICB2ZXJ0aWNhbFN3aXBpbmc6IHZlcnRpY2FsLFxuICAgICAgICAgICAgYWRhcHRpdmVIZWlnaHQsXG4gICAgICAgICAgICBhc05hdkZvcixcbiAgICAgICAgICAgIHBhdXNlT25Gb2N1czogcGF1c2UsXG4gICAgICAgICAgICBwYXVzZU9uSG92ZXI6IHBhdXNlLFxuICAgICAgICAgICAgZHJhZ2dhYmxlLFxuICAgICAgICAgICAgc3dpcGU6IGRyYWdnYWJsZSxcbiAgICAgICAgICAgIHJ0bCxcbiAgICAgICAgICAgIHZhcmlhYmxlV2lkdGgsXG4gICAgICAgICAgICByZXNwb25zaXZlOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBicmVha3BvaW50OiAxNjgwLFxuICAgICAgICAgICAgICAgICAgICBzZXR0aW5nczogeyBzbGlkZXNUb1Nob3c6IHNsaWRlc0xhcHRvcCwgcm93czogcm93c0xhcHRvcCB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBicmVha3BvaW50OiAxMzY2LFxuICAgICAgICAgICAgICAgICAgICBzZXR0aW5nczogeyBzbGlkZXNUb1Nob3c6IHNsaWRlc1RhYmxldCwgcm93czogcm93c1RhYmxldCB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBicmVha3BvaW50OiAxMjgwLFxuICAgICAgICAgICAgICAgICAgICBzZXR0aW5nczogeyBzbGlkZXNUb1Nob3c6IHNsaWRlc01vYmlsZSwgcm93czogcm93c01vYmlsZSB9LFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBicmVha3BvaW50OiAxMDIzLFxuICAgICAgICAgICAgICAgICAgICBzZXR0aW5nczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2xpZGVzVG9TaG93OiBzbGlkZXNNb2JpbGVTbWFsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvd3M6IHJvd3NNb2JpbGVTbWFsbCxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWtwb2ludDogNzY3LFxuICAgICAgICAgICAgICAgICAgICBzZXR0aW5nczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2xpZGVzVG9TaG93OiBzbGlkZXNNb2JpbGVYU21hbGwsXG4gICAgICAgICAgICAgICAgICAgICAgICByb3dzOiByb3dzTW9iaWxlWFNtYWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmVydGljYWw6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmVydGljYWxTd2lwaW5nOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkgcmV0dXJuO1xuICAgICAgICBpZiAodGhpcy5zbGlkZXJFbCAmJiAkKHRoaXMuc2xpZGVyRWwpLmhhc0NsYXNzKCdzbGljay1pbml0aWFsaXplZCcpKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICQodGhpcy5zbGlkZXJFbCkuc2xpY2soJ3Vuc2xpY2snKTtcbiAgICAgICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgICAgIC8qIG5hZGEgKi9cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5yZXNpemVIYW5kbGVyKSB7XG4gICAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5yZXNpemVIYW5kbGVyKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIEVzcGVyYSBhICQgeSBzbGljazogcmVzdWVsdmUgKG5vIHJlY2hhemEpIHkgbG9ndWVhIHNpIG5vIGxsZWdhblxuICAgIHByaXZhdGUgd2FpdEZvclNsaWNrKHRpbWVvdXRNcyA9IDQwMDAsIHN0ZXBNcyA9IDEwMCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSBwZXJmb3JtYW5jZS5ub3coKTtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjaGVjayA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mICQgIT09ICd1bmRlZmluZWQnICYmICQuZm4gJiYgJC5mbi5zbGljaylcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICBpZiAocGVyZm9ybWFuY2Uubm93KCkgLSBzdGFydCA+IHRpbWVvdXRNcykge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICAgICAgICAgICAgICAnW1NsaWNrSW5pdERpcmVjdGl2ZV0gU2xpY2sgbm8gZGlzcG9uaWJsZS4gwr9DYXJnYXN0ZSBqUXVlcnkgeSBzbGljaz8nXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXNvbHZlKCk7IC8vIGV2aXRhIGVycm9yIHNpIG5vIGxsZWdhXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoY2hlY2ssIHN0ZXBNcyk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgY2hlY2soKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
@@ -0,0 +1,105 @@
1
+ import { Directive, } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class SliderFixArrowsDirective {
4
+ constructor(el, r2, zone) {
5
+ this.el = el;
6
+ this.r2 = r2;
7
+ this.zone = zone;
8
+ this.rafPending = false;
9
+ this.cleanups = [];
10
+ }
11
+ ngAfterViewInit() {
12
+ // Primer cálculo
13
+ this.calcPosition();
14
+ // Recalcular a los 500ms (similar a tu setTimeout)
15
+ setTimeout(() => this.calcPosition(), 500);
16
+ // Escuchar scroll/resize sin disparar change detection a lo loco
17
+ this.zone.runOutsideAngular(() => {
18
+ const onScroll = () => this.scheduleCalc();
19
+ const onResize = () => this.scheduleCalc();
20
+ window.addEventListener('scroll', onScroll, { passive: true });
21
+ window.addEventListener('resize', onResize, { passive: true });
22
+ this.cleanups.push(() => window.removeEventListener('scroll', onScroll));
23
+ this.cleanups.push(() => window.removeEventListener('resize', onResize));
24
+ });
25
+ }
26
+ ngOnDestroy() {
27
+ this.cleanups.forEach((fn) => fn());
28
+ }
29
+ scheduleCalc() {
30
+ if (this.rafPending)
31
+ return;
32
+ this.rafPending = true;
33
+ requestAnimationFrame(() => {
34
+ this.rafPending = false;
35
+ this.calcPosition();
36
+ });
37
+ }
38
+ calcPosition() {
39
+ const slider = this.el.nativeElement; // .js-slider_fix-arrows
40
+ if (!slider)
41
+ return;
42
+ // Buscamos el contenedor donde aplicar la variable
43
+ const arrowsContainer = this.closest(slider, '.js-active-slider');
44
+ if (!arrowsContainer)
45
+ return;
46
+ // Resolver "zona" según mobile/desktop
47
+ const zone = this.pickZone(slider);
48
+ if (!zone)
49
+ return;
50
+ // Necesitamos el ancestro .relative para medir relativo a él
51
+ const relative = this.closest(zone, '.relative');
52
+ if (!relative)
53
+ return;
54
+ const zoneRect = zone.getBoundingClientRect();
55
+ const relRect = relative.getBoundingClientRect();
56
+ // Distancia relativa top + mitad de la altura de la zona
57
+ const height = zoneRect.top - relRect.top + zoneRect.height / 2;
58
+ // Seteamos la CSS var
59
+ this.r2.setStyle(arrowsContainer, '--sliderNav__position', `${height}px`);
60
+ }
61
+ /** Lógica mobile/desktop como en tu código original */
62
+ pickZone(root) {
63
+ const all = root.querySelectorAll('.js-slider_fix-arrows-zone');
64
+ if (!all.length)
65
+ return null;
66
+ const w = window.innerWidth || 0;
67
+ // ¿existe .mobile y estamos <= 1279?
68
+ const mobile = root.querySelector('.js-slider_fix-arrows-zone.mobile');
69
+ if (mobile && w <= 1279)
70
+ return mobile;
71
+ // ¿existe .desktop y estamos >= 1280?
72
+ const desktop = root.querySelector('.js-slider_fix-arrows-zone.desktop');
73
+ if (desktop && w >= 1280)
74
+ return desktop;
75
+ // fallback: el primero que exista
76
+ return all[0];
77
+ }
78
+ /** closest sin jQuery, con fallback para navegadores raros */
79
+ closest(el, selector) {
80
+ if (el.closest)
81
+ return el.closest(selector);
82
+ let current = el;
83
+ while (current) {
84
+ if (this.matches(current, selector))
85
+ return current;
86
+ current = current.parentElement;
87
+ }
88
+ return null;
89
+ }
90
+ matches(el, selector) {
91
+ const p = Element.prototype;
92
+ const f = p.matches || p.msMatchesSelector || p.webkitMatchesSelector;
93
+ return f.call(el, selector);
94
+ }
95
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SliderFixArrowsDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive }); }
96
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: SliderFixArrowsDirective, isStandalone: true, selector: "[sliderFixArrows]", ngImport: i0 }); }
97
+ }
98
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SliderFixArrowsDirective, decorators: [{
99
+ type: Directive,
100
+ args: [{
101
+ selector: '[sliderFixArrows]',
102
+ standalone: true,
103
+ }]
104
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }] });
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVyLWZpeC1hcnJvd3MuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFieWxvbi9zcmMvbGliL2RpcmVjdGl2ZXMvc2xpZGVycy9zbGlkZXItZml4LWFycm93cy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILFNBQVMsR0FLWixNQUFNLGVBQWUsQ0FBQzs7QUFNdkIsTUFBTSxPQUFPLHdCQUF3QjtJQUlqQyxZQUNZLEVBQTJCLEVBQzNCLEVBQWEsRUFDYixJQUFZO1FBRlosT0FBRSxHQUFGLEVBQUUsQ0FBeUI7UUFDM0IsT0FBRSxHQUFGLEVBQUUsQ0FBVztRQUNiLFNBQUksR0FBSixJQUFJLENBQVE7UUFOaEIsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUNuQixhQUFRLEdBQXNCLEVBQUUsQ0FBQztJQU10QyxDQUFDO0lBRUosZUFBZTtRQUNYLGlCQUFpQjtRQUNqQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFFcEIsbURBQW1EO1FBQ25ELFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFFM0MsaUVBQWlFO1FBQ2pFLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO1lBQzdCLE1BQU0sUUFBUSxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUMzQyxNQUFNLFFBQVEsR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFFM0MsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUMvRCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxFQUFFLE9B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QUFDLENBQUMsQ0FBQztJQUNsQixDQUFDO0lBRUQsOERBQThEO0lBQ3RELE9BQU8sQ0FBQyxFQUFXLEVBQUUsUUFBZ0I7UUFDekMsSUFBSSxFQUFFLENBQUMsT0FBTztZQUFFLE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM1QyxJQUFJLE9BQU8sR0FBbUIsRUFBRSxDQUFDO1FBQ2pDLE9BQU8sT0FBTyxFQUFFO1lBQ1osSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUM7Z0JBQUUsT0FBTyxPQUFPLENBQUM7WUFDcEQsT0FBTyxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUM7U0FDbkM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU8sT0FBTyxDQUFDLEVBQVcsRUFBRSxRQUFnQjtRQUN6QyxNQUFNLENBQUMsR0FBRyxPQUFPLENBQUMsU0FBZ0IsQ0FBQztRQUNuQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxpQkFBaUIsSUFBSSxDQUFDLENBQUMscUJBQXFCLENBQUM7UUFDdEUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNoQyxDQUFDOytHQXhIUSx3QkFBd0I7bUdBQXhCLHdCQUF3Qjs7NEZBQXhCLHdCQUF3QjtrQkFKcEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsbUJBQW1CO29CQUM3QixVQUFVLEVBQUUsSUFBSTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgTmdab25lLFxuICAgIE9uRGVzdHJveSxcbiAgICBSZW5kZXJlcjIsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tzbGlkZXJGaXhBcnJvd3NdJywgLy8gw7pzYWxhIGVuIGVsIG5vZG8gY29uIC5qcy1zbGlkZXJfZml4LWFycm93c1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIFNsaWRlckZpeEFycm93c0RpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gICAgcHJpdmF0ZSByYWZQZW5kaW5nID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBjbGVhbnVwczogQXJyYXk8KCkgPT4gdm9pZD4gPSBbXTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGVsOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICAgICAgcHJpdmF0ZSByMjogUmVuZGVyZXIyLFxuICAgICAgICBwcml2YXRlIHpvbmU6IE5nWm9uZVxuICAgICkge31cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgLy8gUHJpbWVyIGPDoWxjdWxvXG4gICAgICAgIHRoaXMuY2FsY1Bvc2l0aW9uKCk7XG5cbiAgICAgICAgLy8gUmVjYWxjdWxhciBhIGxvcyA1MDBtcyAoc2ltaWxhciBhIHR1IHNldFRpbWVvdXQpXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5jYWxjUG9zaXRpb24oKSwgNTAwKTtcblxuICAgICAgICAvLyBFc2N1Y2hhciBzY3JvbGwvcmVzaXplIHNpbiBkaXNwYXJhciBjaGFuZ2UgZGV0ZWN0aW9uIGEgbG8gbG9jb1xuICAgICAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgb25TY3JvbGwgPSAoKSA9PiB0aGlzLnNjaGVkdWxlQ2FsYygpO1xuICAgICAgICAgICAgY29uc3Qgb25SZXNpemUgPSAoKSA9PiB0aGlzLnNjaGVkdWxlQ2FsYygpO1xuXG4gICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgb25TY3JvbGwsIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBvblJlc2l6ZSwgeyBwYXNzaXZlOiB0cnVlIH0pO1xuXG4gICAgICAgICAgICB0aGlzLmNsZWFudXBzLnB1c2goKCkgPT5cbiAgICAgICAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgb25TY3JvbGwpXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5jbGVhbnVwcy5wdXNoKCgpID0+XG4gICAgICAgICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIG9uUmVzaXplKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2xlYW51cHMuZm9yRWFjaCgoZm4pID0+IGZuKCkpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2NoZWR1bGVDYWxjKCkge1xuICAgICAgICBpZiAodGhpcy5yYWZQZW5kaW5nKSByZXR1cm47XG4gICAgICAgIHRoaXMucmFmUGVuZGluZyA9IHRydWU7XG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJhZlBlbmRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuY2FsY1Bvc2l0aW9uKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2FsY1Bvc2l0aW9uKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBzbGlkZXIgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQ7IC8vIC5qcy1zbGlkZXJfZml4LWFycm93c1xuICAgICAgICBpZiAoIXNsaWRlcikgcmV0dXJuO1xuXG4gICAgICAgIC8vIEJ1c2NhbW9zIGVsIGNvbnRlbmVkb3IgZG9uZGUgYXBsaWNhciBsYSB2YXJpYWJsZVxuICAgICAgICBjb25zdCBhcnJvd3NDb250YWluZXIgPSB0aGlzLmNsb3Nlc3QoXG4gICAgICAgICAgICBzbGlkZXIsXG4gICAgICAgICAgICAnLmpzLWFjdGl2ZS1zbGlkZXInXG4gICAgICAgICkgYXMgSFRNTEVsZW1lbnQgfCBudWxsO1xuICAgICAgICBpZiAoIWFycm93c0NvbnRhaW5lcikgcmV0dXJuO1xuXG4gICAgICAgIC8vIFJlc29sdmVyIFwiem9uYVwiIHNlZ8O6biBtb2JpbGUvZGVza3RvcFxuICAgICAgICBjb25zdCB6b25lID0gdGhpcy5waWNrWm9uZShzbGlkZXIpO1xuICAgICAgICBpZiAoIXpvbmUpIHJldHVybjtcblxuICAgICAgICAvLyBOZWNlc2l0YW1vcyBlbCBhbmNlc3RybyAucmVsYXRpdmUgcGFyYSBtZWRpciByZWxhdGl2byBhIMOpbFxuICAgICAgICBjb25zdCByZWxhdGl2ZSA9IHRoaXMuY2xvc2VzdCh6b25lLCAnLnJlbGF0aXZlJykgYXMgSFRNTEVsZW1lbnQgfCBudWxsO1xuICAgICAgICBpZiAoIXJlbGF0aXZlKSByZXR1cm47XG5cbiAgICAgICAgY29uc3Qgem9uZVJlY3QgPSB6b25lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBjb25zdCByZWxSZWN0ID0gcmVsYXRpdmUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgICAgLy8gRGlzdGFuY2lhIHJlbGF0aXZhIHRvcCArIG1pdGFkIGRlIGxhIGFsdHVyYSBkZSBsYSB6b25hXG4gICAgICAgIGNvbnN0IGhlaWdodCA9IHpvbmVSZWN0LnRvcCAtIHJlbFJlY3QudG9wICsgem9uZVJlY3QuaGVpZ2h0IC8gMjtcblxuICAgICAgICAvLyBTZXRlYW1vcyBsYSBDU1MgdmFyXG4gICAgICAgIHRoaXMucjIuc2V0U3R5bGUoXG4gICAgICAgICAgICBhcnJvd3NDb250YWluZXIsXG4gICAgICAgICAgICAnLS1zbGlkZXJOYXZfX3Bvc2l0aW9uJyxcbiAgICAgICAgICAgIGAke2hlaWdodH1weGBcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKiogTMOzZ2ljYSBtb2JpbGUvZGVza3RvcCBjb21vIGVuIHR1IGPDs2RpZ28gb3JpZ2luYWwgKi9cbiAgICBwcml2YXRlIHBpY2tab25lKHJvb3Q6IEhUTUxFbGVtZW50KTogSFRNTEVsZW1lbnQgfCBudWxsIHtcbiAgICAgICAgY29uc3QgYWxsID0gcm9vdC5xdWVyeVNlbGVjdG9yQWxsPEhUTUxFbGVtZW50PihcbiAgICAgICAgICAgICcuanMtc2xpZGVyX2ZpeC1hcnJvd3Mtem9uZSdcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKCFhbGwubGVuZ3RoKSByZXR1cm4gbnVsbDtcblxuICAgICAgICBjb25zdCB3ID0gd2luZG93LmlubmVyV2lkdGggfHwgMDtcblxuICAgICAgICAvLyDCv2V4aXN0ZSAubW9iaWxlIHkgZXN0YW1vcyA8PSAxMjc5P1xuICAgICAgICBjb25zdCBtb2JpbGUgPSByb290LnF1ZXJ5U2VsZWN0b3I8SFRNTEVsZW1lbnQ+KFxuICAgICAgICAgICAgJy5qcy1zbGlkZXJfZml4LWFycm93cy16b25lLm1vYmlsZSdcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKG1vYmlsZSAmJiB3IDw9IDEyNzkpIHJldHVybiBtb2JpbGU7XG5cbiAgICAgICAgLy8gwr9leGlzdGUgLmRlc2t0b3AgeSBlc3RhbW9zID49IDEyODA/XG4gICAgICAgIGNvbnN0IGRlc2t0b3AgPSByb290LnF1ZXJ5U2VsZWN0b3I8SFRNTEVsZW1lbnQ+KFxuICAgICAgICAgICAgJy5qcy1zbGlkZXJfZml4LWFycm93cy16b25lLmRlc2t0b3AnXG4gICAgICAgICk7XG4gICAgICAgIGlmIChkZXNrdG9wICYmIHcgPj0gMTI4MCkgcmV0dXJuIGRlc2t0b3A7XG5cbiAgICAgICAgLy8gZmFsbGJhY2s6IGVsIHByaW1lcm8gcXVlIGV4aXN0YVxuICAgICAgICByZXR1cm4gYWxsWzBdO1xuICAgIH1cblxuICAgIC8qKiBjbG9zZXN0IHNpbiBqUXVlcnksIGNvbiBmYWxsYmFjayBwYXJhIG5hdmVnYWRvcmVzIHJhcm9zICovXG4gICAgcHJpdmF0ZSBjbG9zZXN0KGVsOiBFbGVtZW50LCBzZWxlY3Rvcjogc3RyaW5nKTogRWxlbWVudCB8IG51bGwge1xuICAgICAgICBpZiAoZWwuY2xvc2VzdCkgcmV0dXJuIGVsLmNsb3Nlc3Qoc2VsZWN0b3IpO1xuICAgICAgICBsZXQgY3VycmVudDogRWxlbWVudCB8IG51bGwgPSBlbDtcbiAgICAgICAgd2hpbGUgKGN1cnJlbnQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLm1hdGNoZXMoY3VycmVudCwgc2VsZWN0b3IpKSByZXR1cm4gY3VycmVudDtcbiAgICAgICAgICAgIGN1cnJlbnQgPSBjdXJyZW50LnBhcmVudEVsZW1lbnQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtYXRjaGVzKGVsOiBFbGVtZW50LCBzZWxlY3Rvcjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IHAgPSBFbGVtZW50LnByb3RvdHlwZSBhcyBhbnk7XG4gICAgICAgIGNvbnN0IGYgPSBwLm1hdGNoZXMgfHwgcC5tc01hdGNoZXNTZWxlY3RvciB8fCBwLndlYmtpdE1hdGNoZXNTZWxlY3RvcjtcbiAgICAgICAgcmV0dXJuIGYuY2FsbChlbCwgc2VsZWN0b3IpO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,91 @@
1
+ import { Directive, Input, } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class StickyAvoidFooterDirective {
4
+ constructor(el, zone, r2) {
5
+ this.el = el;
6
+ this.zone = zone;
7
+ this.r2 = r2;
8
+ /** Selector del footer (por defecto como en tu HTML) */
9
+ this.footerSelector = '.footer__links';
10
+ /** Margen de seguridad inferior del viewport al evaluar visibilidad del footer */
11
+ this.viewportPadding = 30; // px
12
+ /** Bottom cuando el footer NO es visible */
13
+ this.defaultBottom = '3rem';
14
+ /** Ajuste fino cuando el footer SÍ es visible */
15
+ this.overlapAdjustPx = 10; // px
16
+ this.cleanupFns = [];
17
+ this.rafPending = false;
18
+ }
19
+ ngAfterViewInit() {
20
+ // Cálculo inicial
21
+ this.adjust();
22
+ // Listeners performantes fuera de Angular
23
+ this.zone.runOutsideAngular(() => {
24
+ const onScroll = () => this.scheduleAdjust();
25
+ const onResize = () => this.scheduleAdjust();
26
+ window.addEventListener('scroll', onScroll, { passive: true });
27
+ window.addEventListener('resize', onResize, { passive: true });
28
+ this.cleanupFns.push(() => window.removeEventListener('scroll', onScroll));
29
+ this.cleanupFns.push(() => window.removeEventListener('resize', onResize));
30
+ });
31
+ }
32
+ ngOnDestroy() {
33
+ this.cleanupFns.forEach((fn) => fn());
34
+ }
35
+ scheduleAdjust() {
36
+ if (this.rafPending)
37
+ return;
38
+ this.rafPending = true;
39
+ requestAnimationFrame(() => {
40
+ this.rafPending = false;
41
+ this.adjust();
42
+ });
43
+ }
44
+ adjust() {
45
+ const button = this.el.nativeElement;
46
+ const footer = document.querySelector(this.footerSelector);
47
+ if (!button)
48
+ return;
49
+ // Asegura posición controlable (por si acaso)
50
+ const pos = getComputedStyle(button).position;
51
+ if (pos === 'static') {
52
+ this.r2.setStyle(button, 'position', 'fixed'); // o 'absolute' según tu layout
53
+ this.r2.setStyle(button, 'right', getComputedStyle(button).right || '1rem');
54
+ }
55
+ if (!footer) {
56
+ this.r2.setStyle(button, 'bottom', this.defaultBottom);
57
+ return;
58
+ }
59
+ const footerRect = footer.getBoundingClientRect();
60
+ const windowHeight = window.innerHeight;
61
+ const footerHeight = footer.offsetHeight;
62
+ const isFooterFullyVisible = footerRect.top >= 0 &&
63
+ footerRect.bottom <= windowHeight - this.viewportPadding;
64
+ if (isFooterFullyVisible) {
65
+ const overlap = windowHeight - footerRect.top;
66
+ const bottomPx = overlap - footerHeight + this.overlapAdjustPx;
67
+ this.r2.setStyle(button, 'bottom', `${bottomPx}px`);
68
+ }
69
+ else {
70
+ this.r2.setStyle(button, 'bottom', this.defaultBottom);
71
+ }
72
+ }
73
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: StickyAvoidFooterDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
74
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: StickyAvoidFooterDirective, isStandalone: true, selector: "[stickyAvoidFooter]", inputs: { footerSelector: "footerSelector", viewportPadding: "viewportPadding", defaultBottom: "defaultBottom", overlapAdjustPx: "overlapAdjustPx" }, ngImport: i0 }); }
75
+ }
76
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: StickyAvoidFooterDirective, decorators: [{
77
+ type: Directive,
78
+ args: [{
79
+ selector: '[stickyAvoidFooter]',
80
+ standalone: true,
81
+ }]
82
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.Renderer2 }], propDecorators: { footerSelector: [{
83
+ type: Input
84
+ }], viewportPadding: [{
85
+ type: Input
86
+ }], defaultBottom: [{
87
+ type: Input
88
+ }], overlapAdjustPx: [{
89
+ type: Input
90
+ }] } });
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RpY2t5LWF2b2lkLWZvb3Rlci5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYWJ5bG9uL3NyYy9saWIvZGlyZWN0aXZlcy91dGlscy9zdGlja3ktYXZvaWQtZm9vdGVyLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsU0FBUyxFQUVULEtBQUssR0FJUixNQUFNLGVBQWUsQ0FBQzs7QUFNdkIsTUFBTSxPQUFPLDBCQUEwQjtJQWFuQyxZQUNZLEVBQTJCLEVBQzNCLElBQVksRUFDWixFQUFhO1FBRmIsT0FBRSxHQUFGLEVBQUUsQ0FBeUI7UUFDM0IsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUNaLE9BQUUsR0FBRixFQUFFLENBQVc7UUFmekIsd0RBQXdEO1FBQy9DLG1CQUFjLEdBQUcsZ0JBQWdCLENBQUM7UUFDM0Msa0ZBQWtGO1FBQ3pFLG9CQUFlLEdBQUcsRUFBRSxDQUFDLENBQUMsS0FBSztRQUNwQyw0Q0FBNEM7UUFDbkMsa0JBQWEsR0FBRyxNQUFNLENBQUM7UUFDaEMsaURBQWlEO1FBQ3hDLG9CQUFlLEdBQUcsRUFBRSxDQUFDLENBQUMsS0FBSztRQUU1QixlQUFVLEdBQXNCLEVBQUUsQ0FBQztRQUNuQyxlQUFVLEdBQUcsS0FBSyxDQUFDO0lBTXhCLENBQUM7SUFFSixlQUFlO1FBQ1gsa0JBQWtCO1FBQ2xCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUVkLDBDQUEwQztRQUMxQyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRTtZQUM3QixNQUFNLFFBQVEsR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDN0MsTUFBTSxRQUFRLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQzdDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxR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QUM7U0FDMUQ7SUFDTCxDQUFDOytHQXhGUSwwQkFBMEI7bUdBQTFCLDBCQUEwQjs7NEZBQTFCLDBCQUEwQjtrQkFKdEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUscUJBQXFCO29CQUMvQixVQUFVLEVBQUUsSUFBSTtpQkFDbkI7NEhBR1ksY0FBYztzQkFBdEIsS0FBSztnQkFFRyxlQUFlO3NCQUF2QixLQUFLO2dCQUVHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRUcsZUFBZTtzQkFBdkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBEaXJlY3RpdmUsXG4gICAgRWxlbWVudFJlZixcbiAgICBJbnB1dCxcbiAgICBOZ1pvbmUsXG4gICAgT25EZXN0cm95LFxuICAgIFJlbmRlcmVyMixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3N0aWNreUF2b2lkRm9vdGVyXScsIC8vIMO6c2FsYSBlbiAuaGVyby1iYW5uZXJfX2FjdGlvbnNcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBTdGlja3lBdm9pZEZvb3RlckRpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gICAgLyoqIFNlbGVjdG9yIGRlbCBmb290ZXIgKHBvciBkZWZlY3RvIGNvbW8gZW4gdHUgSFRNTCkgKi9cbiAgICBASW5wdXQoKSBmb290ZXJTZWxlY3RvciA9ICcuZm9vdGVyX19saW5rcyc7XG4gICAgLyoqIE1hcmdlbiBkZSBzZWd1cmlkYWQgaW5mZXJpb3IgZGVsIHZpZXdwb3J0IGFsIGV2YWx1YXIgdmlzaWJpbGlkYWQgZGVsIGZvb3RlciAqL1xuICAgIEBJbnB1dCgpIHZpZXdwb3J0UGFkZGluZyA9IDMwOyAvLyBweFxuICAgIC8qKiBCb3R0b20gY3VhbmRvIGVsIGZvb3RlciBOTyBlcyB2aXNpYmxlICovXG4gICAgQElucHV0KCkgZGVmYXVsdEJvdHRvbSA9ICczcmVtJztcbiAgICAvKiogQWp1c3RlIGZpbm8gY3VhbmRvIGVsIGZvb3RlciBTw40gZXMgdmlzaWJsZSAqL1xuICAgIEBJbnB1dCgpIG92ZXJsYXBBZGp1c3RQeCA9IDEwOyAvLyBweFxuXG4gICAgcHJpdmF0ZSBjbGVhbnVwRm5zOiBBcnJheTwoKSA9PiB2b2lkPiA9IFtdO1xuICAgIHByaXZhdGUgcmFmUGVuZGluZyA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgZWw6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgICAgICBwcml2YXRlIHpvbmU6IE5nWm9uZSxcbiAgICAgICAgcHJpdmF0ZSByMjogUmVuZGVyZXIyXG4gICAgKSB7fVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICAvLyBDw6FsY3VsbyBpbmljaWFsXG4gICAgICAgIHRoaXMuYWRqdXN0KCk7XG5cbiAgICAgICAgLy8gTGlzdGVuZXJzIHBlcmZvcm1hbnRlcyBmdWVyYSBkZSBBbmd1bGFyXG4gICAgICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBvblNjcm9sbCA9ICgpID0+IHRoaXMuc2NoZWR1bGVBZGp1c3QoKTtcbiAgICAgICAgICAgIGNvbnN0IG9uUmVzaXplID0gKCkgPT4gdGhpcy5zY2hlZHVsZUFkanVzdCgpO1xuICAgICAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIG9uU2Nyb2xsLCB7IHBhc3NpdmU6IHRydWUgfSk7XG4gICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgb25SZXNpemUsIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgICAgICAgICAgIHRoaXMuY2xlYW51cEZucy5wdXNoKCgpID0+XG4gICAgICAgICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIG9uU2Nyb2xsKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuY2xlYW51cEZucy5wdXNoKCgpID0+XG4gICAgICAgICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIG9uUmVzaXplKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2xlYW51cEZucy5mb3JFYWNoKChmbikgPT4gZm4oKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzY2hlZHVsZUFkanVzdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucmFmUGVuZGluZykgcmV0dXJuO1xuICAgICAgICB0aGlzLnJhZlBlbmRpbmcgPSB0cnVlO1xuICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5yYWZQZW5kaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmFkanVzdCgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFkanVzdCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgYnV0dG9uID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50O1xuICAgICAgICBjb25zdCBmb290ZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yPEhUTUxFbGVtZW50Pih0aGlzLmZvb3RlclNlbGVjdG9yKTtcblxuICAgICAgICBpZiAoIWJ1dHRvbikgcmV0dXJuO1xuXG4gICAgICAgIC8vIEFzZWd1cmEgcG9zaWNpw7NuIGNvbnRyb2xhYmxlIChwb3Igc2kgYWNhc28pXG4gICAgICAgIGNvbnN0IHBvcyA9IGdldENvbXB1dGVkU3R5bGUoYnV0dG9uKS5wb3NpdGlvbjtcbiAgICAgICAgaWYgKHBvcyA9PT0gJ3N0YXRpYycpIHtcbiAgICAgICAgICAgIHRoaXMucjIuc2V0U3R5bGUoYnV0dG9uLCAncG9zaXRpb24nLCAnZml4ZWQnKTsgLy8gbyAnYWJzb2x1dGUnIHNlZ8O6biB0dSBsYXlvdXRcbiAgICAgICAgICAgIHRoaXMucjIuc2V0U3R5bGUoXG4gICAgICAgICAgICAgICAgYnV0dG9uLFxuICAgICAgICAgICAgICAgICdyaWdodCcsXG4gICAgICAgICAgICAgICAgZ2V0Q29tcHV0ZWRTdHlsZShidXR0b24pLnJpZ2h0IHx8ICcxcmVtJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghZm9vdGVyKSB7XG4gICAgICAgICAgICB0aGlzLnIyLnNldFN0eWxlKGJ1dHRvbiwgJ2JvdHRvbScsIHRoaXMuZGVmYXVsdEJvdHRvbSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmb290ZXJSZWN0ID0gZm9vdGVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBjb25zdCB3aW5kb3dIZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQ7XG4gICAgICAgIGNvbnN0IGZvb3RlckhlaWdodCA9IGZvb3Rlci5vZmZzZXRIZWlnaHQ7XG5cbiAgICAgICAgY29uc3QgaXNGb290ZXJGdWxseVZpc2libGUgPVxuICAgICAgICAgICAgZm9vdGVyUmVjdC50b3AgPj0gMCAmJlxuICAgICAgICAgICAgZm9vdGVyUmVjdC5ib3R0b20gPD0gd2luZG93SGVpZ2h0IC0gdGhpcy52aWV3cG9ydFBhZGRpbmc7XG5cbiAgICAgICAgaWYgKGlzRm9vdGVyRnVsbHlWaXNpYmxlKSB7XG4gICAgICAgICAgICBjb25zdCBvdmVybGFwID0gd2luZG93SGVpZ2h0IC0gZm9vdGVyUmVjdC50b3A7XG4gICAgICAgICAgICBjb25zdCBib3R0b21QeCA9IG92ZXJsYXAgLSBmb290ZXJIZWlnaHQgKyB0aGlzLm92ZXJsYXBBZGp1c3RQeDtcbiAgICAgICAgICAgIHRoaXMucjIuc2V0U3R5bGUoYnV0dG9uLCAnYm90dG9tJywgYCR7Ym90dG9tUHh9cHhgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucjIuc2V0U3R5bGUoYnV0dG9uLCAnYm90dG9tJywgdGhpcy5kZWZhdWx0Qm90dG9tKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFieWxvbi1hZHZhbnRhZ2VzLWl0ZW0uaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFieWxvbi9zcmMvbGliL2ludGVyZmFjZXMvYmFieWxvbi1hZHZhbnRhZ2VzLWl0ZW0uaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIEJhYnlsb25BZHZhbnRhZ2VJdGVtSSB7XG4gICAgdGl0bGU6IHN0cmluZztcbiAgICB0ZXh0OiBzdHJpbmc7XG4gICAgaWNvbjogc3RyaW5nO1xufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFieWxvbi1hZHZhbnRhZ2VzLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhYnlsb24vc3JjL2xpYi9pbnRlcmZhY2VzL2JhYnlsb24tYWR2YW50YWdlcy5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhYnlsb25BZHZhbnRhZ2VJdGVtSSB9IGZyb20gXCIuL2JhYnlsb24tYWR2YW50YWdlcy1pdGVtLmludGVyZmFjZVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJhYnlsb25BZHZhbnRhZ2VzSSB7XG4gICAgIHRpdGxlPzogc3RyaW5nO1xuICAgICBpdGVtcz86IEJhYnlsb25BZHZhbnRhZ2VJdGVtSVtdO1xuICAgICBzbGlkZXJDb250cm9sczogc3RyaW5nW107XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFieWxvbi1nbG9iYWwuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFieWxvbi9zcmMvbGliL2ludGVyZmFjZXMvYmFieWxvbi1nbG9iYWwuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYWJ5bG9uQWR2YW50YWdlc0kgfSBmcm9tICcuLi9jb21wb25lbnRzL2NvcmUnO1xuaW1wb3J0IHsgQmFieWxvbkltYWdlSSB9IGZyb20gJy4vYmFieWxvbi1pbWFnZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQmFieWxvbkl0ZW1JIH0gZnJvbSAnLi9iYWJ5bG9uLWl0ZW0uaW50ZXJmYWNlJztcbmltcG9ydCB7IEJhYnlsb25UZXh0SW5mb0kgfSBmcm9tICcuL2JhYnlsb24tdGV4dC1pbmZvLmludGVyZmFjZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmFieWxvbkdsb2JhbCB7XG4gICAgdGV4dHM/OiBCYWJ5bG9uVGV4dEluZm9JO1xuICAgIHJpZ2h0U2lkZT86IGJvb2xlYW47XG4gICAgaXRlbXM/OiBCYWJ5bG9uSXRlbUlbXTtcbiAgICBtdWx0aW1lZGlhPzoge1xuICAgICAgICBpbWFnZW5lcz86IEJhYnlsb25JbWFnZUlbXTtcbiAgICAgICAgc3RhdGljSW1hZ2VuZXM/OiBCYWJ5bG9uSW1hZ2VJW107XG4gICAgfTtcbiAgICBhZHZhbnRhZ2VzPzogQmFieWxvbkFkdmFudGFnZXNJW107XG4gICAgdGFnczoge1xuICAgICAgICB0aXRsZTogU3RyaW5nO1xuICAgIH07XG4gICAgdGV4dENvbG9yczoge1xuICAgICAgICB0aXRsZTogU3RyaW5nO1xuICAgIH07XG4gICAgc2VlTW9yZTogU3RyaW5nO1xuICAgIHNlZUxlc3M6IFN0cmluZztcbn1cbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFieWxvbi1pbWFnZS5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYWJ5bG9uL3NyYy9saWIvaW50ZXJmYWNlcy9iYWJ5bG9uLWltYWdlLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFieWxvbkJ1dHRvbkkgfSBmcm9tICcuL2JhYnlsb24tYnV0dG9uLmludGVyZmFjZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmFieWxvbkltYWdlSSB7XG4gICAgc3JjOiBzdHJpbmc7XG4gICAgYWx0Pzogc3RyaW5nO1xuICAgIHN1YnRpdGxlPzogc3RyaW5nO1xuICAgIHRpdGxlPzogc3RyaW5nO1xuICAgIHByZXRpdGxlPzogc3RyaW5nO1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIGJ1dHRvbnM/OiBCYWJ5bG9uQnV0dG9uSVtdO1xuICAgIGxpbmtzPzogQmFieWxvbkJ1dHRvbklbXTtcbiAgICB0YWc/OiBzdHJpbmc7XG59XG4iXX0=
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFieWxvbi1pbWFnZS5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYWJ5bG9uL3NyYy9saWIvaW50ZXJmYWNlcy9iYWJ5bG9uLWltYWdlLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFieWxvbkJ1dHRvbkkgfSBmcm9tICcuL2JhYnlsb24tYnV0dG9uLmludGVyZmFjZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmFieWxvbkltYWdlSSB7XG4gICAgc3JjOiBzdHJpbmc7XG4gICAgYWx0Pzogc3RyaW5nO1xuICAgIHN1YnRpdGxlPzogc3RyaW5nO1xuICAgIHRpdGxlPzogc3RyaW5nO1xuICAgIHByZXRpdGxlPzogc3RyaW5nO1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIGJ1dHRvbnM/OiBCYWJ5bG9uQnV0dG9uSVtdO1xuICAgIGxpbmtzPzogQmFieWxvbkJ1dHRvbklbXTtcbiAgICB0YWc/OiBzdHJpbmc7XG4gICAgaW1nPzoge1xuICAgICAgc3JjPzogc3RyaW5nO1xuICAgICAgYWx0Pzogc3RyaW5nO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFieWxvbi1pdGVtLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhYnlsb24vc3JjL2xpYi9pbnRlcmZhY2VzL2JhYnlsb24taXRlbS5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgQmFieWxvbkl0ZW1JIHtcbiAgICBsYWJlbD86IHN0cmluZztcbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZztcbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFieWxvbi1tdWx0aW1lZGlhLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhYnlsb24vc3JjL2xpYi9pbnRlcmZhY2VzL2JhYnlsb24tbXVsdGltZWRpYS5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhYnlsb25JbWFnZUkgfSBmcm9tIFwiLi9iYWJ5bG9uLWltYWdlLmludGVyZmFjZVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJhYnlsb25NdWx0aW1lZGlhSSB7XG4gICAgaW1hZ2VuZXM6IEJhYnlsb25JbWFnZUlbXTtcbiAgICBzdGF0aWNJbWFnZW5lczogQmFieWxvbkltYWdlSVtdO1xufVxuIl19