oasys-lib 1.61.1 → 1.62.0
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/esm2022/lib/components/carousel/carousel.component.mjs +19 -11
- package/fesm2022/oasys-lib.mjs +18 -10
- package/fesm2022/oasys-lib.mjs.map +1 -1
- package/lib/components/carousel/carousel.component.d.ts +1 -1
- package/lib/components/carousel/carousel.component.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/assets/bloomandwild/variables.css +1 -1
- package/src/assets/bloomon/variables.css +1 -1
- package/src/assets/global/scss-breakpoints.scss +1 -1
|
@@ -70,15 +70,22 @@ export class CarouselComponent {
|
|
|
70
70
|
* Set the scrollbar placement and width based on carouselscrollbarplaceholder and carouselctastack
|
|
71
71
|
*/
|
|
72
72
|
setupScrollbarLayoutProperties() {
|
|
73
|
-
if (this.carousel_pagination
|
|
73
|
+
if (this.carousel_pagination === 'none') {
|
|
74
74
|
return;
|
|
75
75
|
}
|
|
76
76
|
const carouselStack = this.carouselctastack?.nativeElement;
|
|
77
77
|
const scrollbarElement = this.carouselscrollbarplaceholder?.nativeElement;
|
|
78
78
|
const scrollbarHeight = this.document.defaultView.getComputedStyle(document.documentElement).getPropertyValue("--swiper-scrollbar-size");
|
|
79
|
-
if (carouselStack) {
|
|
79
|
+
if (carouselStack && this.carousel_pagination === 'scroll-arrows') {
|
|
80
80
|
this.element?.nativeElement?.style?.setProperty("--ui-carousel-scrollbar-width", `${scrollbarElement?.offsetWidth - parseInt(this.getStyle(carouselStack, 'gap'), 10)}px`);
|
|
81
81
|
this.element?.nativeElement?.style?.setProperty("--ui-carousel-scrollbar-offset-top", `${parseInt(this.getStyle(carouselStack, 'gap'), 10) + (scrollbarElement?.offsetHeight / 2) + (parseInt(scrollbarHeight, 10) / 2)}px`);
|
|
82
|
+
this.element?.nativeElement?.style?.setProperty("--ui-carousel-scrollbar-height", "2px");
|
|
83
|
+
}
|
|
84
|
+
if (carouselStack && this.carousel_pagination === 'scroll-bar') {
|
|
85
|
+
this.element?.nativeElement?.style?.setProperty("--ui-carousel-scrollbar-width", "100%");
|
|
86
|
+
this.element?.nativeElement?.style?.setProperty("--ui-carousel-scrollbar-offset-top", `0px`);
|
|
87
|
+
this.element?.nativeElement?.style?.setProperty("--ui-carousel-scrollbar-height", "4px");
|
|
88
|
+
this.element?.nativeElement?.style?.setProperty("--ui-carousel-scrollbar-left", "0px");
|
|
82
89
|
}
|
|
83
90
|
}
|
|
84
91
|
/**
|
|
@@ -97,7 +104,7 @@ export class CarouselComponent {
|
|
|
97
104
|
grabCursor: true,
|
|
98
105
|
spaceBetween: (parseInt(carouselGap.replace('.', ''), 10)) || 0,
|
|
99
106
|
scrollbar: {
|
|
100
|
-
enabled: this.carousel_pagination === 'scroll-arrows',
|
|
107
|
+
enabled: this.carousel_pagination === 'scroll-arrows' || this.carousel_pagination === 'scroll-bar',
|
|
101
108
|
draggable: true,
|
|
102
109
|
},
|
|
103
110
|
centerInsufficientSlides: this.center_insufficient_slides,
|
|
@@ -116,7 +123,8 @@ export class CarouselComponent {
|
|
|
116
123
|
position: relative;
|
|
117
124
|
top: var(--ui-carousel-scrollbar-offset-top);
|
|
118
125
|
width: var(--ui-carousel-scrollbar-width);
|
|
119
|
-
height:
|
|
126
|
+
height: var(--ui-carousel-scrollbar-height);
|
|
127
|
+
left: ${this.carousel_pagination === 'scroll-bar' ? 'var(--ui-carousel-scrollbar-left)' : '1%'};
|
|
120
128
|
background: ${scrollbarBackgroundColour}
|
|
121
129
|
}
|
|
122
130
|
|
|
@@ -127,7 +135,7 @@ export class CarouselComponent {
|
|
|
127
135
|
breakpoints: {
|
|
128
136
|
0: {
|
|
129
137
|
scrollbar: {
|
|
130
|
-
enabled: this.carousel_pagination === 'scroll-arrows',
|
|
138
|
+
enabled: this.carousel_pagination === 'scroll-arrows' || this.carousel_pagination === 'scroll-bar',
|
|
131
139
|
draggable: true
|
|
132
140
|
},
|
|
133
141
|
slidesPerView: this.carousel_slides_per_view_mobile,
|
|
@@ -138,21 +146,21 @@ export class CarouselComponent {
|
|
|
138
146
|
},
|
|
139
147
|
767: {
|
|
140
148
|
scrollbar: {
|
|
141
|
-
enabled: this.carousel_pagination === 'scroll-arrows',
|
|
149
|
+
enabled: this.carousel_pagination === 'scroll-arrows' || this.carousel_pagination === 'scroll-bar',
|
|
142
150
|
draggable: true
|
|
143
151
|
},
|
|
144
152
|
slidesPerView: this.carousel_slides_per_view_tablet
|
|
145
153
|
},
|
|
146
154
|
1080: {
|
|
147
155
|
scrollbar: {
|
|
148
|
-
enabled: this.carousel_pagination === 'scroll-arrows',
|
|
156
|
+
enabled: this.carousel_pagination === 'scroll-arrows' || this.carousel_pagination === 'scroll-bar',
|
|
149
157
|
draggable: true
|
|
150
158
|
},
|
|
151
159
|
slidesPerView: this.carousel_slides_per_view_laptop
|
|
152
160
|
},
|
|
153
161
|
1440: {
|
|
154
162
|
scrollbar: {
|
|
155
|
-
enabled: this.carousel_pagination === 'scroll-arrows',
|
|
163
|
+
enabled: this.carousel_pagination === 'scroll-arrows' || this.carousel_pagination === 'scroll-bar',
|
|
156
164
|
draggable: true
|
|
157
165
|
},
|
|
158
166
|
slidesPerView: this.carousel_slides_per_view_desktop
|
|
@@ -183,11 +191,11 @@ export class CarouselComponent {
|
|
|
183
191
|
this.swiper.nativeElement.swiper.slidePrev();
|
|
184
192
|
}
|
|
185
193
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: CarouselComponent, deps: [{ token: i1.TokenService }, { token: DOCUMENT }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
186
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.10", type: CarouselComponent, selector: "ui-carousel", inputs: { rewind: "rewind", carousel_overflow: "carousel_overflow", carousel_gap: "carousel_gap", carousel_pagination: "carousel_pagination", carousel_slides_per_view_desktop: "carousel_slides_per_view_desktop", carousel_slides_per_view_laptop: "carousel_slides_per_view_laptop", carousel_slides_per_view_tablet: "carousel_slides_per_view_tablet", carousel_slides_per_view_mobile: "carousel_slides_per_view_mobile", carousel_rows_per_row_mobile: "carousel_rows_per_row_mobile", carousel_loading: "carousel_loading", carousel_free_mode: "carousel_free_mode", center_insufficient_slides: "center_insufficient_slides" }, viewQueries: [{ propertyName: "swiper", first: true, predicate: ["swiper"], descendants: true, static: true }, { propertyName: "carouselscrollbarplaceholder", first: true, predicate: ["carouselscrollbarplaceholder"], descendants: true, read: ElementRef }, { propertyName: "carouselctastack", first: true, predicate: ["carouselctastack"], descendants: true, read: ElementRef }], ngImport: i0, template: "<ui-box\nclass=\"ui-carousel\"\n[ngClass]=\"{'ui-carousel-overflow': carousel_overflow}\"\nbox_align_y=\"center\"\nbox_space=\"none\"\nbox_content_fill_width=\"true\"\nbox_background=\"transparent\">\n\n <ui-stack #carouselctastack>\n <!-- Swiper WebComponent-->\n <swiper-container\n #swiper\n init=\"false\"\n touch-start-prevent-default=\"false\"\n prevent-clicks-propagation=\"true\">\n <ng-content></ng-content>\n </swiper-container>\n\n <!-- Custom navigation buttons -->\n <ui-stack stack_direction=\"x\" stack_align=\"center\" *ngIf=\"carousel_pagination === 'scroll-arrows'\">\n <div class=\"ui-carousel-scrollbar-placeholder\" #carouselscrollbarplaceholder></div>\n <ui-box\n box_space=\"none\"\n box_fill_mode=\"fit\"\n [box_space_right]=\"{mobile: 'tight', tablet: 'none', laptop: 'none', desktop: 'none'}\"\n box_background=\"transparent\">\n <ui-stack\n *ngIf=\"!(swiper?.swiper?.isBeginning && swiper?.swiper?.isEnd)\"\n stack_direction=\"x\"\n stack_gap=\"near\">\n <!-- Previous button-->\n <ui-button\n class=\"ui-carousel__previous\"\n button_size=\"large\"\n button_icon_placement=\"iconOnly\"\n button_icon=\"arrow-left\"\n button_type=\"secondary\"\n (clicked)=\"previousSlide()\"> Prevous slide\n </ui-button>\n <!-- Next button-->\n <ui-button\n class=\"ui-carousel__next\"\n button_size=\"large\"\n button_icon_placement=\"iconOnly\"\n button_icon=\"arrow-right\"\n button_type=\"secondary\"\n (clicked)=\"nextSlide()\"> Next slide\n </ui-button>\n </ui-stack>\n </ui-box>\n </ui-stack>\n </ui-stack>\n</ui-box>\n", styles: [":root{--swiper-scrollbar-size: 4px}.ui-carousel{touch-action:manipulation;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.ui-carousel swiper-container{width:100%}.ui-carousel.ui-carousel-overflow swiper-container{overflow:visible!important}.ui-carousel .ui-carousel-scrollbar-placeholder{width:100%;display:flex;align-self:stretch}.ui-carousel swiper-slide img{-webkit-user-drag:none}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.OasysButtonComponent, selector: "ui-button", inputs: ["button_icon", "button_icon_placement", "button_size", "button_full_width", "button_type", "button_event_type", "button_disabled", "button_text_nowrap", "href"], outputs: ["clicked"] }, { kind: "component", type: i4.LayoutBoxComponent, selector: "ui-box", inputs: ["box_space", "box_space_top", "box_space_right", "box_space_bottom", "box_space_left", "box_align_x", "box_align_y", "box_fill_mode", "box_background", "box_content_fill_width", "box_border_color", "box_border_width", "box_border_style", "box_border_radius"] }, { kind: "component", type: i5.LayoutStackComponent, selector: "ui-stack", inputs: ["stack_gap", "stack_align", "stack_direction", "stack_distribute", "stack_wrap", "stack_collapse_below"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
194
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.10", type: CarouselComponent, selector: "ui-carousel", inputs: { rewind: "rewind", carousel_overflow: "carousel_overflow", carousel_gap: "carousel_gap", carousel_pagination: "carousel_pagination", carousel_slides_per_view_desktop: "carousel_slides_per_view_desktop", carousel_slides_per_view_laptop: "carousel_slides_per_view_laptop", carousel_slides_per_view_tablet: "carousel_slides_per_view_tablet", carousel_slides_per_view_mobile: "carousel_slides_per_view_mobile", carousel_rows_per_row_mobile: "carousel_rows_per_row_mobile", carousel_loading: "carousel_loading", carousel_free_mode: "carousel_free_mode", center_insufficient_slides: "center_insufficient_slides" }, viewQueries: [{ propertyName: "swiper", first: true, predicate: ["swiper"], descendants: true, static: true }, { propertyName: "carouselscrollbarplaceholder", first: true, predicate: ["carouselscrollbarplaceholder"], descendants: true, read: ElementRef }, { propertyName: "carouselctastack", first: true, predicate: ["carouselctastack"], descendants: true, read: ElementRef }], ngImport: i0, template: "<ui-box\nclass=\"ui-carousel\"\n[ngClass]=\"{'ui-carousel-overflow': carousel_overflow}\"\nbox_align_y=\"center\"\nbox_space=\"none\"\nbox_content_fill_width=\"true\"\nbox_background=\"transparent\">\n\n <ui-stack #carouselctastack>\n <!-- Swiper WebComponent-->\n <swiper-container\n #swiper\n init=\"false\"\n touch-start-prevent-default=\"false\"\n prevent-clicks-propagation=\"true\">\n <ng-content></ng-content>\n </swiper-container>\n\n <!-- Custom navigation buttons -->\n <ui-stack stack_direction=\"x\" stack_align=\"center\" *ngIf=\"carousel_pagination === 'scroll-arrows' || carousel_pagination === 'scroll-bar'\">\n <div class=\"ui-carousel-scrollbar-placeholder\" #carouselscrollbarplaceholder></div>\n <ui-box\n *ngIf=\"carousel_pagination === 'scroll-arrows'\"\n box_space=\"none\"\n box_fill_mode=\"fit\"\n [box_space_right]=\"{mobile: 'tight', tablet: 'none', laptop: 'none', desktop: 'none'}\"\n box_background=\"transparent\">\n <ui-stack\n *ngIf=\"!(swiper?.swiper?.isBeginning && swiper?.swiper?.isEnd)\"\n stack_direction=\"x\"\n stack_gap=\"near\">\n <!-- Previous button-->\n <ui-button\n class=\"ui-carousel__previous\"\n button_size=\"large\"\n button_icon_placement=\"iconOnly\"\n button_icon=\"arrow-left\"\n button_type=\"secondary\"\n (clicked)=\"previousSlide()\"> Prevous slide\n </ui-button>\n <!-- Next button-->\n <ui-button\n class=\"ui-carousel__next\"\n button_size=\"large\"\n button_icon_placement=\"iconOnly\"\n button_icon=\"arrow-right\"\n button_type=\"secondary\"\n (clicked)=\"nextSlide()\"> Next slide\n </ui-button>\n </ui-stack>\n </ui-box>\n </ui-stack>\n </ui-stack>\n</ui-box>\n", styles: [":root{--swiper-scrollbar-size: 4px}.ui-carousel{touch-action:manipulation;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.ui-carousel swiper-container{width:100%}.ui-carousel.ui-carousel-overflow swiper-container{overflow:visible!important}.ui-carousel .ui-carousel-scrollbar-placeholder{width:100%;display:flex;align-self:stretch}.ui-carousel swiper-slide img{-webkit-user-drag:none}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.OasysButtonComponent, selector: "ui-button", inputs: ["button_icon", "button_icon_placement", "button_size", "button_full_width", "button_type", "button_event_type", "button_disabled", "button_text_nowrap", "href"], outputs: ["clicked"] }, { kind: "component", type: i4.LayoutBoxComponent, selector: "ui-box", inputs: ["box_space", "box_space_top", "box_space_right", "box_space_bottom", "box_space_left", "box_align_x", "box_align_y", "box_fill_mode", "box_background", "box_content_fill_width", "box_border_color", "box_border_width", "box_border_style", "box_border_radius"] }, { kind: "component", type: i5.LayoutStackComponent, selector: "ui-stack", inputs: ["stack_gap", "stack_align", "stack_direction", "stack_distribute", "stack_wrap", "stack_collapse_below"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
187
195
|
}
|
|
188
196
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: CarouselComponent, decorators: [{
|
|
189
197
|
type: Component,
|
|
190
|
-
args: [{ selector: 'ui-carousel', encapsulation: ViewEncapsulation.None, template: "<ui-box\nclass=\"ui-carousel\"\n[ngClass]=\"{'ui-carousel-overflow': carousel_overflow}\"\nbox_align_y=\"center\"\nbox_space=\"none\"\nbox_content_fill_width=\"true\"\nbox_background=\"transparent\">\n\n <ui-stack #carouselctastack>\n <!-- Swiper WebComponent-->\n <swiper-container\n #swiper\n init=\"false\"\n touch-start-prevent-default=\"false\"\n prevent-clicks-propagation=\"true\">\n <ng-content></ng-content>\n </swiper-container>\n\n <!-- Custom navigation buttons -->\n <ui-stack stack_direction=\"x\" stack_align=\"center\" *ngIf=\"carousel_pagination === 'scroll-arrows'\">\n <div class=\"ui-carousel-scrollbar-placeholder\" #carouselscrollbarplaceholder></div>\n <ui-box\n box_space=\"none\"\n box_fill_mode=\"fit\"\n [box_space_right]=\"{mobile: 'tight', tablet: 'none', laptop: 'none', desktop: 'none'}\"\n box_background=\"transparent\">\n <ui-stack\n *ngIf=\"!(swiper?.swiper?.isBeginning && swiper?.swiper?.isEnd)\"\n stack_direction=\"x\"\n stack_gap=\"near\">\n <!-- Previous button-->\n <ui-button\n class=\"ui-carousel__previous\"\n button_size=\"large\"\n button_icon_placement=\"iconOnly\"\n button_icon=\"arrow-left\"\n button_type=\"secondary\"\n (clicked)=\"previousSlide()\"> Prevous slide\n </ui-button>\n <!-- Next button-->\n <ui-button\n class=\"ui-carousel__next\"\n button_size=\"large\"\n button_icon_placement=\"iconOnly\"\n button_icon=\"arrow-right\"\n button_type=\"secondary\"\n (clicked)=\"nextSlide()\"> Next slide\n </ui-button>\n </ui-stack>\n </ui-box>\n </ui-stack>\n </ui-stack>\n</ui-box>\n", styles: [":root{--swiper-scrollbar-size: 4px}.ui-carousel{touch-action:manipulation;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.ui-carousel swiper-container{width:100%}.ui-carousel.ui-carousel-overflow swiper-container{overflow:visible!important}.ui-carousel .ui-carousel-scrollbar-placeholder{width:100%;display:flex;align-self:stretch}.ui-carousel swiper-slide img{-webkit-user-drag:none}\n"] }]
|
|
198
|
+
args: [{ selector: 'ui-carousel', encapsulation: ViewEncapsulation.None, template: "<ui-box\nclass=\"ui-carousel\"\n[ngClass]=\"{'ui-carousel-overflow': carousel_overflow}\"\nbox_align_y=\"center\"\nbox_space=\"none\"\nbox_content_fill_width=\"true\"\nbox_background=\"transparent\">\n\n <ui-stack #carouselctastack>\n <!-- Swiper WebComponent-->\n <swiper-container\n #swiper\n init=\"false\"\n touch-start-prevent-default=\"false\"\n prevent-clicks-propagation=\"true\">\n <ng-content></ng-content>\n </swiper-container>\n\n <!-- Custom navigation buttons -->\n <ui-stack stack_direction=\"x\" stack_align=\"center\" *ngIf=\"carousel_pagination === 'scroll-arrows' || carousel_pagination === 'scroll-bar'\">\n <div class=\"ui-carousel-scrollbar-placeholder\" #carouselscrollbarplaceholder></div>\n <ui-box\n *ngIf=\"carousel_pagination === 'scroll-arrows'\"\n box_space=\"none\"\n box_fill_mode=\"fit\"\n [box_space_right]=\"{mobile: 'tight', tablet: 'none', laptop: 'none', desktop: 'none'}\"\n box_background=\"transparent\">\n <ui-stack\n *ngIf=\"!(swiper?.swiper?.isBeginning && swiper?.swiper?.isEnd)\"\n stack_direction=\"x\"\n stack_gap=\"near\">\n <!-- Previous button-->\n <ui-button\n class=\"ui-carousel__previous\"\n button_size=\"large\"\n button_icon_placement=\"iconOnly\"\n button_icon=\"arrow-left\"\n button_type=\"secondary\"\n (clicked)=\"previousSlide()\"> Prevous slide\n </ui-button>\n <!-- Next button-->\n <ui-button\n class=\"ui-carousel__next\"\n button_size=\"large\"\n button_icon_placement=\"iconOnly\"\n button_icon=\"arrow-right\"\n button_type=\"secondary\"\n (clicked)=\"nextSlide()\"> Next slide\n </ui-button>\n </ui-stack>\n </ui-box>\n </ui-stack>\n </ui-stack>\n</ui-box>\n", styles: [":root{--swiper-scrollbar-size: 4px}.ui-carousel{touch-action:manipulation;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.ui-carousel swiper-container{width:100%}.ui-carousel.ui-carousel-overflow swiper-container{overflow:visible!important}.ui-carousel .ui-carousel-scrollbar-placeholder{width:100%;display:flex;align-self:stretch}.ui-carousel swiper-slide img{-webkit-user-drag:none}\n"] }]
|
|
191
199
|
}], ctorParameters: function () { return [{ type: i1.TokenService }, { type: Document, decorators: [{
|
|
192
200
|
type: Inject,
|
|
193
201
|
args: [DOCUMENT]
|
|
@@ -225,4 +233,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.10", ngImpo
|
|
|
225
233
|
}], center_insufficient_slides: [{
|
|
226
234
|
type: Input
|
|
227
235
|
}] } });
|
|
228
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Fyb3VzZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb2FzeXMtbGliL3NyYy9saWIvY29tcG9uZW50cy9jYXJvdXNlbC9jYXJvdXNlbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vYXN5cy1saWIvc3JjL2xpYi9jb21wb25lbnRzL2Nhcm91c2VsL2Nhcm91c2VsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBRUwsU0FBUyxFQUNULGlCQUFpQixFQUNqQixNQUFNLEVBQ0ksTUFBTSxlQUFlLENBQUM7Ozs7Ozs7QUFJbEMsb0VBQW9FO0FBUXBFLE1BQU0sT0FBTyxpQkFBaUI7SUEwQjVCLFlBQW9CLFlBQTBCLEVBQTRCLFFBQWtCLEVBQVUsT0FBbUI7UUFBckcsaUJBQVksR0FBWixZQUFZLENBQWM7UUFBNEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUFVLFlBQU8sR0FBUCxPQUFPLENBQVk7UUFwQnpILHNGQUFzRjtRQUM3RSxXQUFNLEdBQVksS0FBSyxDQUFDO1FBRXhCLHNCQUFpQixHQUFZLEtBQUssQ0FBQztRQUVuQyxpQkFBWSxHQUEwQyxTQUFTLENBQUM7UUFFaEUsd0JBQW1CLEdBQTZCLE1BQU0sQ0FBQztRQUV2RCxxQ0FBZ0MsR0FBVyxDQUFDLENBQUM7UUFDN0Msb0NBQStCLEdBQVcsQ0FBQyxDQUFDO1FBQzVDLG9DQUErQixHQUFXLEdBQUcsQ0FBQztRQUM5QyxvQ0FBK0IsR0FBVyxJQUFJLENBQUM7UUFFL0MsaUNBQTRCLEdBQVUsQ0FBQyxDQUFBLENBQUMscUVBQXFFO1FBRTdHLHFCQUFnQixHQUFxQixNQUFNLENBQUMsQ0FBQyx3RkFBd0Y7UUFDckksdUJB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QWtCO3NCQUExQixLQUFLO2dCQUNHLDBCQUEwQjtzQkFBbEMsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgSW5qZWN0LFxuICBPbkRlc3Ryb3l9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3dpcGVyT3B0aW9ucyB9IGZyb20gJ3N3aXBlcic7XG5pbXBvcnQgeyBUb2tlblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90b2tlbi5zZXJ2aWNlJztcblxuLyogVGhpcyBjb21wb25lbnQgd3JhcHMgYXJvdW5kIHRoZSBzd2lwZXIuanMgbGlicmFyeSBXZWJDb21wb25lbnQgKi9cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndWktY2Fyb3VzZWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2Fyb3VzZWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jYXJvdXNlbC5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIENhcm91c2VsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgLy8gVGhlIHN3aXBlciBpbnN0YW5jZVxuICBAVmlld0NoaWxkKFwic3dpcGVyXCIsIHsgc3RhdGljOiB0cnVlIH0pIHN3aXBlcjogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZChcImNhcm91c2Vsc2Nyb2xsYmFycGxhY2Vob2xkZXJcIiwgeyBzdGF0aWM6IGZhbHNlLCByZWFkOiBFbGVtZW50UmVmIH0pIGNhcm91c2Vsc2Nyb2xsYmFycGxhY2Vob2xkZXI6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoXCJjYXJvdXNlbGN0YXN0YWNrXCIsIHsgc3RhdGljOiBmYWxzZSwgcmVhZDogRWxlbWVudFJlZiB9KSBjYXJvdXNlbGN0YXN0YWNrOiBFbGVtZW50UmVmO1xuXG4gIC8vIFJld2luZHMgdGhlIHNsaWRlcyBiYWNrIHRvIHRoZSBzdGFydCB3aGVuIHRoZSB1c2VyIHJlYWNoZXMgdGhlIGVuZCB3aGVuIHNldCB0byB0cnVlXG4gIEBJbnB1dCgpIHJld2luZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIGNhcm91c2VsX292ZXJmbG93OiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KCkgY2Fyb3VzZWxfZ2FwOiAnZGVmYXVsdCcgfCAndGlnaHQnIHwgJ25lYXInIHwgJ25vbmUnID0gJ2RlZmF1bHQnO1xuXG4gIEBJbnB1dCgpIGNhcm91c2VsX3BhZ2luYXRpb246ICdzY3JvbGwtYXJyb3dzJyB8ICdub25lJyA9ICdub25lJztcblxuICBASW5wdXQoKSBjYXJvdXNlbF9zbGlkZXNfcGVyX3ZpZXdfZGVza3RvcDogbnVtYmVyID0gNDtcbiAgQElucHV0KCkgY2Fyb3VzZWxfc2xpZGVzX3Blcl92aWV3X2xhcHRvcDogbnVtYmVyID0gMztcbiAgQElucHV0KCkgY2Fyb3VzZWxfc2xpZGVzX3Blcl92aWV3X3RhYmxldDogbnVtYmVyID0gMi41O1xuICBASW5wdXQoKSBjYXJvdXNlbF9zbGlkZXNfcGVyX3ZpZXdfbW9iaWxlOiBudW1iZXIgPSAxLjI1O1xuXG4gIEBJbnB1dCgpIGNhcm91c2VsX3Jvd3NfcGVyX3Jvd19tb2JpbGU6IDEgfCAyID0gMSAvLyBSZXF1aXJlZCBmb3IgQ0FURUdPUllfQ0FSRCBleHBlcmltZW50LiBSZW1vdmUgaWYgZXhwZXJpbWVudCBmYWlscy5cblxuICBASW5wdXQoKSBjYXJvdXNlbF9sb2FkaW5nOiAnbGF6eScgfCAnZWFnZXInID0gJ2xhenknOyAvLyBJZiB3ZSBkb24ndCBoYXZlIG11bHRpcGxlIGNhcm91c2VscyBvbiBwYWdlIGFuZCB3YW50IHRvIHByaW9yaXRpc2UgVUkgbG9hZGluZyBvbiB0aW1lXG4gIEBJbnB1dCgpIGNhcm91c2VsX2ZyZWVfbW9kZTogYm9vbGVhbiA9IGZhbHNlIC8vIEVuYWJsZXMgc2Nyb2xsaW5nIHdpdGggbW91c2V3aGVlbCAvIHNtb290aGVyIG1vbWVudHVtIHN3aXBpbmcgZXhwZXJpZW5jZVxuICBASW5wdXQoKSBjZW50ZXJfaW5zdWZmaWNpZW50X3NsaWRlczogYm9vbGVhbiA9IHRydWUgLy8gQ2VudGVycyB0aGUgc2xpZGVzIGlmIHRoZXJlIGFyZSBub3QgZW5vdWdoIHRvIGZpbGwgdGhlIHNwYWNlXG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSB0b2tlblNlcnZpY2U6IFRva2VuU2VydmljZSwgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBkb2N1bWVudDogRG9jdW1lbnQsIHByaXZhdGUgZWxlbWVudDogRWxlbWVudFJlZikge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZih0aGlzLmNhcm91c2VsX2xvYWRpbmcgPT09ICdsYXp5Jyl7XG4gICAgICB0aGlzLnNldFVwSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbml0U3dpcGVyKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNldCB1cCB0aGUgaW50ZXJzZWN0aW9uIG9ic2VydmVyIHdpdGggdGhlIHJlbGV2YW50IG9wdGlvbnNcbiAgICovXG4gIHNldFVwSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKSB7XG4gICAgLy8gU2V0IEludGVyc2VjdGlvbk9ic2VydmVyIG9wdGlvbnNcbiAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgcm9vdDogbnVsbCxcbiAgICAgIHJvb3RNYXJnaW46ICcwcHgnLFxuICAgICAgdGhyZXNob2xkOiAwLjUsXG4gICAgICBvbmNlOiB0cnVlXG4gICAgfVxuICAgIC8vIFNldCB1cCB0aGUgSW50ZXJzZWN0aW9uT2JzZXJ2ZXJcbiAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcih0aGlzLm9uSW50ZXJzZWN0aW9uLmJpbmQodGhpcyksIG9wdGlvbnMpO1xuICAgIG9ic2VydmVyLm9ic2VydmUodGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgZnVuY3Rpb24gZ2V0cyBjYWxsZWQganVzdCBiZWZvcmUgdGhlIHVzZXIgc2Nyb2xscyB0aGlzIGNvbXBvbmVudCBpbnRvIHZpZXdcbiAgICogQHBhcmFtIGVudHJpZXMgLSBBbiBhcnJheSBvZiBpbnRlcnN3ZWN0aW9uIG9ic2VydmVyIGVudHJpZXNcbiAgICogQHBhcmFtIG9ic2VydmVyIC0gSW50ZXJzZWN0aW9uIG9ic2VydmVyXG4gICAqL1xuICBvbkludGVyc2VjdGlvbihlbnRyaWVzOiBJbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5W10sIG9ic2VydmVyOiBJbnRlcnNlY3Rpb25PYnNlcnZlcikge1xuICAgICAgZW50cmllcy5mb3JFYWNoKGVudHJ5ID0+IHtcbiAgICAgICAgaWYoZW50cnkuaXNJbnRlcnNlY3RpbmcpIHtcbiAgICAgICAgICAvLyBJbml0aWFsaXNlIHN3aXBlclxuICAgICAgICAgIHRoaXMuaW5pdFN3aXBlcigpO1xuICAgICAgICAgIG9ic2VydmVyLnVub2JzZXJ2ZShlbnRyeS50YXJnZXQpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gIH1cblxuICBnZXRTdHlsZShlbGVtZW50LCBzdHlsZSk6IHN0cmluZyB7XG5cbiAgICByZXR1cm4gdGhpcy5kb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoc3R5bGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgc2Nyb2xsYmFyIHBsYWNlbWVudCBhbmQgd2lkdGggYmFzZWQgb24gY2Fyb3VzZWxzY3JvbGxiYXJwbGFjZWhvbGRlciBhbmQgY2Fyb3VzZWxjdGFzdGFja1xuICAgKi9cbiAgc2V0dXBTY3JvbGxiYXJMYXlvdXRQcm9wZXJ0aWVzKCk6IHZvaWQge1xuICAgIGlmKHRoaXMuY2Fyb3VzZWxfcGFnaW5hdGlvbiAhPT0gJ3Njcm9sbC1hcnJvd3MnKXtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjYXJvdXNlbFN0YWNrOiBIVE1MRWxlbWVudCA9IHRoaXMuY2Fyb3VzZWxjdGFzdGFjaz8ubmF0aXZlRWxlbWVudDtcbiAgICBjb25zdCBzY3JvbGxiYXJFbGVtZW50OiBIVE1MRWxlbWVudCA9IHRoaXMuY2Fyb3VzZWxzY3JvbGxiYXJwbGFjZWhvbGRlcj8ubmF0aXZlRWxlbWVudDtcblxuICAgIGNvbnN0IHNjcm9sbGJhckhlaWdodCA9IHRoaXMuZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpLmdldFByb3BlcnR5VmFsdWUoXCItLXN3aXBlci1zY3JvbGxiYXItc2l6ZVwiKTtcblxuICAgIGlmKGNhcm91c2VsU3RhY2spe1xuICAgIHRoaXMuZWxlbWVudD8ubmF0aXZlRWxlbWVudD8uc3R5bGU/LnNldFByb3BlcnR5KFxuICAgICAgXCItLXVpLWNhcm91c2VsLXNjcm9sbGJhci13aWR0aFwiLCBgJHtzY3JvbGxiYXJFbGVtZW50Py5vZmZzZXRXaWR0aCAtIHBhcnNlSW50KHRoaXMuZ2V0U3R5bGUoY2Fyb3VzZWxTdGFjaywgJ2dhcCcpLCAxMCl9cHhgXG4gICAgKTtcblxuICAgIHRoaXMuZWxlbWVudD8ubmF0aXZlRWxlbWVudD8uc3R5bGU/LnNldFByb3BlcnR5KFxuICAgICAgXCItLXVpLWNhcm91c2VsLXNjcm9sbGJhci1vZmZzZXQtdG9wXCIsIGAke3BhcnNlSW50KHRoaXMuZ2V0U3R5bGUoY2Fyb3VzZWxTdGFjaywgJ2dhcCcpLCAxMCkgKyAoc2Nyb2xsYmFyRWxlbWVudD8ub2Zmc2V0SGVpZ2h0IC8gMikgKyAocGFyc2VJbnQoc2Nyb2xsYmFySGVpZ2h0LCAxMCkgLyAyKX1weGBcbiAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGR5bmFtaWMgc3dpcGVyIHBhcmFtcyBhbmQgaW5pdGlhbGlzZSB0aGUgc3dpcGVyIGluc3RhbmNlXG4gICAqL1xuICBpbml0U3dpcGVyKCk6IHZvaWQge1xuICAgIC8vIENvbG91ciBvdmVyaWRlc1xuICAgIGNvbnN0IHNjcm9sbGJhckJhY2tncm91bmRDb2xvdXIgPSB0aGlzLnRva2VuU2VydmljZS5nZXRUb2tlblZhbHVlKCctLW9hc3lzLWNvbG9yLWxpbmVuLWdyZXktMjAwJyk7XG4gICAgY29uc3Qgc2Nyb2xsYmFyU2xpZGVyQ29sb3VyID0gdGhpcy50b2tlblNlcnZpY2UuZ2V0VG9rZW5WYWx1ZSgnLS1vYXN5cy1jb2xvci1icmFuZC1mb3JlZ3JvdW5kLXByaW1hcnknKTtcblxuICAgIC8vIHN3aXBlciBlbGVtZW50XG4gICAgY29uc3Qgc3dpcGVyRWwgPSB0aGlzLnN3aXBlci5uYXRpdmVFbGVtZW50O1xuXG4gICAgY29uc3QgY2Fyb3VzZWxHYXAgPSB0aGlzLnRva2VuU2VydmljZS5nZXRUb2tlblZhbHVlKGAtLW9hc3lzLXNwYWNpbmctJHt0aGlzLmNhcm91c2VsX2dhcH1gKTtcblxuICAgIC8vIHN3aXBlciBwYXJhbWV0ZXJzXG4gICAgY29uc3Qgc3dpcGVyUGFyYW1zOiBTd2lwZXJPcHRpb25zID0ge1xuICAgICAgcmV3aW5kOiB0aGlzLnJld2luZCxcbiAgICAgIGdyYWJDdXJzb3I6IHRydWUsXG4gICAgICBzcGFjZUJldHdlZW46IChwYXJzZUludChjYXJvdXNlbEdhcC5yZXBsYWNlKCcuJywgJycpLCAxMCkpIHx8IDAsXG4gICAgICBzY3JvbGxiYXI6IHtcbiAgICAgICAgZW5hYmxlZDogdGhpcy5jYXJvdXNlbF9wYWdpbmF0aW9uID09PSAnc2Nyb2xsLWFycm93cycsXG4gICAgICAgIGRyYWdnYWJsZTogdHJ1ZSxcbiAgICAgIH0sXG4gICAgICBjZW50ZXJJbnN1ZmZpY2llbnRTbGlkZXM6IHRoaXMuY2VudGVyX2luc3VmZmljaWVudF9zbGlkZXMsXG4gICAgICBmcmVlTW9kZTogdGhpcy5jYXJvdXNlbF9mcmVlX21vZGUgPyB7XG4gICAgICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgICAgIHN0aWNreTogdHJ1ZSxcbiAgICAgICAgbW9tZW50dW1WZWxvY2l0eVJhdGlvOiAwLjc1LFxuICAgICAgICBtb21lbnR1bVJhdGlvOiAwLjc1XG4gICAgICB9IDogZmFsc2UsXG4gICAgICBtb3VzZXdoZWVsOiB0aGlzLmNhcm91c2VsX2ZyZWVfbW9kZSA/IHtcbiAgICAgICAgZm9yY2VUb0F4aXM6IHRydWVcbiAgICAgIH06IGZhbHNlLFxuICAgICAgaW5qZWN0U3R5bGVzOiBbXG4gICAgICAgIGBcbiAgICAgICAgLnN3aXBlci1zY3JvbGxiYXIuc3dpcGVyLXNjcm9sbGJhci1ob3Jpem9udGFsIHtcbiAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgdG9wOiB2YXIoLS11aS1jYXJvdXNlbC1zY3JvbGxiYXItb2Zmc2V0LXRvcCk7XG4gICAgICAgICAgd2lkdGg6IHZhcigtLXVpLWNhcm91c2VsLXNjcm9sbGJhci13aWR0aCk7XG4gICAgICAgICAgaGVpZ2h0OiAycHg7XG4gICAgICAgICAgYmFja2dyb3VuZDogJHtzY3JvbGxiYXJCYWNrZ3JvdW5kQ29sb3VyfVxuICAgICAgICB9XG5cbiAgICAgICAgLnN3aXBlci1zY3JvbGxiYXItZHJhZyB7XG4gICAgICAgICAgYmFja2dyb3VuZDogJHtzY3JvbGxiYXJTbGlkZXJDb2xvdXJ9XG4gICAgICAgIH1gLFxuICAgICAgXSxcbiAgICAgIGJyZWFrcG9pbnRzOiB7XG4gICAgICAgIDA6IHtcbiAgICAgICAgICBzY3JvbGxiYXI6IHtcbiAgICAgICAgICAgIGVuYWJsZWQ6IHRoaXMuY2Fyb3VzZWxfcGFnaW5hdGlvbiA9PT0gJ3Njcm9sbC1hcnJvd3MnLFxuICAgICAgICAgICAgZHJhZ2dhYmxlOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzbGlkZXNQZXJWaWV3OiB0aGlzLmNhcm91c2VsX3NsaWRlc19wZXJfdmlld19tb2JpbGUsXG4gICAgICAgICAgZ3JpZDoge1xuICAgICAgICAgICAgcm93czogdGhpcy5jYXJvdXNlbF9yb3dzX3Blcl9yb3dfbW9iaWxlLFxuICAgICAgICAgICAgZmlsbDogXCJyb3dcIixcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICA3Njc6IHtcbiAgICAgICAgICBzY3JvbGxiYXI6IHtcbiAgICAgICAgICAgIGVuYWJsZWQ6IHRoaXMuY2Fyb3VzZWxfcGFnaW5hdGlvbiA9PT0gJ3Njcm9sbC1hcnJvd3MnLFxuICAgICAgICAgICAgZHJhZ2dhYmxlOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzbGlkZXNQZXJWaWV3OiB0aGlzLmNhcm91c2VsX3NsaWRlc19wZXJfdmlld190YWJsZXRcbiAgICAgICAgfSxcbiAgICAgICAgMTA4MDoge1xuICAgICAgICAgIHNjcm9sbGJhcjoge1xuICAgICAgICAgICAgZW5hYmxlZDogdGhpcy5jYXJvdXNlbF9wYWdpbmF0aW9uID09PSAnc2Nyb2xsLWFycm93cycsXG4gICAgICAgICAgICBkcmFnZ2FibGU6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNsaWRlc1BlclZpZXc6IHRoaXMuY2Fyb3VzZWxfc2xpZGVzX3Blcl92aWV3X2xhcHRvcFxuICAgICAgICB9LFxuICAgICAgICAxNDQwOiB7XG4gICAgICAgICAgc2Nyb2xsYmFyOiB7XG4gICAgICAgICAgICBlbmFibGVkOiB0aGlzLmNhcm91c2VsX3BhZ2luYXRpb24gPT09ICdzY3JvbGwtYXJyb3dzJyxcbiAgICAgICAgICAgIGRyYWdnYWJsZTogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgc2xpZGVzUGVyVmlldzogdGhpcy5jYXJvdXNlbF9zbGlkZXNfcGVyX3ZpZXdfZGVza3RvcFxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgb246IHt9LFxuICAgIH07XG5cbiAgICAvLyBub3cgd2UgbmVlZCB0byBhc3NpZ24gYWxsIHBhcmFtZXRlcnMgdG8gdGhlIFN3aXBlciBlbGVtZW50XG4gICAgT2JqZWN0LmFzc2lnbihzd2lwZXJFbCwgc3dpcGVyUGFyYW1zKTtcblxuICAgIC8vIGFuZCBub3cgaW5pdGlhbGl6ZSBpdFxuICAgIHN3aXBlckVsLmluaXRpYWxpemUoKTtcblxuICAgIC8vIFNldCB1cCBzY3JvbGxiYXIgYW5kIGVuc3VyZSB0aGlzIGlzIHJlY2FsY3VsYXRlZCBvbiByZXNpemUgZXZlbnRzXG4gICAgdGhpcy5zZXR1cFNjcm9sbGJhckxheW91dFByb3BlcnRpZXMoKTtcblxuICAgIHN3aXBlckVsLmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsICgpID0+IHtcbiAgICAgIHRoaXMuc2V0dXBTY3JvbGxiYXJMYXlvdXRQcm9wZXJ0aWVzKCk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogTW92ZSB0aGUgY2Fyb3VzZWwgb24gdG8gdGhlIG5leHQgc2xpZGVcbiAgICovXG4gIG5leHRTbGlkZSgpOiB2b2lkIHtcbiAgICB0aGlzLnN3aXBlci5uYXRpdmVFbGVtZW50LnN3aXBlci5zbGlkZU5leHQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNb3ZlIHRoZSBjYXJvdXNlbCBiYWNrIHRvIHRoZSBwcmV2aW91cyBzbGlkZVxuICAgKi9cbiAgcHJldmlvdXNTbGlkZSgpOiB2b2lkIHtcbiAgICB0aGlzLnN3aXBlci5uYXRpdmVFbGVtZW50LnN3aXBlci5zbGlkZVByZXYoKTtcbiAgfVxufVxuIiwiPHVpLWJveFxuY2xhc3M9XCJ1aS1jYXJvdXNlbFwiXG5bbmdDbGFzc109XCJ7J3VpLWNhcm91c2VsLW92ZXJmbG93JzogY2Fyb3VzZWxfb3ZlcmZsb3d9XCJcbmJveF9hbGlnbl95PVwiY2VudGVyXCJcbmJveF9zcGFjZT1cIm5vbmVcIlxuYm94X2NvbnRlbnRfZmlsbF93aWR0aD1cInRydWVcIlxuYm94X2JhY2tncm91bmQ9XCJ0cmFuc3BhcmVudFwiPlxuXG4gICAgPHVpLXN0YWNrICNjYXJvdXNlbGN0YXN0YWNrPlxuICAgICAgICA8IS0tIFN3aXBlciBXZWJDb21wb25lbnQtLT5cbiAgICAgICAgPHN3aXBlci1jb250YWluZXJcbiAgICAgICAgI3N3aXBlclxuICAgICAgICBpbml0PVwiZmFsc2VcIlxuICAgICAgICB0b3VjaC1zdGFydC1wcmV2ZW50LWRlZmF1bHQ9XCJmYWxzZVwiXG4gICAgICAgIHByZXZlbnQtY2xpY2tzLXByb3BhZ2F0aW9uPVwidHJ1ZVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgICA8L3N3aXBlci1jb250YWluZXI+XG5cbiAgICAgICAgPCEtLSBDdXN0b20gbmF2aWdhdGlvbiBidXR0b25zIC0tPlxuICAgICAgICA8dWktc3RhY2sgc3RhY2tfZGlyZWN0aW9uPVwieFwiIHN0YWNrX2FsaWduPVwiY2VudGVyXCIgKm5nSWY9XCJjYXJvdXNlbF9wYWdpbmF0aW9uID09PSAnc2Nyb2xsLWFycm93cydcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1aS1jYXJvdXNlbC1zY3JvbGxiYXItcGxhY2Vob2xkZXJcIiAjY2Fyb3VzZWxzY3JvbGxiYXJwbGFjZWhvbGRlcj48L2Rpdj5cbiAgICAgICAgICAgIDx1aS1ib3hcbiAgICAgICAgICAgIGJveF9zcGFjZT1cIm5vbmVcIlxuICAgICAgICAgICAgYm94X2ZpbGxfbW9kZT1cImZpdFwiXG4gICAgICAgICAgICBbYm94X3NwYWNlX3JpZ2h0XT1cInttb2JpbGU6ICd0aWdodCcsIHRhYmxldDogJ25vbmUnLCBsYXB0b3A6ICdub25lJywgZGVza3RvcDogJ25vbmUnfVwiXG4gICAgICAgICAgICBib3hfYmFja2dyb3VuZD1cInRyYW5zcGFyZW50XCI+XG4gICAgICAgICAgICAgICAgPHVpLXN0YWNrXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhKHN3aXBlcj8uc3dpcGVyPy5pc0JlZ2lubmluZyAmJiBzd2lwZXI/LnN3aXBlcj8uaXNFbmQpXCJcbiAgICAgICAgICAgICAgICBzdGFja19kaXJlY3Rpb249XCJ4XCJcbiAgICAgICAgICAgICAgICBzdGFja19nYXA9XCJuZWFyXCI+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gUHJldmlvdXMgYnV0dG9uLS0+XG4gICAgICAgICAgICAgICAgICAgIDx1aS1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ1aS1jYXJvdXNlbF9fcHJldmlvdXNcIlxuICAgICAgICAgICAgICAgICAgICBidXR0b25fc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uX2ljb25fcGxhY2VtZW50PVwiaWNvbk9ubHlcIlxuICAgICAgICAgICAgICAgICAgICBidXR0b25faWNvbj1cImFycm93LWxlZnRcIlxuICAgICAgICAgICAgICAgICAgICBidXR0b25fdHlwZT1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGlja2VkKT1cInByZXZpb3VzU2xpZGUoKVwiPiBQcmV2b3VzIHNsaWRlXG4gICAgICAgICAgICAgICAgICAgIDwvdWktYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8IS0tIE5leHQgYnV0dG9uLS0+XG4gICAgICAgICAgICAgICAgICAgIDx1aS1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ1aS1jYXJvdXNlbF9fbmV4dFwiXG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvbl9zaXplPVwibGFyZ2VcIlxuICAgICAgICAgICAgICAgICAgICBidXR0b25faWNvbl9wbGFjZW1lbnQ9XCJpY29uT25seVwiXG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvbl9pY29uPVwiYXJyb3ctcmlnaHRcIlxuICAgICAgICAgICAgICAgICAgICBidXR0b25fdHlwZT1cInNlY29uZGFyeVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGlja2VkKT1cIm5leHRTbGlkZSgpXCI+IE5leHQgc2xpZGVcbiAgICAgICAgICAgICAgICAgICAgPC91aS1idXR0b24+XG4gICAgICAgICAgICAgICAgPC91aS1zdGFjaz5cbiAgICAgICAgICAgIDwvdWktYm94PlxuICAgICAgICA8L3VpLXN0YWNrPlxuICAgIDwvdWktc3RhY2s+XG48L3VpLWJveD5cbiJdfQ==
|
|
236
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Fyb3VzZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb2FzeXMtbGliL3NyYy9saWIvY29tcG9uZW50cy9jYXJvdXNlbC9jYXJvdXNlbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vYXN5cy1saWIvc3JjL2xpYi9jb21wb25lbnRzL2Nhcm91c2VsL2Nhcm91c2VsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBRUwsU0FBUyxFQUNULGlCQUFpQixFQUNqQixNQUFNLEVBQ0ksTUFBTSxlQUFlLENBQUM7Ozs7Ozs7QUFJbEMsb0VBQW9FO0FBUXBFLE1BQU0sT0FBTyxpQkFBaUI7SUEwQjVCLFlBQW9CLFlBQTBCLEVBQTRCLFFBQWtCLEVBQVUsT0FBbUI7UUFBckcsaUJBQVksR0FBWixZQUFZLENBQWM7UUFBNEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUFVLFlBQU8sR0FBUCxPQUFPLENBQVk7UUFwQnpILHNGQUFzRjtRQUM3RSxXQUFNLEdBQVksS0FBSyxDQUFDO1FBRXhCLHNCQUFpQixHQUFZLEtBQUssQ0FBQztRQUVuQyxpQkFBWSxHQUEwQyxTQUFTLENBQUM7UUFFaEUsd0JBQW1CLEdBQTRDLE1BQU0sQ0FBQztRQUV0RSxxQ0FBZ0MsR0FBVyxDQUFDLENBQUM7UUFDN0Msb0NBQStCLEdBQVcsQ0FBQyxDQUFDO1FBQzVDLG9DQUErQixHQUFXLEdBQUcsQ0FBQztRQUM5QyxvQ0FBK0IsR0FBVyxJQUFJLENBQUM7UUFFL0MsaUNBQTRCLEdBQVUsQ0FBQyxDQUFBLENBQUMscUVBQXFFO1FBRTdHLHFCQUFnQixHQUFxQixNQUFNLENBQUMsQ0FBQyx3RkFBd0Y7UUFDckksdUJB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Q0gsYUFBYTtRQUNYLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUMvQyxDQUFDOytHQXBPVSxpQkFBaUIsOENBMEI0QixRQUFRO21HQTFCckQsaUJBQWlCLHUzQkFHc0MsVUFBVSwrR0FDdEIsVUFBVSw2QkN6QmxFLGdyRUFzREE7OzRGRGpDYSxpQkFBaUI7a0JBTjdCLFNBQVM7K0JBQ0UsYUFBYSxpQkFHUixpQkFBaUIsQ0FBQyxJQUFJOzswQkE0QlksTUFBTTsyQkFBQyxRQUFRO3FFQXhCekIsTUFBTTtzQkFBNUMsU0FBUzt1QkFBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUMyQyw0QkFBNEI7c0JBQTNHLFNBQVM7dUJBQUMsOEJBQThCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBQ1YsZ0JBQWdCO3NCQUFuRixTQUFTO3VCQUFDLGtCQUFrQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUd6RCxNQUFNO3NCQUFkLEtBQUs7Z0JBRUcsaUJBQWlCO3NCQUF6QixLQUFLO2dCQUVHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBRUcsbUJBQW1CO3NCQUEzQixLQUFLO2dCQUVHLGdDQUFnQztzQkFBeEMsS0FBSztnQkFDRywrQkFBK0I7c0JBQXZDLEtBQUs7Z0JBQ0csK0JBQStCO3NCQUF2QyxLQUFLO2dCQUNHLCtCQUErQjtzQkFBdkMsS0FBSztnQkFFRyw0QkFBNEI7c0JBQXBDLEtBQUs7Z0JBRUcsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDRywwQkFBMEI7c0JBQWxDLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIEluamVjdCxcbiAgT25EZXN0cm95fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN3aXBlck9wdGlvbnMgfSBmcm9tICdzd2lwZXInO1xuaW1wb3J0IHsgVG9rZW5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdG9rZW4uc2VydmljZSc7XG5cbi8qIFRoaXMgY29tcG9uZW50IHdyYXBzIGFyb3VuZCB0aGUgc3dpcGVyLmpzIGxpYnJhcnkgV2ViQ29tcG9uZW50ICovXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3VpLWNhcm91c2VsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Nhcm91c2VsLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2Fyb3VzZWwuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBDYXJvdXNlbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8vIFRoZSBzd2lwZXIgaW5zdGFuY2VcbiAgQFZpZXdDaGlsZChcInN3aXBlclwiLCB7IHN0YXRpYzogdHJ1ZSB9KSBzd2lwZXI6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoXCJjYXJvdXNlbHNjcm9sbGJhcnBsYWNlaG9sZGVyXCIsIHsgc3RhdGljOiBmYWxzZSwgcmVhZDogRWxlbWVudFJlZiB9KSBjYXJvdXNlbHNjcm9sbGJhcnBsYWNlaG9sZGVyOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKFwiY2Fyb3VzZWxjdGFzdGFja1wiLCB7IHN0YXRpYzogZmFsc2UsIHJlYWQ6IEVsZW1lbnRSZWYgfSkgY2Fyb3VzZWxjdGFzdGFjazogRWxlbWVudFJlZjtcblxuICAvLyBSZXdpbmRzIHRoZSBzbGlkZXMgYmFjayB0byB0aGUgc3RhcnQgd2hlbiB0aGUgdXNlciByZWFjaGVzIHRoZSBlbmQgd2hlbiBzZXQgdG8gdHJ1ZVxuICBASW5wdXQoKSByZXdpbmQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKSBjYXJvdXNlbF9vdmVyZmxvdzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIGNhcm91c2VsX2dhcDogJ2RlZmF1bHQnIHwgJ3RpZ2h0JyB8ICduZWFyJyB8ICdub25lJyA9ICdkZWZhdWx0JztcblxuICBASW5wdXQoKSBjYXJvdXNlbF9wYWdpbmF0aW9uOiAnc2Nyb2xsLWFycm93cycgfCAnbm9uZScgfCAnc2Nyb2xsLWJhcicgPSAnbm9uZSc7XG5cbiAgQElucHV0KCkgY2Fyb3VzZWxfc2xpZGVzX3Blcl92aWV3X2Rlc2t0b3A6IG51bWJlciA9IDQ7XG4gIEBJbnB1dCgpIGNhcm91c2VsX3NsaWRlc19wZXJfdmlld19sYXB0b3A6IG51bWJlciA9IDM7XG4gIEBJbnB1dCgpIGNhcm91c2VsX3NsaWRlc19wZXJfdmlld190YWJsZXQ6IG51bWJlciA9IDIuNTtcbiAgQElucHV0KCkgY2Fyb3VzZWxfc2xpZGVzX3Blcl92aWV3X21vYmlsZTogbnVtYmVyID0gMS4yNTtcblxuICBASW5wdXQoKSBjYXJvdXNlbF9yb3dzX3Blcl9yb3dfbW9iaWxlOiAxIHwgMiA9IDEgLy8gUmVxdWlyZWQgZm9yIENBVEVHT1JZX0NBUkQgZXhwZXJpbWVudC4gUmVtb3ZlIGlmIGV4cGVyaW1lbnQgZmFpbHMuXG5cbiAgQElucHV0KCkgY2Fyb3VzZWxfbG9hZGluZzogJ2xhenknIHwgJ2VhZ2VyJyA9ICdsYXp5JzsgLy8gSWYgd2UgZG9uJ3QgaGF2ZSBtdWx0aXBsZSBjYXJvdXNlbHMgb24gcGFnZSBhbmQgd2FudCB0byBwcmlvcml0aXNlIFVJIGxvYWRpbmcgb24gdGltZVxuICBASW5wdXQoKSBjYXJvdXNlbF9mcmVlX21vZGU6IGJvb2xlYW4gPSBmYWxzZSAvLyBFbmFibGVzIHNjcm9sbGluZyB3aXRoIG1vdXNld2hlZWwgLyBzbW9vdGhlciBtb21lbnR1bSBzd2lwaW5nIGV4cGVyaWVuY2VcbiAgQElucHV0KCkgY2VudGVyX2luc3VmZmljaWVudF9zbGlkZXM6IGJvb2xlYW4gPSB0cnVlIC8vIENlbnRlcnMgdGhlIHNsaWRlcyBpZiB0aGVyZSBhcmUgbm90IGVub3VnaCB0byBmaWxsIHRoZSBzcGFjZVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdG9rZW5TZXJ2aWNlOiBUb2tlblNlcnZpY2UsIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jdW1lbnQ6IERvY3VtZW50LCBwcml2YXRlIGVsZW1lbnQ6IEVsZW1lbnRSZWYpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYodGhpcy5jYXJvdXNlbF9sb2FkaW5nID09PSAnbGF6eScpe1xuICAgICAgdGhpcy5zZXRVcEludGVyc2VjdGlvbk9ic2VydmVyKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW5pdFN3aXBlcigpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdXAgdGhlIGludGVyc2VjdGlvbiBvYnNlcnZlciB3aXRoIHRoZSByZWxldmFudCBvcHRpb25zXG4gICAqL1xuICBzZXRVcEludGVyc2VjdGlvbk9ic2VydmVyKCkge1xuICAgIC8vIFNldCBJbnRlcnNlY3Rpb25PYnNlcnZlciBvcHRpb25zXG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgIHJvb3Q6IG51bGwsXG4gICAgICByb290TWFyZ2luOiAnMHB4JyxcbiAgICAgIHRocmVzaG9sZDogMC41LFxuICAgICAgb25jZTogdHJ1ZVxuICAgIH1cbiAgICAvLyBTZXQgdXAgdGhlIEludGVyc2VjdGlvbk9ic2VydmVyXG4gICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIodGhpcy5vbkludGVyc2VjdGlvbi5iaW5kKHRoaXMpLCBvcHRpb25zKTtcbiAgICBvYnNlcnZlci5vYnNlcnZlKHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIGZ1bmN0aW9uIGdldHMgY2FsbGVkIGp1c3QgYmVmb3JlIHRoZSB1c2VyIHNjcm9sbHMgdGhpcyBjb21wb25lbnQgaW50byB2aWV3XG4gICAqIEBwYXJhbSBlbnRyaWVzIC0gQW4gYXJyYXkgb2YgaW50ZXJzd2VjdGlvbiBvYnNlcnZlciBlbnRyaWVzXG4gICAqIEBwYXJhbSBvYnNlcnZlciAtIEludGVyc2VjdGlvbiBvYnNlcnZlclxuICAgKi9cbiAgb25JbnRlcnNlY3Rpb24oZW50cmllczogSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeVtdLCBvYnNlcnZlcjogSW50ZXJzZWN0aW9uT2JzZXJ2ZXIpIHtcbiAgICAgIGVudHJpZXMuZm9yRWFjaChlbnRyeSA9PiB7XG4gICAgICAgIGlmKGVudHJ5LmlzSW50ZXJzZWN0aW5nKSB7XG4gICAgICAgICAgLy8gSW5pdGlhbGlzZSBzd2lwZXJcbiAgICAgICAgICB0aGlzLmluaXRTd2lwZXIoKTtcbiAgICAgICAgICBvYnNlcnZlci51bm9ic2VydmUoZW50cnkudGFyZ2V0KVxuICAgICAgICB9XG4gICAgICB9KVxuICB9XG5cbiAgZ2V0U3R5bGUoZWxlbWVudCwgc3R5bGUpOiBzdHJpbmcge1xuXG4gICAgcmV0dXJuIHRoaXMuZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50LCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKHN0eWxlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHNjcm9sbGJhciBwbGFjZW1lbnQgYW5kIHdpZHRoIGJhc2VkIG9uIGNhcm91c2Vsc2Nyb2xsYmFycGxhY2Vob2xkZXIgYW5kIGNhcm91c2VsY3Rhc3RhY2tcbiAgICovXG4gIHNldHVwU2Nyb2xsYmFyTGF5b3V0UHJvcGVydGllcygpOiB2b2lkIHtcbiAgICBpZih0aGlzLmNhcm91c2VsX3BhZ2luYXRpb24gPT09ICdub25lJyl7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgY2Fyb3VzZWxTdGFjazogSFRNTEVsZW1lbnQgPSB0aGlzLmNhcm91c2VsY3Rhc3RhY2s/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgY29uc3Qgc2Nyb2xsYmFyRWxlbWVudDogSFRNTEVsZW1lbnQgPSB0aGlzLmNhcm91c2Vsc2Nyb2xsYmFycGxhY2Vob2xkZXI/Lm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICBjb25zdCBzY3JvbGxiYXJIZWlnaHQgPSB0aGlzLmRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KS5nZXRQcm9wZXJ0eVZhbHVlKFwiLS1zd2lwZXItc2Nyb2xsYmFyLXNpemVcIik7XG5cbiAgICBpZihjYXJvdXNlbFN0YWNrICYmIHRoaXMuY2Fyb3VzZWxfcGFnaW5hdGlvbiA9PT0gJ3Njcm9sbC1hcnJvd3MnKXtcbiAgICAgIHRoaXMuZWxlbWVudD8ubmF0aXZlRWxlbWVudD8uc3R5bGU/LnNldFByb3BlcnR5KFxuICAgICAgICBcIi0tdWktY2Fyb3VzZWwtc2Nyb2xsYmFyLXdpZHRoXCIsIGAke3Njcm9sbGJhckVsZW1lbnQ/Lm9mZnNldFdpZHRoIC0gcGFyc2VJbnQodGhpcy5nZXRTdHlsZShjYXJvdXNlbFN0YWNrLCAnZ2FwJyksIDEwKX1weGBcbiAgICAgICk7XG5cbiAgICAgIHRoaXMuZWxlbWVudD8ubmF0aXZlRWxlbWVudD8uc3R5bGU/LnNldFByb3BlcnR5KFxuICAgICAgICBcIi0tdWktY2Fyb3VzZWwtc2Nyb2xsYmFyLW9mZnNldC10b3BcIiwgYCR7cGFyc2VJbnQodGhpcy5nZXRTdHlsZShjYXJvdXNlbFN0YWNrLCAnZ2FwJyksIDEwKSArIChzY3JvbGxiYXJFbGVtZW50Py5vZmZzZXRIZWlnaHQgLyAyKSArIChwYXJzZUludChzY3JvbGxiYXJIZWlnaHQsIDEwKSAvIDIpfXB4YFxuICAgICAgKTtcblxuICAgICAgdGhpcy5lbGVtZW50Py5uYXRpdmVFbGVtZW50Py5zdHlsZT8uc2V0UHJvcGVydHkoXG4gICAgICAgIFwiLS11aS1jYXJvdXNlbC1zY3JvbGxiYXItaGVpZ2h0XCIsIFwiMnB4XCJcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYoY2Fyb3VzZWxTdGFjayAmJiB0aGlzLmNhcm91c2VsX3BhZ2luYXRpb24gPT09ICdzY3JvbGwtYmFyJyl7XG4gICAgICB0aGlzLmVsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQ/LnN0eWxlPy5zZXRQcm9wZXJ0eShcbiAgICAgICAgXCItLXVpLWNhcm91c2VsLXNjcm9sbGJhci13aWR0aFwiLCBcIjEwMCVcIlxuICAgICAgKTtcblxuICAgICAgdGhpcy5lbGVtZW50Py5uYXRpdmVFbGVtZW50Py5zdHlsZT8uc2V0UHJvcGVydHkoXG4gICAgICAgIFwiLS11aS1jYXJvdXNlbC1zY3JvbGxiYXItb2Zmc2V0LXRvcFwiLCBgMHB4YFxuICAgICAgKTtcblxuICAgICAgdGhpcy5lbGVtZW50Py5uYXRpdmVFbGVtZW50Py5zdHlsZT8uc2V0UHJvcGVydHkoXG4gICAgICAgIFwiLS11aS1jYXJvdXNlbC1zY3JvbGxiYXItaGVpZ2h0XCIsIFwiNHB4XCJcbiAgICAgICk7XG5cbiAgICAgIHRoaXMuZWxlbWVudD8ubmF0aXZlRWxlbWVudD8uc3R5bGU/LnNldFByb3BlcnR5KFxuICAgICAgICBcIi0tdWktY2Fyb3VzZWwtc2Nyb2xsYmFyLWxlZnRcIiwgXCIwcHhcIlxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBkeW5hbWljIHN3aXBlciBwYXJhbXMgYW5kIGluaXRpYWxpc2UgdGhlIHN3aXBlciBpbnN0YW5jZVxuICAgKi9cbiAgaW5pdFN3aXBlcigpOiB2b2lkIHtcbiAgICAvLyBDb2xvdXIgb3ZlcmlkZXNcbiAgICBjb25zdCBzY3JvbGxiYXJCYWNrZ3JvdW5kQ29sb3VyID0gdGhpcy50b2tlblNlcnZpY2UuZ2V0VG9rZW5WYWx1ZSgnLS1vYXN5cy1jb2xvci1saW5lbi1ncmV5LTIwMCcpO1xuICAgIGNvbnN0IHNjcm9sbGJhclNsaWRlckNvbG91ciA9IHRoaXMudG9rZW5TZXJ2aWNlLmdldFRva2VuVmFsdWUoJy0tb2FzeXMtY29sb3ItYnJhbmQtZm9yZWdyb3VuZC1wcmltYXJ5Jyk7XG5cbiAgICAvLyBzd2lwZXIgZWxlbWVudFxuICAgIGNvbnN0IHN3aXBlckVsID0gdGhpcy5zd2lwZXIubmF0aXZlRWxlbWVudDtcblxuICAgIGNvbnN0IGNhcm91c2VsR2FwID0gdGhpcy50b2tlblNlcnZpY2UuZ2V0VG9rZW5WYWx1ZShgLS1vYXN5cy1zcGFjaW5nLSR7dGhpcy5jYXJvdXNlbF9nYXB9YCk7XG5cbiAgICAvLyBzd2lwZXIgcGFyYW1ldGVyc1xuICAgIGNvbnN0IHN3aXBlclBhcmFtczogU3dpcGVyT3B0aW9ucyA9IHtcbiAgICAgIHJld2luZDogdGhpcy5yZXdpbmQsXG4gICAgICBncmFiQ3Vyc29yOiB0cnVlLFxuICAgICAgc3BhY2VCZXR3ZWVuOiAocGFyc2VJbnQoY2Fyb3VzZWxHYXAucmVwbGFjZSgnLicsICcnKSwgMTApKSB8fCAwLFxuICAgICAgc2Nyb2xsYmFyOiB7XG4gICAgICAgIGVuYWJsZWQ6IHRoaXMuY2Fyb3VzZWxfcGFnaW5hdGlvbiA9PT0gJ3Njcm9sbC1hcnJvd3MnIHx8IHRoaXMuY2Fyb3VzZWxfcGFnaW5hdGlvbiA9PT0gJ3Njcm9sbC1iYXInLFxuICAgICAgICBkcmFnZ2FibGU6IHRydWUsXG4gICAgICB9LFxuICAgICAgY2VudGVySW5zdWZmaWNpZW50U2xpZGVzOiB0aGlzLmNlbnRlcl9pbnN1ZmZpY2llbnRfc2xpZGVzLFxuICAgICAgZnJlZU1vZGU6IHRoaXMuY2Fyb3VzZWxfZnJlZV9tb2RlID8ge1xuICAgICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgICBzdGlja3k6IHRydWUsXG4gICAgICAgIG1vbWVudHVtVmVsb2NpdHlSYXRpbzogMC43NSxcbiAgICAgICAgbW9tZW50dW1SYXRpbzogMC43NVxuICAgICAgfSA6IGZhbHNlLFxuICAgICAgbW91c2V3aGVlbDogdGhpcy5jYXJvdXNlbF9mcmVlX21vZGUgPyB7XG4gICAgICAgIGZvcmNlVG9BeGlzOiB0cnVlXG4gICAgICB9OiBmYWxzZSxcbiAgICAgIGluamVjdFN0eWxlczogW1xuICAgICAgICBgXG4gICAgICAgIC5zd2lwZXItc2Nyb2xsYmFyLnN3aXBlci1zY3JvbGxiYXItaG9yaXpvbnRhbCB7XG4gICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgIHRvcDogdmFyKC0tdWktY2Fyb3VzZWwtc2Nyb2xsYmFyLW9mZnNldC10b3ApO1xuICAgICAgICAgIHdpZHRoOiB2YXIoLS11aS1jYXJvdXNlbC1zY3JvbGxiYXItd2lkdGgpO1xuICAgICAgICAgIGhlaWdodDogdmFyKC0tdWktY2Fyb3VzZWwtc2Nyb2xsYmFyLWhlaWdodCk7XG4gICAgICAgICAgbGVmdDogJHt0aGlzLmNhcm91c2VsX3BhZ2luYXRpb24gPT09ICdzY3JvbGwtYmFyJyA/ICd2YXIoLS11aS1jYXJvdXNlbC1zY3JvbGxiYXItbGVmdCknIDogJzElJ307XG4gICAgICAgICAgYmFja2dyb3VuZDogJHtzY3JvbGxiYXJCYWNrZ3JvdW5kQ29sb3VyfVxuICAgICAgICB9XG5cbiAgICAgICAgLnN3aXBlci1zY3JvbGxiYXItZHJhZyB7XG4gICAgICAgICAgYmFja2dyb3VuZDogJHtzY3JvbGxiYXJTbGlkZXJDb2xvdXJ9XG4gICAgICAgIH1gLFxuICAgICAgXSxcbiAgICAgIGJyZWFrcG9pbnRzOiB7XG4gICAgICAgIDA6IHtcbiAgICAgICAgICBzY3JvbGxiYXI6IHtcbiAgICAgICAgICAgIGVuYWJsZWQ6IHRoaXMuY2Fyb3VzZWxfcGFnaW5hdGlvbiA9PT0gJ3Njcm9sbC1hcnJvd3MnIHx8IHRoaXMuY2Fyb3VzZWxfcGFnaW5hdGlvbiA9PT0gJ3Njcm9sbC1iYXInLFxuICAgICAgICAgICAgZHJhZ2dhYmxlOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzbGlkZXNQZXJWaWV3OiB0aGlzLmNhcm91c2VsX3NsaWRlc19wZXJfdmlld19tb2JpbGUsXG4gICAgICAgICAgZ3JpZDoge1xuICAgICAgICAgICAgcm93czogdGhpcy5jYXJvdXNlbF9yb3dzX3Blcl9yb3dfbW9iaWxlLFxuICAgICAgICAgICAgZmlsbDogXCJyb3dcIixcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICA3Njc6IHtcbiAgICAgICAgICBzY3JvbGxiYXI6IHtcbiAgICAgICAgICAgIGVuYWJsZWQ6IHRoaXMuY2Fyb3VzZWxfcGFnaW5hdGlvbiA9PT0gJ3Njcm9sbC1hcnJvd3MnIHx8IHRoaXMuY2Fyb3VzZWxfcGFnaW5hdGlvbiA9PT0gJ3Njcm9sbC1iYXInLFxuICAgICAgICAgICAgZHJhZ2dhYmxlOiB0cnVlXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzbGlkZXNQZXJWaWV3OiB0aGlzLmNhcm91c2VsX3NsaWRlc19wZXJfdmlld190YWJsZXRcbiAgICAgICAgfSxcbiAgICAgICAgMTA4MDoge1xuICAgICAgICAgIHNjcm9sbGJhcjoge1xuICAgICAgICAgICAgZW5hYmxlZDogdGhpcy5jYXJvdXNlbF9wYWdpbmF0aW9uID09PSAnc2Nyb2xsLWFycm93cycgfHwgdGhpcy5jYXJvdXNlbF9wYWdpbmF0aW9uID09PSAnc2Nyb2xsLWJhcicsXG4gICAgICAgICAgICBkcmFnZ2FibGU6IHRydWVcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNsaWRlc1BlclZpZXc6IHRoaXMuY2Fyb3VzZWxfc2xpZGVzX3Blcl92aWV3X2xhcHRvcFxuICAgICAgICB9LFxuICAgICAgICAxNDQwOiB7XG4gICAgICAgICAgc2Nyb2xsYmFyOiB7XG4gICAgICAgICAgICBlbmFibGVkOiB0aGlzLmNhcm91c2VsX3BhZ2luYXRpb24gPT09ICdzY3JvbGwtYXJyb3dzJyB8fCB0aGlzLmNhcm91c2VsX3BhZ2luYXRpb24gPT09ICdzY3JvbGwtYmFyJyxcbiAgICAgICAgICAgIGRyYWdnYWJsZTogdHJ1ZVxuICAgICAgICAgIH0sXG4gICAgICAgICAgc2xpZGVzUGVyVmlldzogdGhpcy5jYXJvdXNlbF9zbGlkZXNfcGVyX3ZpZXdfZGVza3RvcFxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgb246IHt9LFxuICAgIH07XG5cbiAgICAvLyBub3cgd2UgbmVlZCB0byBhc3NpZ24gYWxsIHBhcmFtZXRlcnMgdG8gdGhlIFN3aXBlciBlbGVtZW50XG4gICAgT2JqZWN0LmFzc2lnbihzd2lwZXJFbCwgc3dpcGVyUGFyYW1zKTtcblxuICAgIC8vIGFuZCBub3cgaW5pdGlhbGl6ZSBpdFxuICAgIHN3aXBlckVsLmluaXRpYWxpemUoKTtcblxuICAgIC8vIFNldCB1cCBzY3JvbGxiYXIgYW5kIGVuc3VyZSB0aGlzIGlzIHJlY2FsY3VsYXRlZCBvbiByZXNpemUgZXZlbnRzXG4gICAgdGhpcy5zZXR1cFNjcm9sbGJhckxheW91dFByb3BlcnRpZXMoKTtcblxuICAgIHN3aXBlckVsLmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsICgpID0+IHtcbiAgICAgIHRoaXMuc2V0dXBTY3JvbGxiYXJMYXlvdXRQcm9wZXJ0aWVzKCk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogTW92ZSB0aGUgY2Fyb3VzZWwgb24gdG8gdGhlIG5leHQgc2xpZGVcbiAgICovXG4gIG5leHRTbGlkZSgpOiB2b2lkIHtcbiAgICB0aGlzLnN3aXBlci5uYXRpdmVFbGVtZW50LnN3aXBlci5zbGlkZU5leHQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNb3ZlIHRoZSBjYXJvdXNlbCBiYWNrIHRvIHRoZSBwcmV2aW91cyBzbGlkZVxuICAgKi9cbiAgcHJldmlvdXNTbGlkZSgpOiB2b2lkIHtcbiAgICB0aGlzLnN3aXBlci5uYXRpdmVFbGVtZW50LnN3aXBlci5zbGlkZVByZXYoKTtcbiAgfVxufVxuIiwiPHVpLWJveFxuY2xhc3M9XCJ1aS1jYXJvdXNlbFwiXG5bbmdDbGFzc109XCJ7J3VpLWNhcm91c2VsLW92ZXJmbG93JzogY2Fyb3VzZWxfb3ZlcmZsb3d9XCJcbmJveF9hbGlnbl95PVwiY2VudGVyXCJcbmJveF9zcGFjZT1cIm5vbmVcIlxuYm94X2NvbnRlbnRfZmlsbF93aWR0aD1cInRydWVcIlxuYm94X2JhY2tncm91bmQ9XCJ0cmFuc3BhcmVudFwiPlxuXG4gICAgPHVpLXN0YWNrICNjYXJvdXNlbGN0YXN0YWNrPlxuICAgICAgICA8IS0tIFN3aXBlciBXZWJDb21wb25lbnQtLT5cbiAgICAgICAgPHN3aXBlci1jb250YWluZXJcbiAgICAgICAgI3N3aXBlclxuICAgICAgICBpbml0PVwiZmFsc2VcIlxuICAgICAgICB0b3VjaC1zdGFydC1wcmV2ZW50LWRlZmF1bHQ9XCJmYWxzZVwiXG4gICAgICAgIHByZXZlbnQtY2xpY2tzLXByb3BhZ2F0aW9uPVwidHJ1ZVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgICA8L3N3aXBlci1jb250YWluZXI+XG5cbiAgICAgICAgPCEtLSBDdXN0b20gbmF2aWdhdGlvbiBidXR0b25zIC0tPlxuICAgICAgICA8dWktc3RhY2sgc3RhY2tfZGlyZWN0aW9uPVwieFwiIHN0YWNrX2FsaWduPVwiY2VudGVyXCIgKm5nSWY9XCJjYXJvdXNlbF9wYWdpbmF0aW9uID09PSAnc2Nyb2xsLWFycm93cycgfHwgY2Fyb3VzZWxfcGFnaW5hdGlvbiA9PT0gJ3Njcm9sbC1iYXInXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidWktY2Fyb3VzZWwtc2Nyb2xsYmFyLXBsYWNlaG9sZGVyXCIgI2Nhcm91c2Vsc2Nyb2xsYmFycGxhY2Vob2xkZXI+PC9kaXY+XG4gICAgICAgICAgICA8dWktYm94XG4gICAgICAgICAgICAqbmdJZj1cImNhcm91c2VsX3BhZ2luYXRpb24gPT09ICdzY3JvbGwtYXJyb3dzJ1wiXG4gICAgICAgICAgICBib3hfc3BhY2U9XCJub25lXCJcbiAgICAgICAgICAgIGJveF9maWxsX21vZGU9XCJmaXRcIlxuICAgICAgICAgICAgW2JveF9zcGFjZV9yaWdodF09XCJ7bW9iaWxlOiAndGlnaHQnLCB0YWJsZXQ6ICdub25lJywgbGFwdG9wOiAnbm9uZScsIGRlc2t0b3A6ICdub25lJ31cIlxuICAgICAgICAgICAgYm94X2JhY2tncm91bmQ9XCJ0cmFuc3BhcmVudFwiPlxuICAgICAgICAgICAgICAgIDx1aS1zdGFja1xuICAgICAgICAgICAgICAgICpuZ0lmPVwiIShzd2lwZXI/LnN3aXBlcj8uaXNCZWdpbm5pbmcgJiYgc3dpcGVyPy5zd2lwZXI/LmlzRW5kKVwiXG4gICAgICAgICAgICAgICAgc3RhY2tfZGlyZWN0aW9uPVwieFwiXG4gICAgICAgICAgICAgICAgc3RhY2tfZ2FwPVwibmVhclwiPlxuICAgICAgICAgICAgICAgICAgICA8IS0tIFByZXZpb3VzIGJ1dHRvbi0tPlxuICAgICAgICAgICAgICAgICAgICA8dWktYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidWktY2Fyb3VzZWxfX3ByZXZpb3VzXCJcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uX3NpemU9XCJsYXJnZVwiXG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvbl9pY29uX3BsYWNlbWVudD1cImljb25Pbmx5XCJcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uX2ljb249XCJhcnJvdy1sZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uX3R5cGU9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2tlZCk9XCJwcmV2aW91c1NsaWRlKClcIj4gUHJldm91cyBzbGlkZVxuICAgICAgICAgICAgICAgICAgICA8L3VpLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBOZXh0IGJ1dHRvbi0tPlxuICAgICAgICAgICAgICAgICAgICA8dWktYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidWktY2Fyb3VzZWxfX25leHRcIlxuICAgICAgICAgICAgICAgICAgICBidXR0b25fc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uX2ljb25fcGxhY2VtZW50PVwiaWNvbk9ubHlcIlxuICAgICAgICAgICAgICAgICAgICBidXR0b25faWNvbj1cImFycm93LXJpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgYnV0dG9uX3R5cGU9XCJzZWNvbmRhcnlcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2tlZCk9XCJuZXh0U2xpZGUoKVwiPiBOZXh0IHNsaWRlXG4gICAgICAgICAgICAgICAgICAgIDwvdWktYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvdWktc3RhY2s+XG4gICAgICAgICAgICA8L3VpLWJveD5cbiAgICAgICAgPC91aS1zdGFjaz5cbiAgICA8L3VpLXN0YWNrPlxuPC91aS1ib3g+XG4iXX0=
|
package/fesm2022/oasys-lib.mjs
CHANGED
|
@@ -2215,15 +2215,22 @@ class CarouselComponent {
|
|
|
2215
2215
|
* Set the scrollbar placement and width based on carouselscrollbarplaceholder and carouselctastack
|
|
2216
2216
|
*/
|
|
2217
2217
|
setupScrollbarLayoutProperties() {
|
|
2218
|
-
if (this.carousel_pagination
|
|
2218
|
+
if (this.carousel_pagination === 'none') {
|
|
2219
2219
|
return;
|
|
2220
2220
|
}
|
|
2221
2221
|
const carouselStack = this.carouselctastack?.nativeElement;
|
|
2222
2222
|
const scrollbarElement = this.carouselscrollbarplaceholder?.nativeElement;
|
|
2223
2223
|
const scrollbarHeight = this.document.defaultView.getComputedStyle(document.documentElement).getPropertyValue("--swiper-scrollbar-size");
|
|
2224
|
-
if (carouselStack) {
|
|
2224
|
+
if (carouselStack && this.carousel_pagination === 'scroll-arrows') {
|
|
2225
2225
|
this.element?.nativeElement?.style?.setProperty("--ui-carousel-scrollbar-width", `${scrollbarElement?.offsetWidth - parseInt(this.getStyle(carouselStack, 'gap'), 10)}px`);
|
|
2226
2226
|
this.element?.nativeElement?.style?.setProperty("--ui-carousel-scrollbar-offset-top", `${parseInt(this.getStyle(carouselStack, 'gap'), 10) + (scrollbarElement?.offsetHeight / 2) + (parseInt(scrollbarHeight, 10) / 2)}px`);
|
|
2227
|
+
this.element?.nativeElement?.style?.setProperty("--ui-carousel-scrollbar-height", "2px");
|
|
2228
|
+
}
|
|
2229
|
+
if (carouselStack && this.carousel_pagination === 'scroll-bar') {
|
|
2230
|
+
this.element?.nativeElement?.style?.setProperty("--ui-carousel-scrollbar-width", "100%");
|
|
2231
|
+
this.element?.nativeElement?.style?.setProperty("--ui-carousel-scrollbar-offset-top", `0px`);
|
|
2232
|
+
this.element?.nativeElement?.style?.setProperty("--ui-carousel-scrollbar-height", "4px");
|
|
2233
|
+
this.element?.nativeElement?.style?.setProperty("--ui-carousel-scrollbar-left", "0px");
|
|
2227
2234
|
}
|
|
2228
2235
|
}
|
|
2229
2236
|
/**
|
|
@@ -2242,7 +2249,7 @@ class CarouselComponent {
|
|
|
2242
2249
|
grabCursor: true,
|
|
2243
2250
|
spaceBetween: (parseInt(carouselGap.replace('.', ''), 10)) || 0,
|
|
2244
2251
|
scrollbar: {
|
|
2245
|
-
enabled: this.carousel_pagination === 'scroll-arrows',
|
|
2252
|
+
enabled: this.carousel_pagination === 'scroll-arrows' || this.carousel_pagination === 'scroll-bar',
|
|
2246
2253
|
draggable: true,
|
|
2247
2254
|
},
|
|
2248
2255
|
centerInsufficientSlides: this.center_insufficient_slides,
|
|
@@ -2261,7 +2268,8 @@ class CarouselComponent {
|
|
|
2261
2268
|
position: relative;
|
|
2262
2269
|
top: var(--ui-carousel-scrollbar-offset-top);
|
|
2263
2270
|
width: var(--ui-carousel-scrollbar-width);
|
|
2264
|
-
height:
|
|
2271
|
+
height: var(--ui-carousel-scrollbar-height);
|
|
2272
|
+
left: ${this.carousel_pagination === 'scroll-bar' ? 'var(--ui-carousel-scrollbar-left)' : '1%'};
|
|
2265
2273
|
background: ${scrollbarBackgroundColour}
|
|
2266
2274
|
}
|
|
2267
2275
|
|
|
@@ -2272,7 +2280,7 @@ class CarouselComponent {
|
|
|
2272
2280
|
breakpoints: {
|
|
2273
2281
|
0: {
|
|
2274
2282
|
scrollbar: {
|
|
2275
|
-
enabled: this.carousel_pagination === 'scroll-arrows',
|
|
2283
|
+
enabled: this.carousel_pagination === 'scroll-arrows' || this.carousel_pagination === 'scroll-bar',
|
|
2276
2284
|
draggable: true
|
|
2277
2285
|
},
|
|
2278
2286
|
slidesPerView: this.carousel_slides_per_view_mobile,
|
|
@@ -2283,21 +2291,21 @@ class CarouselComponent {
|
|
|
2283
2291
|
},
|
|
2284
2292
|
767: {
|
|
2285
2293
|
scrollbar: {
|
|
2286
|
-
enabled: this.carousel_pagination === 'scroll-arrows',
|
|
2294
|
+
enabled: this.carousel_pagination === 'scroll-arrows' || this.carousel_pagination === 'scroll-bar',
|
|
2287
2295
|
draggable: true
|
|
2288
2296
|
},
|
|
2289
2297
|
slidesPerView: this.carousel_slides_per_view_tablet
|
|
2290
2298
|
},
|
|
2291
2299
|
1080: {
|
|
2292
2300
|
scrollbar: {
|
|
2293
|
-
enabled: this.carousel_pagination === 'scroll-arrows',
|
|
2301
|
+
enabled: this.carousel_pagination === 'scroll-arrows' || this.carousel_pagination === 'scroll-bar',
|
|
2294
2302
|
draggable: true
|
|
2295
2303
|
},
|
|
2296
2304
|
slidesPerView: this.carousel_slides_per_view_laptop
|
|
2297
2305
|
},
|
|
2298
2306
|
1440: {
|
|
2299
2307
|
scrollbar: {
|
|
2300
|
-
enabled: this.carousel_pagination === 'scroll-arrows',
|
|
2308
|
+
enabled: this.carousel_pagination === 'scroll-arrows' || this.carousel_pagination === 'scroll-bar',
|
|
2301
2309
|
draggable: true
|
|
2302
2310
|
},
|
|
2303
2311
|
slidesPerView: this.carousel_slides_per_view_desktop
|
|
@@ -2328,11 +2336,11 @@ class CarouselComponent {
|
|
|
2328
2336
|
this.swiper.nativeElement.swiper.slidePrev();
|
|
2329
2337
|
}
|
|
2330
2338
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: CarouselComponent, deps: [{ token: TokenService }, { token: DOCUMENT }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2331
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.10", type: CarouselComponent, selector: "ui-carousel", inputs: { rewind: "rewind", carousel_overflow: "carousel_overflow", carousel_gap: "carousel_gap", carousel_pagination: "carousel_pagination", carousel_slides_per_view_desktop: "carousel_slides_per_view_desktop", carousel_slides_per_view_laptop: "carousel_slides_per_view_laptop", carousel_slides_per_view_tablet: "carousel_slides_per_view_tablet", carousel_slides_per_view_mobile: "carousel_slides_per_view_mobile", carousel_rows_per_row_mobile: "carousel_rows_per_row_mobile", carousel_loading: "carousel_loading", carousel_free_mode: "carousel_free_mode", center_insufficient_slides: "center_insufficient_slides" }, viewQueries: [{ propertyName: "swiper", first: true, predicate: ["swiper"], descendants: true, static: true }, { propertyName: "carouselscrollbarplaceholder", first: true, predicate: ["carouselscrollbarplaceholder"], descendants: true, read: ElementRef }, { propertyName: "carouselctastack", first: true, predicate: ["carouselctastack"], descendants: true, read: ElementRef }], ngImport: i0, template: "<ui-box\nclass=\"ui-carousel\"\n[ngClass]=\"{'ui-carousel-overflow': carousel_overflow}\"\nbox_align_y=\"center\"\nbox_space=\"none\"\nbox_content_fill_width=\"true\"\nbox_background=\"transparent\">\n\n <ui-stack #carouselctastack>\n <!-- Swiper WebComponent-->\n <swiper-container\n #swiper\n init=\"false\"\n touch-start-prevent-default=\"false\"\n prevent-clicks-propagation=\"true\">\n <ng-content></ng-content>\n </swiper-container>\n\n <!-- Custom navigation buttons -->\n <ui-stack stack_direction=\"x\" stack_align=\"center\" *ngIf=\"carousel_pagination === 'scroll-arrows'\">\n <div class=\"ui-carousel-scrollbar-placeholder\" #carouselscrollbarplaceholder></div>\n <ui-box\n box_space=\"none\"\n box_fill_mode=\"fit\"\n [box_space_right]=\"{mobile: 'tight', tablet: 'none', laptop: 'none', desktop: 'none'}\"\n box_background=\"transparent\">\n <ui-stack\n *ngIf=\"!(swiper?.swiper?.isBeginning && swiper?.swiper?.isEnd)\"\n stack_direction=\"x\"\n stack_gap=\"near\">\n <!-- Previous button-->\n <ui-button\n class=\"ui-carousel__previous\"\n button_size=\"large\"\n button_icon_placement=\"iconOnly\"\n button_icon=\"arrow-left\"\n button_type=\"secondary\"\n (clicked)=\"previousSlide()\"> Prevous slide\n </ui-button>\n <!-- Next button-->\n <ui-button\n class=\"ui-carousel__next\"\n button_size=\"large\"\n button_icon_placement=\"iconOnly\"\n button_icon=\"arrow-right\"\n button_type=\"secondary\"\n (clicked)=\"nextSlide()\"> Next slide\n </ui-button>\n </ui-stack>\n </ui-box>\n </ui-stack>\n </ui-stack>\n</ui-box>\n", styles: [":root{--swiper-scrollbar-size: 4px}.ui-carousel{touch-action:manipulation;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.ui-carousel swiper-container{width:100%}.ui-carousel.ui-carousel-overflow swiper-container{overflow:visible!important}.ui-carousel .ui-carousel-scrollbar-placeholder{width:100%;display:flex;align-self:stretch}.ui-carousel swiper-slide img{-webkit-user-drag:none}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: OasysButtonComponent, selector: "ui-button", inputs: ["button_icon", "button_icon_placement", "button_size", "button_full_width", "button_type", "button_event_type", "button_disabled", "button_text_nowrap", "href"], outputs: ["clicked"] }, { kind: "component", type: LayoutBoxComponent, selector: "ui-box", inputs: ["box_space", "box_space_top", "box_space_right", "box_space_bottom", "box_space_left", "box_align_x", "box_align_y", "box_fill_mode", "box_background", "box_content_fill_width", "box_border_color", "box_border_width", "box_border_style", "box_border_radius"] }, { kind: "component", type: LayoutStackComponent, selector: "ui-stack", inputs: ["stack_gap", "stack_align", "stack_direction", "stack_distribute", "stack_wrap", "stack_collapse_below"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
2339
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.10", type: CarouselComponent, selector: "ui-carousel", inputs: { rewind: "rewind", carousel_overflow: "carousel_overflow", carousel_gap: "carousel_gap", carousel_pagination: "carousel_pagination", carousel_slides_per_view_desktop: "carousel_slides_per_view_desktop", carousel_slides_per_view_laptop: "carousel_slides_per_view_laptop", carousel_slides_per_view_tablet: "carousel_slides_per_view_tablet", carousel_slides_per_view_mobile: "carousel_slides_per_view_mobile", carousel_rows_per_row_mobile: "carousel_rows_per_row_mobile", carousel_loading: "carousel_loading", carousel_free_mode: "carousel_free_mode", center_insufficient_slides: "center_insufficient_slides" }, viewQueries: [{ propertyName: "swiper", first: true, predicate: ["swiper"], descendants: true, static: true }, { propertyName: "carouselscrollbarplaceholder", first: true, predicate: ["carouselscrollbarplaceholder"], descendants: true, read: ElementRef }, { propertyName: "carouselctastack", first: true, predicate: ["carouselctastack"], descendants: true, read: ElementRef }], ngImport: i0, template: "<ui-box\nclass=\"ui-carousel\"\n[ngClass]=\"{'ui-carousel-overflow': carousel_overflow}\"\nbox_align_y=\"center\"\nbox_space=\"none\"\nbox_content_fill_width=\"true\"\nbox_background=\"transparent\">\n\n <ui-stack #carouselctastack>\n <!-- Swiper WebComponent-->\n <swiper-container\n #swiper\n init=\"false\"\n touch-start-prevent-default=\"false\"\n prevent-clicks-propagation=\"true\">\n <ng-content></ng-content>\n </swiper-container>\n\n <!-- Custom navigation buttons -->\n <ui-stack stack_direction=\"x\" stack_align=\"center\" *ngIf=\"carousel_pagination === 'scroll-arrows' || carousel_pagination === 'scroll-bar'\">\n <div class=\"ui-carousel-scrollbar-placeholder\" #carouselscrollbarplaceholder></div>\n <ui-box\n *ngIf=\"carousel_pagination === 'scroll-arrows'\"\n box_space=\"none\"\n box_fill_mode=\"fit\"\n [box_space_right]=\"{mobile: 'tight', tablet: 'none', laptop: 'none', desktop: 'none'}\"\n box_background=\"transparent\">\n <ui-stack\n *ngIf=\"!(swiper?.swiper?.isBeginning && swiper?.swiper?.isEnd)\"\n stack_direction=\"x\"\n stack_gap=\"near\">\n <!-- Previous button-->\n <ui-button\n class=\"ui-carousel__previous\"\n button_size=\"large\"\n button_icon_placement=\"iconOnly\"\n button_icon=\"arrow-left\"\n button_type=\"secondary\"\n (clicked)=\"previousSlide()\"> Prevous slide\n </ui-button>\n <!-- Next button-->\n <ui-button\n class=\"ui-carousel__next\"\n button_size=\"large\"\n button_icon_placement=\"iconOnly\"\n button_icon=\"arrow-right\"\n button_type=\"secondary\"\n (clicked)=\"nextSlide()\"> Next slide\n </ui-button>\n </ui-stack>\n </ui-box>\n </ui-stack>\n </ui-stack>\n</ui-box>\n", styles: [":root{--swiper-scrollbar-size: 4px}.ui-carousel{touch-action:manipulation;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.ui-carousel swiper-container{width:100%}.ui-carousel.ui-carousel-overflow swiper-container{overflow:visible!important}.ui-carousel .ui-carousel-scrollbar-placeholder{width:100%;display:flex;align-self:stretch}.ui-carousel swiper-slide img{-webkit-user-drag:none}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: OasysButtonComponent, selector: "ui-button", inputs: ["button_icon", "button_icon_placement", "button_size", "button_full_width", "button_type", "button_event_type", "button_disabled", "button_text_nowrap", "href"], outputs: ["clicked"] }, { kind: "component", type: LayoutBoxComponent, selector: "ui-box", inputs: ["box_space", "box_space_top", "box_space_right", "box_space_bottom", "box_space_left", "box_align_x", "box_align_y", "box_fill_mode", "box_background", "box_content_fill_width", "box_border_color", "box_border_width", "box_border_style", "box_border_radius"] }, { kind: "component", type: LayoutStackComponent, selector: "ui-stack", inputs: ["stack_gap", "stack_align", "stack_direction", "stack_distribute", "stack_wrap", "stack_collapse_below"] }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
2332
2340
|
}
|
|
2333
2341
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.10", ngImport: i0, type: CarouselComponent, decorators: [{
|
|
2334
2342
|
type: Component,
|
|
2335
|
-
args: [{ selector: 'ui-carousel', encapsulation: ViewEncapsulation.None, template: "<ui-box\nclass=\"ui-carousel\"\n[ngClass]=\"{'ui-carousel-overflow': carousel_overflow}\"\nbox_align_y=\"center\"\nbox_space=\"none\"\nbox_content_fill_width=\"true\"\nbox_background=\"transparent\">\n\n <ui-stack #carouselctastack>\n <!-- Swiper WebComponent-->\n <swiper-container\n #swiper\n init=\"false\"\n touch-start-prevent-default=\"false\"\n prevent-clicks-propagation=\"true\">\n <ng-content></ng-content>\n </swiper-container>\n\n <!-- Custom navigation buttons -->\n <ui-stack stack_direction=\"x\" stack_align=\"center\" *ngIf=\"carousel_pagination === 'scroll-arrows'\">\n <div class=\"ui-carousel-scrollbar-placeholder\" #carouselscrollbarplaceholder></div>\n <ui-box\n box_space=\"none\"\n box_fill_mode=\"fit\"\n [box_space_right]=\"{mobile: 'tight', tablet: 'none', laptop: 'none', desktop: 'none'}\"\n box_background=\"transparent\">\n <ui-stack\n *ngIf=\"!(swiper?.swiper?.isBeginning && swiper?.swiper?.isEnd)\"\n stack_direction=\"x\"\n stack_gap=\"near\">\n <!-- Previous button-->\n <ui-button\n class=\"ui-carousel__previous\"\n button_size=\"large\"\n button_icon_placement=\"iconOnly\"\n button_icon=\"arrow-left\"\n button_type=\"secondary\"\n (clicked)=\"previousSlide()\"> Prevous slide\n </ui-button>\n <!-- Next button-->\n <ui-button\n class=\"ui-carousel__next\"\n button_size=\"large\"\n button_icon_placement=\"iconOnly\"\n button_icon=\"arrow-right\"\n button_type=\"secondary\"\n (clicked)=\"nextSlide()\"> Next slide\n </ui-button>\n </ui-stack>\n </ui-box>\n </ui-stack>\n </ui-stack>\n</ui-box>\n", styles: [":root{--swiper-scrollbar-size: 4px}.ui-carousel{touch-action:manipulation;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.ui-carousel swiper-container{width:100%}.ui-carousel.ui-carousel-overflow swiper-container{overflow:visible!important}.ui-carousel .ui-carousel-scrollbar-placeholder{width:100%;display:flex;align-self:stretch}.ui-carousel swiper-slide img{-webkit-user-drag:none}\n"] }]
|
|
2343
|
+
args: [{ selector: 'ui-carousel', encapsulation: ViewEncapsulation.None, template: "<ui-box\nclass=\"ui-carousel\"\n[ngClass]=\"{'ui-carousel-overflow': carousel_overflow}\"\nbox_align_y=\"center\"\nbox_space=\"none\"\nbox_content_fill_width=\"true\"\nbox_background=\"transparent\">\n\n <ui-stack #carouselctastack>\n <!-- Swiper WebComponent-->\n <swiper-container\n #swiper\n init=\"false\"\n touch-start-prevent-default=\"false\"\n prevent-clicks-propagation=\"true\">\n <ng-content></ng-content>\n </swiper-container>\n\n <!-- Custom navigation buttons -->\n <ui-stack stack_direction=\"x\" stack_align=\"center\" *ngIf=\"carousel_pagination === 'scroll-arrows' || carousel_pagination === 'scroll-bar'\">\n <div class=\"ui-carousel-scrollbar-placeholder\" #carouselscrollbarplaceholder></div>\n <ui-box\n *ngIf=\"carousel_pagination === 'scroll-arrows'\"\n box_space=\"none\"\n box_fill_mode=\"fit\"\n [box_space_right]=\"{mobile: 'tight', tablet: 'none', laptop: 'none', desktop: 'none'}\"\n box_background=\"transparent\">\n <ui-stack\n *ngIf=\"!(swiper?.swiper?.isBeginning && swiper?.swiper?.isEnd)\"\n stack_direction=\"x\"\n stack_gap=\"near\">\n <!-- Previous button-->\n <ui-button\n class=\"ui-carousel__previous\"\n button_size=\"large\"\n button_icon_placement=\"iconOnly\"\n button_icon=\"arrow-left\"\n button_type=\"secondary\"\n (clicked)=\"previousSlide()\"> Prevous slide\n </ui-button>\n <!-- Next button-->\n <ui-button\n class=\"ui-carousel__next\"\n button_size=\"large\"\n button_icon_placement=\"iconOnly\"\n button_icon=\"arrow-right\"\n button_type=\"secondary\"\n (clicked)=\"nextSlide()\"> Next slide\n </ui-button>\n </ui-stack>\n </ui-box>\n </ui-stack>\n </ui-stack>\n</ui-box>\n", styles: [":root{--swiper-scrollbar-size: 4px}.ui-carousel{touch-action:manipulation;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.ui-carousel swiper-container{width:100%}.ui-carousel.ui-carousel-overflow swiper-container{overflow:visible!important}.ui-carousel .ui-carousel-scrollbar-placeholder{width:100%;display:flex;align-self:stretch}.ui-carousel swiper-slide img{-webkit-user-drag:none}\n"] }]
|
|
2336
2344
|
}], ctorParameters: function () { return [{ type: TokenService }, { type: Document, decorators: [{
|
|
2337
2345
|
type: Inject,
|
|
2338
2346
|
args: [DOCUMENT]
|