@colijnit/product 256.1.5 → 256.1.6
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/app/components/image-carousel/image-carousel.component.d.ts +16 -13
- package/app/service/product-event.service.d.ts +1 -1
- package/bundles/colijnit-product.umd.js +102 -41
- package/bundles/colijnit-product.umd.js.map +1 -1
- package/colijnit-product.metadata.json +1 -1
- package/esm2015/app/components/image-carousel/image-carousel.component.js +127 -70
- package/esm2015/app/components/product-page/product-page.component.js +1 -1
- package/esm2015/app/product-version.js +3 -3
- package/esm2015/app/service/product-event.service.js +1 -1
- package/fesm2015/colijnit-product.js +128 -70
- package/fesm2015/colijnit-product.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,43 +1,56 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { __awaiter } from "tslib";
|
|
2
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, HostBinding, HostListener, Input, ViewChild } from '@angular/core';
|
|
2
3
|
import { CoDocument } from '@colijnit/mainapi/build/model/co-document';
|
|
3
4
|
import { ProductConnectorService } from '../../service/product-connector.service';
|
|
4
5
|
import { ProductEventService } from '../../service/product-event.service';
|
|
5
|
-
import { IconEnum } from '../../enum/icon.enum';
|
|
6
|
-
import { IconCacheService } from '../../service/icon-cache.service';
|
|
7
6
|
import { DomSanitizer } from '@angular/platform-browser';
|
|
7
|
+
export class ImageViewModel {
|
|
8
|
+
}
|
|
8
9
|
export class ImageCarouselComponent {
|
|
9
|
-
constructor(_ione, _appEventService, _changeDetector, _domSanitizer
|
|
10
|
+
constructor(_ione, _appEventService, _changeDetector, _domSanitizer) {
|
|
10
11
|
this._ione = _ione;
|
|
11
12
|
this._appEventService = _appEventService;
|
|
12
13
|
this._changeDetector = _changeDetector;
|
|
13
14
|
this._domSanitizer = _domSanitizer;
|
|
14
|
-
this.iconCache = iconCache;
|
|
15
|
-
this.icons = IconEnum;
|
|
16
|
-
this.showLoader = false;
|
|
17
15
|
this.showRefresh = false;
|
|
18
16
|
this.resizing = false;
|
|
17
|
+
this.imageViewModels = [];
|
|
18
|
+
this.showLoader = false;
|
|
19
19
|
this._currentIndex = 0;
|
|
20
20
|
this._images = [];
|
|
21
21
|
this._subs = [];
|
|
22
|
+
this._resizeCanvasHeight = 500;
|
|
22
23
|
this._subs.push(this._appEventService.onRenderStarted.subscribe(() => {
|
|
23
24
|
this.showLoader = true;
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
this.
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
25
|
+
this._changeDetector.detectChanges();
|
|
26
|
+
setTimeout(() => {
|
|
27
|
+
this.showLoader = false;
|
|
28
|
+
this._changeDetector.detectChanges();
|
|
29
|
+
}, 10000);
|
|
30
|
+
}), this._appEventService.onDraftRenderImageReceived.subscribe((event) => {
|
|
31
|
+
if (event && event.detail) {
|
|
32
|
+
if (this._images[0] instanceof CoDocument) {
|
|
33
|
+
this._images.unshift(event.detail);
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
this._images[0] = event.detail;
|
|
37
|
+
}
|
|
38
|
+
this._loadAndRescaleImages();
|
|
30
39
|
}
|
|
31
40
|
this.showLoader = false;
|
|
41
|
+
this._changeDetector.detectChanges();
|
|
32
42
|
}));
|
|
33
43
|
}
|
|
34
44
|
set images(value) {
|
|
35
45
|
if (value && value.length > 0) {
|
|
36
46
|
this._images = this._filterValidImages(value);
|
|
37
|
-
this.
|
|
47
|
+
this._loadAndRescaleImages();
|
|
38
48
|
this._changeDetector.detectChanges();
|
|
39
49
|
}
|
|
40
50
|
}
|
|
51
|
+
get images() {
|
|
52
|
+
return this._images;
|
|
53
|
+
}
|
|
41
54
|
handleWindowResize() {
|
|
42
55
|
this.resizing = true;
|
|
43
56
|
this._scrollCarouselToIndex();
|
|
@@ -62,11 +75,6 @@ export class ImageCarouselComponent {
|
|
|
62
75
|
this._currentIndex = value;
|
|
63
76
|
this._scrollCarouselToIndex();
|
|
64
77
|
}
|
|
65
|
-
get images() {
|
|
66
|
-
return this._images;
|
|
67
|
-
}
|
|
68
|
-
ngOnInit() {
|
|
69
|
-
}
|
|
70
78
|
ngOnDestroy() {
|
|
71
79
|
this.carousel = undefined;
|
|
72
80
|
this._subs.forEach(s => s.unsubscribe());
|
|
@@ -77,43 +85,90 @@ export class ImageCarouselComponent {
|
|
|
77
85
|
onForceRenderImage() {
|
|
78
86
|
this._appEventService.onForceRenderImage.next();
|
|
79
87
|
}
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
88
|
+
handleShowImage(imageViewModel) {
|
|
89
|
+
if (imageViewModel && imageViewModel.originalSource) {
|
|
90
|
+
let popupWindow = window.open('', 'Image zoom', 'width=600,height=400');
|
|
91
|
+
// Set the content of the popup window
|
|
92
|
+
popupWindow.document.write('<html><head><title>Image zoom</title></head><body>');
|
|
93
|
+
popupWindow.document.write(`<img src=${imageViewModel.originalSource} alt="Image" style="width:100%; height:auto;">`);
|
|
94
|
+
popupWindow.document.write('</body></html>');
|
|
95
|
+
// Close the document to render the popup window
|
|
96
|
+
popupWindow.document.close();
|
|
89
97
|
}
|
|
90
|
-
else if (image.detail !== undefined) {
|
|
91
|
-
source = image.detail;
|
|
92
|
-
}
|
|
93
|
-
return this._domSanitizer.bypassSecurityTrustUrl(source);
|
|
94
98
|
}
|
|
95
99
|
_filterValidImages(value) {
|
|
96
100
|
if (!value) {
|
|
97
101
|
return [];
|
|
98
102
|
}
|
|
99
|
-
return value.filter(doc => {
|
|
103
|
+
return value.filter((doc) => {
|
|
100
104
|
const pattern = /\.(jpg|jpeg|png|gif|bmp|tiff|webp)$/i;
|
|
101
|
-
return pattern.test(doc.fileName) || !!doc.filePath;
|
|
105
|
+
return typeof doc === 'string' || (pattern.test(doc.fileName) || !!doc.filePath);
|
|
102
106
|
});
|
|
103
107
|
}
|
|
104
|
-
|
|
108
|
+
_loadAndRescaleImages() {
|
|
109
|
+
this.imageViewModels.length = 0;
|
|
105
110
|
if (this._images) {
|
|
106
111
|
this._images.forEach((i) => {
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
112
|
+
let imageViewModel = new ImageViewModel();
|
|
113
|
+
imageViewModel.image = i;
|
|
114
|
+
if (typeof i === 'string') { // is a rendered image coming from configurator
|
|
115
|
+
this._resizeAndSanitizeSource(i, imageViewModel);
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
if (i.filePath) {
|
|
119
|
+
this._resizeAndSanitizeSource(i.filePath, imageViewModel);
|
|
120
|
+
}
|
|
121
|
+
else if (i.documentBody) {
|
|
122
|
+
this._resizeAndSanitizeSource(i.documentBodyAsDataUri, imageViewModel);
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
this._ione.getDocumentContent(i.documentId, false).then((content) => {
|
|
126
|
+
if (content) {
|
|
127
|
+
i.documentBody = content.documentContent;
|
|
128
|
+
this._resizeAndSanitizeSource(i.documentBodyAsDataUri, imageViewModel);
|
|
129
|
+
this._changeDetector.detectChanges();
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
}
|
|
113
133
|
}
|
|
134
|
+
this.imageViewModels.push(imageViewModel);
|
|
135
|
+
this._changeDetector.detectChanges();
|
|
114
136
|
});
|
|
115
137
|
}
|
|
116
138
|
}
|
|
139
|
+
_resizeAndSanitizeSource(source, imageViewModel) {
|
|
140
|
+
const resizeCanvas = document.createElement('canvas');
|
|
141
|
+
const resizeCanvasContext = resizeCanvas.getContext('2d');
|
|
142
|
+
const resizeImage = document.createElement('img');
|
|
143
|
+
resizeImage.onload = () => __awaiter(this, void 0, void 0, function* () {
|
|
144
|
+
resizeCanvasContext.imageSmoothingEnabled = true;
|
|
145
|
+
resizeCanvasContext.imageSmoothingQuality = 'high';
|
|
146
|
+
// Get the original image dimensions
|
|
147
|
+
const originalWidth = resizeImage.width;
|
|
148
|
+
const originalHeight = resizeImage.height;
|
|
149
|
+
// Calculate the aspect ratio
|
|
150
|
+
const aspectRatio = originalWidth / originalHeight;
|
|
151
|
+
// Calculate the new width and height while maintaining the aspect ratio
|
|
152
|
+
let newWidth = this._resizeCanvasHeight;
|
|
153
|
+
let newHeight = this._resizeCanvasHeight;
|
|
154
|
+
if (originalWidth > originalHeight) {
|
|
155
|
+
newHeight = this._resizeCanvasHeight / aspectRatio;
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
newWidth = this._resizeCanvasHeight * aspectRatio;
|
|
159
|
+
}
|
|
160
|
+
// Set the canvas size to the new width and height
|
|
161
|
+
resizeCanvas.width = newWidth;
|
|
162
|
+
resizeCanvas.height = newHeight;
|
|
163
|
+
const imageWidth = this._resizeCanvasHeight * (resizeImage.height / resizeImage.width);
|
|
164
|
+
resizeCanvasContext.drawImage(resizeImage, 0, 0, newWidth, newHeight);
|
|
165
|
+
const resizedSource = resizeCanvas.toDataURL('image/jpeg');
|
|
166
|
+
imageViewModel.source = this._domSanitizer.bypassSecurityTrustUrl(resizedSource);
|
|
167
|
+
imageViewModel.originalSource = source;
|
|
168
|
+
});
|
|
169
|
+
// @ts-ignore
|
|
170
|
+
resizeImage.src = source;
|
|
171
|
+
}
|
|
117
172
|
_scrollCarouselToIndex() {
|
|
118
173
|
if (this.currentIndex > -1 && this.currentIndex <= this.images.length) {
|
|
119
174
|
const movePx = this.currentIndex * this.carousel.nativeElement.clientWidth;
|
|
@@ -131,45 +186,47 @@ ImageCarouselComponent.decorators = [
|
|
|
131
186
|
{ type: Component, args: [{
|
|
132
187
|
selector: 'app-image-carousel',
|
|
133
188
|
template: `
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
189
|
+
<div id="product_page_carousel">
|
|
190
|
+
<div id="product_page_carousel_items">
|
|
191
|
+
<co-loader [isShown]="true" *ngIf="showLoader"></co-loader>
|
|
192
|
+
<div #carousel class="inner-carousel">
|
|
193
|
+
<!-- This has been taken out of the for loop to prevent flashing images when updating. -->
|
|
194
|
+
<div *ngIf="imageViewModels[0]" class="carousel-item" [id]="'slide-0'" [class.active]="isCurrentIndex(0)" (click)="handleShowImage(imageViewModels[0])">
|
|
195
|
+
<img [src]="imageViewModels[0].source">
|
|
196
|
+
</div>
|
|
197
|
+
<div *ngFor="let imageViewModel of imageViewModels.slice(1); let index = index" class="carousel-item"
|
|
198
|
+
[id]="'slide-' + (index + 1)" [class.active]="isCurrentIndex((index + 1))" (click)="handleShowImage(imageViewModel)">
|
|
199
|
+
<img [src]="imageViewModel.source">
|
|
200
|
+
</div>
|
|
201
|
+
<div class="carousel-scroller-layer" *ngIf="imageViewModels && imageViewModels.length > 1">
|
|
202
|
+
<div class="carousel-item-scroller prev" (click)="gotoPrevSlide()" *ngIf="currentIndex > 0"></div>
|
|
203
|
+
<div class="carousel-item-scroller next" (click)="gotoNextSlide()" *ngIf="currentIndex < images.length - 1"></div>
|
|
204
|
+
</div>
|
|
205
|
+
</div>
|
|
206
|
+
<!--
|
|
207
|
+
<co-icon class="selector-type-icon refresh-button" [iconData]="iconCache.getIcon(icons.Refresh)" (click)="onForceRenderImage()" [class.loading]="showLoader" *ngIf="showRefresh"></co-icon>
|
|
208
|
+
-->
|
|
141
209
|
</div>
|
|
142
|
-
<div *ngFor="let image of images.slice(1); let index = index" class="carousel-item" [id]="'slide-' + (index + 1)" [class.active]="isCurrentIndex((index + 1))">
|
|
143
|
-
<img [src]="getImageSrc(image)">
|
|
144
|
-
</div>
|
|
145
|
-
<div class="carousel-scroller-layer" *ngIf="images && images.length > 1">
|
|
146
|
-
<div class="carousel-item-scroller prev" (click)="gotoPrevSlide()" *ngIf="currentIndex > 0"></div>
|
|
147
|
-
<div class="carousel-item-scroller next" (click)="gotoNextSlide()" *ngIf="currentIndex < images.length - 1"></div>
|
|
148
|
-
</div>
|
|
149
|
-
</div>
|
|
150
|
-
<!--
|
|
151
|
-
<co-icon class="selector-type-icon refresh-button" [iconData]="iconCache.getIcon(icons.Refresh)" (click)="onForceRenderImage()" [class.loading]="showLoader" *ngIf="showRefresh"></co-icon>
|
|
152
|
-
-->
|
|
153
|
-
</div>
|
|
154
210
|
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
211
|
+
<div id="product_page_carousel_thumbs">
|
|
212
|
+
<co-scroll-container class="scroll-container" *ngIf="imageViewModels && imageViewModels.length > 1">
|
|
213
|
+
<div *ngFor="let imageViewModel of imageViewModels; let index = index" class="carousel-thumb"
|
|
214
|
+
[class.active]="index === currentIndex">
|
|
215
|
+
<img [src]="imageViewModel.source" (click)="handleThumbClick(index)"/>
|
|
216
|
+
</div>
|
|
217
|
+
</co-scroll-container>
|
|
159
218
|
</div>
|
|
160
|
-
</co-scroll-container>
|
|
161
219
|
</div>
|
|
162
|
-
</div>
|
|
163
220
|
`,
|
|
164
|
-
|
|
221
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
222
|
+
styles: [":host{max-height:540px;height:100%;position:relative}:host:not(.resizing) .inner-carousel{scroll-behavior:smooth;-webkit-overflow-scrolling:touch;scroll-snap-type:x mandatory}#product_page_carousel{position:relative}#product_page_carousel .refresh-button{position:absolute;bottom:10px;right:10px;background:#fff}#product_page_carousel .refresh-button.loading{animation:spin 1s linear infinite}#product_page_carousel .refresh-button:hover{box-shadow:none;background:#74B77F;transition:all .2s ease-in-out}#product_page_carousel .refresh-button:hover ::ng-deep svg path{fill:#fff!important}#product_page_carousel #product_page_carousel_items{position:relative;margin-bottom:10px}#product_page_carousel #product_page_carousel_items ::ng-deep co-loader{position:absolute}#product_page_carousel .inner-carousel{display:flex;flex-direction:row;align-items:center;overflow:hidden;max-height:500px;border:1px solid #efefef}#product_page_carousel .carousel-item{max-height:500px;width:100%;display:flex;cursor:zoom-in;flex-shrink:0;flex-grow:0}#product_page_carousel .carousel-item img{width:100%;height:auto;-o-object-fit:contain;object-fit:contain}#product_page_carousel .carousel-scroller-layer{height:100%;width:100%;position:absolute;pointer-events:none;top:0;left:0}#product_page_carousel #product_page_carousel_thumbs{display:flex;justify-content:flex-start;height:80px;margin-left:auto;margin-right:auto}#product_page_carousel #product_page_carousel_thumbs ::ng-deep co-scroll-container{padding:0 22px}#product_page_carousel #product_page_carousel_thumbs ::ng-deep co-scroll-container .content-wrapper{padding:0}#product_page_carousel #product_page_carousel_thumbs .carousel-thumb{opacity:1;cursor:pointer;transition:all .2s ease;padding:4px;border:1px solid #f6f5f4}#product_page_carousel #product_page_carousel_thumbs .carousel-thumb.active,#product_page_carousel #product_page_carousel_thumbs .carousel-thumb:hover{border-color:#22313c}#product_page_carousel #product_page_carousel_thumbs .carousel-thumb:not(:last-child){margin-right:10px}#product_page_carousel #product_page_carousel_thumbs .carousel-thumb img{height:68px}@media screen and (max-width: 650px){#product_page_carousel_thumbs{height:57px!important}#product_page_carousel_thumbs .carousel-thumb img{height:50px!important}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}\n"]
|
|
165
223
|
},] }
|
|
166
224
|
];
|
|
167
225
|
ImageCarouselComponent.ctorParameters = () => [
|
|
168
226
|
{ type: ProductConnectorService },
|
|
169
227
|
{ type: ProductEventService },
|
|
170
228
|
{ type: ChangeDetectorRef },
|
|
171
|
-
{ type: DomSanitizer }
|
|
172
|
-
{ type: IconCacheService }
|
|
229
|
+
{ type: DomSanitizer }
|
|
173
230
|
];
|
|
174
231
|
ImageCarouselComponent.propDecorators = {
|
|
175
232
|
carousel: [{ type: ViewChild, args: ['carousel', { read: ElementRef },] }],
|
|
@@ -180,4 +237,4 @@ ImageCarouselComponent.propDecorators = {
|
|
|
180
237
|
gotoPrevSlide: [{ type: HostListener, args: ['swiperight',] }],
|
|
181
238
|
resizing: [{ type: HostBinding, args: ['class.resizing',] }]
|
|
182
239
|
};
|
|
183
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtY2Fyb3VzZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2ltYWdlLWNhcm91c2VsL2ltYWdlLWNhcm91c2VsLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pJLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNsRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUUxRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDcEUsT0FBTyxFQUFDLFlBQVksRUFBVSxNQUFNLDJCQUEyQixDQUFDO0FBc0NoRSxNQUFNLE9BQU8sc0JBQXNCO0lBb0VqQyxZQUNVLEtBQThCLEVBQzlCLGdCQUFxQyxFQUNyQyxlQUFrQyxFQUNsQyxhQUEyQixFQUM1QixTQUEyQjtRQUoxQixVQUFLLEdBQUwsS0FBSyxDQUF5QjtRQUM5QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQXFCO1FBQ3JDLG9CQUFlLEdBQWYsZUFBZSxDQUFtQjtRQUNsQyxrQkFBYSxHQUFiLGFBQWEsQ0FBYztRQUM1QixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQXZFcEIsVUFBSyxHQUFvQixRQUFRLENBQUM7UUFFM0MsZUFBVSxHQUFZLEtBQUssQ0FBQztRQU01QixnQkFBVyxHQUFZLEtBQUssQ0FBQztRQTZDN0IsYUFBUSxHQUFHLEtBQUssQ0FBQztRQVFoQixrQkFBYSxH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Q0gsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFFTyxzQkFBc0I7UUFDNUIsSUFBSSxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUU7WUFDckUsTUFBTSxNQUFNLEdBQVcsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUM7WUFDbkYsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFO2dCQUNoRCxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDO2dCQUNoRCx5Q0FBeUM7Z0JBQ3pDLGtCQUFrQjtnQkFDbEIsdUJBQXVCO2dCQUN2QixNQUFNO2FBQ1A7U0FDRjtJQUNILENBQUM7OztZQWhNRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLG9CQUFvQjtnQkFDOUIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4QlQ7O2FBRUY7OztZQTFDUSx1QkFBdUI7WUFDdkIsbUJBQW1CO1lBSG5CLGlCQUFpQjtZQU9sQixZQUFZO1lBRFgsZ0JBQWdCOzs7dUJBNkN0QixTQUFTLFNBQUMsVUFBVSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTswQkFHMUMsS0FBSztxQkFHTCxLQUFLO2lDQVNMLFlBQVksU0FBQyxlQUFlOzRCQVU1QixZQUFZLFNBQUMsV0FBVzs0QkFLeEIsWUFBWSxTQUFDLFlBQVk7dUJBa0J6QixXQUFXLFNBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSG9zdEJpbmRpbmcsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvRG9jdW1lbnQgfSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9jby1kb2N1bWVudCc7XG5pbXBvcnQgeyBQcm9kdWN0Q29ubmVjdG9yU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvcHJvZHVjdC1jb25uZWN0b3Iuc2VydmljZSc7XG5pbXBvcnQgeyBQcm9kdWN0RXZlbnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZS9wcm9kdWN0LWV2ZW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJY29uRW51bSB9IGZyb20gJy4uLy4uL2VudW0vaWNvbi5lbnVtJztcbmltcG9ydCB7IEljb25DYWNoZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlL2ljb24tY2FjaGUuc2VydmljZSc7XG5pbXBvcnQge0RvbVNhbml0aXplciwgU2FmZVVybH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQge0RvY3VtZW50Q29udGVudH0gZnJvbSAnQGNvbGlqbml0L2FydGljbGVhcGkvYnVpbGQvbW9kZWwvZG9jdW1lbnQtY29udGVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1pbWFnZS1jYXJvdXNlbCcsXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBpZD1cInByb2R1Y3RfcGFnZV9jYXJvdXNlbFwiPlxuICAgICAgPGRpdiBpZD1cInByb2R1Y3RfcGFnZV9jYXJvdXNlbF9pdGVtc1wiPlxuICAgICAgICA8Y28tbG9hZGVyIFtpc1Nob3duXT1cInNob3dMb2FkZXJcIj48L2NvLWxvYWRlcj5cbiAgICAgICAgPGRpdiAjY2Fyb3VzZWwgY2xhc3M9XCJpbm5lci1jYXJvdXNlbFwiPlxuICAgICAgICAgIDwhLS0gVGhpcyBoYXMgYmVlbiB0YWtlbiBvdXQgb2YgdGhlIGZvciBsb29wIHRvIHByZXZlbnQgZmxhc2hpbmcgaW1hZ2VzIHdoZW4gdXBkYXRpbmcuIC0tPlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJpbWFnZXNbMF1cIiBjbGFzcz1cImNhcm91c2VsLWl0ZW1cIiBbaWRdPVwiJ3NsaWRlLTAnXCIgW2NsYXNzLmFjdGl2ZV09XCJpc0N1cnJlbnRJbmRleCgwKVwiPlxuICAgICAgICAgICAgPGltZyBbc3JjXT1cImdldEltYWdlU3JjKGltYWdlc1swXSlcIj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBpbWFnZSBvZiBpbWFnZXMuc2xpY2UoMSk7IGxldCBpbmRleCA9IGluZGV4XCIgY2xhc3M9XCJjYXJvdXNlbC1pdGVtXCIgW2lkXT1cIidzbGlkZS0nICsgKGluZGV4ICsgMSlcIiBbY2xhc3MuYWN0aXZlXT1cImlzQ3VycmVudEluZGV4KChpbmRleCArIDEpKVwiPlxuICAgICAgICAgICAgPGltZyBbc3JjXT1cImdldEltYWdlU3JjKGltYWdlKVwiPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJvdXNlbC1zY3JvbGxlci1sYXllclwiICpuZ0lmPVwiaW1hZ2VzICYmIGltYWdlcy5sZW5ndGggPiAxXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2Fyb3VzZWwtaXRlbS1zY3JvbGxlciBwcmV2XCIgKGNsaWNrKT1cImdvdG9QcmV2U2xpZGUoKVwiICpuZ0lmPVwiY3VycmVudEluZGV4ID4gMFwiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcm91c2VsLWl0ZW0tc2Nyb2xsZXIgbmV4dFwiIChjbGljayk9XCJnb3RvTmV4dFNsaWRlKClcIiAqbmdJZj1cImN1cnJlbnRJbmRleCA8IGltYWdlcy5sZW5ndGggLSAxXCI+PC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuPCEtLVxuICAgICAgICA8Y28taWNvbiBjbGFzcz1cInNlbGVjdG9yLXR5cGUtaWNvbiByZWZyZXNoLWJ1dHRvblwiIFtpY29uRGF0YV09XCJpY29uQ2FjaGUuZ2V0SWNvbihpY29ucy5SZWZyZXNoKVwiIChjbGljayk9XCJvbkZvcmNlUmVuZGVySW1hZ2UoKVwiIFtjbGFzcy5sb2FkaW5nXT1cInNob3dMb2FkZXJcIiAqbmdJZj1cInNob3dSZWZyZXNoXCI+PC9jby1pY29uPlxuLS0+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBpZD1cInByb2R1Y3RfcGFnZV9jYXJvdXNlbF90aHVtYnNcIj5cbiAgICAgICAgPGNvLXNjcm9sbC1jb250YWluZXIgY2xhc3M9XCJzY3JvbGwtY29udGFpbmVyXCIgKm5nSWY9XCJpbWFnZXMgJiYgaW1hZ2VzLmxlbmd0aCA+IDFcIj5cbiAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBpbWFnZSBvZiBpbWFnZXM7IGxldCBpbmRleCA9IGluZGV4XCIgY2xhc3M9XCJjYXJvdXNlbC10aHVtYlwiIFtjbGFzcy5hY3RpdmVdPVwiaW5kZXggPT09IGN1cnJlbnRJbmRleFwiPlxuICAgICAgICAgICAgPGltZyBbc3JjXT1cImdldEltYWdlU3JjKGltYWdlKVwiIChjbGljayk9XCJoYW5kbGVUaHVtYkNsaWNrKGluZGV4KVwiLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9jby1zY3JvbGwtY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL2ltYWdlLWNhcm91c2VsLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgSW1hZ2VDYXJvdXNlbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBwdWJsaWMgcmVhZG9ubHkgaWNvbnM6IHR5cGVvZiBJY29uRW51bSA9IEljb25FbnVtO1xuXG4gIHB1YmxpYyBzaG93TG9hZGVyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQFZpZXdDaGlsZCgnY2Fyb3VzZWwnLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgcHVibGljIGNhcm91c2VsOiBFbGVtZW50UmVmO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzaG93UmVmcmVzaDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgaW1hZ2VzKHZhbHVlOiBDb0RvY3VtZW50W10pIHtcbiAgICBpZiAodmFsdWUgJiYgdmFsdWUubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5faW1hZ2VzID0gdGhpcy5fZmlsdGVyVmFsaWRJbWFnZXModmFsdWUpO1xuICAgICAgdGhpcy5fbG9hZEltYWdlcygpO1xuICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnKVxuICBwdWJsaWMgaGFuZGxlV2luZG93UmVzaXplKCk6IHZvaWQge1xuICAgIHRoaXMucmVzaXppbmcgPSB0cnVlO1xuICAgIHRoaXMuX3Njcm9sbENhcm91c2VsVG9JbmRleCgpO1xuICAgIGNsZWFyVGltZW91dCh0aGlzLl9yZXNpemVUaW1lcik7XG4gICAgdGhpcy5fcmVzaXplVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMucmVzaXppbmcgPSBmYWxzZTtcbiAgICB9LCAyMDApO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignc3dpcGVsZWZ0JylcbiAgcHVibGljIGdvdG9OZXh0U2xpZGUoKTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50SW5kZXgrKztcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ3N3aXBlcmlnaHQnKVxuICBwdWJsaWMgZ290b1ByZXZTbGlkZSgpOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnRJbmRleC0tO1xuICB9XG5cbiAgcHVibGljIGlzQ3VycmVudEluZGV4KGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50SW5kZXggPT09IGluZGV4O1xuICB9XG5cbiAgcHVibGljIGdldCBjdXJyZW50SW5kZXgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudEluZGV4O1xuICB9XG5cbiAgcHVibGljIHNldCBjdXJyZW50SW5kZXgodmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuX2N1cnJlbnRJbmRleCA9IHZhbHVlO1xuICAgIHRoaXMuX3Njcm9sbENhcm91c2VsVG9JbmRleCgpO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5yZXNpemluZycpXG4gIHB1YmxpYyByZXNpemluZyA9IGZhbHNlO1xuXG4gIHB1YmxpYyBnZXQgaW1hZ2VzKCk6IENvRG9jdW1lbnRbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2ltYWdlcztcbiAgfVxuXG4gIHByaXZhdGUgX3Jlc2l6ZVRpbWVyOiBhbnk7XG5cbiAgcHJpdmF0ZSBfY3VycmVudEluZGV4ID0gMDtcblxuICBwcml2YXRlIF9pbWFnZXMgPSBbXTtcbiAgcHJpdmF0ZSBfc3ViczogU3Vic2NyaXB0aW9uW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9pb25lOiBQcm9kdWN0Q29ubmVjdG9yU2VydmljZSxcbiAgICBwcml2YXRlIF9hcHBFdmVudFNlcnZpY2U6IFByb2R1Y3RFdmVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgX2RvbVNhbml0aXplcjogRG9tU2FuaXRpemVyLFxuICAgIHB1YmxpYyBpY29uQ2FjaGU6IEljb25DYWNoZVNlcnZpY2UsXG4gICkge1xuICAgIHRoaXMuX3N1YnMucHVzaChcbiAgICAgIHRoaXMuX2FwcEV2ZW50U2VydmljZS5vblJlbmRlclN0YXJ0ZWQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5zaG93TG9hZGVyID0gdHJ1ZTtcbiAgICAgIH0pLFxuICAgICAgdGhpcy5fYXBwRXZlbnRTZXJ2aWNlLm9uRHJhZnRSZW5kZXJJbWFnZVJlY2VpdmVkLnN1YnNjcmliZSgodXJsOiBzdHJpbmcpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuX2ltYWdlc1swXSBpbnN0YW5jZW9mIENvRG9jdW1lbnQpIHtcbiAgICAgICAgICB0aGlzLl9pbWFnZXMudW5zaGlmdCh1cmwpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuX2ltYWdlc1swXSA9IHVybDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNob3dMb2FkZXIgPSBmYWxzZTtcbiAgICAgIH0pLFxuICAgICk7XG5cbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5jYXJvdXNlbCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLl9zdWJzLmZvckVhY2gocyA9PiBzLnVuc3Vic2NyaWJlKCkpO1xuICB9XG5cbiAgcHVibGljIGhhbmRsZVRodW1iQ2xpY2soaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudEluZGV4ID0gaW5kZXg7XG4gIH1cblxuICBwdWJsaWMgb25Gb3JjZVJlbmRlckltYWdlKCk6IHZvaWQge1xuICAgIHRoaXMuX2FwcEV2ZW50U2VydmljZS5vbkZvcmNlUmVuZGVySW1hZ2UubmV4dCgpO1xuICB9XG5cbiAgcHVibGljIGdldEltYWdlU3JjKGltYWdlOiBDb0RvY3VtZW50IHwgQ3VzdG9tRXZlbnQpOiBTYWZlVXJsIHtcbiAgICBsZXQgc291cmNlID0gJyc7XG4gICAgaWYgKGltYWdlIGluc3RhbmNlb2YgQ29Eb2N1bWVudCkge1xuICAgICAgaWYgKGltYWdlLmZpbGVQYXRoKSB7XG4gICAgICAgIHNvdXJjZSA9IGltYWdlLmZpbGVQYXRoO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc291cmNlID0gaW1hZ2UuZG9jdW1lbnRCb2R5QXNEYXRhVXJpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaW1hZ2UuZGV0YWlsICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHNvdXJjZSA9IGltYWdlLmRldGFpbDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fZG9tU2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RVcmwoc291cmNlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2ZpbHRlclZhbGlkSW1hZ2VzKHZhbHVlOiBDb0RvY3VtZW50W10pOiBDb0RvY3VtZW50W10ge1xuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlLmZpbHRlcihkb2MgPT4ge1xuICAgICAgY29uc3QgcGF0dGVybiA9IC9cXC4oanBnfGpwZWd8cG5nfGdpZnxibXB8dGlmZnx3ZWJwKSQvaTtcbiAgICAgIHJldHVybiBwYXR0ZXJuLnRlc3QoZG9jLmZpbGVOYW1lKSB8fCAhIWRvYy5maWxlUGF0aDtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2xvYWRJbWFnZXMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX2ltYWdlcykge1xuICAgICAgdGhpcy5faW1hZ2VzLmZvckVhY2goKGk6IENvRG9jdW1lbnQpID0+IHtcbiAgICAgICAgaWYgKCFpLmRvY3VtZW50Qm9keSAmJiAhaS5maWxlUGF0aCkge1xuICAgICAgICAgIHRoaXMuX2lvbmUuZ2V0RG9jdW1lbnRDb250ZW50KGkuZG9jdW1lbnRJZCwgZmFsc2UpLnRoZW4oKGNvbnRlbnQ6IERvY3VtZW50Q29udGVudCkgPT4ge1xuICAgICAgICAgICAgaWYgKGNvbnRlbnQpIHtcbiAgICAgICAgICAgICAgaS5kb2N1bWVudEJvZHkgPSBjb250ZW50LmRvY3VtZW50Q29udGVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfc2Nyb2xsQ2Fyb3VzZWxUb0luZGV4KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmN1cnJlbnRJbmRleCA+IC0xICYmIHRoaXMuY3VycmVudEluZGV4IDw9IHRoaXMuaW1hZ2VzLmxlbmd0aCkge1xuICAgICAgY29uc3QgbW92ZVB4OiBudW1iZXIgPSB0aGlzLmN1cnJlbnRJbmRleCAqIHRoaXMuY2Fyb3VzZWwubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aDtcbiAgICAgIGlmICh0aGlzLmNhcm91c2VsICYmIHRoaXMuY2Fyb3VzZWwubmF0aXZlRWxlbWVudCkge1xuICAgICAgICB0aGlzLmNhcm91c2VsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA9IG1vdmVQeDtcbiAgICAgICAgLy8gdGhpcy5jYXJvdXNlbC5uYXRpdmVFbGVtZW50LnNjcm9sbFRvKHtcbiAgICAgICAgLy8gICBsZWZ0OiBtb3ZlUHgsXG4gICAgICAgIC8vICAgYmVoYXZpb3I6ICdzbW9vdGgnXG4gICAgICAgIC8vIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG59XG4iXX0=
|
|
240
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtY2Fyb3VzZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb21wb25lbnRzL2ltYWdlLWNhcm91c2VsL2ltYWdlLWNhcm91c2VsLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixXQUFXLEVBQ1gsWUFBWSxFQUNaLEtBQUssRUFFTCxTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLDJDQUEyQyxDQUFDO0FBQ3JFLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLHlDQUF5QyxDQUFDO0FBQ2hGLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBR3hFLE9BQU8sRUFBQyxZQUFZLEVBQVUsTUFBTSwyQkFBMkIsQ0FBQztBQUdoRSxNQUFNLE9BQU8sY0FBYztDQUkxQjtBQXdDRCxNQUFNLE9BQU8sc0JBQXNCO0lBa0VqQyxZQUNVLEtBQThCLEVBQzlCLGdCQUFxQyxFQUNyQyxlQUFrQyxFQUNsQyxhQUEyQjtRQUgzQixVQUFLLEdBQUwsS0FBSyxDQUF5QjtRQUM5QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQXFCO1FBQ3JDLG9CQUFlLEdBQWYsZUFBZSxDQUFtQjtRQUNsQyxrQkFBYSxHQUFiLGFBQWEsQ0FBYztRQWpFOUIsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFpRDdCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFakIsb0JBQWUsR0FBcUIsRUFBRSxDQUFDO1FBQ3ZDLGVBQVUsR0FBWSxLQUFLLENBQUM7UUFHM0Isa0JBQWEsR0FBRyxDQUFDLENBQUM7UUFDbEIsWUFBTyxHQUE0QixFQUFFLENBQUM7UUFDdEMsVUFBSyxHQUFtQixFQUFFLENBQUM7UUFFM0Isd0JBQW1CLEdBQVcs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Tyx1QkFBdUI7WUFDdkIsbUJBQW1CO1lBWHpCLGlCQUFpQjtZQWNYLFlBQVk7Ozt1QkFnRGpCLFNBQVMsU0FBQyxVQUFVLEVBQUUsRUFBQyxJQUFJLEVBQUUsVUFBVSxFQUFDOzBCQUd4QyxLQUFLO3FCQUdMLEtBQUs7aUNBYUwsWUFBWSxTQUFDLGVBQWU7NEJBVTVCLFlBQVksU0FBQyxXQUFXOzRCQUt4QixZQUFZLFNBQUMsWUFBWTt1QkFrQnpCLFdBQVcsU0FBQyxnQkFBZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb0RvY3VtZW50fSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9jby1kb2N1bWVudCc7XG5pbXBvcnQge1Byb2R1Y3RDb25uZWN0b3JTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlL3Byb2R1Y3QtY29ubmVjdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHtQcm9kdWN0RXZlbnRTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlL3Byb2R1Y3QtZXZlbnQuc2VydmljZSc7XG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0ljb25FbnVtfSBmcm9tICcuLi8uLi9lbnVtL2ljb24uZW51bSc7XG5pbXBvcnQge0RvbVNhbml0aXplciwgU2FmZVVybH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQge0RvY3VtZW50Q29udGVudH0gZnJvbSAnQGNvbGlqbml0L2FydGljbGVhcGkvYnVpbGQvbW9kZWwvZG9jdW1lbnQtY29udGVudCc7XG5cbmV4cG9ydCBjbGFzcyBJbWFnZVZpZXdNb2RlbCB7XG4gIHB1YmxpYyBpbWFnZTogQ29Eb2N1bWVudCB8IHN0cmluZztcbiAgcHVibGljIHNvdXJjZTogU2FmZVVybDtcbiAgcHVibGljIG9yaWdpbmFsU291cmNlOiBzdHJpbmc7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1pbWFnZS1jYXJvdXNlbCcsXG4gIHRlbXBsYXRlOiBgXG4gICAgICA8ZGl2IGlkPVwicHJvZHVjdF9wYWdlX2Nhcm91c2VsXCI+XG4gICAgICAgICAgPGRpdiBpZD1cInByb2R1Y3RfcGFnZV9jYXJvdXNlbF9pdGVtc1wiPlxuICAgICAgICAgICAgICA8Y28tbG9hZGVyIFtpc1Nob3duXT1cInRydWVcIiAqbmdJZj1cInNob3dMb2FkZXJcIj48L2NvLWxvYWRlcj5cbiAgICAgICAgICAgICAgPGRpdiAjY2Fyb3VzZWwgY2xhc3M9XCJpbm5lci1jYXJvdXNlbFwiPlxuICAgICAgICAgICAgICAgICAgPCEtLSBUaGlzIGhhcyBiZWVuIHRha2VuIG91dCBvZiB0aGUgZm9yIGxvb3AgdG8gcHJldmVudCBmbGFzaGluZyBpbWFnZXMgd2hlbiB1cGRhdGluZy4gLS0+XG4gICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaW1hZ2VWaWV3TW9kZWxzWzBdXCIgY2xhc3M9XCJjYXJvdXNlbC1pdGVtXCIgW2lkXT1cIidzbGlkZS0wJ1wiIFtjbGFzcy5hY3RpdmVdPVwiaXNDdXJyZW50SW5kZXgoMClcIiAoY2xpY2spPVwiaGFuZGxlU2hvd0ltYWdlKGltYWdlVmlld01vZGVsc1swXSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiaW1hZ2VWaWV3TW9kZWxzWzBdLnNvdXJjZVwiPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBpbWFnZVZpZXdNb2RlbCBvZiBpbWFnZVZpZXdNb2RlbHMuc2xpY2UoMSk7IGxldCBpbmRleCA9IGluZGV4XCIgY2xhc3M9XCJjYXJvdXNlbC1pdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cIidzbGlkZS0nICsgKGluZGV4ICsgMSlcIiBbY2xhc3MuYWN0aXZlXT1cImlzQ3VycmVudEluZGV4KChpbmRleCArIDEpKVwiIChjbGljayk9XCJoYW5kbGVTaG93SW1hZ2UoaW1hZ2VWaWV3TW9kZWwpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImltYWdlVmlld01vZGVsLnNvdXJjZVwiPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2Fyb3VzZWwtc2Nyb2xsZXItbGF5ZXJcIiAqbmdJZj1cImltYWdlVmlld01vZGVscyAmJiBpbWFnZVZpZXdNb2RlbHMubGVuZ3RoID4gMVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJvdXNlbC1pdGVtLXNjcm9sbGVyIHByZXZcIiAoY2xpY2spPVwiZ290b1ByZXZTbGlkZSgpXCIgKm5nSWY9XCJjdXJyZW50SW5kZXggPiAwXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcm91c2VsLWl0ZW0tc2Nyb2xsZXIgbmV4dFwiIChjbGljayk9XCJnb3RvTmV4dFNsaWRlKClcIiAqbmdJZj1cImN1cnJlbnRJbmRleCA8IGltYWdlcy5sZW5ndGggLSAxXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwhLS1cbiAgICAgICAgICAgICAgICAgICAgICA8Y28taWNvbiBjbGFzcz1cInNlbGVjdG9yLXR5cGUtaWNvbiByZWZyZXNoLWJ1dHRvblwiIFtpY29uRGF0YV09XCJpY29uQ2FjaGUuZ2V0SWNvbihpY29ucy5SZWZyZXNoKVwiIChjbGljayk9XCJvbkZvcmNlUmVuZGVySW1hZ2UoKVwiIFtjbGFzcy5sb2FkaW5nXT1cInNob3dMb2FkZXJcIiAqbmdJZj1cInNob3dSZWZyZXNoXCI+PC9jby1pY29uPlxuICAgICAgICAgICAgICAtLT5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxkaXYgaWQ9XCJwcm9kdWN0X3BhZ2VfY2Fyb3VzZWxfdGh1bWJzXCI+XG4gICAgICAgICAgICAgIDxjby1zY3JvbGwtY29udGFpbmVyIGNsYXNzPVwic2Nyb2xsLWNvbnRhaW5lclwiICpuZ0lmPVwiaW1hZ2VWaWV3TW9kZWxzICYmIGltYWdlVmlld01vZGVscy5sZW5ndGggPiAxXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBpbWFnZVZpZXdNb2RlbCBvZiBpbWFnZVZpZXdNb2RlbHM7IGxldCBpbmRleCA9IGluZGV4XCIgY2xhc3M9XCJjYXJvdXNlbC10aHVtYlwiXG4gICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiaW5kZXggPT09IGN1cnJlbnRJbmRleFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJpbWFnZVZpZXdNb2RlbC5zb3VyY2VcIiAoY2xpY2spPVwiaGFuZGxlVGh1bWJDbGljayhpbmRleClcIi8+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9jby1zY3JvbGwtY29udGFpbmVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gIGAsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdHlsZVVybHM6IFsnLi9pbWFnZS1jYXJvdXNlbC5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEltYWdlQ2Fyb3VzZWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBAVmlld0NoaWxkKCdjYXJvdXNlbCcsIHtyZWFkOiBFbGVtZW50UmVmfSlcbiAgcHVibGljIGNhcm91c2VsOiBFbGVtZW50UmVmO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzaG93UmVmcmVzaDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgaW1hZ2VzKHZhbHVlOiAoQ29Eb2N1bWVudCB8IHN0cmluZylbXSkge1xuICAgIGlmICh2YWx1ZSAmJiB2YWx1ZS5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLl9pbWFnZXMgPSB0aGlzLl9maWx0ZXJWYWxpZEltYWdlcyh2YWx1ZSk7XG4gICAgICB0aGlzLl9sb2FkQW5kUmVzY2FsZUltYWdlcygpO1xuICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgaW1hZ2VzKCk6IChDb0RvY3VtZW50IHwgc3RyaW5nKVtdIHtcbiAgICByZXR1cm4gdGhpcy5faW1hZ2VzO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScpXG4gIHB1YmxpYyBoYW5kbGVXaW5kb3dSZXNpemUoKTogdm9pZCB7XG4gICAgdGhpcy5yZXNpemluZyA9IHRydWU7XG4gICAgdGhpcy5fc2Nyb2xsQ2Fyb3VzZWxUb0luZGV4KCk7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuX3Jlc2l6ZVRpbWVyKTtcbiAgICB0aGlzLl9yZXNpemVUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5yZXNpemluZyA9IGZhbHNlO1xuICAgIH0sIDIwMCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdzd2lwZWxlZnQnKVxuICBwdWJsaWMgZ290b05leHRTbGlkZSgpOiB2b2lkIHtcbiAgICB0aGlzLmN1cnJlbnRJbmRleCsrO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignc3dpcGVyaWdodCcpXG4gIHB1YmxpYyBnb3RvUHJldlNsaWRlKCk6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudEluZGV4LS07XG4gIH1cblxuICBwdWJsaWMgaXNDdXJyZW50SW5kZXgoaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnRJbmRleCA9PT0gaW5kZXg7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGN1cnJlbnRJbmRleCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9jdXJyZW50SW5kZXg7XG4gIH1cblxuICBwdWJsaWMgc2V0IGN1cnJlbnRJbmRleCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5fY3VycmVudEluZGV4ID0gdmFsdWU7XG4gICAgdGhpcy5fc2Nyb2xsQ2Fyb3VzZWxUb0luZGV4KCk7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnJlc2l6aW5nJylcbiAgcHVibGljIHJlc2l6aW5nID0gZmFsc2U7XG5cbiAgcHVibGljIGltYWdlVmlld01vZGVsczogSW1hZ2VWaWV3TW9kZWxbXSA9IFtdO1xuICBwdWJsaWMgc2hvd0xvYWRlcjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX3Jlc2l6ZVRpbWVyOiBhbnk7XG4gIHByaXZhdGUgX2N1cnJlbnRJbmRleCA9IDA7XG4gIHByaXZhdGUgX2ltYWdlczogKENvRG9jdW1lbnQgfCBzdHJpbmcpW10gPSBbXTtcbiAgcHJpdmF0ZSBfc3ViczogU3Vic2NyaXB0aW9uW10gPSBbXTtcblxuICBwcml2YXRlIF9yZXNpemVDYW52YXNIZWlnaHQ6IG51bWJlciA9IDUwMDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9pb25lOiBQcm9kdWN0Q29ubmVjdG9yU2VydmljZSxcbiAgICBwcml2YXRlIF9hcHBFdmVudFNlcnZpY2U6IFByb2R1Y3RFdmVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgX2RvbVNhbml0aXplcjogRG9tU2FuaXRpemVyXG4gICkge1xuICAgIHRoaXMuX3N1YnMucHVzaChcbiAgICAgIHRoaXMuX2FwcEV2ZW50U2VydmljZS5vblJlbmRlclN0YXJ0ZWQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5zaG93TG9hZGVyID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLnNob3dMb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0sIDEwMDAwKTtcbiAgICAgIH0pLFxuICAgICAgdGhpcy5fYXBwRXZlbnRTZXJ2aWNlLm9uRHJhZnRSZW5kZXJJbWFnZVJlY2VpdmVkLnN1YnNjcmliZSgoZXZlbnQ6IEN1c3RvbUV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChldmVudCAmJiBldmVudC5kZXRhaWwpIHtcbiAgICAgICAgICBpZiAodGhpcy5faW1hZ2VzWzBdIGluc3RhbmNlb2YgQ29Eb2N1bWVudCkge1xuICAgICAgICAgICAgdGhpcy5faW1hZ2VzLnVuc2hpZnQoZXZlbnQuZGV0YWlsKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5faW1hZ2VzWzBdID0gZXZlbnQuZGV0YWlsO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLl9sb2FkQW5kUmVzY2FsZUltYWdlcygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2hvd0xvYWRlciA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmNhcm91c2VsID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuX3N1YnMuZm9yRWFjaChzID0+IHMudW5zdWJzY3JpYmUoKSk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlVGh1bWJDbGljayhpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50SW5kZXggPSBpbmRleDtcbiAgfVxuXG4gIHB1YmxpYyBvbkZvcmNlUmVuZGVySW1hZ2UoKTogdm9pZCB7XG4gICAgdGhpcy5fYXBwRXZlbnRTZXJ2aWNlLm9uRm9yY2VSZW5kZXJJbWFnZS5uZXh0KCk7XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlU2hvd0ltYWdlKGltYWdlVmlld01vZGVsOiBJbWFnZVZpZXdNb2RlbCk6IHZvaWQge1xuICAgIGlmIChpbWFnZVZpZXdNb2RlbCAmJiBpbWFnZVZpZXdNb2RlbC5vcmlnaW5hbFNvdXJjZSkge1xuICAgICAgbGV0IHBvcHVwV2luZG93OiBXaW5kb3cgPSB3aW5kb3cub3BlbignJywgJ0ltYWdlIHpvb20nLCAnd2lkdGg9NjAwLGhlaWdodD00MDAnKTtcbiAgICAgIC8vIFNldCB0aGUgY29udGVudCBvZiB0aGUgcG9wdXAgd2luZG93XG4gICAgICBwb3B1cFdpbmRvdy5kb2N1bWVudC53cml0ZSgnPGh0bWw+PGhlYWQ+PHRpdGxlPkltYWdlIHpvb208L3RpdGxlPjwvaGVhZD48Ym9keT4nKTtcbiAgICAgIHBvcHVwV2luZG93LmRvY3VtZW50LndyaXRlKGA8aW1nIHNyYz0ke2ltYWdlVmlld01vZGVsLm9yaWdpbmFsU291cmNlfSBhbHQ9XCJJbWFnZVwiIHN0eWxlPVwid2lkdGg6MTAwJTsgaGVpZ2h0OmF1dG87XCI+YCk7XG4gICAgICBwb3B1cFdpbmRvdy5kb2N1bWVudC53cml0ZSgnPC9ib2R5PjwvaHRtbD4nKTtcbiAgICAgIC8vIENsb3NlIHRoZSBkb2N1bWVudCB0byByZW5kZXIgdGhlIHBvcHVwIHdpbmRvd1xuICAgICAgcG9wdXBXaW5kb3cuZG9jdW1lbnQuY2xvc2UoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9maWx0ZXJWYWxpZEltYWdlcyh2YWx1ZTogKENvRG9jdW1lbnQgfCBzdHJpbmcpW10pOiAoQ29Eb2N1bWVudCB8IHN0cmluZylbXSB7XG4gICAgaWYgKCF2YWx1ZSkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWUuZmlsdGVyKChkb2M6IENvRG9jdW1lbnQgfCBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IHBhdHRlcm4gPSAvXFwuKGpwZ3xqcGVnfHBuZ3xnaWZ8Ym1wfHRpZmZ8d2VicCkkL2k7XG4gICAgICByZXR1cm4gdHlwZW9mIGRvYyA9PT0gJ3N0cmluZycgfHwgKHBhdHRlcm4udGVzdChkb2MuZmlsZU5hbWUpIHx8ICEhZG9jLmZpbGVQYXRoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX2xvYWRBbmRSZXNjYWxlSW1hZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMuaW1hZ2VWaWV3TW9kZWxzLmxlbmd0aCA9IDA7XG4gICAgaWYgKHRoaXMuX2ltYWdlcykge1xuICAgICAgdGhpcy5faW1hZ2VzLmZvckVhY2goKGk6IENvRG9jdW1lbnQgfCBzdHJpbmcpID0+IHtcbiAgICAgICAgbGV0IGltYWdlVmlld01vZGVsID0gbmV3IEltYWdlVmlld01vZGVsKCk7XG4gICAgICAgIGltYWdlVmlld01vZGVsLmltYWdlID0gaTtcbiAgICAgICAgaWYgKHR5cGVvZiBpID09PSAnc3RyaW5nJykgeyAvLyBpcyBhIHJlbmRlcmVkIGltYWdlIGNvbWluZyBmcm9tIGNvbmZpZ3VyYXRvclxuICAgICAgICAgIHRoaXMuX3Jlc2l6ZUFuZFNhbml0aXplU291cmNlKGksIGltYWdlVmlld01vZGVsKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoaS5maWxlUGF0aCkge1xuICAgICAgICAgICAgdGhpcy5fcmVzaXplQW5kU2FuaXRpemVTb3VyY2UoaS5maWxlUGF0aCwgaW1hZ2VWaWV3TW9kZWwpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoaS5kb2N1bWVudEJvZHkpIHtcbiAgICAgICAgICAgIHRoaXMuX3Jlc2l6ZUFuZFNhbml0aXplU291cmNlKGkuZG9jdW1lbnRCb2R5QXNEYXRhVXJpLCBpbWFnZVZpZXdNb2RlbCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2lvbmUuZ2V0RG9jdW1lbnRDb250ZW50KGkuZG9jdW1lbnRJZCwgZmFsc2UpLnRoZW4oKGNvbnRlbnQ6IERvY3VtZW50Q29udGVudCkgPT4ge1xuICAgICAgICAgICAgICBpZiAoY29udGVudCkge1xuICAgICAgICAgICAgICAgIGkuZG9jdW1lbnRCb2R5ID0gY29udGVudC5kb2N1bWVudENvbnRlbnQ7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVzaXplQW5kU2FuaXRpemVTb3VyY2UoaS5kb2N1bWVudEJvZHlBc0RhdGFVcmksIGltYWdlVmlld01vZGVsKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmltYWdlVmlld01vZGVscy5wdXNoKGltYWdlVmlld01vZGVsKTtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfcmVzaXplQW5kU2FuaXRpemVTb3VyY2Uoc291cmNlOiBzdHJpbmcsIGltYWdlVmlld01vZGVsOiBJbWFnZVZpZXdNb2RlbCk6IHZvaWQge1xuICAgIGNvbnN0IHJlc2l6ZUNhbnZhczogSFRNTENhbnZhc0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcbiAgICBjb25zdCByZXNpemVDYW52YXNDb250ZXh0OiBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQgPSByZXNpemVDYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcbiAgICBjb25zdCByZXNpemVJbWFnZTogSFRNTEltYWdlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2ltZycpO1xuICAgIHJlc2l6ZUltYWdlLm9ubG9hZCA9IGFzeW5jICgpID0+IHtcbiAgICAgIHJlc2l6ZUNhbnZhc0NvbnRleHQuaW1hZ2VTbW9vdGhpbmdFbmFibGVkID0gdHJ1ZTtcbiAgICAgIHJlc2l6ZUNhbnZhc0NvbnRleHQuaW1hZ2VTbW9vdGhpbmdRdWFsaXR5ID0gJ2hpZ2gnO1xuICAgICAgLy8gR2V0IHRoZSBvcmlnaW5hbCBpbWFnZSBkaW1lbnNpb25zXG4gICAgICBjb25zdCBvcmlnaW5hbFdpZHRoID0gcmVzaXplSW1hZ2Uud2lkdGg7XG4gICAgICBjb25zdCBvcmlnaW5hbEhlaWdodCA9IHJlc2l6ZUltYWdlLmhlaWdodDtcblxuICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBhc3BlY3QgcmF0aW9cbiAgICAgIGNvbnN0IGFzcGVjdFJhdGlvID0gb3JpZ2luYWxXaWR0aCAvIG9yaWdpbmFsSGVpZ2h0O1xuXG4gICAgICAvLyBDYWxjdWxhdGUgdGhlIG5ldyB3aWR0aCBhbmQgaGVpZ2h0IHdoaWxlIG1haW50YWluaW5nIHRoZSBhc3BlY3QgcmF0aW9cbiAgICAgIGxldCBuZXdXaWR0aDogbnVtYmVyID0gdGhpcy5fcmVzaXplQ2FudmFzSGVpZ2h0O1xuICAgICAgbGV0IG5ld0hlaWdodDogbnVtYmVyID0gdGhpcy5fcmVzaXplQ2FudmFzSGVpZ2h0O1xuXG4gICAgICBpZiAob3JpZ2luYWxXaWR0aCA+IG9yaWdpbmFsSGVpZ2h0KSB7XG4gICAgICAgIG5ld0hlaWdodCA9IHRoaXMuX3Jlc2l6ZUNhbnZhc0hlaWdodCAvIGFzcGVjdFJhdGlvO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbmV3V2lkdGggPSB0aGlzLl9yZXNpemVDYW52YXNIZWlnaHQgKiBhc3BlY3RSYXRpbztcbiAgICAgIH1cblxuICAgICAgLy8gU2V0IHRoZSBjYW52YXMgc2l6ZSB0byB0aGUgbmV3IHdpZHRoIGFuZCBoZWlnaHRcbiAgICAgIHJlc2l6ZUNhbnZhcy53aWR0aCA9IG5ld1dpZHRoO1xuICAgICAgcmVzaXplQ2FudmFzLmhlaWdodCA9IG5ld0hlaWdodDtcblxuICAgICAgY29uc3QgaW1hZ2VXaWR0aDogbnVtYmVyID0gdGhpcy5fcmVzaXplQ2FudmFzSGVpZ2h0ICogKHJlc2l6ZUltYWdlLmhlaWdodCAvIHJlc2l6ZUltYWdlLndpZHRoKTtcbiAgICAgIHJlc2l6ZUNhbnZhc0NvbnRleHQuZHJhd0ltYWdlKHJlc2l6ZUltYWdlLCAwLCAwLCBuZXdXaWR0aCwgbmV3SGVpZ2h0KTtcbiAgICAgIGNvbnN0IHJlc2l6ZWRTb3VyY2UgPSByZXNpemVDYW52YXMudG9EYXRhVVJMKCdpbWFnZS9qcGVnJyk7XG5cbiAgICAgIGltYWdlVmlld01vZGVsLnNvdXJjZSA9IHRoaXMuX2RvbVNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0VXJsKHJlc2l6ZWRTb3VyY2UpO1xuICAgICAgaW1hZ2VWaWV3TW9kZWwub3JpZ2luYWxTb3VyY2UgPSBzb3VyY2U7XG4gICAgfTtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcmVzaXplSW1hZ2Uuc3JjID0gc291cmNlO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2Nyb2xsQ2Fyb3VzZWxUb0luZGV4KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmN1cnJlbnRJbmRleCA+IC0xICYmIHRoaXMuY3VycmVudEluZGV4IDw9IHRoaXMuaW1hZ2VzLmxlbmd0aCkge1xuICAgICAgY29uc3QgbW92ZVB4OiBudW1iZXIgPSB0aGlzLmN1cnJlbnRJbmRleCAqIHRoaXMuY2Fyb3VzZWwubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aDtcbiAgICAgIGlmICh0aGlzLmNhcm91c2VsICYmIHRoaXMuY2Fyb3VzZWwubmF0aXZlRWxlbWVudCkge1xuICAgICAgICB0aGlzLmNhcm91c2VsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA9IG1vdmVQeDtcbiAgICAgICAgLy8gdGhpcy5jYXJvdXNlbC5uYXRpdmVFbGVtZW50LnNjcm9sbFRvKHtcbiAgICAgICAgLy8gICBsZWZ0OiBtb3ZlUHgsXG4gICAgICAgIC8vICAgYmVoYXZpb3I6ICdzbW9vdGgnXG4gICAgICAgIC8vIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG59XG4iXX0=
|
|
@@ -198,7 +198,7 @@ ProductPageComponent.decorators = [
|
|
|
198
198
|
transition('void => *', animate('200ms ease-in-out')),
|
|
199
199
|
])
|
|
200
200
|
],
|
|
201
|
-
styles: [".page-wrapper{font-family:iOneMontserrat;font-size:12px;display:flex;flex-direction:column;max-width:1400px;padding:0 15px;margin:0 auto}.page-wrapper-content{display:flex;flex-direction:row;margin:40px 0}.page-wrapper-content:first-child{margin-top:0}.page-wrapper-content.no-top-margin{margin-top:0}.page-wrapper-left{display:flex;width:55%;flex-direction:column}.page-wrapper-right{display:flex;width:45%;flex-direction:column}.page-wrapper-full{display:flex;width:100%;flex-direction:column}.page-wrapper-66{display:flex;width:60%;flex-direction:column}.page-wrapper-33{display:flex;width:40%;flex-direction:column}.threed-selections{display:none}.threed-selections.show-selections{display:block}.threed-selections ::ng-deep .rp-lite-selector .rp-answers-slideout ::ng-deep co-slideout{width:480px;z-index:3}.product-action-buttons{position:relative}.product-action-buttons.full-screen{z-index:10}.product-image-container{grid-column:1/7;grid-row:1/6;position:relative}.product-page-block-selector-type{width:auto;position:absolute;top:10px;right:10px;z-index:2}.product-page-block-image{box-sizing:border-box;width:100%;z-index:1;position:relative}.product-page-block-image .threed-configurator{border:1px solid #efefef}.product-page-block-image .threed-configurator .layer .viewer canvas{height:100%;width:100%}.product-page-block-image .threed-configurator ::ng-deep .rp-element-toolbar{top:30px}.product-page-block-image app-image-carousel.show-animated,.product-page-block-image threed-configurator.show-animated{opacity:1;z-index:0;transition:all .2s ease-in-out}.product-page-block-image .fullscreen-button{cursor:pointer;height:50px;width:50px;position:absolute;left:30px;z-index:100;top:30px}.product-page-block-image.full{grid-column:1/11;grid-row:2/span 10;z-index:3}.product-page-block-description{grid-column:7/12;grid-row:1/1}.product-page-block-additional{width:100%}.product-page-block-additional-description{width:100%}.product-page-block-price{grid-column:1/3;grid-row:2/2;align-self:center}.product-page-block-price.full{grid-column:1/5}.product-page-block-addtocart{grid-column:3/5;grid-row:2/2;align-self:center;padding-top:30px!important}.product-page-block-addtocart ::ng-deep co-number-picker ::ng-deep co-button{cursor:pointer}.product-page-block-addtocart ::ng-deep co-number-picker ::ng-deep co-button:hover div.rippler{background:#f6f5f4}.product-page-block-addtocart ::ng-deep co-number-picker ::ng-deep co-button ::ng-deep co-icon{position:relative;z-index:2}.product-page-block-addtocart ::ng-deep co-button.cart-button{cursor:pointer}.product-page-block-addtocart ::ng-deep co-button.cart-button:hover{background:#74B77F}.addtocart-reserved{grid-column:1/3;grid-row:3/3}.product-page-block-stock{grid-column:1/3;grid-row:4/4}.product-page-block-delivery{grid-column:3/5;grid-row:4/4}::ng-deep co-scroll-container{overflow:hidden;position:relative}::ng-deep co-scroll-container .content-wrapper{padding:0}::ng-deep co-scroll-container .scroll-layer{left:0;top:0}::ng-deep co-scroll-container .scroll-layer .scroller{width:34px;height:34px;border-radius:36px;background:#fff;cursor:pointer;box-shadow:0 0 5px #0003}::ng-deep co-scroll-container .scroll-layer .scroller:hover{background:#f6f5f4}::ng-deep co-scroll-container .scroll-layer .scroller.left-scroll{left:5px}::ng-deep co-scroll-container .scroll-layer .scroller.left-scroll:before{border-width:0 3px 3px 0;padding:4px;margin-left:13px;margin-top:11px}::ng-deep co-scroll-container .scroll-layer .scroller.right-scroll{right:5px}::ng-deep co-scroll-container .scroll-layer .scroller.right-scroll:after{border-width:0 3px 3px 0;padding:4px;margin-left:9px;margin-top:11px}.product-page-block-variants{margin:20px 0 0}.product-page-block-variants ::ng-deep app-product-related>div{display:flex;grid-gap:15px;gap:15px;align-items:center;border-top:1px solid #f6f5f4;padding:5px 0 7px 15px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep app-header h3{font-size:14px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep co-scroll-container{width:320px;max-width:100%;padding:0 16px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep co-scroll-container .scroller{width:26px;height:26px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep co-scroll-container .scroller.left-scroll{left:5px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep co-scroll-container .scroller.left-scroll:before{border-width:0 2px 2px 0;margin-left:9px;margin-top:9px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep co-scroll-container .scroller.right-scroll{right:5px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep co-scroll-container .scroller.right-scroll:after{border-width:0 2px 2px 0;margin-left:6px;margin-top:9px}.product-page-block-variants ::ng-deep co-tile.small{min-width:50px!important;max-width:50px!important;border:1px solid #f6f5f4;margin:0 10px 0 0;border-radius:4px}.product-page-block-variants ::ng-deep co-tile.small:hover{border-color:#22313c}.product-page-block-variants ::ng-deep co-tile.small .tile-wrapper{padding:0}.product-page-block-variants ::ng-deep co-tile.small .tile-wrapper .tile-top{display:none}.product-page-block-variants ::ng-deep co-tile.small .tile-wrapper .image{height:40px!important;padding:5px;margin-bottom:10px}.product-page-block-variants ::ng-deep co-tile.small .tile-wrapper .image .no-image-wrapper .no-image{width:40px;height:40px}.product-page-block-variants ::ng-deep co-tile.small .tile-wrapper .image .no-image-wrapper span{display:none!important}.product-page-block-variants ::ng-deep co-tile.small .tile-wrapper .tile-bottom{display:none}.product-page-block-variants ::ng-deep co-tile.small .tile-extra-bottom{display:none}.product-page-block-alternatives ::ng-deep .article-wrapper{margin:0 20px 0 0}.product-page-block-alternatives ::ng-deep .article-wrapper:last-child{margin:0}.product-page-block-alternatives ::ng-deep co-tile{cursor:pointer;transition:all .14s ease-out;border:1px solid transparent;border-bottom-color:#f6f5f4;padding:15px 10px 0;width:319px;max-width:none;min-width:0;box-sizing:border-box}.product-page-block-alternatives ::ng-deep co-tile:hover{box-shadow:none;border-color:#f6f5f4}.product-page-block-alternatives ::ng-deep co-tile:hover .tile-wrapper div.image co-image{transform:scale(1.05)}.product-page-block-alternatives ::ng-deep co-tile:hover .tile-wrapper .tile-bottom{margin:0}.product-page-block-alternatives ::ng-deep co-tile:hover .tile-extra-bottom .main .description{text-decoration:underline}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper{padding:0;position:relative;outline:none;overflow:hidden}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper .tile-top{position:absolute;left:0;top:0;width:100%}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper div.image{position:relative;padding:1px;display:flex;align-items:center;justify-content:center;overflow:hidden;max-width:250px;margin:0 auto 10px;height:auto}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper div.image:after{content:\"\";padding:100% 0 0;float:left;width:100%}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper div.image co-image{position:absolute;left:0;top:0;overflow:hidden;width:100%;height:100%;-o-object-fit:contain;object-fit:contain;z-index:-1;transition:all .2s ease}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper div.image .no-image-wrapper{position:absolute;display:flex;left:50%;top:50%;margin:-48px 0 0 -54px;flex-direction:column;align-items:center;opacity:.25}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper .tile-bottom{transition:all .2s ease;height:auto}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper .tile-bottom ::ng-deep co-button{margin:0 0 5px!important;width:36px;height:36px;border:1px solid #22313C;cursor:pointer;border-radius:4px;padding:0!important;font-size:0}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper .tile-bottom ::ng-deep co-button co-icon{width:32px;height:32px;margin:0 2px}.product-page-block-alternatives ::ng-deep co-tile .tile-extra-bottom{outline:none;padding:15px 0;background:transparent!important;min-height:60px}.product-page-block-alternatives ::ng-deep co-tile .tile-extra-bottom .main{padding:0 10px}.product-page-block-alternatives ::ng-deep co-tile .tile-extra-bottom .main .description{font-size:15px;font-weight:bold;margin:0 0 2px}.product-page-block-alternatives ::ng-deep co-tile .tile-extra-bottom .main .price{font-size:16px;margin:15px 0 0;font-weight:bold;color:#2b60a7}.product-page-block-additional-information{grid-column:1/6;grid-row:4/4}.product-page-block-properties{grid-column:7/10;grid-row:3/3}.product-page-block-related-articles{grid-column:2/6;grid-row:4/4}.product-page-block-alternative-articles{grid-column:6/10;grid-row:4/4}.product-page-block-documents{grid-column:2/6;grid-row:5/5}.product-page-block-symbols{grid-column:6/10;grid-row:5/5}@media screen and (max-width: 950px){.default-padding{padding-top:20px;padding-bottom:20px}.m-padding{padding-top:15px;padding-bottom:15px}.s-padding{padding-top:5px;padding-bottom:5px}.page-wrapper{max-width:650px}.page-wrapper .page-wrapper-content{flex-direction:column;margin:30px 0}.page-wrapper .page-wrapper-content .page-wrapper-left{width:100%}.page-wrapper .page-wrapper-content .page-wrapper-right{width:100%}.product-page-block-alternatives ::ng-deep co-tile{width:284px!important}}@media screen and (max-width: 650px){[class*=-padding]{padding-left:0!important;padding-right:0!important}.product-page-block-addtocart ::ng-deep co-number-picker co-button{height:38px!important}.product-page-block-addtocart ::ng-deep co-number-picker co-input-text{height:38px!important;width:36px!important}.product-page-block-addtocart ::ng-deep co-button.cart-button{height:40px;font-size:13px}}\n"]
|
|
201
|
+
styles: [".page-wrapper{font-family:iOneMontserrat;font-size:12px;display:flex;flex-direction:column;max-width:1400px;padding:0 15px;margin:0 auto}.page-wrapper-content{display:flex;flex-direction:row;margin:40px 0}.page-wrapper-content:first-child{margin-top:0}.page-wrapper-content.no-top-margin{margin-top:0}.page-wrapper-left{display:flex;width:55%;flex-direction:column}.page-wrapper-right{display:flex;width:45%;flex-direction:column}.page-wrapper-full{display:flex;width:100%;flex-direction:column}.page-wrapper-66{display:flex;width:60%;flex-direction:column}.page-wrapper-33{display:flex;width:40%;flex-direction:column}.threed-selections{display:none}.threed-selections.show-selections{display:block}.threed-selections ::ng-deep .rp-lite-selector .rp-answers-slideout ::ng-deep co-slideout{width:480px;z-index:3}.threed-selections ::ng-deep .co-summary-line{cursor:pointer}.product-action-buttons{position:relative}.product-action-buttons.full-screen{z-index:10}.product-image-container{grid-column:1/7;grid-row:1/6;position:relative}.product-page-block-selector-type{width:auto;position:absolute;top:10px;right:10px;z-index:2}.product-page-block-image{box-sizing:border-box;width:100%;z-index:1;position:relative}.product-page-block-image .threed-configurator{border:1px solid #efefef}.product-page-block-image .threed-configurator .layer .viewer canvas{height:100%;width:100%}.product-page-block-image .threed-configurator ::ng-deep .rp-element-toolbar{top:30px}.product-page-block-image app-image-carousel.show-animated,.product-page-block-image threed-configurator.show-animated{opacity:1;z-index:0;transition:all .2s ease-in-out}.product-page-block-image .fullscreen-button{cursor:pointer;height:50px;width:50px;position:absolute;left:30px;z-index:100;top:30px}.product-page-block-image.full{grid-column:1/11;grid-row:2/span 10;z-index:3}.product-page-block-description{grid-column:7/12;grid-row:1/1}.product-page-block-additional{width:100%}.product-page-block-additional-description{width:100%}.product-page-block-price{grid-column:1/3;grid-row:2/2;align-self:center}.product-page-block-price.full{grid-column:1/5}.product-page-block-addtocart{grid-column:3/5;grid-row:2/2;align-self:center;padding-top:30px!important}.product-page-block-addtocart ::ng-deep co-number-picker ::ng-deep co-button{cursor:pointer}.product-page-block-addtocart ::ng-deep co-number-picker ::ng-deep co-button:hover div.rippler{background:#f6f5f4}.product-page-block-addtocart ::ng-deep co-number-picker ::ng-deep co-button ::ng-deep co-icon{position:relative;z-index:2}.product-page-block-addtocart ::ng-deep co-button.cart-button{cursor:pointer}.product-page-block-addtocart ::ng-deep co-button.cart-button:hover{background:#74B77F}.addtocart-reserved{grid-column:1/3;grid-row:3/3}.product-page-block-stock{grid-column:1/3;grid-row:4/4}.product-page-block-delivery{grid-column:3/5;grid-row:4/4}::ng-deep co-scroll-container{overflow:hidden;position:relative}::ng-deep co-scroll-container .content-wrapper{padding:0}::ng-deep co-scroll-container .scroll-layer{left:0;top:0}::ng-deep co-scroll-container .scroll-layer .scroller{width:34px;height:34px;border-radius:36px;background:#fff;cursor:pointer;box-shadow:0 0 5px #0003}::ng-deep co-scroll-container .scroll-layer .scroller:hover{background:#f6f5f4}::ng-deep co-scroll-container .scroll-layer .scroller.left-scroll{left:5px}::ng-deep co-scroll-container .scroll-layer .scroller.left-scroll:before{border-width:0 3px 3px 0;padding:4px;margin-left:13px;margin-top:11px}::ng-deep co-scroll-container .scroll-layer .scroller.right-scroll{right:5px}::ng-deep co-scroll-container .scroll-layer .scroller.right-scroll:after{border-width:0 3px 3px 0;padding:4px;margin-left:9px;margin-top:11px}.product-page-block-variants{margin:20px 0 0}.product-page-block-variants ::ng-deep app-product-related>div{display:flex;grid-gap:15px;gap:15px;align-items:center;border-top:1px solid #f6f5f4;padding:5px 0 7px 15px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep app-header h3{font-size:14px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep co-scroll-container{width:320px;max-width:100%;padding:0 16px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep co-scroll-container .scroller{width:26px;height:26px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep co-scroll-container .scroller.left-scroll{left:5px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep co-scroll-container .scroller.left-scroll:before{border-width:0 2px 2px 0;margin-left:9px;margin-top:9px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep co-scroll-container .scroller.right-scroll{right:5px}.product-page-block-variants ::ng-deep app-product-related>div ::ng-deep co-scroll-container .scroller.right-scroll:after{border-width:0 2px 2px 0;margin-left:6px;margin-top:9px}.product-page-block-variants ::ng-deep co-tile.small{min-width:50px!important;max-width:50px!important;border:1px solid #f6f5f4;margin:0 10px 0 0;border-radius:4px}.product-page-block-variants ::ng-deep co-tile.small:hover{border-color:#22313c}.product-page-block-variants ::ng-deep co-tile.small .tile-wrapper{padding:0}.product-page-block-variants ::ng-deep co-tile.small .tile-wrapper .tile-top{display:none}.product-page-block-variants ::ng-deep co-tile.small .tile-wrapper .image{height:40px!important;padding:5px;margin-bottom:10px}.product-page-block-variants ::ng-deep co-tile.small .tile-wrapper .image .no-image-wrapper .no-image{width:40px;height:40px}.product-page-block-variants ::ng-deep co-tile.small .tile-wrapper .image .no-image-wrapper span{display:none!important}.product-page-block-variants ::ng-deep co-tile.small .tile-wrapper .tile-bottom{display:none}.product-page-block-variants ::ng-deep co-tile.small .tile-extra-bottom{display:none}.product-page-block-alternatives ::ng-deep .article-wrapper{margin:0 20px 0 0}.product-page-block-alternatives ::ng-deep .article-wrapper:last-child{margin:0}.product-page-block-alternatives ::ng-deep co-tile{cursor:pointer;transition:all .14s ease-out;border:1px solid transparent;border-bottom-color:#f6f5f4;padding:15px 10px 0;width:319px;max-width:none;min-width:0;box-sizing:border-box}.product-page-block-alternatives ::ng-deep co-tile:hover{box-shadow:none;border-color:#f6f5f4}.product-page-block-alternatives ::ng-deep co-tile:hover .tile-wrapper div.image co-image{transform:scale(1.05)}.product-page-block-alternatives ::ng-deep co-tile:hover .tile-wrapper .tile-bottom{margin:0}.product-page-block-alternatives ::ng-deep co-tile:hover .tile-extra-bottom .main .description{text-decoration:underline}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper{padding:0;position:relative;outline:none;overflow:hidden}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper .tile-top{position:absolute;left:0;top:0;width:100%}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper div.image{position:relative;padding:1px;display:flex;align-items:center;justify-content:center;overflow:hidden;max-width:250px;margin:0 auto 10px;height:auto}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper div.image:after{content:\"\";padding:100% 0 0;float:left;width:100%}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper div.image co-image{position:absolute;left:0;top:0;overflow:hidden;width:100%;height:100%;-o-object-fit:contain;object-fit:contain;z-index:-1;transition:all .2s ease}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper div.image .no-image-wrapper{position:absolute;display:flex;left:50%;top:50%;margin:-48px 0 0 -54px;flex-direction:column;align-items:center;opacity:.25}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper .tile-bottom{transition:all .2s ease;height:auto}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper .tile-bottom ::ng-deep co-button{margin:0 0 5px!important;width:36px;height:36px;border:1px solid #22313C;cursor:pointer;border-radius:4px;padding:0!important;font-size:0}.product-page-block-alternatives ::ng-deep co-tile .tile-wrapper .tile-bottom ::ng-deep co-button co-icon{width:32px;height:32px;margin:0 2px}.product-page-block-alternatives ::ng-deep co-tile .tile-extra-bottom{outline:none;padding:15px 0;background:transparent!important;min-height:60px}.product-page-block-alternatives ::ng-deep co-tile .tile-extra-bottom .main{padding:0 10px}.product-page-block-alternatives ::ng-deep co-tile .tile-extra-bottom .main .description{font-size:15px;font-weight:bold;margin:0 0 2px}.product-page-block-alternatives ::ng-deep co-tile .tile-extra-bottom .main .price{font-size:16px;margin:15px 0 0;font-weight:bold;color:#2b60a7}.product-page-block-additional-information{grid-column:1/6;grid-row:4/4}.product-page-block-properties{grid-column:7/10;grid-row:3/3}.product-page-block-related-articles{grid-column:2/6;grid-row:4/4}.product-page-block-alternative-articles{grid-column:6/10;grid-row:4/4}.product-page-block-documents{grid-column:2/6;grid-row:5/5}.product-page-block-symbols{grid-column:6/10;grid-row:5/5}@media screen and (max-width: 950px){.default-padding{padding-top:20px;padding-bottom:20px}.m-padding{padding-top:15px;padding-bottom:15px}.s-padding{padding-top:5px;padding-bottom:5px}.page-wrapper{max-width:650px}.page-wrapper .page-wrapper-content{flex-direction:column;margin:30px 0}.page-wrapper .page-wrapper-content .page-wrapper-left{width:100%}.page-wrapper .page-wrapper-content .page-wrapper-right{width:100%}.product-page-block-alternatives ::ng-deep co-tile{width:284px!important}}@media screen and (max-width: 650px){[class*=-padding]{padding-left:0!important;padding-right:0!important}.product-page-block-addtocart ::ng-deep co-number-picker co-button{height:38px!important}.product-page-block-addtocart ::ng-deep co-number-picker co-input-text{height:38px!important;width:36px!important}.product-page-block-addtocart ::ng-deep co-button.cart-button{height:40px;font-size:13px}}\n"]
|
|
202
202
|
},] }
|
|
203
203
|
];
|
|
204
204
|
ProductPageComponent.ctorParameters = () => [
|
|
@@ -3,8 +3,8 @@ export class Version {
|
|
|
3
3
|
constructor() {
|
|
4
4
|
this.name = "@colijnit/product";
|
|
5
5
|
this.description = "Product detail page project for iOne";
|
|
6
|
-
this.symVer = "256.1.
|
|
7
|
-
this.publishDate = "
|
|
6
|
+
this.symVer = "256.1.6";
|
|
7
|
+
this.publishDate = "14-3-2025 14:06:38";
|
|
8
8
|
}
|
|
9
9
|
}
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC12ZXJzaW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcC9wcm9kdWN0LXZlcnNpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE1BQU0sT0FBTyxPQUFPO0lBQXBCO1FBQ1MsU0FBSSxHQUFHLG1CQUFtQixDQUFDO1FBQzNCLGdCQUFXLEdBQUcsc0NBQXNDLENBQUM7UUFDckQsV0FBTSxHQUFHLFNBQVMsQ0FBQztRQUNuQixnQkFBVyxHQUFHLG9CQUFvQixDQUFDO0lBQzVDLENBQUM7Q0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8vIHRoaXMgZmlsZSBpcyBkeW5hbWljYWxseSBjcmVhdGVkLCBkbyBub3QgY2hhbmdlIHRoaXNcbmV4cG9ydCBjbGFzcyBWZXJzaW9uIHtcbiAgcHVibGljIG5hbWUgPSBcIkBjb2xpam5pdC9wcm9kdWN0XCI7XG4gIHB1YmxpYyBkZXNjcmlwdGlvbiA9IFwiUHJvZHVjdCBkZXRhaWwgcGFnZSBwcm9qZWN0IGZvciBpT25lXCI7XG4gIHB1YmxpYyBzeW1WZXIgPSBcIjI1Ni4xLjZcIjtcbiAgcHVibGljIHB1Ymxpc2hEYXRlID0gXCIxNC0zLTIwMjUgMTQ6MDY6MzhcIjtcbn0iXX0=
|
|
@@ -21,4 +21,4 @@ ProductEventService.decorators = [
|
|
|
21
21
|
{ type: Directive },
|
|
22
22
|
{ type: Injectable }
|
|
23
23
|
];
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1ldmVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwcC9zZXJ2aWNlL3Byb2R1Y3QtZXZlbnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFVBQVUsRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBVTdCLE1BQU0sT0FBTyxtQkFBbUI7SUFGaEM7UUFJUyxnQkFBVyxHQUErRSxJQUFJLE9BQU8sRUFBcUUsQ0FBQztRQUMzSyx1QkFBa0IsR0FBK0IsSUFBSSxPQUFPLEVBQXFCLENBQUM7UUFDbEYsaUJBQVksR0FBb0IsSUFBSSxPQUFPLEVBQVUsQ0FBQztRQUN0RCx1QkFBa0IsR0FBa0IsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUN4RCxzQkFBaUIsR0FBNkIsSUFBSSxPQUFPLEVBQW1CLENBQUM7UUFDN0UseUJBQW9CLEdBQXlCLElBQUksT0FBTyxFQUFlLENBQUM7UUFDeEUsb0JBQWUsR0FBb0IsSUFBSSxPQUFPLEVBQVUsQ0FBQztRQUN6RCxvQkFBZSxHQUFrQixJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQ3JELDBCQUFxQixHQUFvQixJQUFJLE9BQU8sRUFBVSxDQUFDO1FBQy9ELCtCQUEwQixHQUF5QixJQUFJLE9BQU8sRUFBZSxDQUFDO1FBQzlFLDBCQUFxQixHQUFvQixJQUFJLE9BQU8sRUFBVSxDQUFDO1FBQy9ELDJCQUFzQixHQUFvQixJQUFJLE9BQU8sRUFBVSxDQUFDO1FBQ2hFLGlCQUFZLEdBQWlDLElBQUksT0FBTyxFQUF1QixDQUFDO0lBQ3pGLENBQUM7OztZQWpCQSxTQUFTO1lBQ1QsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGlyZWN0aXZlLCBJbmplY3RhYmxlLCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1N1YmplY3R9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge0FydGljbGVMaXN0T2JqZWN0fSBmcm9tICdAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9hcnRpY2xlLWxpc3Qtb2JqZWN0JztcclxuaW1wb3J0IHtTZWxlY3Rpb259IGZyb20gJ0Bjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL21vZGVsL3NlbGVjdGlvbic7XHJcbmltcG9ydCB7QXJ0aWNsZVF1aWNrU2VsfSBmcm9tICdAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9hcnRpY2xlLXF1aWNrLXNlbCc7XHJcbmltcG9ydCB7QXJ0aWNsZUV4dGVuZGVkfSBmcm9tICdAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9hcnRpY2xlLWV4dGVuZGVkLmJvJztcclxuaW1wb3J0IHtBcnRpY2xlTGlzdE9iamVjdEV4dGVuZGVkfSBmcm9tICdAY29saWpuaXQvYXJ0aWNsZWFwaS9idWlsZC9tb2RlbC9hcnRpY2xlLWxpc3Qtb2JqZWN0LWV4dGVuZGVkLmJvJztcclxuaW1wb3J0IHtWYWxpZGF0aW9uTWVzc2FnZX0gZnJvbSAnQGNvbGlqbml0L2lvbmVjb25uZWN0b3IvYnVpbGQvbW9kZWwvdmFsaWRhdGlvbi1tZXNzYWdlJztcclxuXHJcbkBEaXJlY3RpdmUoKVxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBQcm9kdWN0RXZlbnRTZXJ2aWNlIHtcclxuXHJcbiAgcHVibGljIG9uQWRkVG9DYXJ0OiBTdWJqZWN0PHsgYXJ0aWNsZTogc3RyaW5nIHwgQXJ0aWNsZUxpc3RPYmplY3RFeHRlbmRlZCwgcXVhbnRpdHk6IG51bWJlciB9PiA9IG5ldyBTdWJqZWN0PHsgYXJ0aWNsZTogc3RyaW5nIHwgQXJ0aWNsZUxpc3RPYmplY3RFeHRlbmRlZCwgcXVhbnRpdHk6IG51bWJlciB9PigpO1xyXG4gIHB1YmxpYyBvbkFsdGVybmF0aXZlQ2xpY2s6IFN1YmplY3Q8QXJ0aWNsZUxpc3RPYmplY3Q+ID0gbmV3IFN1YmplY3Q8QXJ0aWNsZUxpc3RPYmplY3Q+KCk7XHJcbiAgcHVibGljIG9uQWRkVG9RdW90ZTogU3ViamVjdDxzdHJpbmc+ID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xyXG4gIHB1YmxpYyBvbkZvcmNlUmVuZGVySW1hZ2U6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG4gIHB1YmxpYyBvbkFydGljbGVSZWNlaXZlZDogU3ViamVjdDxBcnRpY2xlUXVpY2tTZWw+ID0gbmV3IFN1YmplY3Q8QXJ0aWNsZVF1aWNrU2VsPigpO1xyXG4gIHB1YmxpYyBvblNlbGVjdGlvbnNSZWNlaXZlZDogU3ViamVjdDxTZWxlY3Rpb25bXT4gPSBuZXcgU3ViamVjdDxTZWxlY3Rpb25bXT4oKTtcclxuICBwdWJsaWMgb25JbWFnZVJlY2VpdmVkOiBTdWJqZWN0PHN0cmluZz4gPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XHJcbiAgcHVibGljIG9uUmVuZGVyU3RhcnRlZDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgcHVibGljIG9uUmVuZGVySW1hZ2VSZWNlaXZlZDogU3ViamVjdDxzdHJpbmc+ID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xyXG4gIHB1YmxpYyBvbkRyYWZ0UmVuZGVySW1hZ2VSZWNlaXZlZDogU3ViamVjdDxDdXN0b21FdmVudD4gPSBuZXcgU3ViamVjdDxDdXN0b21FdmVudD4oKTtcclxuICBwdWJsaWMgb25BcnRpY2xlSW5mb1JlY2VpdmVkOiBTdWJqZWN0PHN0cmluZz4gPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XHJcbiAgcHVibGljIG9uVXBkYXRlUHJvZHVjdEluZm9UYWI6IFN1YmplY3Q8bnVtYmVyPiA9IG5ldyBTdWJqZWN0PG51bWJlcj4oKTtcclxuICBwdWJsaWMgZXJyb3JNZXNzYWdlOiBTdWJqZWN0PFZhbGlkYXRpb25NZXNzYWdlW10+ID0gbmV3IFN1YmplY3Q8VmFsaWRhdGlvbk1lc3NhZ2VbXT4oKTtcclxufVxyXG4iXX0=
|