@eui/mobile-core 18.1.4 → 18.1.5-snapshot-1769083042702
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.
- package/docs/changelog.html +22 -0
- package/docs/js/search/search_index.js +2 -2
- package/docs/properties.html +1 -1
- package/esm2022/lib/components/euim-slider-info-screen/euim-slider-info-screen.component.mjs +10 -6
- package/fesm2022/eui-mobile-core.mjs +9 -5
- package/fesm2022/eui-mobile-core.mjs.map +1 -1
- package/lib/components/euim-slider-info-screen/euim-slider-info-screen.component.d.ts +1 -0
- package/lib/components/euim-slider-info-screen/euim-slider-info-screen.component.d.ts.map +1 -1
- package/package.json +2 -2
package/docs/properties.html
CHANGED
package/esm2022/lib/components/euim-slider-info-screen/euim-slider-info-screen.component.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { booleanAttribute, ChangeDetectorRef, Component, ElementRef, EventEmitter, HostBinding, HostListener, Input, Output, Renderer2, ViewChild, ViewEncapsulation, } from '@angular/core';
|
|
1
|
+
import { booleanAttribute, ChangeDetectorRef, Component, ElementRef, EventEmitter, HostBinding, HostListener, Input, Output, Renderer2, ViewChild, ViewEncapsulation, computed } from '@angular/core';
|
|
2
2
|
import { CommonModule } from '@angular/common';
|
|
3
3
|
import { GestureController } from '@ionic/angular';
|
|
4
4
|
import { IonicModule } from '@ionic/angular';
|
|
@@ -51,6 +51,7 @@ export class EuimSliderInfoScreenComponent {
|
|
|
51
51
|
}
|
|
52
52
|
ngAfterViewInit() {
|
|
53
53
|
this.setSliderStyles();
|
|
54
|
+
this.cdr.detectChanges();
|
|
54
55
|
}
|
|
55
56
|
ngOnInit() {
|
|
56
57
|
const gesture = this.gestureCtrl.create({
|
|
@@ -151,10 +152,7 @@ export class EuimSliderInfoScreenComponent {
|
|
|
151
152
|
this.leftActionClicked.emit(event);
|
|
152
153
|
}
|
|
153
154
|
isImageOnly() {
|
|
154
|
-
return
|
|
155
|
-
!document.querySelector('.euim-slider-info-screen__title') &&
|
|
156
|
-
!document.querySelector('.euim-slider-info-screen__sub-title') &&
|
|
157
|
-
!document.querySelector('.euim-slider-info-screen__content'));
|
|
155
|
+
return this._isImageOnly();
|
|
158
156
|
}
|
|
159
157
|
getCssClasses() {
|
|
160
158
|
const paginationClass = !this.paginationColor
|
|
@@ -166,6 +164,12 @@ export class EuimSliderInfoScreenComponent {
|
|
|
166
164
|
paginationClass,
|
|
167
165
|
].join(' ').trim();
|
|
168
166
|
}
|
|
167
|
+
_isImageOnly = computed(() => {
|
|
168
|
+
return this.slidesArray.length > 0 &&
|
|
169
|
+
!document.querySelector('.euim-slider-info-screen__title') &&
|
|
170
|
+
!document.querySelector('.euim-slider-info-screen__sub-title') &&
|
|
171
|
+
!document.querySelector('.euim-slider-info-screen__content');
|
|
172
|
+
});
|
|
169
173
|
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: EuimSliderInfoScreenComponent, deps: [{ token: i0.Renderer2 }, { token: i1.GestureController }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
170
174
|
/** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: EuimSliderInfoScreenComponent, isStandalone: true, selector: "euim-slider-info-screen", inputs: { isCarousel: ["isCarousel", "isCarousel", booleanAttribute], showLeftBtn: ["showLeftBtn", "showLeftBtn", booleanAttribute], showRightBtn: ["showRightBtn", "showRightBtn", booleanAttribute], isPreviousBtn: ["isPreviousBtn", "isPreviousBtn", booleanAttribute], isNextBtn: ["isNextBtn", "isNextBtn", booleanAttribute], paginationColor: "paginationColor", actionBtnNames: "actionBtnNames", actionBtnIconsNames: "actionBtnIconsNames" }, outputs: { rightActionClicked: "rightActionClicked", lastStepActionClicked: "lastStepActionClicked", leftActionClicked: "leftActionClicked" }, host: { listeners: { "window:resize": "onResize($event)" }, properties: { "class": "this.cssClasses" } }, viewQueries: [{ propertyName: "slides", first: true, predicate: ["slides"], descendants: true, static: true }], ngImport: i0, template: "<div #sliderElement class=\"euim-slider-info-screen__slider-container\" >\n <div #slides class=\"euim-slider-info-screen__slides\">\n <ng-content></ng-content>\n </div>\n\n @if (!isImageOnly()) {\n <div class=\"euim-slider-info-screen__pagination-container\">\n @if (showLeftBtn || showRightBtn || isCarousel || isLastItemReached){\n <div class=\"euim-slider-info-screen__pagination-container\">\n @if (showLeftBtn && !showLeftBtnAsPrevious && !isPreviousBtn) {\n <ion-button (click)=\"onLeftBtnAction($event)\"\n class=\"euim-slider-info-screen__action-button euim-slider-info-screen__action-button--left\"\n fill=\"clear\">\n @if (actionBtnIconsNames.leftBtnIconName !== '') {\n <ion-icon slot=\"start\" [name]=\"actionBtnIconsNames.leftBtnIconName\"></ion-icon>\n }\n {{actionBtnNames.leftBtnName}}\n </ion-button>\n }\n @if (showLeftBtnAsPrevious) {\n <ion-button (click)=\"onLeftBtnAction($event)\"\n class=\"euim-slider-info-screen__action-button euim-slider-info-screen__action-button--left\"\n fill=\"clear\">\n @if (actionBtnIconsNames.leftBtnIconName !== '') {\n <ion-icon slot=\"start\" [name]=\"actionBtnIconsNames.leftBtnIconName\"></ion-icon>\n }\n {{actionBtnNames.leftBtnName || 'euim.slider-info-screen.LEFT-BTN-NAME' | translate}}</ion-button>\n }\n @if (isCarousel){\n <div class=\"euim-slider-info-screen__pagination\">\n <span (click)=\"goToSlide(i)\" *ngFor=\"let slide of slidesArray; let i = index\"\n [ngClass]=\"{ 'active': currentSlide === i }\" class=\"euim-slider-info-screen__span\"></span>\n </div>\n }\n @if (!isLastItemReached && !isNextBtn || isNextBtn && showRightBtn) {\n <ion-button (click)=\"onRightBtnAction($event)\"\n class=\"euim-slider-info-screen__action-button euim-slider-info-screen__action-button--right\"\n fill=\"clear\">\n {{actionBtnNames.rightBtnName || 'euim.slider-info-screen.RIGHT-BTN-NAME' | translate}}\n\n @if (actionBtnIconsNames.rightBtnIconName !== '') {\n <ion-icon slot=\"end\" [name]=\"actionBtnIconsNames.rightBtnIconName\"></ion-icon>\n }\n </ion-button>\n }\n\n @if (isLastItemReached) {\n <ion-button (click)=\"onLastStepAction($event)\"\n class=\"euim-slider-info-screen__action-button euim-slider-info-screen__action-button--right\"\n fill=\"clear\">\n {{actionBtnNames.lastStepActionBtnName || 'euim.slider-info-screen.LAST-STEP-ACTION-BTN-NAME' | translate}}\n\n @if (actionBtnIconsNames.lastStepActionBtnIconName !== '') {\n <ion-icon slot=\"end\" [name]=\"actionBtnIconsNames.lastStepActionBtnIconName\"></ion-icon>\n }\n </ion-button>\n }\n </div>\n }\n </div>\n }\n\n @if (isImageOnly()) {\n <div class=\"euim-slider-info-screen__pagination-container--over-image\">\n <div class=\"euim-slider-info-screen__pagination\">\n <span (click)=\"goToSlide(i)\" *ngFor=\"let slide of slidesArray; let i = index\"\n [ngClass]=\"{ 'active': currentSlide === i }\"\n class=\"euim-slider-info-screen__span\" ></span>\n </div>\n </div>\n }\n\n</div>\n", styles: [".euim-slider-info-screen__slider-container{overflow:hidden;position:relative;height:100vh}.euim-slider-info-screen__slides{display:flex;transition:all .5s ease;height:100%;width:100%}.euim-slider-info-screen__slide{width:100%;height:100%}.euim-slider-info-screen__pagination-container--over-image{position:absolute;bottom:20px;left:50%;transform:translate(-50%);display:flex;align-items:center;justify-content:center;z-index:1}.euim-slider-info-screen__pagination-container{position:fixed;bottom:0;left:0;right:0;display:flex;align-items:center;justify-content:center;height:60px;z-index:99}.euim-slider-info-screen__pagination{display:flex}.euim-slider-info-screen__span{width:calc(var(--eui-s-xs) + var(--eui-s-2xs) / 2);height:calc(var(--eui-s-xs) + var(--eui-s-2xs) / 2);border-radius:50%;cursor:pointer;border:1px solid var(--eui-c-primary)}.euim-slider-info-screen__span:not(:last-child){margin-right:var(--eui-s-xs)}.euim-slider-info-screen.pagination-color-primary .euim-slider-info-screen__span{border:1px solid var(--eui-c-primary)!important;background-color:transparent}.euim-slider-info-screen.pagination-color-primary .euim-slider-info-screen__span.active{background-color:var(--eui-c-primary)!important}.euim-slider-info-screen.pagination-color-white .euim-slider-info-screen__span{border:1px solid var(--eui-c-white)!important;background-color:transparent}.euim-slider-info-screen.pagination-color-white .euim-slider-info-screen__span.active{background-color:var(--eui-c-white)!important}.euim-slider-info-screen.pagination-color-success .euim-slider-info-screen__span{border:1px solid var(--eui-c-success-dark)!important;background-color:transparent}.euim-slider-info-screen.pagination-color-success .euim-slider-info-screen__span.active{background-color:var(--eui-c-success-dark)!important}.euim-slider-info-screen.pagination-color-warning .euim-slider-info-screen__span{border:1px solid var(--eui-c-warning)!important;background-color:transparent}.euim-slider-info-screen.pagination-color-warning .euim-slider-info-screen__span.active{background-color:var(--eui-c-warning)!important}.euim-slider-info-screen.pagination-color-info .euim-slider-info-screen__span{border:1px solid var(--eui-c-info)!important;background-color:transparent}.euim-slider-info-screen.pagination-color-info .euim-slider-info-screen__span.active{background-color:var(--eui-c-info)!important}.euim-slider-info-screen.pagination-color-dark .euim-slider-info-screen__span{border:1px solid var(--eui-c-neutral)!important;background-color:transparent}.euim-slider-info-screen.pagination-color-dark .euim-slider-info-screen__span.active{background-color:var(--eui-c-neutral)!important}.euim-slider-info-screen.pagination-color-danger .euim-slider-info-screen__span{border:1px solid var(--eui-c-danger-dark)!important;background-color:transparent}.euim-slider-info-screen.pagination-color-danger .euim-slider-info-screen__span.active{background-color:var(--eui-c-danger-dark)!important}.euim-slider-info-screen__action-button{position:absolute;color:var(--eui-c-primary);font-weight:700;top:50%;transform:translateY(-50%)}.euim-slider-info-screen__action-button::part(native){padding:0 var(--eui-s-m)}.euim-slider-info-screen__action-button--right{right:0;margin:0 var(--eui-s-xs) 0 var(--eui-s-m)}.euim-slider-info-screen__action-button--left{margin:0 var(--eui-s-m) 0 var(--eui-s-xs);left:0}.euim-slider-info-screen__action-button ion-icon{color:var(--eui-c-primary)}.euim-slider-info-screen__title{font:var(--eui-f-xl-bold-compact);color:var(--eui-c-neutral);margin-top:var(--eui-s-l);padding-left:var(--eui-s-l);padding-right:var(--eui-s-l)}.euim-slider-info-screen__sub-title{color:var(--eui-c-neutral-light);padding-left:var(--eui-s-l);padding-right:var(--eui-s-l);font:var(--eui-f-m-compact)}.euim-slider-info-screen__content{color:var(--eui-c-neutral);padding-left:var(--eui-s-l);padding-right:var(--eui-s-l);font:var(--eui-f-m-compact);display:flex;flex-direction:column}.euim-slider-info-screen__content--centered{text-align:center}.euim-slider-info-screen__title+.euim-slider-info-screen__sub-title{margin-top:var(--eui-s-2xs)}.euim-slider-info-screen__sub-title+.euim-slider-info-screen__content,title+.euim-slider-info-screen__content{margin-top:var(--eui-s-m)}.euim-slider-info-screen.image-only .euim-slider-info-screen__slider-container{height:auto}\n"], dependencies: [{ kind: "ngmodule", type: IonicModule }, { kind: "component", type: i1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None });
|
|
171
175
|
}
|
|
@@ -213,4 +217,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
213
217
|
type: HostBinding,
|
|
214
218
|
args: ['class']
|
|
215
219
|
}] } });
|
|
216
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpbS1zbGlkZXItaW5mby1zY3JlZW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2V1aW0tc2xpZGVyLWluZm8tc2NyZWVuL2V1aW0tc2xpZGVyLWluZm8tc2NyZWVuLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9ldWltLXNsaWRlci1pbmZvLXNjcmVlbi9ldWltLXNsaWRlci1pbmZvLXNjcmVlbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixXQUFXLEVBQ1gsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxFQUNULFNBQVMsRUFDVCxpQkFBaUIsR0FDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRW5ELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7O0FBY3RELE1BQU0sT0FBTyw2QkFBNkI7SUErQ2xCO0lBQ1I7SUFDQTtJQUNBO0lBakQyQixNQUFNLENBQWE7SUFFaEQsa0JBQWtCLEdBQ3hCLElBQUksWUFBWSxFQUFjLENBQUM7SUFDekIscUJBQXFCLEdBQzNCLElBQUksWUFBWSxFQUFjLENBQUM7SUFDekIsaUJBQWlCLEdBQ3ZCLElBQUksWUFBWSxFQUFjLENBQUM7SUFFbkMsaUJBQWlCLEdBQWlCLEtBQUssQ0FBQztJQUd4QyxVQUFVLEdBQUcsS0FBSyxDQUFDO0lBR25CLFdBQVcsR0FBRyxLQUFLLENB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LEVBQUU7Z0JBRTNCLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFFRyxxQkFBcUI7c0JBQTlCLE1BQU07Z0JBRUcsaUJBQWlCO3NCQUExQixNQUFNO2dCQU1QLFVBQVU7c0JBRFQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFJdEMsV0FBVztzQkFEVixLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUl0QyxZQUFZO3NCQURYLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBSXRDLGFBQWE7c0JBRFosS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFJdEMsU0FBUztzQkFEUixLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUc3QixlQUFlO3NCQUF2QixLQUFLO2dCQUVHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBTUcsbUJBQW1CO3NCQUEzQixLQUFLO2dCQWtCTixRQUFRO3NCQURQLFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQUtyQyxVQUFVO3NCQURiLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBib29sZWFuQXR0cmlidXRlLFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0QmluZGluZyxcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5wdXQsXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBSZW5kZXJlcjIsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBHZXN0dXJlQ29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQgeyBJb25pY01vZHVsZSB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2V1aW0tc2xpZGVyLWluZm8tc2NyZWVuJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZXVpbS1zbGlkZXItaW5mby1zY3JlZW4uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3N0eWxlcy9faW5kZXguc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIElvbmljTW9kdWxlLFxuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICBdLFxufSlcbmV4cG9ydCBjbGFzcyBFdWltU2xpZGVySW5mb1NjcmVlbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgQFZpZXdDaGlsZCgnc2xpZGVzJywgeyBzdGF0aWM6IHRydWUgfSkgc2xpZGVzOiBFbGVtZW50UmVmO1xuXG4gICAgQE91dHB1dCgpIHJpZ2h0QWN0aW9uQ2xpY2tlZDogRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+ID1cbiAgICAgICAgbmV3IEV2ZW50RW1pdHRlcjxNb3VzZUV2ZW50PigpO1xuICAgIEBPdXRwdXQoKSBsYXN0U3RlcEFjdGlvbkNsaWNrZWQ6IEV2ZW50RW1pdHRlcjxNb3VzZUV2ZW50PiA9XG4gICAgICAgIG5ldyBFdmVudEVtaXR0ZXI8TW91c2VFdmVudD4oKTtcbiAgICBAT3V0cHV0KCkgbGVmdEFjdGlvbkNsaWNrZWQ6IEV2ZW50RW1pdHRlcjxNb3VzZUV2ZW50PiA9XG4gICAgICAgIG5ldyBFdmVudEVtaXR0ZXI8TW91c2VFdmVudD4oKTtcblxuICAgIGlzTGFzdEl0ZW1SZWFjaGVkOiBCb29sZWFuSW5wdXQgPSBmYWxzZTtcblxuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICAgIGlzQ2Fyb3VzZWwgPSBmYWxzZTtcblxuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICAgIHNob3dMZWZ0QnRuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgICBzaG93UmlnaHRCdG4gPSBmYWxzZTtcblxuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICAgIGlzUHJldmlvdXNCdG4gPSBmYWxzZTtcblxuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICAgIGlzTmV4dEJ0biA9IGZhbHNlO1xuXG4gICAgQElucHV0KCkgcGFnaW5hdGlvbkNvbG9yOiAgJ2RhcmsnIHwgJ3doaXRlJyB8ICdwcmltYXJ5JyB8ICdpbmZvJyB8ICdzdWNjZXNzJyB8ICd3YXJuaW5nJyB8ICdkYW5nZXInO1xuXG4gICAgQElucHV0KCkgYWN0aW9uQnRuTmFtZXM6IEFjdGlvbkJ0bnNOYW1lcyA9IHtcbiAgICAgICAgcmlnaHRCdG5OYW1lOiAnJyxcbiAgICAgICAgbGFzdFN0ZXBBY3Rpb25CdG5OYW1lOiAnJyxcbiAgICAgICAgbGVmdEJ0bk5hbWU6ICcnLFxuICAgIH07XG5cbiAgICBASW5wdXQoKSBhY3Rpb25CdG5JY29uc05hbWVzOiBBY3Rpb25CdG5zSWNvbnNOYW1lcyA9IHtcbiAgICAgICAgcmlnaHRCdG5JY29uTmFtZTogJycsXG4gICAgICAgIGxhc3RTdGVwQWN0aW9uQnRuSWNvbk5hbWU6ICcnLFxuICAgICAgICBsZWZ0QnRuSWNvbk5hbWU6ICcnLFxuICAgIH1cblxuICAgIHNob3dMZWZ0QnRuQXNQcmV2aW91czogQm9vbGVhbklucHV0ID0gZmFsc2U7XG5cbiAgICBzbGlkZXNBcnJheSA9IFtdO1xuICAgIGN1cnJlbnRTbGlkZSA9IDA7XG4gICAgc3RhcnRYID0gMDtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgcHJpdmF0ZSBnZXN0dXJlQ3RybDogR2VzdHVyZUNvbnRyb2xsZXIsXG4gICAgICAgIHByaXZhdGUgc2xpZGVyRWxlbWVudDogRWxlbWVudFJlZixcbiAgICAgICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gICAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFsnJGV2ZW50J10pXG4gICAgb25SZXNpemUoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2V0U2xpZGVyU3R5bGVzKCk7XG4gICAgfVxuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICAgIGdldCBjc3NDbGFzc2VzKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldENzc0NsYXNzZXMoKTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2V0U2xpZGVyU3R5bGVzKCk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGdlc3R1cmUgPSB0aGlzLmdlc3R1cmVDdHJsLmNyZWF0ZSh7XG4gICAgICAgICAgICBlbDogdGhpcy5zbGlkZXJFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICBnZXN0dXJlTmFtZTogJ29uLWdlc3R1cmUtZW5kJyxcbiAgICAgICAgICAgIG9uRW5kOiAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVRvdWNoRW5kKGV2ZW50KTtcbiAgICAgICAgICAgICAgICB0aGlzLmlzUHJldmlvdXNCdXR0b25WaXNpYmxlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5pc05leHRCdXR0b25WaXNpYmxlKCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcblxuICAgICAgICBnZXN0dXJlLmVuYWJsZSgpO1xuXG4gICAgICAgIHRoaXMuaXNQcmV2aW91c0J1dHRvblZpc2libGUoKTtcbiAgICAgICAgdGhpcy5pc05leHRCdXR0b25WaXNpYmxlKCk7XG4gICAgfVxuXG4gICAgc2V0U2xpZGVyU3R5bGVzKCk6IHZvaWQge1xuICAgICAgICBjb25zdCB3aW5kb3dIZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQ7XG4gICAgICAgIGNvbnN0IHBhZ2luYXRpb25IZWlnaHQgPSA2MDtcbiAgICAgICAgY29uc3Qgc2xpZGVIZWlnaHQgPSB3aW5kb3dIZWlnaHQgLSBwYWdpbmF0aW9uSGVpZ2h0O1xuXG4gICAgICAgIHRoaXMuc2xpZGVzQXJyYXkgPSB0aGlzLnNsaWRlcy5uYXRpdmVFbGVtZW50LmNoaWxkcmVuO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuc2xpZGVzLm5hdGl2ZUVsZW1lbnQsICd3aWR0aCcsIGAke3RoaXMuc2xpZGVzQXJyYXkubGVuZ3RoICogMTAwfSVgKTtcblxuICAgICAgICBmb3IgKGNvbnN0IHNsaWRlIG9mIHRoaXMuc2xpZGVzQXJyYXkpIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoc2xpZGUsICd3aWR0aCcsIGAkezEwMCAvIHRoaXMuc2xpZGVzQXJyYXkubGVuZ3RofSVgKTtcblxuICAgICAgICAgICAgaWYgKCF0aGlzLmlzSW1hZ2VPbmx5KCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHNsaWRlLCAnbWF4SGVpZ2h0JywgYCR7c2xpZGVIZWlnaHR9cHhgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoc2xpZGUsICdvdmVyZmxvdycsICdhdXRvJyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyB0byBjYWxjdWxhdGUgdGhlIGNhc2Ugd2hlbiB0aGVyZSBpcyBvbmx5IG9uZSBzbGlkZVxuICAgICAgICBpZiAoIXRoaXMuaXNMYXN0SXRlbVJlYWNoZWQgJiYgdGhpcy5zbGlkZXNBcnJheS5sZW5ndGggPCAyKSB7XG4gICAgICAgICAgICB0aGlzLmlzTGFzdEl0ZW1SZWFjaGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGhhbmRsZVRvdWNoRW5kKGUpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZGlmZmVyZW5jZSA9IC1lLmRlbHRhWDtcblxuICAgICAgICBpZiAoZGlmZmVyZW5jZSA+IDAgJiYgdGhpcy5jdXJyZW50U2xpZGUgPCB0aGlzLnNsaWRlc0FycmF5Lmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFNsaWRlKys7XG4gICAgICAgIH0gZWxzZSBpZiAoZGlmZmVyZW5jZSA8IDAgJiYgdGhpcy5jdXJyZW50U2xpZGUgPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRTbGlkZS0tO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pc0xhc3RJdGVtUmVhY2hlZCA9IHRoaXMuY3VycmVudFNsaWRlID09PSB0aGlzLnNsaWRlc0FycmF5Lmxlbmd0aCAtIDE7XG5cbiAgICAgICAgY29uc3QgdHJhbnNsYXRlUGVyY2VudGFnZSA9IC10aGlzLmN1cnJlbnRTbGlkZSAqIDEwMCAvIHRoaXMuc2xpZGVzQXJyYXkubGVuZ3RoO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuc2xpZGVzLm5hdGl2ZUVsZW1lbnQsICd0cmFuc2Zvcm0nLCBgdHJhbnNsYXRlWCgke3RyYW5zbGF0ZVBlcmNlbnRhZ2V9JSlgKTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgICAgIHRoaXMuaXNQcmV2aW91c0J1dHRvblZpc2libGUoKTtcbiAgICAgICAgdGhpcy5pc05leHRCdXR0b25WaXNpYmxlKCk7XG4gICAgfVxuXG4gICAgZ29Ub1NsaWRlKGluZGV4KTogdm9pZCB7XG4gICAgICAgIHRoaXMuY3VycmVudFNsaWRlID0gaW5kZXg7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5zbGlkZXMubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgICd0cmFuc2Zvcm0nLCBgdHJhbnNsYXRlWCgtJHt0aGlzLmN1cnJlbnRTbGlkZSAqIDEwMCAvIHRoaXMuc2xpZGVzQXJyYXkubGVuZ3RofSUpYCk7XG4gICAgICAgIHRoaXMuaGFuZGxlVG91Y2hFbmQoZXZlbnQpO1xuXG4gICAgICAgIHRoaXMuaXNQcmV2aW91c0J1dHRvblZpc2libGUoKTtcbiAgICAgICAgdGhpcy5pc05leHRCdXR0b25WaXNpYmxlKCk7XG4gICAgfVxuXG4gICAgZ29Ub1ByZXZpb3VzU2xpZGUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRTbGlkZSA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFNsaWRlLS07XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuc2xpZGVzLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICAgICAgJ3RyYW5zZm9ybScsIGB0cmFuc2xhdGVYKC0ke3RoaXMuY3VycmVudFNsaWRlICogMTAwIC8gdGhpcy5zbGlkZXNBcnJheS5sZW5ndGh9JSlgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaGFuZGxlVG91Y2hFbmQoZXZlbnQpO1xuXG4gICAgICAgIHRoaXMuaXNQcmV2aW91c0J1dHRvblZpc2libGUoKTtcbiAgICAgICAgdGhpcy5pc05leHRCdXR0b25WaXNpYmxlKCk7XG4gICAgfVxuXG4gICAgZ29Ub05leHRTbGlkZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudFNsaWRlIDwgdGhpcy5zbGlkZXNBcnJheS5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRTbGlkZSsrO1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnNsaWRlcy5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgICAgICd0cmFuc2Zvcm0nLCBgdHJhbnNsYXRlWCgtJHt0aGlzLmN1cnJlbnRTbGlkZSAqIDEwMCAvIHRoaXMuc2xpZGVzQXJyYXkubGVuZ3RofSUpYCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmhhbmRsZVRvdWNoRW5kKGV2ZW50KTtcblxuICAgICAgICB0aGlzLmlzUHJldmlvdXNCdXR0b25WaXNpYmxlKCk7XG4gICAgICAgIHRoaXMuaXNOZXh0QnV0dG9uVmlzaWJsZSgpO1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgaXNQcmV2aW91c0J1dHRvblZpc2libGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2hvd0xlZnRCdG5Bc1ByZXZpb3VzID0gdGhpcy5jdXJyZW50U2xpZGUgPiAwICYmIHRoaXMuaXNQcmV2aW91c0J0bjtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIGlzTmV4dEJ1dHRvblZpc2libGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2hvd1JpZ2h0QnRuID0gdGhpcy5jdXJyZW50U2xpZGUgIT09IHRoaXMuc2xpZGVzQXJyYXkubGVuZ3RoIC0gMSAmJiB0aGlzLmlzTmV4dEJ0bjtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIG9uUmlnaHRCdG5BY3Rpb24oZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNOZXh0QnRuKSB7XG4gICAgICAgICAgICB0aGlzLmdvVG9OZXh0U2xpZGUoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucmlnaHRBY3Rpb25DbGlja2VkLmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIG9uTGFzdFN0ZXBBY3Rpb24oZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5sYXN0U3RlcEFjdGlvbkNsaWNrZWQuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgb25MZWZ0QnRuQWN0aW9uKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzUHJldmlvdXNCdG4pIHtcbiAgICAgICAgICAgIHRoaXMuZ29Ub1ByZXZpb3VzU2xpZGUoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubGVmdEFjdGlvbkNsaWNrZWQuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgaXNJbWFnZU9ubHkoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICB0aGlzLnNsaWRlc0FycmF5Lmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICAgICFkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuZXVpbS1zbGlkZXItaW5mby1zY3JlZW5fX3RpdGxlJykgJiZcbiAgICAgICAgICAgICFkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuZXVpbS1zbGlkZXItaW5mby1zY3JlZW5fX3N1Yi10aXRsZScpICYmXG4gICAgICAgICAgICAhZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmV1aW0tc2xpZGVyLWluZm8tc2NyZWVuX19jb250ZW50JylcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBnZXRDc3NDbGFzc2VzKCk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IHBhZ2luYXRpb25DbGFzcyA9ICF0aGlzLnBhZ2luYXRpb25Db2xvclxuICAgICAgICAgICAgPyAncGFnaW5hdGlvbi1jb2xvci1wcmltYXJ5J1xuICAgICAgICAgICAgOiBgcGFnaW5hdGlvbi1jb2xvci0ke3RoaXMucGFnaW5hdGlvbkNvbG9yfWA7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAnZXVpbS1zbGlkZXItaW5mby1zY3JlZW4nLFxuICAgICAgICAgICAgdGhpcy5pc0ltYWdlT25seSgpID8gJ2ltYWdlLW9ubHknIDogJycsXG4gICAgICAgICAgICBwYWdpbmF0aW9uQ2xhc3MsXG4gICAgICAgIF0uam9pbignICcpLnRyaW0oKTtcbiAgICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWN0aW9uQnRuc05hbWVzIHtcbiAgICByaWdodEJ0bk5hbWU6IHN0cmluZztcbiAgICBsYXN0U3RlcEFjdGlvbkJ0bk5hbWU6IHN0cmluZztcbiAgICBsZWZ0QnRuTmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFjdGlvbkJ0bnNJY29uc05hbWVzIHtcbiAgICByaWdodEJ0bkljb25OYW1lOiBzdHJpbmc7XG4gICAgbGFzdFN0ZXBBY3Rpb25CdG5JY29uTmFtZTogc3RyaW5nO1xuICAgIGxlZnRCdG5JY29uTmFtZTogc3RyaW5nO1xufVxuIiwiPGRpdiAjc2xpZGVyRWxlbWVudCBjbGFzcz1cImV1aW0tc2xpZGVyLWluZm8tc2NyZWVuX19zbGlkZXItY29udGFpbmVyXCIgPlxuICAgIDxkaXYgI3NsaWRlcyBjbGFzcz1cImV1aW0tc2xpZGVyLWluZm8tc2NyZWVuX19zbGlkZXNcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuXG4gICAgQGlmICghaXNJbWFnZU9ubHkoKSkge1xuICAgIDxkaXYgY2xhc3M9XCJldWltLXNsaWRlci1pbmZvLXNjcmVlbl9fcGFnaW5hdGlvbi1jb250YWluZXJcIj5cbiAgICAgICAgQGlmIChzaG93TGVmdEJ0biB8fCBzaG93UmlnaHRCdG4gfHwgaXNDYXJvdXNlbCB8fCBpc0xhc3RJdGVtUmVhY2hlZCl7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJldWltLXNsaWRlci1pbmZvLXNjcmVlbl9fcGFnaW5hdGlvbi1jb250YWluZXJcIj5cbiAgICAgICAgICAgIEBpZiAoc2hvd0xlZnRCdG4gJiYgIXNob3dMZWZ0QnRuQXNQcmV2aW91cyAmJiAhaXNQcmV2aW91c0J0bikge1xuICAgICAgICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cIm9uTGVmdEJ0bkFjdGlvbigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImV1aW0tc2xpZGVyLWluZm8tc2NyZWVuX19hY3Rpb24tYnV0dG9uIGV1aW0tc2xpZGVyLWluZm8tc2NyZWVuX19hY3Rpb24tYnV0dG9uLS1sZWZ0XCJcbiAgICAgICAgICAgICAgICBmaWxsPVwiY2xlYXJcIj5cbiAgICAgICAgICAgICAgICBAaWYgKGFjdGlvbkJ0bkljb25zTmFtZXMubGVmdEJ0bkljb25OYW1lICE9PSAnJykge1xuICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gc2xvdD1cInN0YXJ0XCIgW25hbWVdPVwiYWN0aW9uQnRuSWNvbnNOYW1lcy5sZWZ0QnRuSWNvbk5hbWVcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB7e2FjdGlvbkJ0bk5hbWVzLmxlZnRCdG5OYW1lfX1cbiAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoc2hvd0xlZnRCdG5Bc1ByZXZpb3VzKSB7XG4gICAgICAgICAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwib25MZWZ0QnRuQWN0aW9uKCRldmVudClcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZXVpbS1zbGlkZXItaW5mby1zY3JlZW5fX2FjdGlvbi1idXR0b24gZXVpbS1zbGlkZXItaW5mby1zY3JlZW5fX2FjdGlvbi1idXR0b24tLWxlZnRcIlxuICAgICAgICAgICAgICAgIGZpbGw9XCJjbGVhclwiPlxuICAgICAgICAgICAgICAgIEBpZiAoYWN0aW9uQnRuSWNvbnNOYW1lcy5sZWZ0QnRuSWNvbk5hbWUgIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgICAgIDxpb24taWNvbiBzbG90PVwic3RhcnRcIiBbbmFtZV09XCJhY3Rpb25CdG5JY29uc05hbWVzLmxlZnRCdG5JY29uTmFtZVwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHt7YWN0aW9uQnRuTmFtZXMubGVmdEJ0bk5hbWUgfHwgJ2V1aW0uc2xpZGVyLWluZm8tc2NyZWVuLkxFRlQtQlROLU5BTUUnIHwgdHJhbnNsYXRlfX08L2lvbi1idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKGlzQ2Fyb3VzZWwpe1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV1aW0tc2xpZGVyLWluZm8tc2NyZWVuX19wYWdpbmF0aW9uXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gKGNsaWNrKT1cImdvVG9TbGlkZShpKVwiICpuZ0Zvcj1cImxldCBzbGlkZSBvZiBzbGlkZXNBcnJheTsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2FjdGl2ZSc6IGN1cnJlbnRTbGlkZSA9PT0gaSB9XCIgY2xhc3M9XCJldWltLXNsaWRlci1pbmZvLXNjcmVlbl9fc3BhblwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmICghaXNMYXN0SXRlbVJlYWNoZWQgJiYgIWlzTmV4dEJ0biB8fCBpc05leHRCdG4gJiYgc2hvd1JpZ2h0QnRuKSB7XG4gICAgICAgICAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwib25SaWdodEJ0bkFjdGlvbigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImV1aW0tc2xpZGVyLWluZm8tc2NyZWVuX19hY3Rpb24tYnV0dG9uIGV1aW0tc2xpZGVyLWluZm8tc2NyZWVuX19hY3Rpb24tYnV0dG9uLS1yaWdodFwiXG4gICAgICAgICAgICAgICAgZmlsbD1cImNsZWFyXCI+XG4gICAgICAgICAgICAgICAge3thY3Rpb25CdG5OYW1lcy5yaWdodEJ0bk5hbWUgfHwgJ2V1aW0uc2xpZGVyLWluZm8tc2NyZWVuLlJJR0hULUJUTi1OQU1FJyB8IHRyYW5zbGF0ZX19XG5cbiAgICAgICAgICAgICAgICBAaWYgKGFjdGlvbkJ0bkljb25zTmFtZXMucmlnaHRCdG5JY29uTmFtZSAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJlbmRcIiBbbmFtZV09XCJhY3Rpb25CdG5JY29uc05hbWVzLnJpZ2h0QnRuSWNvbk5hbWVcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGlmIChpc0xhc3RJdGVtUmVhY2hlZCkge1xuICAgICAgICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cIm9uTGFzdFN0ZXBBY3Rpb24oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJldWltLXNsaWRlci1pbmZvLXNjcmVlbl9fYWN0aW9uLWJ1dHRvbiBldWltLXNsaWRlci1pbmZvLXNjcmVlbl9fYWN0aW9uLWJ1dHRvbi0tcmlnaHRcIlxuICAgICAgICAgICAgICAgIGZpbGw9XCJjbGVhclwiPlxuICAgICAgICAgICAgICAgIHt7YWN0aW9uQnRuTmFtZXMubGFzdFN0ZXBBY3Rpb25CdG5OYW1lIHx8ICdldWltLnNsaWRlci1pbmZvLXNjcmVlbi5MQVNULVNURVAtQUNUSU9OLUJUTi1OQU1FJyB8IHRyYW5zbGF0ZX19XG5cbiAgICAgICAgICAgICAgICBAaWYgKGFjdGlvbkJ0bkljb25zTmFtZXMubGFzdFN0ZXBBY3Rpb25CdG5JY29uTmFtZSAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJlbmRcIiBbbmFtZV09XCJhY3Rpb25CdG5JY29uc05hbWVzLmxhc3RTdGVwQWN0aW9uQnRuSWNvbk5hbWVcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICA8L2Rpdj5cbiAgICB9XG5cbiAgICBAaWYgKGlzSW1hZ2VPbmx5KCkpIHtcbiAgICA8ZGl2IGNsYXNzPVwiZXVpbS1zbGlkZXItaW5mby1zY3JlZW5fX3BhZ2luYXRpb24tY29udGFpbmVyLS1vdmVyLWltYWdlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJldWltLXNsaWRlci1pbmZvLXNjcmVlbl9fcGFnaW5hdGlvblwiPlxuICAgICAgICAgICAgPHNwYW4gKGNsaWNrKT1cImdvVG9TbGlkZShpKVwiICpuZ0Zvcj1cImxldCBzbGlkZSBvZiBzbGlkZXNBcnJheTsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnYWN0aXZlJzogY3VycmVudFNsaWRlID09PSBpIH1cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZXVpbS1zbGlkZXItaW5mby1zY3JlZW5fX3NwYW5cIiA+PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICB9XG5cbjwvZGl2PlxuIl19
|
|
220
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXVpbS1zbGlkZXItaW5mby1zY3JlZW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL2V1aW0tc2xpZGVyLWluZm8tc2NyZWVuL2V1aW0tc2xpZGVyLWluZm8tc2NyZWVuLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9ldWltLXNsaWRlci1pbmZvLXNjcmVlbi9ldWltLXNsaWRlci1pbmZvLXNjcmVlbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixXQUFXLEVBQ1gsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxFQUNULFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsUUFBUSxFQUNYLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7OztBQWN0RCxNQUFNLE9BQU8sNkJBQTZCO0lBK0NsQjtJQUNSO0lBQ0E7SUFDQTtJQWpEMkIsTUFBTSxDQUFhO0lBRWhELGtCQUFrQixHQUN4QixJQUFJLFlBQVksRUFBYyxDQUFDO0lBQ3pCLHFCQUFxQixHQUMzQixJQUFJLFlBQVksRUFBYyxDQUFDO0lBQ3pCLGlCQUFpQixHQUN2QixJQUFJLFlBQVksRUFBYyxDQUFDO0lBRW5DLGlCQUFpQixHQUFpQixLQUFLLENBQUM7SUFHeEMsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUduQixXQUFXLEdB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QixpQkFBaUIsQ0FBQyxJQUFJLGNBQ3pCLElBQUksV0FDUDt3QkFDTCxXQUFXO3dCQUNYLFlBQVk7d0JBQ1osZUFBZTtxQkFDbEI7dUtBR3NDLE1BQU07c0JBQTVDLFNBQVM7dUJBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFFM0Isa0JBQWtCO3NCQUEzQixNQUFNO2dCQUVHLHFCQUFxQjtzQkFBOUIsTUFBTTtnQkFFRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBTVAsVUFBVTtzQkFEVCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUl0QyxXQUFXO3NCQURWLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBSXRDLFlBQVk7c0JBRFgsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFJdEMsYUFBYTtzQkFEWixLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUl0QyxTQUFTO3NCQURSLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBRzdCLGVBQWU7c0JBQXZCLEtBQUs7Z0JBRUcsY0FBYztzQkFBdEIsS0FBSztnQkFNRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBa0JOLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBS3JDLFVBQVU7c0JBRGIsV0FBVzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIGJvb2xlYW5BdHRyaWJ1dGUsXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbnB1dCxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFJlbmRlcmVyMixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG4gICAgY29tcHV0ZWRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgR2VzdHVyZUNvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBCb29sZWFuSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgSW9uaWNNb2R1bGUgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdldWltLXNsaWRlci1pbmZvLXNjcmVlbicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2V1aW0tc2xpZGVyLWluZm8tc2NyZWVuLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9zdHlsZXMvX2luZGV4LnNjc3MnXSxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBJb25pY01vZHVsZSxcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRXVpbVNsaWRlckluZm9TY3JlZW5Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuICAgIEBWaWV3Q2hpbGQoJ3NsaWRlcycsIHsgc3RhdGljOiB0cnVlIH0pIHNsaWRlczogRWxlbWVudFJlZjtcblxuICAgIEBPdXRwdXQoKSByaWdodEFjdGlvbkNsaWNrZWQ6IEV2ZW50RW1pdHRlcjxNb3VzZUV2ZW50PiA9XG4gICAgICAgIG5ldyBFdmVudEVtaXR0ZXI8TW91c2VFdmVudD4oKTtcbiAgICBAT3V0cHV0KCkgbGFzdFN0ZXBBY3Rpb25DbGlja2VkOiBFdmVudEVtaXR0ZXI8TW91c2VFdmVudD4gPVxuICAgICAgICBuZXcgRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+KCk7XG4gICAgQE91dHB1dCgpIGxlZnRBY3Rpb25DbGlja2VkOiBFdmVudEVtaXR0ZXI8TW91c2VFdmVudD4gPVxuICAgICAgICBuZXcgRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+KCk7XG5cbiAgICBpc0xhc3RJdGVtUmVhY2hlZDogQm9vbGVhbklucHV0ID0gZmFsc2U7XG5cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgICBpc0Nhcm91c2VsID0gZmFsc2U7XG5cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgICBzaG93TGVmdEJ0biA9IGZhbHNlO1xuXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gICAgc2hvd1JpZ2h0QnRuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgICBpc1ByZXZpb3VzQnRuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgICBpc05leHRCdG4gPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpIHBhZ2luYXRpb25Db2xvcjogICdkYXJrJyB8ICd3aGl0ZScgfCAncHJpbWFyeScgfCAnaW5mbycgfCAnc3VjY2VzcycgfCAnd2FybmluZycgfCAnZGFuZ2VyJztcblxuICAgIEBJbnB1dCgpIGFjdGlvbkJ0bk5hbWVzOiBBY3Rpb25CdG5zTmFtZXMgPSB7XG4gICAgICAgIHJpZ2h0QnRuTmFtZTogJycsXG4gICAgICAgIGxhc3RTdGVwQWN0aW9uQnRuTmFtZTogJycsXG4gICAgICAgIGxlZnRCdG5OYW1lOiAnJyxcbiAgICB9O1xuXG4gICAgQElucHV0KCkgYWN0aW9uQnRuSWNvbnNOYW1lczogQWN0aW9uQnRuc0ljb25zTmFtZXMgPSB7XG4gICAgICAgIHJpZ2h0QnRuSWNvbk5hbWU6ICcnLFxuICAgICAgICBsYXN0U3RlcEFjdGlvbkJ0bkljb25OYW1lOiAnJyxcbiAgICAgICAgbGVmdEJ0bkljb25OYW1lOiAnJyxcbiAgICB9XG5cbiAgICBzaG93TGVmdEJ0bkFzUHJldmlvdXM6IEJvb2xlYW5JbnB1dCA9IGZhbHNlO1xuXG4gICAgc2xpZGVzQXJyYXkgPSBbXTtcbiAgICBjdXJyZW50U2xpZGUgPSAwO1xuICAgIHN0YXJ0WCA9IDA7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgIHByaXZhdGUgZ2VzdHVyZUN0cmw6IEdlc3R1cmVDb250cm9sbGVyLFxuICAgICAgICBwcml2YXRlIHNsaWRlckVsZW1lbnQ6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICAgIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnLCBbJyRldmVudCddKVxuICAgIG9uUmVzaXplKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNldFNsaWRlclN0eWxlcygpO1xuICAgIH1cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJylcbiAgICBnZXQgY3NzQ2xhc3NlcygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRDc3NDbGFzc2VzKCk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNldFNsaWRlclN0eWxlcygpO1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGdlc3R1cmUgPSB0aGlzLmdlc3R1cmVDdHJsLmNyZWF0ZSh7XG4gICAgICAgICAgICBlbDogdGhpcy5zbGlkZXJFbGVtZW50Lm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICBnZXN0dXJlTmFtZTogJ29uLWdlc3R1cmUtZW5kJyxcbiAgICAgICAgICAgIG9uRW5kOiAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVRvdWNoRW5kKGV2ZW50KTtcbiAgICAgICAgICAgICAgICB0aGlzLmlzUHJldmlvdXNCdXR0b25WaXNpYmxlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5pc05leHRCdXR0b25WaXNpYmxlKCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcblxuICAgICAgICBnZXN0dXJlLmVuYWJsZSgpO1xuXG4gICAgICAgIHRoaXMuaXNQcmV2aW91c0J1dHRvblZpc2libGUoKTtcbiAgICAgICAgdGhpcy5pc05leHRCdXR0b25WaXNpYmxlKCk7XG4gICAgfVxuXG4gICAgc2V0U2xpZGVyU3R5bGVzKCk6IHZvaWQge1xuICAgICAgICBjb25zdCB3aW5kb3dIZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQ7XG4gICAgICAgIGNvbnN0IHBhZ2luYXRpb25IZWlnaHQgPSA2MDtcbiAgICAgICAgY29uc3Qgc2xpZGVIZWlnaHQgPSB3aW5kb3dIZWlnaHQgLSBwYWdpbmF0aW9uSGVpZ2h0O1xuXG4gICAgICAgIHRoaXMuc2xpZGVzQXJyYXkgPSB0aGlzLnNsaWRlcy5uYXRpdmVFbGVtZW50LmNoaWxkcmVuO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuc2xpZGVzLm5hdGl2ZUVsZW1lbnQsICd3aWR0aCcsIGAke3RoaXMuc2xpZGVzQXJyYXkubGVuZ3RoICogMTAwfSVgKTtcblxuICAgICAgICBmb3IgKGNvbnN0IHNsaWRlIG9mIHRoaXMuc2xpZGVzQXJyYXkpIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoc2xpZGUsICd3aWR0aCcsIGAkezEwMCAvIHRoaXMuc2xpZGVzQXJyYXkubGVuZ3RofSVgKTtcblxuICAgICAgICAgICAgaWYgKCF0aGlzLmlzSW1hZ2VPbmx5KCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHNsaWRlLCAnbWF4SGVpZ2h0JywgYCR7c2xpZGVIZWlnaHR9cHhgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoc2xpZGUsICdvdmVyZmxvdycsICdhdXRvJyk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyB0byBjYWxjdWxhdGUgdGhlIGNhc2Ugd2hlbiB0aGVyZSBpcyBvbmx5IG9uZSBzbGlkZVxuICAgICAgICBpZiAoIXRoaXMuaXNMYXN0SXRlbVJlYWNoZWQgJiYgdGhpcy5zbGlkZXNBcnJheS5sZW5ndGggPCAyKSB7XG4gICAgICAgICAgICB0aGlzLmlzTGFzdEl0ZW1SZWFjaGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGhhbmRsZVRvdWNoRW5kKGUpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZGlmZmVyZW5jZSA9IC1lLmRlbHRhWDtcblxuICAgICAgICBpZiAoZGlmZmVyZW5jZSA+IDAgJiYgdGhpcy5jdXJyZW50U2xpZGUgPCB0aGlzLnNsaWRlc0FycmF5Lmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFNsaWRlKys7XG4gICAgICAgIH0gZWxzZSBpZiAoZGlmZmVyZW5jZSA8IDAgJiYgdGhpcy5jdXJyZW50U2xpZGUgPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRTbGlkZS0tO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pc0xhc3RJdGVtUmVhY2hlZCA9IHRoaXMuY3VycmVudFNsaWRlID09PSB0aGlzLnNsaWRlc0FycmF5Lmxlbmd0aCAtIDE7XG5cbiAgICAgICAgY29uc3QgdHJhbnNsYXRlUGVyY2VudGFnZSA9IC10aGlzLmN1cnJlbnRTbGlkZSAqIDEwMCAvIHRoaXMuc2xpZGVzQXJyYXkubGVuZ3RoO1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuc2xpZGVzLm5hdGl2ZUVsZW1lbnQsICd0cmFuc2Zvcm0nLCBgdHJhbnNsYXRlWCgke3RyYW5zbGF0ZVBlcmNlbnRhZ2V9JSlgKTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuXG4gICAgICAgIHRoaXMuaXNQcmV2aW91c0J1dHRvblZpc2libGUoKTtcbiAgICAgICAgdGhpcy5pc05leHRCdXR0b25WaXNpYmxlKCk7XG4gICAgfVxuXG4gICAgZ29Ub1NsaWRlKGluZGV4KTogdm9pZCB7XG4gICAgICAgIHRoaXMuY3VycmVudFNsaWRlID0gaW5kZXg7XG4gICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5zbGlkZXMubmF0aXZlRWxlbWVudCxcbiAgICAgICAgICAgICd0cmFuc2Zvcm0nLCBgdHJhbnNsYXRlWCgtJHt0aGlzLmN1cnJlbnRTbGlkZSAqIDEwMCAvIHRoaXMuc2xpZGVzQXJyYXkubGVuZ3RofSUpYCk7XG4gICAgICAgIHRoaXMuaGFuZGxlVG91Y2hFbmQoZXZlbnQpO1xuXG4gICAgICAgIHRoaXMuaXNQcmV2aW91c0J1dHRvblZpc2libGUoKTtcbiAgICAgICAgdGhpcy5pc05leHRCdXR0b25WaXNpYmxlKCk7XG4gICAgfVxuXG4gICAgZ29Ub1ByZXZpb3VzU2xpZGUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRTbGlkZSA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFNsaWRlLS07XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMuc2xpZGVzLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICAgICAgJ3RyYW5zZm9ybScsIGB0cmFuc2xhdGVYKC0ke3RoaXMuY3VycmVudFNsaWRlICogMTAwIC8gdGhpcy5zbGlkZXNBcnJheS5sZW5ndGh9JSlgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaGFuZGxlVG91Y2hFbmQoZXZlbnQpO1xuXG4gICAgICAgIHRoaXMuaXNQcmV2aW91c0J1dHRvblZpc2libGUoKTtcbiAgICAgICAgdGhpcy5pc05leHRCdXR0b25WaXNpYmxlKCk7XG4gICAgfVxuXG4gICAgZ29Ub05leHRTbGlkZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudFNsaWRlIDwgdGhpcy5zbGlkZXNBcnJheS5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRTbGlkZSsrO1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLnNsaWRlcy5uYXRpdmVFbGVtZW50LFxuICAgICAgICAgICAgICAgICd0cmFuc2Zvcm0nLCBgdHJhbnNsYXRlWCgtJHt0aGlzLmN1cnJlbnRTbGlkZSAqIDEwMCAvIHRoaXMuc2xpZGVzQXJyYXkubGVuZ3RofSUpYCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmhhbmRsZVRvdWNoRW5kKGV2ZW50KTtcblxuICAgICAgICB0aGlzLmlzUHJldmlvdXNCdXR0b25WaXNpYmxlKCk7XG4gICAgICAgIHRoaXMuaXNOZXh0QnV0dG9uVmlzaWJsZSgpO1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgaXNQcmV2aW91c0J1dHRvblZpc2libGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2hvd0xlZnRCdG5Bc1ByZXZpb3VzID0gdGhpcy5jdXJyZW50U2xpZGUgPiAwICYmIHRoaXMuaXNQcmV2aW91c0J0bjtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIGlzTmV4dEJ1dHRvblZpc2libGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2hvd1JpZ2h0QnRuID0gdGhpcy5jdXJyZW50U2xpZGUgIT09IHRoaXMuc2xpZGVzQXJyYXkubGVuZ3RoIC0gMSAmJiB0aGlzLmlzTmV4dEJ0bjtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICAgIG9uUmlnaHRCdG5BY3Rpb24oZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNOZXh0QnRuKSB7XG4gICAgICAgICAgICB0aGlzLmdvVG9OZXh0U2xpZGUoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucmlnaHRBY3Rpb25DbGlja2VkLmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIG9uTGFzdFN0ZXBBY3Rpb24oZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5sYXN0U3RlcEFjdGlvbkNsaWNrZWQuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgb25MZWZ0QnRuQWN0aW9uKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzUHJldmlvdXNCdG4pIHtcbiAgICAgICAgICAgIHRoaXMuZ29Ub1ByZXZpb3VzU2xpZGUoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubGVmdEFjdGlvbkNsaWNrZWQuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgaXNJbWFnZU9ubHkoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc0ltYWdlT25seSgpO1xuICAgIH1cblxuICAgIGdldENzc0NsYXNzZXMoKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgcGFnaW5hdGlvbkNsYXNzID0gIXRoaXMucGFnaW5hdGlvbkNvbG9yXG4gICAgICAgICAgICA/ICdwYWdpbmF0aW9uLWNvbG9yLXByaW1hcnknXG4gICAgICAgICAgICA6IGBwYWdpbmF0aW9uLWNvbG9yLSR7dGhpcy5wYWdpbmF0aW9uQ29sb3J9YDtcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICdldWltLXNsaWRlci1pbmZvLXNjcmVlbicsXG4gICAgICAgICAgICB0aGlzLmlzSW1hZ2VPbmx5KCkgPyAnaW1hZ2Utb25seScgOiAnJyxcbiAgICAgICAgICAgIHBhZ2luYXRpb25DbGFzcyxcbiAgICAgICAgXS5qb2luKCcgJykudHJpbSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2lzSW1hZ2VPbmx5ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zbGlkZXNBcnJheS5sZW5ndGggPiAwICYmXG4gICAgICAgICAgICAhZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmV1aW0tc2xpZGVyLWluZm8tc2NyZWVuX190aXRsZScpICYmXG4gICAgICAgICAgICAhZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmV1aW0tc2xpZGVyLWluZm8tc2NyZWVuX19zdWItdGl0bGUnKSAmJlxuICAgICAgICAgICAgIWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5ldWltLXNsaWRlci1pbmZvLXNjcmVlbl9fY29udGVudCcpXG4gICAgfSk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWN0aW9uQnRuc05hbWVzIHtcbiAgICByaWdodEJ0bk5hbWU6IHN0cmluZztcbiAgICBsYXN0U3RlcEFjdGlvbkJ0bk5hbWU6IHN0cmluZztcbiAgICBsZWZ0QnRuTmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFjdGlvbkJ0bnNJY29uc05hbWVzIHtcbiAgICByaWdodEJ0bkljb25OYW1lOiBzdHJpbmc7XG4gICAgbGFzdFN0ZXBBY3Rpb25CdG5JY29uTmFtZTogc3RyaW5nO1xuICAgIGxlZnRCdG5JY29uTmFtZTogc3RyaW5nO1xufVxuIiwiPGRpdiAjc2xpZGVyRWxlbWVudCBjbGFzcz1cImV1aW0tc2xpZGVyLWluZm8tc2NyZWVuX19zbGlkZXItY29udGFpbmVyXCIgPlxuICAgIDxkaXYgI3NsaWRlcyBjbGFzcz1cImV1aW0tc2xpZGVyLWluZm8tc2NyZWVuX19zbGlkZXNcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuXG4gICAgQGlmICghaXNJbWFnZU9ubHkoKSkge1xuICAgIDxkaXYgY2xhc3M9XCJldWltLXNsaWRlci1pbmZvLXNjcmVlbl9fcGFnaW5hdGlvbi1jb250YWluZXJcIj5cbiAgICAgICAgQGlmIChzaG93TGVmdEJ0biB8fCBzaG93UmlnaHRCdG4gfHwgaXNDYXJvdXNlbCB8fCBpc0xhc3RJdGVtUmVhY2hlZCl7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJldWltLXNsaWRlci1pbmZvLXNjcmVlbl9fcGFnaW5hdGlvbi1jb250YWluZXJcIj5cbiAgICAgICAgICAgIEBpZiAoc2hvd0xlZnRCdG4gJiYgIXNob3dMZWZ0QnRuQXNQcmV2aW91cyAmJiAhaXNQcmV2aW91c0J0bikge1xuICAgICAgICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cIm9uTGVmdEJ0bkFjdGlvbigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImV1aW0tc2xpZGVyLWluZm8tc2NyZWVuX19hY3Rpb24tYnV0dG9uIGV1aW0tc2xpZGVyLWluZm8tc2NyZWVuX19hY3Rpb24tYnV0dG9uLS1sZWZ0XCJcbiAgICAgICAgICAgICAgICBmaWxsPVwiY2xlYXJcIj5cbiAgICAgICAgICAgICAgICBAaWYgKGFjdGlvbkJ0bkljb25zTmFtZXMubGVmdEJ0bkljb25OYW1lICE9PSAnJykge1xuICAgICAgICAgICAgICAgICAgICA8aW9uLWljb24gc2xvdD1cInN0YXJ0XCIgW25hbWVdPVwiYWN0aW9uQnRuSWNvbnNOYW1lcy5sZWZ0QnRuSWNvbk5hbWVcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB7e2FjdGlvbkJ0bk5hbWVzLmxlZnRCdG5OYW1lfX1cbiAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoc2hvd0xlZnRCdG5Bc1ByZXZpb3VzKSB7XG4gICAgICAgICAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwib25MZWZ0QnRuQWN0aW9uKCRldmVudClcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZXVpbS1zbGlkZXItaW5mby1zY3JlZW5fX2FjdGlvbi1idXR0b24gZXVpbS1zbGlkZXItaW5mby1zY3JlZW5fX2FjdGlvbi1idXR0b24tLWxlZnRcIlxuICAgICAgICAgICAgICAgIGZpbGw9XCJjbGVhclwiPlxuICAgICAgICAgICAgICAgIEBpZiAoYWN0aW9uQnRuSWNvbnNOYW1lcy5sZWZ0QnRuSWNvbk5hbWUgIT09ICcnKSB7XG4gICAgICAgICAgICAgICAgICAgIDxpb24taWNvbiBzbG90PVwic3RhcnRcIiBbbmFtZV09XCJhY3Rpb25CdG5JY29uc05hbWVzLmxlZnRCdG5JY29uTmFtZVwiPjwvaW9uLWljb24+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHt7YWN0aW9uQnRuTmFtZXMubGVmdEJ0bk5hbWUgfHwgJ2V1aW0uc2xpZGVyLWluZm8tc2NyZWVuLkxFRlQtQlROLU5BTUUnIHwgdHJhbnNsYXRlfX08L2lvbi1idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKGlzQ2Fyb3VzZWwpe1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV1aW0tc2xpZGVyLWluZm8tc2NyZWVuX19wYWdpbmF0aW9uXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gKGNsaWNrKT1cImdvVG9TbGlkZShpKVwiICpuZ0Zvcj1cImxldCBzbGlkZSBvZiBzbGlkZXNBcnJheTsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2FjdGl2ZSc6IGN1cnJlbnRTbGlkZSA9PT0gaSB9XCIgY2xhc3M9XCJldWltLXNsaWRlci1pbmZvLXNjcmVlbl9fc3BhblwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmICghaXNMYXN0SXRlbVJlYWNoZWQgJiYgIWlzTmV4dEJ0biB8fCBpc05leHRCdG4gJiYgc2hvd1JpZ2h0QnRuKSB7XG4gICAgICAgICAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwib25SaWdodEJ0bkFjdGlvbigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImV1aW0tc2xpZGVyLWluZm8tc2NyZWVuX19hY3Rpb24tYnV0dG9uIGV1aW0tc2xpZGVyLWluZm8tc2NyZWVuX19hY3Rpb24tYnV0dG9uLS1yaWdodFwiXG4gICAgICAgICAgICAgICAgZmlsbD1cImNsZWFyXCI+XG4gICAgICAgICAgICAgICAge3thY3Rpb25CdG5OYW1lcy5yaWdodEJ0bk5hbWUgfHwgJ2V1aW0uc2xpZGVyLWluZm8tc2NyZWVuLlJJR0hULUJUTi1OQU1FJyB8IHRyYW5zbGF0ZX19XG5cbiAgICAgICAgICAgICAgICBAaWYgKGFjdGlvbkJ0bkljb25zTmFtZXMucmlnaHRCdG5JY29uTmFtZSAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJlbmRcIiBbbmFtZV09XCJhY3Rpb25CdG5JY29uc05hbWVzLnJpZ2h0QnRuSWNvbk5hbWVcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGlmIChpc0xhc3RJdGVtUmVhY2hlZCkge1xuICAgICAgICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cIm9uTGFzdFN0ZXBBY3Rpb24oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJldWltLXNsaWRlci1pbmZvLXNjcmVlbl9fYWN0aW9uLWJ1dHRvbiBldWltLXNsaWRlci1pbmZvLXNjcmVlbl9fYWN0aW9uLWJ1dHRvbi0tcmlnaHRcIlxuICAgICAgICAgICAgICAgIGZpbGw9XCJjbGVhclwiPlxuICAgICAgICAgICAgICAgIHt7YWN0aW9uQnRuTmFtZXMubGFzdFN0ZXBBY3Rpb25CdG5OYW1lIHx8ICdldWltLnNsaWRlci1pbmZvLXNjcmVlbi5MQVNULVNURVAtQUNUSU9OLUJUTi1OQU1FJyB8IHRyYW5zbGF0ZX19XG5cbiAgICAgICAgICAgICAgICBAaWYgKGFjdGlvbkJ0bkljb25zTmFtZXMubGFzdFN0ZXBBY3Rpb25CdG5JY29uTmFtZSAhPT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJlbmRcIiBbbmFtZV09XCJhY3Rpb25CdG5JY29uc05hbWVzLmxhc3RTdGVwQWN0aW9uQnRuSWNvbk5hbWVcIj48L2lvbi1pY29uPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICA8L2Rpdj5cbiAgICB9XG5cbiAgICBAaWYgKGlzSW1hZ2VPbmx5KCkpIHtcbiAgICA8ZGl2IGNsYXNzPVwiZXVpbS1zbGlkZXItaW5mby1zY3JlZW5fX3BhZ2luYXRpb24tY29udGFpbmVyLS1vdmVyLWltYWdlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJldWltLXNsaWRlci1pbmZvLXNjcmVlbl9fcGFnaW5hdGlvblwiPlxuICAgICAgICAgICAgPHNwYW4gKGNsaWNrKT1cImdvVG9TbGlkZShpKVwiICpuZ0Zvcj1cImxldCBzbGlkZSBvZiBzbGlkZXNBcnJheTsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnYWN0aXZlJzogY3VycmVudFNsaWRlID09PSBpIH1cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZXVpbS1zbGlkZXItaW5mby1zY3JlZW5fX3NwYW5cIiA+PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICB9XG5cbjwvZGl2PlxuIl19
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { getI18nServiceConfig } from '@eui/base';
|
|
2
2
|
export * from '@eui/base';
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
|
-
import { Injectable, booleanAttribute, Input, Directive, numberAttribute, HostBinding, ChangeDetectionStrategy, ViewEncapsulation, Component, NgModule, ViewChild, Inject, EventEmitter, Output, ContentChild, ContentChildren, HostListener, input } from '@angular/core';
|
|
4
|
+
import { Injectable, booleanAttribute, Input, Directive, numberAttribute, HostBinding, ChangeDetectionStrategy, ViewEncapsulation, Component, NgModule, ViewChild, Inject, EventEmitter, Output, ContentChild, ContentChildren, computed, HostListener, input } from '@angular/core';
|
|
5
5
|
import { BehaviorSubject, Subject, startWith, throwError } from 'rxjs';
|
|
6
6
|
import * as i1 from '@ionic/angular';
|
|
7
7
|
import { IonicModule, IonSearchbar } from '@ionic/angular';
|
|
@@ -2331,6 +2331,7 @@ class EuimSliderInfoScreenComponent {
|
|
|
2331
2331
|
}
|
|
2332
2332
|
ngAfterViewInit() {
|
|
2333
2333
|
this.setSliderStyles();
|
|
2334
|
+
this.cdr.detectChanges();
|
|
2334
2335
|
}
|
|
2335
2336
|
ngOnInit() {
|
|
2336
2337
|
const gesture = this.gestureCtrl.create({
|
|
@@ -2431,10 +2432,7 @@ class EuimSliderInfoScreenComponent {
|
|
|
2431
2432
|
this.leftActionClicked.emit(event);
|
|
2432
2433
|
}
|
|
2433
2434
|
isImageOnly() {
|
|
2434
|
-
return
|
|
2435
|
-
!document.querySelector('.euim-slider-info-screen__title') &&
|
|
2436
|
-
!document.querySelector('.euim-slider-info-screen__sub-title') &&
|
|
2437
|
-
!document.querySelector('.euim-slider-info-screen__content'));
|
|
2435
|
+
return this._isImageOnly();
|
|
2438
2436
|
}
|
|
2439
2437
|
getCssClasses() {
|
|
2440
2438
|
const paginationClass = !this.paginationColor
|
|
@@ -2446,6 +2444,12 @@ class EuimSliderInfoScreenComponent {
|
|
|
2446
2444
|
paginationClass,
|
|
2447
2445
|
].join(' ').trim();
|
|
2448
2446
|
}
|
|
2447
|
+
_isImageOnly = computed(() => {
|
|
2448
|
+
return this.slidesArray.length > 0 &&
|
|
2449
|
+
!document.querySelector('.euim-slider-info-screen__title') &&
|
|
2450
|
+
!document.querySelector('.euim-slider-info-screen__sub-title') &&
|
|
2451
|
+
!document.querySelector('.euim-slider-info-screen__content');
|
|
2452
|
+
});
|
|
2449
2453
|
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: EuimSliderInfoScreenComponent, deps: [{ token: i0.Renderer2 }, { token: i1.GestureController }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
2450
2454
|
/** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: EuimSliderInfoScreenComponent, isStandalone: true, selector: "euim-slider-info-screen", inputs: { isCarousel: ["isCarousel", "isCarousel", booleanAttribute], showLeftBtn: ["showLeftBtn", "showLeftBtn", booleanAttribute], showRightBtn: ["showRightBtn", "showRightBtn", booleanAttribute], isPreviousBtn: ["isPreviousBtn", "isPreviousBtn", booleanAttribute], isNextBtn: ["isNextBtn", "isNextBtn", booleanAttribute], paginationColor: "paginationColor", actionBtnNames: "actionBtnNames", actionBtnIconsNames: "actionBtnIconsNames" }, outputs: { rightActionClicked: "rightActionClicked", lastStepActionClicked: "lastStepActionClicked", leftActionClicked: "leftActionClicked" }, host: { listeners: { "window:resize": "onResize($event)" }, properties: { "class": "this.cssClasses" } }, viewQueries: [{ propertyName: "slides", first: true, predicate: ["slides"], descendants: true, static: true }], ngImport: i0, template: "<div #sliderElement class=\"euim-slider-info-screen__slider-container\" >\n <div #slides class=\"euim-slider-info-screen__slides\">\n <ng-content></ng-content>\n </div>\n\n @if (!isImageOnly()) {\n <div class=\"euim-slider-info-screen__pagination-container\">\n @if (showLeftBtn || showRightBtn || isCarousel || isLastItemReached){\n <div class=\"euim-slider-info-screen__pagination-container\">\n @if (showLeftBtn && !showLeftBtnAsPrevious && !isPreviousBtn) {\n <ion-button (click)=\"onLeftBtnAction($event)\"\n class=\"euim-slider-info-screen__action-button euim-slider-info-screen__action-button--left\"\n fill=\"clear\">\n @if (actionBtnIconsNames.leftBtnIconName !== '') {\n <ion-icon slot=\"start\" [name]=\"actionBtnIconsNames.leftBtnIconName\"></ion-icon>\n }\n {{actionBtnNames.leftBtnName}}\n </ion-button>\n }\n @if (showLeftBtnAsPrevious) {\n <ion-button (click)=\"onLeftBtnAction($event)\"\n class=\"euim-slider-info-screen__action-button euim-slider-info-screen__action-button--left\"\n fill=\"clear\">\n @if (actionBtnIconsNames.leftBtnIconName !== '') {\n <ion-icon slot=\"start\" [name]=\"actionBtnIconsNames.leftBtnIconName\"></ion-icon>\n }\n {{actionBtnNames.leftBtnName || 'euim.slider-info-screen.LEFT-BTN-NAME' | translate}}</ion-button>\n }\n @if (isCarousel){\n <div class=\"euim-slider-info-screen__pagination\">\n <span (click)=\"goToSlide(i)\" *ngFor=\"let slide of slidesArray; let i = index\"\n [ngClass]=\"{ 'active': currentSlide === i }\" class=\"euim-slider-info-screen__span\"></span>\n </div>\n }\n @if (!isLastItemReached && !isNextBtn || isNextBtn && showRightBtn) {\n <ion-button (click)=\"onRightBtnAction($event)\"\n class=\"euim-slider-info-screen__action-button euim-slider-info-screen__action-button--right\"\n fill=\"clear\">\n {{actionBtnNames.rightBtnName || 'euim.slider-info-screen.RIGHT-BTN-NAME' | translate}}\n\n @if (actionBtnIconsNames.rightBtnIconName !== '') {\n <ion-icon slot=\"end\" [name]=\"actionBtnIconsNames.rightBtnIconName\"></ion-icon>\n }\n </ion-button>\n }\n\n @if (isLastItemReached) {\n <ion-button (click)=\"onLastStepAction($event)\"\n class=\"euim-slider-info-screen__action-button euim-slider-info-screen__action-button--right\"\n fill=\"clear\">\n {{actionBtnNames.lastStepActionBtnName || 'euim.slider-info-screen.LAST-STEP-ACTION-BTN-NAME' | translate}}\n\n @if (actionBtnIconsNames.lastStepActionBtnIconName !== '') {\n <ion-icon slot=\"end\" [name]=\"actionBtnIconsNames.lastStepActionBtnIconName\"></ion-icon>\n }\n </ion-button>\n }\n </div>\n }\n </div>\n }\n\n @if (isImageOnly()) {\n <div class=\"euim-slider-info-screen__pagination-container--over-image\">\n <div class=\"euim-slider-info-screen__pagination\">\n <span (click)=\"goToSlide(i)\" *ngFor=\"let slide of slidesArray; let i = index\"\n [ngClass]=\"{ 'active': currentSlide === i }\"\n class=\"euim-slider-info-screen__span\" ></span>\n </div>\n </div>\n }\n\n</div>\n", styles: [".euim-slider-info-screen__slider-container{overflow:hidden;position:relative;height:100vh}.euim-slider-info-screen__slides{display:flex;transition:all .5s ease;height:100%;width:100%}.euim-slider-info-screen__slide{width:100%;height:100%}.euim-slider-info-screen__pagination-container--over-image{position:absolute;bottom:20px;left:50%;transform:translate(-50%);display:flex;align-items:center;justify-content:center;z-index:1}.euim-slider-info-screen__pagination-container{position:fixed;bottom:0;left:0;right:0;display:flex;align-items:center;justify-content:center;height:60px;z-index:99}.euim-slider-info-screen__pagination{display:flex}.euim-slider-info-screen__span{width:calc(var(--eui-s-xs) + var(--eui-s-2xs) / 2);height:calc(var(--eui-s-xs) + var(--eui-s-2xs) / 2);border-radius:50%;cursor:pointer;border:1px solid var(--eui-c-primary)}.euim-slider-info-screen__span:not(:last-child){margin-right:var(--eui-s-xs)}.euim-slider-info-screen.pagination-color-primary .euim-slider-info-screen__span{border:1px solid var(--eui-c-primary)!important;background-color:transparent}.euim-slider-info-screen.pagination-color-primary .euim-slider-info-screen__span.active{background-color:var(--eui-c-primary)!important}.euim-slider-info-screen.pagination-color-white .euim-slider-info-screen__span{border:1px solid var(--eui-c-white)!important;background-color:transparent}.euim-slider-info-screen.pagination-color-white .euim-slider-info-screen__span.active{background-color:var(--eui-c-white)!important}.euim-slider-info-screen.pagination-color-success .euim-slider-info-screen__span{border:1px solid var(--eui-c-success-dark)!important;background-color:transparent}.euim-slider-info-screen.pagination-color-success .euim-slider-info-screen__span.active{background-color:var(--eui-c-success-dark)!important}.euim-slider-info-screen.pagination-color-warning .euim-slider-info-screen__span{border:1px solid var(--eui-c-warning)!important;background-color:transparent}.euim-slider-info-screen.pagination-color-warning .euim-slider-info-screen__span.active{background-color:var(--eui-c-warning)!important}.euim-slider-info-screen.pagination-color-info .euim-slider-info-screen__span{border:1px solid var(--eui-c-info)!important;background-color:transparent}.euim-slider-info-screen.pagination-color-info .euim-slider-info-screen__span.active{background-color:var(--eui-c-info)!important}.euim-slider-info-screen.pagination-color-dark .euim-slider-info-screen__span{border:1px solid var(--eui-c-neutral)!important;background-color:transparent}.euim-slider-info-screen.pagination-color-dark .euim-slider-info-screen__span.active{background-color:var(--eui-c-neutral)!important}.euim-slider-info-screen.pagination-color-danger .euim-slider-info-screen__span{border:1px solid var(--eui-c-danger-dark)!important;background-color:transparent}.euim-slider-info-screen.pagination-color-danger .euim-slider-info-screen__span.active{background-color:var(--eui-c-danger-dark)!important}.euim-slider-info-screen__action-button{position:absolute;color:var(--eui-c-primary);font-weight:700;top:50%;transform:translateY(-50%)}.euim-slider-info-screen__action-button::part(native){padding:0 var(--eui-s-m)}.euim-slider-info-screen__action-button--right{right:0;margin:0 var(--eui-s-xs) 0 var(--eui-s-m)}.euim-slider-info-screen__action-button--left{margin:0 var(--eui-s-m) 0 var(--eui-s-xs);left:0}.euim-slider-info-screen__action-button ion-icon{color:var(--eui-c-primary)}.euim-slider-info-screen__title{font:var(--eui-f-xl-bold-compact);color:var(--eui-c-neutral);margin-top:var(--eui-s-l);padding-left:var(--eui-s-l);padding-right:var(--eui-s-l)}.euim-slider-info-screen__sub-title{color:var(--eui-c-neutral-light);padding-left:var(--eui-s-l);padding-right:var(--eui-s-l);font:var(--eui-f-m-compact)}.euim-slider-info-screen__content{color:var(--eui-c-neutral);padding-left:var(--eui-s-l);padding-right:var(--eui-s-l);font:var(--eui-f-m-compact);display:flex;flex-direction:column}.euim-slider-info-screen__content--centered{text-align:center}.euim-slider-info-screen__title+.euim-slider-info-screen__sub-title{margin-top:var(--eui-s-2xs)}.euim-slider-info-screen__sub-title+.euim-slider-info-screen__content,title+.euim-slider-info-screen__content{margin-top:var(--eui-s-m)}.euim-slider-info-screen.image-only .euim-slider-info-screen__slider-container{height:auto}\n"], dependencies: [{ kind: "ngmodule", type: IonicModule }, { kind: "component", type: i1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None });
|
|
2451
2455
|
}
|