ctt-babylon 0.24.2 → 0.24.3

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.
@@ -1,14 +1,14 @@
1
1
  import { isPlatformBrowser } from '@angular/common';
2
2
  import { Directive, PLATFORM_ID, inject, } from '@angular/core';
3
3
  import { tap } from 'rxjs';
4
- import Swiper, { Navigation } from 'swiper';
4
+ import Swiper, { Autoplay, Navigation } from 'swiper';
5
5
  import { Utils } from '../../utils';
6
6
  import * as i0 from "@angular/core";
7
7
  export class BabylonSwiperSliderDirective {
8
8
  constructor(el) {
9
9
  this.el = el;
10
10
  this.platform = inject(PLATFORM_ID);
11
- Swiper.use([Navigation]);
11
+ Swiper.use([Navigation, Autoplay]);
12
12
  }
13
13
  ngAfterViewInit() {
14
14
  if (!isPlatformBrowser(this.platform))
@@ -22,80 +22,103 @@ export class BabylonSwiperSliderDirective {
22
22
  }
23
23
  ngOnDestroy() {
24
24
  this.observer?.disconnect();
25
+ this.destroySwiper();
25
26
  }
26
27
  initSwiperSlider() {
27
28
  const parallaxSliderSelector = '.cs_parallax_slider';
28
29
  const interleaveOffset = 0.5;
29
30
  const parallaxSliderElement = this.el.nativeElement.querySelector(parallaxSliderSelector);
30
- if (parallaxSliderElement) {
31
- const slides = parallaxSliderElement.querySelectorAll('.swiper-slide');
32
- const slideCount = slides.length;
33
- const mainSliderOptions = {
34
- loop: false,
35
- speed: 1000,
36
- autoplay: slideCount > 1 ? { delay: 3000 } : false,
37
- loopAdditionalSlides: 10,
38
- grabCursor: slideCount > 1,
39
- watchSlidesProgress: true,
40
- navigation: {
41
- nextEl: '.cs_swiper_button_next',
42
- prevEl: '.cs_swiper_button_prev',
31
+ if (!parallaxSliderElement) {
32
+ this.destroySwiper();
33
+ return;
34
+ }
35
+ const slides = parallaxSliderElement.querySelectorAll('.swiper-slide');
36
+ const slideCount = slides.length;
37
+ if (!slideCount) {
38
+ this.destroySwiper();
39
+ return;
40
+ }
41
+ const autoplayDelayAttr = parallaxSliderElement.getAttribute('data-autoplay-delay');
42
+ const parsedAutoplayDelay = Number(autoplayDelayAttr);
43
+ const autoplayDelay = Number.isFinite(parsedAutoplayDelay) && parsedAutoplayDelay > 0
44
+ ? parsedAutoplayDelay
45
+ : 3000;
46
+ this.destroySwiper();
47
+ const mainSliderOptions = {
48
+ modules: [Navigation, Autoplay],
49
+ loop: false,
50
+ speed: 1000,
51
+ autoplay: slideCount > 1
52
+ ? {
53
+ delay: autoplayDelay,
54
+ disableOnInteraction: false,
55
+ }
56
+ : false,
57
+ loopAdditionalSlides: 10,
58
+ grabCursor: slideCount > 1,
59
+ watchSlidesProgress: true,
60
+ navigation: {
61
+ nextEl: this.el.nativeElement.querySelector('.cs_swiper_button_next') ?? undefined,
62
+ prevEl: this.el.nativeElement.querySelector('.cs_swiper_button_prev') ?? undefined,
63
+ },
64
+ pagination: false,
65
+ on: {
66
+ init: (swp) => {
67
+ parallaxSliderElement.classList.remove('loading');
68
+ if (slideCount > 1) {
69
+ setTimeout(() => swp?.autoplay?.start(), 0);
70
+ }
43
71
  },
44
- pagination: false,
45
- on: {
46
- init: (swp) => {
47
- swp?.autoplay?.stop();
48
- },
49
- imagesReady: (swp) => {
50
- parallaxSliderElement.classList.remove('loading');
51
- swp?.autoplay?.start();
52
- },
53
- progress: (swp) => {
54
- swp.slides.forEach((slide) => {
55
- const slideProgress = slide.progress || 0;
56
- const innerOffset = swp.width * interleaveOffset;
57
- const innerTranslate = slideProgress * innerOffset;
58
- const parallaxBg = slide.querySelector('.cs_swiper_parallax_bg');
59
- if (parallaxBg) {
60
- parallaxBg.style.transform = `translateX(${innerTranslate}px)`;
61
- }
62
- });
63
- },
64
- touchStart: function () {
65
- this.slides.forEach((slide) => {
66
- slide.style.transition = '';
67
- });
68
- },
69
- setTransition: (swp, transition) => {
70
- swp.slides.forEach((slide) => {
71
- slide.style.transition =
72
- `${transition}ms`;
73
- const parallaxBg = slide.querySelector('.cs_swiper_parallax_bg');
74
- if (parallaxBg) {
75
- parallaxBg.style.transition = `${transition}ms`;
76
- }
77
- });
78
- },
72
+ imagesReady: (swp) => {
73
+ parallaxSliderElement.classList.remove('loading');
74
+ swp?.autoplay?.start();
79
75
  },
80
- };
81
- new Swiper(parallaxSliderSelector, mainSliderOptions);
82
- }
76
+ progress: (swp) => {
77
+ swp.slides.forEach((slide) => {
78
+ const slideProgress = slide.progress || 0;
79
+ const innerOffset = swp.width * interleaveOffset;
80
+ const innerTranslate = slideProgress * innerOffset;
81
+ const parallaxBg = slide.querySelector('.cs_swiper_parallax_bg');
82
+ if (parallaxBg) {
83
+ parallaxBg.style.transform = `translateX(${innerTranslate}px)`;
84
+ }
85
+ });
86
+ },
87
+ touchStart: function () {
88
+ this.slides.forEach((slide) => {
89
+ slide.style.transition = '';
90
+ });
91
+ },
92
+ setTransition: (swp, transition) => {
93
+ swp.slides.forEach((slide) => {
94
+ slide.style.transition =
95
+ `${transition}ms`;
96
+ const parallaxBg = slide.querySelector('.cs_swiper_parallax_bg');
97
+ if (parallaxBg) {
98
+ parallaxBg.style.transition = `${transition}ms`;
99
+ }
100
+ });
101
+ },
102
+ },
103
+ };
104
+ this.swiper = new Swiper(parallaxSliderElement, mainSliderOptions);
83
105
  }
84
106
  observeSlides() {
85
107
  if (!isPlatformBrowser(this.platform))
86
108
  return;
87
- const wrapper = this.el.nativeElement.querySelector('.swiper-wrapper');
88
- if (!wrapper) {
89
- return;
90
- }
91
109
  this.observer = new MutationObserver(() => {
92
110
  // Destruye e inicializa Swiper de nuevo
93
111
  this.initSwiperSlider();
94
112
  });
95
- this.observer.observe(this.el.nativeElement.querySelector('.swiper-wrapper'), {
113
+ this.observer.observe(this.el.nativeElement, {
96
114
  childList: true,
115
+ subtree: true,
97
116
  });
98
117
  }
118
+ destroySwiper() {
119
+ this.swiper?.destroy(true, true);
120
+ this.swiper = undefined;
121
+ }
99
122
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BabylonSwiperSliderDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
100
123
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: BabylonSwiperSliderDirective, isStandalone: true, selector: "[babylonSwiperSlider]", ngImport: i0 }); }
101
124
  }
@@ -106,4 +129,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
106
129
  standalone: true,
107
130
  }]
108
131
  }], ctorParameters: () => [{ type: i0.ElementRef }] });
109
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFieWxvbi1zd2lwZXItc2xpZGVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhYnlsb24vc3JjL2xpYi9kaXJlY3RpdmVzL2JhYnlsb24tc2xpZGVycy9iYWJ5bG9uLXN3aXBlci1zbGlkZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFFSCxTQUFTLEVBR1QsV0FBVyxFQUNYLE1BQU0sR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNCLE9BQU8sTUFBTSxFQUFFLEVBQUUsVUFBVSxFQUFpQixNQUFNLFFBQVEsQ0FBQztBQUMzRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFDOztBQU1wQyxNQUFNLE9BQU8sNEJBQTRCO0lBSXJDLFlBQW9CLEVBQWM7UUFBZCxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBSGpCLGFBQVEsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFJNUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELGVBQWU7UUFDWCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUFFLE9BQU87UUFDOUMsS0FBSyxDQUFDLFVBQVUsQ0FBQywwQ0FBMEMsQ0FBQzthQUN2RCxJQUFJLENBQ0QsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNMLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQzVCLENBQUMsQ0FBQyxDQUNMO2FBQ0EsU0FBUyxFQUFFLENBQUM7UUFDakIsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxD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LENBQUM7b0JBQ1AsQ0FBQztpQkFDSjthQUNKLENBQUM7WUFFRixJQUFJLE1BQU0sQ0FBQyxzQkFBc0IsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1NBQ3pEO0lBQ0wsQ0FBQztJQUVELGFBQWE7UUFDVCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUFFLE9BQU87UUFDOUMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDdkUsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNWLE9BQU87U0FDVjtRQUNELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUU7WUFDdEMsd0NBQXdDO1lBQ3hDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQzVCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQ2pCLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxFQUN0RDtZQUNJLFNBQVMsRUFBRSxJQUFJO1NBQ2xCLENBQ0osQ0FBQztJQUNOLENBQUM7K0dBOUdRLDRCQUE0QjttR0FBNUIsNEJBQTRCOzs0RkFBNUIsNEJBQTRCO2tCQUp4QyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSx1QkFBdUI7b0JBQ2pDLFVBQVUsRUFBRSxJQUFJO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBEaXJlY3RpdmUsXG4gICAgRWxlbWVudFJlZixcbiAgICBPbkRlc3Ryb3ksXG4gICAgUExBVEZPUk1fSUQsXG4gICAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IFN3aXBlciwgeyBOYXZpZ2F0aW9uLCBTd2lwZXJPcHRpb25zIH0gZnJvbSAnc3dpcGVyJztcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tiYWJ5bG9uU3dpcGVyU2xpZGVyXScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgQmFieWxvblN3aXBlclNsaWRlckRpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBwbGF0Zm9ybSA9IGluamVjdChQTEFURk9STV9JRCk7XG4gICAgcHJpdmF0ZSBvYnNlcnZlcj86IE11dGF0aW9uT2JzZXJ2ZXI7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsOiBFbGVtZW50UmVmKSB7XG4gICAgICAgIFN3aXBlci51c2UoW05hdmlnYXRpb25dKTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybSkpIHJldHVybjtcbiAgICAgICAgVXRpbHMubG9hZFN0eWxlJCgnYXNzZXRzL2JhYnlsb24vY3NzL3N3aXBlci1idW5kbGUubWluLmNzcycpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluaXRTd2lwZXJTbGlkZXIoKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLm9ic2VydmVTbGlkZXMoKTtcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xuICAgIH1cblxuICAgIGluaXRTd2lwZXJTbGlkZXIoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHBhcmFsbGF4U2xpZGVyU2VsZWN0b3IgPSAnLmNzX3BhcmFsbGF4X3NsaWRlcic7XG4gICAgICAgIGNvbnN0IGludGVybGVhdmVPZmZzZXQgPSAwLjU7XG5cbiAgICAgICAgY29uc3QgcGFyYWxsYXhTbGlkZXJFbGVtZW50ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAgICAgICBwYXJhbGxheFNsaWRlclNlbGVjdG9yXG4gICAgICAgICk7XG4gICAgICAgIGlmIChwYXJhbGxheFNsaWRlckVsZW1lbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IHNsaWRlcyA9XG4gICAgICAgICAgICAgICAgcGFyYWxsYXhTbGlkZXJFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5zd2lwZXItc2xpZGUnKTtcbiAgICAgICAgICAgIGNvbnN0IHNsaWRlQ291bnQgPSBzbGlkZXMubGVuZ3RoO1xuXG4gICAgICAgICAgICBjb25zdCBtYWluU2xpZGVyT3B0aW9uczogU3dpcGVyT3B0aW9ucyA9IHtcbiAgICAgICAgICAgICAgICBsb29wOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBzcGVlZDogMTAwMCxcbiAgICAgICAgICAgICAgICBhdXRvcGxheTogc2xpZGVDb3VudCA+IDEgPyB7IGRlbGF5OiAzMDAwIH0gOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBsb29wQWRkaXRpb25hbFNsaWRlczogMTAsXG4gICAgICAgICAgICAgICAgZ3JhYkN1cnNvcjogc2xpZGVDb3VudCA+IDEsXG4gICAgICAgICAgICAgICAgd2F0Y2hTbGlkZXNQcm9ncmVzczogdHJ1ZSxcbiAgICAgICAgICAgICAgICBuYXZpZ2F0aW9uOiB7XG4gICAgICAgICAgICAgICAgICAgIG5leHRFbDogJy5jc19zd2lwZXJfYnV0dG9uX25leHQnLFxuICAgICAgICAgICAgICAgICAgICBwcmV2RWw6ICcuY3Nfc3dpcGVyX2J1dHRvbl9wcmV2JyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHBhZ2luYXRpb246IGZhbHNlLFxuICAgICAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgICAgIGluaXQ6IChzd3A6IFN3aXBlcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3dwPy5hdXRvcGxheT8uc3RvcCgpO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBpbWFnZXNSZWFkeTogKHN3cDogU3dpcGVyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbGxheFNsaWRlckVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgnbG9hZGluZycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3dwPy5hdXRvcGxheT8uc3RhcnQoKTtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgcHJvZ3Jlc3M6IChzd3A6IFN3aXBlcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3dwLnNsaWRlcy5mb3JFYWNoKChzbGlkZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNsaWRlUHJvZ3Jlc3MgPSAoc2xpZGUgYXMgYW55KS5wcm9ncmVzcyB8fCAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlubmVyT2Zmc2V0ID0gc3dwLndpZHRoICogaW50ZXJsZWF2ZU9mZnNldDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbm5lclRyYW5zbGF0ZSA9IHNsaWRlUHJvZ3Jlc3MgKiBpbm5lck9mZnNldDtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFsbGF4QmcgPSBzbGlkZS5xdWVyeVNlbGVjdG9yPEhUTUxFbGVtZW50PihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy5jc19zd2lwZXJfcGFyYWxsYXhfYmcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyYWxsYXhCZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbGxheEJnLnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGVYKCR7aW5uZXJUcmFuc2xhdGV9cHgpYDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgdG91Y2hTdGFydDogZnVuY3Rpb24gKHRoaXM6IFN3aXBlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zbGlkZXMuZm9yRWFjaCgoc2xpZGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2xpZGUgYXMgSFRNTEVsZW1lbnQpLnN0eWxlLnRyYW5zaXRpb24gPSAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBzZXRUcmFuc2l0aW9uOiAoc3dwOiBTd2lwZXIsIHRyYW5zaXRpb246IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3dwLnNsaWRlcy5mb3JFYWNoKChzbGlkZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzbGlkZSBhcyBIVE1MRWxlbWVudCkuc3R5bGUudHJhbnNpdGlvbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAke3RyYW5zaXRpb259bXNgO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFsbGF4QmcgPSBzbGlkZS5xdWVyeVNlbGVjdG9yPEhUTUxFbGVtZW50PihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy5jc19zd2lwZXJfcGFyYWxsYXhfYmcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyYWxsYXhCZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbGxheEJnLnN0eWxlLnRyYW5zaXRpb24gPSBgJHt0cmFuc2l0aW9ufW1zYDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgbmV3IFN3aXBlcihwYXJhbGxheFNsaWRlclNlbGVjdG9yLCBtYWluU2xpZGVyT3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvYnNlcnZlU2xpZGVzKCkge1xuICAgICAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm0pKSByZXR1cm47XG4gICAgICAgIGNvbnN0IHdyYXBwZXIgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLnN3aXBlci13cmFwcGVyJyk7XG4gICAgICAgIGlmICghd3JhcHBlcikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigoKSA9PiB7XG4gICAgICAgICAgICAvLyBEZXN0cnV5ZSBlIGluaWNpYWxpemEgU3dpcGVyIGRlIG51ZXZvXG4gICAgICAgICAgICB0aGlzLmluaXRTd2lwZXJTbGlkZXIoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMub2JzZXJ2ZXIub2JzZXJ2ZShcbiAgICAgICAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuc3dpcGVyLXdyYXBwZXInKSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBjaGlsZExpc3Q6IHRydWUsXG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxufVxuIl19
132
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFieWxvbi1zd2lwZXItc2xpZGVyLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhYnlsb24vc3JjL2xpYi9kaXJlY3RpdmVzL2JhYnlsb24tc2xpZGVycy9iYWJ5bG9uLXN3aXBlci1zbGlkZXIuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFFSCxTQUFTLEVBR1QsV0FBVyxFQUNYLE1BQU0sR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNCLE9BQU8sTUFBTSxFQUFFLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBaUIsTUFBTSxRQUFRLENBQUM7QUFDckUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQzs7QUFNcEMsTUFBTSxPQUFPLDRCQUE0QjtJQUtyQyxZQUFvQixFQUFjO1FBQWQsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUpqQixhQUFRLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBSzVDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsZUFBZTtRQUNYLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBQUUsT0FBTztRQUM5QyxLQUFLLENBQUMsVUFBVSxDQUFDLDBDQUEwQyxDQUFDO2FBQ3ZELElBQUksQ0FDRCxHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ0wsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDNUIsQ0FBQyxDQUFDLENBQ0w7YUFDQSxTQUFTLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDekIsQ0FBQztJ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Q0FBQyxRQUFRLENBQUM7WUFBRSxPQUFPO1FBQzlDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUU7WUFDdEMsd0NBQXdDO1lBQ3hDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBQzVCLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEVBQUU7WUFDekMsU0FBUyxFQUFFLElBQUk7WUFDZixPQUFPLEVBQUUsSUFBSTtTQUNoQixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sYUFBYTtRQUNqQixJQUFJLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDakMsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUM7SUFDNUIsQ0FBQzsrR0FqSlEsNEJBQTRCO21HQUE1Qiw0QkFBNEI7OzRGQUE1Qiw0QkFBNEI7a0JBSnhDLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLHVCQUF1QjtvQkFDakMsVUFBVSxFQUFFLElBQUk7aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIE9uRGVzdHJveSxcbiAgICBQTEFURk9STV9JRCxcbiAgICBpbmplY3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgU3dpcGVyLCB7IEF1dG9wbGF5LCBOYXZpZ2F0aW9uLCBTd2lwZXJPcHRpb25zIH0gZnJvbSAnc3dpcGVyJztcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBzZWxlY3RvcjogJ1tiYWJ5bG9uU3dpcGVyU2xpZGVyXScsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgQmFieWxvblN3aXBlclNsaWRlckRpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBwbGF0Zm9ybSA9IGluamVjdChQTEFURk9STV9JRCk7XG4gICAgcHJpdmF0ZSBvYnNlcnZlcj86IE11dGF0aW9uT2JzZXJ2ZXI7XG4gICAgcHJpdmF0ZSBzd2lwZXI/OiBTd2lwZXI7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsOiBFbGVtZW50UmVmKSB7XG4gICAgICAgIFN3aXBlci51c2UoW05hdmlnYXRpb24sIEF1dG9wbGF5XSk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm0pKSByZXR1cm47XG4gICAgICAgIFV0aWxzLmxvYWRTdHlsZSQoJ2Fzc2V0cy9iYWJ5bG9uL2Nzcy9zd2lwZXItYnVuZGxlLm1pbi5jc3MnKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbml0U3dpcGVyU2xpZGVyKCk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5vYnNlcnZlU2xpZGVzKCk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMub2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgdGhpcy5kZXN0cm95U3dpcGVyKCk7XG4gICAgfVxuXG4gICAgaW5pdFN3aXBlclNsaWRlcigpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcGFyYWxsYXhTbGlkZXJTZWxlY3RvciA9ICcuY3NfcGFyYWxsYXhfc2xpZGVyJztcbiAgICAgICAgY29uc3QgaW50ZXJsZWF2ZU9mZnNldCA9IDAuNTtcblxuICAgICAgICBjb25zdCBwYXJhbGxheFNsaWRlckVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgbnVsbCA9XG4gICAgICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihwYXJhbGxheFNsaWRlclNlbGVjdG9yKTtcbiAgICAgICAgaWYgKCFwYXJhbGxheFNsaWRlckVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuZGVzdHJveVN3aXBlcigpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc2xpZGVzID0gcGFyYWxsYXhTbGlkZXJFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGw8SFRNTEVsZW1lbnQ+KFxuICAgICAgICAgICAgJy5zd2lwZXItc2xpZGUnXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IHNsaWRlQ291bnQgPSBzbGlkZXMubGVuZ3RoO1xuICAgICAgICBpZiAoIXNsaWRlQ291bnQpIHtcbiAgICAgICAgICAgIHRoaXMuZGVzdHJveVN3aXBlcigpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYXV0b3BsYXlEZWxheUF0dHIgPSBwYXJhbGxheFNsaWRlckVsZW1lbnQuZ2V0QXR0cmlidXRlKFxuICAgICAgICAgICAgJ2RhdGEtYXV0b3BsYXktZGVsYXknXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IHBhcnNlZEF1dG9wbGF5RGVsYXkgPSBOdW1iZXIoYXV0b3BsYXlEZWxheUF0dHIpO1xuICAgICAgICBjb25zdCBhdXRvcGxheURlbGF5ID1cbiAgICAgICAgICAgIE51bWJlci5pc0Zpbml0ZShwYXJzZWRBdXRvcGxheURlbGF5KSAmJiBwYXJzZWRBdXRvcGxheURlbGF5ID4gMFxuICAgICAgICAgICAgICAgID8gcGFyc2VkQXV0b3BsYXlEZWxheVxuICAgICAgICAgICAgICAgIDogMzAwMDtcblxuICAgICAgICB0aGlzLmRlc3Ryb3lTd2lwZXIoKTtcblxuICAgICAgICBjb25zdCBtYWluU2xpZGVyT3B0aW9uczogU3dpcGVyT3B0aW9ucyA9IHtcbiAgICAgICAgICAgIG1vZHVsZXM6IFtOYXZpZ2F0aW9uLCBBdXRvcGxheV0sXG4gICAgICAgICAgICBsb29wOiBmYWxzZSxcbiAgICAgICAgICAgIHNwZWVkOiAxMDAwLFxuICAgICAgICAgICAgYXV0b3BsYXk6XG4gICAgICAgICAgICAgICAgc2xpZGVDb3VudCA+IDFcbiAgICAgICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGF5OiBhdXRvcGxheURlbGF5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlT25JbnRlcmFjdGlvbjogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA6IGZhbHNlLFxuICAgICAgICAgICAgbG9vcEFkZGl0aW9uYWxTbGlkZXM6IDEwLFxuICAgICAgICAgICAgZ3JhYkN1cnNvcjogc2xpZGVDb3VudCA+IDEsXG4gICAgICAgICAgICB3YXRjaFNsaWRlc1Byb2dyZXNzOiB0cnVlLFxuICAgICAgICAgICAgbmF2aWdhdGlvbjoge1xuICAgICAgICAgICAgICAgIG5leHRFbDpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAnLmNzX3N3aXBlcl9idXR0b25fbmV4dCdcbiAgICAgICAgICAgICAgICAgICAgKSA/PyB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgcHJldkVsOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgICAgICAgICAgICAgICAgICAgICcuY3Nfc3dpcGVyX2J1dHRvbl9wcmV2J1xuICAgICAgICAgICAgICAgICAgICApID8/IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwYWdpbmF0aW9uOiBmYWxzZSxcbiAgICAgICAgICAgIG9uOiB7XG4gICAgICAgICAgICAgICAgaW5pdDogKHN3cDogU3dpcGVyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHBhcmFsbGF4U2xpZGVyRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdsb2FkaW5nJyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzbGlkZUNvdW50ID4gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiBzd3A/LmF1dG9wbGF5Py5zdGFydCgpLCAwKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgaW1hZ2VzUmVhZHk6IChzd3A6IFN3aXBlcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBwYXJhbGxheFNsaWRlckVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgnbG9hZGluZycpO1xuICAgICAgICAgICAgICAgICAgICBzd3A/LmF1dG9wbGF5Py5zdGFydCgpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgcHJvZ3Jlc3M6IChzd3A6IFN3aXBlcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBzd3Auc2xpZGVzLmZvckVhY2goKHNsaWRlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzbGlkZVByb2dyZXNzID0gKHNsaWRlIGFzIGFueSkucHJvZ3Jlc3MgfHwgMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlubmVyT2Zmc2V0ID0gc3dwLndpZHRoICogaW50ZXJsZWF2ZU9mZnNldDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlubmVyVHJhbnNsYXRlID0gc2xpZGVQcm9ncmVzcyAqIGlubmVyT2Zmc2V0O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJhbGxheEJnID0gc2xpZGUucXVlcnlTZWxlY3RvcjxIVE1MRWxlbWVudD4oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJy5jc19zd2lwZXJfcGFyYWxsYXhfYmcnXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmFsbGF4QmcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbGxheEJnLnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGVYKCR7aW5uZXJUcmFuc2xhdGV9cHgpYDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB0b3VjaFN0YXJ0OiBmdW5jdGlvbiAodGhpczogU3dpcGVyKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2xpZGVzLmZvckVhY2goKHNsaWRlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAoc2xpZGUgYXMgSFRNTEVsZW1lbnQpLnN0eWxlLnRyYW5zaXRpb24gPSAnJztcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBzZXRUcmFuc2l0aW9uOiAoc3dwOiBTd2lwZXIsIHRyYW5zaXRpb246IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBzd3Auc2xpZGVzLmZvckVhY2goKHNsaWRlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAoc2xpZGUgYXMgSFRNTEVsZW1lbnQpLnN0eWxlLnRyYW5zaXRpb24gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAke3RyYW5zaXRpb259bXNgO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyYWxsYXhCZyA9IHNsaWRlLnF1ZXJ5U2VsZWN0b3I8SFRNTEVsZW1lbnQ+KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICcuY3Nfc3dpcGVyX3BhcmFsbGF4X2JnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJhbGxheEJnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYWxsYXhCZy5zdHlsZS50cmFuc2l0aW9uID0gYCR7dHJhbnNpdGlvbn1tc2A7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuc3dpcGVyID0gbmV3IFN3aXBlcihwYXJhbGxheFNsaWRlckVsZW1lbnQsIG1haW5TbGlkZXJPcHRpb25zKTtcbiAgICB9XG5cbiAgICBvYnNlcnZlU2xpZGVzKCkge1xuICAgICAgICBpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm0pKSByZXR1cm47XG4gICAgICAgIHRoaXMub2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigoKSA9PiB7XG4gICAgICAgICAgICAvLyBEZXN0cnV5ZSBlIGluaWNpYWxpemEgU3dpcGVyIGRlIG51ZXZvXG4gICAgICAgICAgICB0aGlzLmluaXRTd2lwZXJTbGlkZXIoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMub2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsIHtcbiAgICAgICAgICAgIGNoaWxkTGlzdDogdHJ1ZSxcbiAgICAgICAgICAgIHN1YnRyZWU6IHRydWUsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZGVzdHJveVN3aXBlcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zd2lwZXI/LmRlc3Ryb3kodHJ1ZSwgdHJ1ZSk7XG4gICAgICAgIHRoaXMuc3dpcGVyID0gdW5kZWZpbmVkO1xuICAgIH1cbn1cbiJdfQ==