onshore-forms 0.0.13 → 0.0.14
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/esm2020/lib/components/form-image-item/form-image-item.component.mjs +16 -31
- package/esm2020/lib/components/image-chooser/image-chooser.component.mjs +116 -0
- package/esm2020/lib/components/image-placeholder/image-placeholder.component.mjs +38 -0
- package/esm2020/lib/components/webcam/webcam.component.mjs +83 -0
- package/esm2020/lib/onshore-forms.module.mjs +37 -11
- package/esm2020/public-api.mjs +4 -1
- package/fesm2015/onshore-forms.mjs +289 -63
- package/fesm2015/onshore-forms.mjs.map +1 -1
- package/fesm2020/onshore-forms.mjs +286 -63
- package/fesm2020/onshore-forms.mjs.map +1 -1
- package/lib/components/form-image-item/form-image-item.component.d.ts +6 -5
- package/lib/components/image-chooser/image-chooser.component.d.ts +34 -0
- package/lib/components/image-placeholder/image-placeholder.component.d.ts +14 -0
- package/lib/components/webcam/webcam.component.d.ts +33 -0
- package/lib/onshore-forms.module.d.ts +35 -30
- package/package.json +3 -1
- package/public-api.d.ts +3 -0
- package/styles/scss/main.css +1 -1
- package/styles/scss/theme1.css +1 -1
|
@@ -1,19 +1,22 @@
|
|
|
1
1
|
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Optional, Output, Self } from '@angular/core';
|
|
2
|
+
import { OnshoreFormTemplateLayout } from '../../enums/form.enums';
|
|
2
3
|
import * as i0 from "@angular/core";
|
|
3
4
|
import * as i1 from "@angular/forms";
|
|
4
5
|
import * as i2 from "primeng/dynamicdialog";
|
|
5
6
|
import * as i3 from "@ngx-translate/core";
|
|
6
7
|
import * as i4 from "@angular/common";
|
|
7
8
|
import * as i5 from "primeng/button";
|
|
8
|
-
import * as i6 from "primeng/
|
|
9
|
-
import * as i7 from "
|
|
9
|
+
import * as i6 from "primeng/dialog";
|
|
10
|
+
import * as i7 from "../image-placeholder/image-placeholder.component";
|
|
11
|
+
import * as i8 from "../form-item-container/form-item-container.component";
|
|
12
|
+
import * as i9 from "../image-chooser/image-chooser.component";
|
|
13
|
+
import * as i10 from "../webcam/webcam.component";
|
|
10
14
|
export class OnshoreFormImageItemComponent {
|
|
11
15
|
constructor(cdr, ngControl, dialogService, translate) {
|
|
12
16
|
this.cdr = cdr;
|
|
13
17
|
this.ngControl = ngControl;
|
|
14
18
|
this.dialogService = dialogService;
|
|
15
19
|
this.translate = translate;
|
|
16
|
-
this.inverseColor = false;
|
|
17
20
|
// Image updload params
|
|
18
21
|
this.imageWidth = 400;
|
|
19
22
|
this.imageHeight = 400;
|
|
@@ -27,7 +30,9 @@ export class OnshoreFormImageItemComponent {
|
|
|
27
30
|
this.mediaType = '';
|
|
28
31
|
this.imageDeleted = new EventEmitter();
|
|
29
32
|
this.imageCleared = new EventEmitter();
|
|
30
|
-
this.
|
|
33
|
+
this.selectFromMedia = new EventEmitter();
|
|
34
|
+
//Output() imageSelectedFromMedia: EventEmitter<any> = new EventEmitter();
|
|
35
|
+
this.OnshoreFormTemplateLayout = OnshoreFormTemplateLayout;
|
|
31
36
|
this.image = '';
|
|
32
37
|
this.disabled = false;
|
|
33
38
|
this.webcamDialogVisible = false;
|
|
@@ -57,24 +62,6 @@ export class OnshoreFormImageItemComponent {
|
|
|
57
62
|
}, 500);
|
|
58
63
|
}
|
|
59
64
|
}
|
|
60
|
-
/*searchMedia() {
|
|
61
|
-
this.dialogService.open(SearchMediaComponent,{
|
|
62
|
-
styleClass: 'p-dialog-background-white',
|
|
63
|
-
modal: true,
|
|
64
|
-
header: this.translate.instant('search.media.dialogTitle'),
|
|
65
|
-
data: { targetType: this.mediaType }
|
|
66
|
-
}).onClose.subscribe((result) => {
|
|
67
|
-
if(result) {
|
|
68
|
-
this.image = result.url;
|
|
69
|
-
setTimeout(() => {
|
|
70
|
-
this.cdr.markForCheck();
|
|
71
|
-
this.ngControl?.control?.setValue(this.image);
|
|
72
|
-
this.ngControl?.control?.markAsDirty();
|
|
73
|
-
this.imageSelectedFromMedia.next(result);
|
|
74
|
-
}, 500);
|
|
75
|
-
}
|
|
76
|
-
});
|
|
77
|
-
}*/
|
|
78
65
|
removeImage() {
|
|
79
66
|
if (this.image && !this.image.includes('base64')) {
|
|
80
67
|
this.imageDeleted.emit(this.image);
|
|
@@ -107,8 +94,8 @@ export class OnshoreFormImageItemComponent {
|
|
|
107
94
|
this.cdr.markForCheck();
|
|
108
95
|
}
|
|
109
96
|
ngOnInit() {
|
|
110
|
-
if (this.ngControl
|
|
111
|
-
this.ngControl
|
|
97
|
+
if (this.ngControl?.control?.value == '' && this.formTemplate.default != undefined) {
|
|
98
|
+
this.ngControl?.control?.setValue(this.formTemplate.default);
|
|
112
99
|
this.cdr.markForCheck();
|
|
113
100
|
}
|
|
114
101
|
}
|
|
@@ -116,23 +103,21 @@ export class OnshoreFormImageItemComponent {
|
|
|
116
103
|
this.subscriptions.forEach((subscription) => {
|
|
117
104
|
subscription.unsubscribe();
|
|
118
105
|
});
|
|
119
|
-
this.ngControl
|
|
106
|
+
this.ngControl?.control?.disable();
|
|
120
107
|
this.image = null;
|
|
121
108
|
}
|
|
122
109
|
}
|
|
123
110
|
OnshoreFormImageItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: OnshoreFormImageItemComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.NgControl, optional: true, self: true }, { token: i2.DialogService }, { token: i3.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
|
|
124
|
-
OnshoreFormImageItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: OnshoreFormImageItemComponent, selector: "onshore-form-image-item", inputs: { formTemplate: "formTemplate",
|
|
111
|
+
OnshoreFormImageItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: OnshoreFormImageItemComponent, selector: "onshore-form-image-item", inputs: { formTemplate: "formTemplate", imageWidth: "imageWidth", imageHeight: "imageHeight", containWithinAspectRatio: "containWithinAspectRatio", aspectRatio: "aspectRatio", disableImageSelection: "disableImageSelection", disableWebcamSelection: "disableWebcamSelection", disableMediaSelection: "disableMediaSelection", disableDelete: "disableDelete", imagePlaceholder: "imagePlaceholder", mediaType: "mediaType" }, outputs: { imageDeleted: "imageDeleted", imageCleared: "imageCleared", selectFromMedia: "selectFromMedia" }, ngImport: i0, template: "<onshore-form-item-container [formTemplate]=\"formTemplate\" [ngControl]=\"ngControl\">\n <div class=\"w-full flex align-items-center flex-wrap\">\n\n <div class=\"position-relative flex justify-content-center align-items-center onshore-border-gray-4 border-solid border-1\" style=\"background-color: white\">\n <onshore-image-placeholder\n class=\"w-full\"\n [image]=\"image\"\n imageStyle=\"position: absolut; height: 250px; width: 250px\"\n [placeholder]=\"imagePlaceholder ? imagePlaceholder + ' fa-10x' : 'fa-image fa-10x'\"\n placeholderStyle=\"width: 250px; height: 250px\">\n </onshore-image-placeholder>\n </div>\n\n <div class=\"flex flex-column m-4\">\n <button pButton\n type=\"button\"\n [hidden]=\"disableImageSelection\"\n icon=\"fa fa-image\"\n [label]=\"'form.imageControl.uploadImageButton' | translate\"\n class=\"onshore-button-primary mb-2\"\n [disabled]=\"disabled\"\n (click)=\"imageChooserDialogVisible = true; cdr.detectChanges()\">\n </button>\n\n <button pButton\n type=\"button\"\n [hidden]=\"disableWebcamSelection\"\n icon=\"fa fa-camera\"\n [label]=\"'form.imageControl.webcamImageButton' | translate\"\n class=\"onshore-button-light mb-2\"\n [disabled]=\"disabled\"\n (click)=\"webcamDialogVisible = true\">\n </button>\n\n <button pButton\n type=\"button\"\n [hidden]=\"disableMediaSelection\"\n icon=\"fa fa-photo-video\"\n [label]=\"'form.imageControl.mediaImageButton' | translate\"\n class=\"onshore-button-light mb-2\"\n [disabled]=\"disabled\"\n (click)=\"selectFromMedia.emit()\">\n </button>\n\n <button pButton\n type=\"button\"\n [hidden]=\"disableDelete\"\n icon=\"fa fa-eraser\"\n [label]=\"'form.imageControl.removeImageButton' | translate\"\n class=\"onshore-button-light\"\n (click)=\"removeImage()\"\n [disabled]=\"!image || disabled\">\n </button>\n\n </div>\n\n </div>\n</onshore-form-item-container>\n\n<p-dialog [header]=\"'form.imageControl.uploadImageTitle' | translate\" [(visible)]=\"imageChooserDialogVisible\" [modal]=\"true\" [style]=\"{'max-width': '50vw'}\">\n <onshore-image-chooser\n (choosen)=\"getFileImage($event)\"\n (canceled)=\"imageChooserDialogVisible = false\"\n [resizeToWidth]=\"imageWidth\"\n [resizeToHeight]=\"imageHeight\"\n [containWithinAspectRatio]=\"containWithinAspectRatio\"\n [aspectRatio]=\"aspectRatio\"\n backgroundColor=\"transparent\">\n </onshore-image-chooser>\n</p-dialog>\n\n<p-dialog [header]=\"'form.imageControl.webacmImageTitle' | translate\" [(visible)]=\"webcamDialogVisible\" [modal]=\"true\" [style]=\"{'max-width': '50vw'}\">\n <onshore-webcam *ngIf=\"webcamDialogVisible\" (shot)=\"getWebcamImage($event)\" (canceled)=\"webcamDialogVisible = false\"></onshore-webcam>\n</p-dialog>\n", dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "component", type: i6.Dialog, selector: "p-dialog", inputs: ["header", "draggable", "resizable", "positionLeft", "positionTop", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "responsive", "appendTo", "breakpoints", "styleClass", "maskStyleClass", "showHeader", "breakpoint", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "visible", "style", "position"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { kind: "component", type: i7.OnshoreImagePlaceholderComponent, selector: "onshore-image-placeholder", inputs: ["placeholder", "image", "imageStyle", "placeholderStyle", "showLoader"] }, { kind: "component", type: i8.OnshoreFormItemContainer, selector: "onshore-form-item-container", inputs: ["formTemplate", "ngControl"] }, { kind: "component", type: i9.OnshoreImageChooserComponent, selector: "onshore-image-chooser", inputs: ["imageQuality", "resizeToHeight", "resizeToWidth", "backgroundColor", "format", "alignImage", "containWithinAspectRatio", "aspectRatio", "cropperPreviewHeight", "cropperPreviewWidth", "circleCropper", "autoSave", "inverseColor"], outputs: ["choosen", "canceled"] }, { kind: "component", type: i10.WebcamComponent, selector: "onshore-webcam", inputs: ["inverseColor", "imageQuality", "resizeToHeight", "resizeToWidth", "backgroundColor", "format", "alignImage", "containWithinAspectRatio", "aspectRatio", "cropperPreviewHeight", "cropperPreviewWidth", "circleCropper"], outputs: ["shot", "canceled"] }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
125
112
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: OnshoreFormImageItemComponent, decorators: [{
|
|
126
113
|
type: Component,
|
|
127
|
-
args: [{ selector: 'onshore-form-image-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<
|
|
114
|
+
args: [{ selector: 'onshore-form-image-item', changeDetection: ChangeDetectionStrategy.OnPush, template: "<onshore-form-item-container [formTemplate]=\"formTemplate\" [ngControl]=\"ngControl\">\n <div class=\"w-full flex align-items-center flex-wrap\">\n\n <div class=\"position-relative flex justify-content-center align-items-center onshore-border-gray-4 border-solid border-1\" style=\"background-color: white\">\n <onshore-image-placeholder\n class=\"w-full\"\n [image]=\"image\"\n imageStyle=\"position: absolut; height: 250px; width: 250px\"\n [placeholder]=\"imagePlaceholder ? imagePlaceholder + ' fa-10x' : 'fa-image fa-10x'\"\n placeholderStyle=\"width: 250px; height: 250px\">\n </onshore-image-placeholder>\n </div>\n\n <div class=\"flex flex-column m-4\">\n <button pButton\n type=\"button\"\n [hidden]=\"disableImageSelection\"\n icon=\"fa fa-image\"\n [label]=\"'form.imageControl.uploadImageButton' | translate\"\n class=\"onshore-button-primary mb-2\"\n [disabled]=\"disabled\"\n (click)=\"imageChooserDialogVisible = true; cdr.detectChanges()\">\n </button>\n\n <button pButton\n type=\"button\"\n [hidden]=\"disableWebcamSelection\"\n icon=\"fa fa-camera\"\n [label]=\"'form.imageControl.webcamImageButton' | translate\"\n class=\"onshore-button-light mb-2\"\n [disabled]=\"disabled\"\n (click)=\"webcamDialogVisible = true\">\n </button>\n\n <button pButton\n type=\"button\"\n [hidden]=\"disableMediaSelection\"\n icon=\"fa fa-photo-video\"\n [label]=\"'form.imageControl.mediaImageButton' | translate\"\n class=\"onshore-button-light mb-2\"\n [disabled]=\"disabled\"\n (click)=\"selectFromMedia.emit()\">\n </button>\n\n <button pButton\n type=\"button\"\n [hidden]=\"disableDelete\"\n icon=\"fa fa-eraser\"\n [label]=\"'form.imageControl.removeImageButton' | translate\"\n class=\"onshore-button-light\"\n (click)=\"removeImage()\"\n [disabled]=\"!image || disabled\">\n </button>\n\n </div>\n\n </div>\n</onshore-form-item-container>\n\n<p-dialog [header]=\"'form.imageControl.uploadImageTitle' | translate\" [(visible)]=\"imageChooserDialogVisible\" [modal]=\"true\" [style]=\"{'max-width': '50vw'}\">\n <onshore-image-chooser\n (choosen)=\"getFileImage($event)\"\n (canceled)=\"imageChooserDialogVisible = false\"\n [resizeToWidth]=\"imageWidth\"\n [resizeToHeight]=\"imageHeight\"\n [containWithinAspectRatio]=\"containWithinAspectRatio\"\n [aspectRatio]=\"aspectRatio\"\n backgroundColor=\"transparent\">\n </onshore-image-chooser>\n</p-dialog>\n\n<p-dialog [header]=\"'form.imageControl.webacmImageTitle' | translate\" [(visible)]=\"webcamDialogVisible\" [modal]=\"true\" [style]=\"{'max-width': '50vw'}\">\n <onshore-webcam *ngIf=\"webcamDialogVisible\" (shot)=\"getWebcamImage($event)\" (canceled)=\"webcamDialogVisible = false\"></onshore-webcam>\n</p-dialog>\n" }]
|
|
128
115
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.NgControl, decorators: [{
|
|
129
116
|
type: Self
|
|
130
117
|
}, {
|
|
131
118
|
type: Optional
|
|
132
119
|
}] }, { type: i2.DialogService }, { type: i3.TranslateService }]; }, propDecorators: { formTemplate: [{
|
|
133
120
|
type: Input
|
|
134
|
-
}], inverseColor: [{
|
|
135
|
-
type: Input
|
|
136
121
|
}], imageWidth: [{
|
|
137
122
|
type: Input
|
|
138
123
|
}], imageHeight: [{
|
|
@@ -157,7 +142,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImpor
|
|
|
157
142
|
type: Output
|
|
158
143
|
}], imageCleared: [{
|
|
159
144
|
type: Output
|
|
160
|
-
}],
|
|
145
|
+
}], selectFromMedia: [{
|
|
161
146
|
type: Output
|
|
162
147
|
}] } });
|
|
163
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1pbWFnZS1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29uc2hvcmUtZm9ybXMvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0taW1hZ2UtaXRlbS9mb3JtLWltYWdlLWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb25zaG9yZS1mb3Jtcy9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS1pbWFnZS1pdGVtL2Zvcm0taW1hZ2UtaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUM5QixRQUFRLEVBQUUsTUFBTSxFQUNoQixJQUFJLEVBQ0wsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7OztBQVl2QixNQUFNLE9BQU8sNkJBQTZCO0lBd0h4QyxZQUFvQixHQUFzQixFQUNILFNBQW9CLEVBQ3hDLGFBQTRCLEVBQzNCLFNBQTJCO1FBSDNCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ0gsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUN4QyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUMzQixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQXpIdEMsaUJBQVksR0FBWSxLQUFLLENBQUM7UUFFdkMsdUJBQXVCO1FBQ2QsZUFBVSxHQUFXLEdBQUcsQ0FBQztRQUN6QixnQkFBVyxHQUFXLEdBQUcsQ0FBQztRQUMxQiw2QkFBd0IsR0FBRyxLQUFLLENBQUM7UUFDakMsZ0JBQVcsR0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzVCLDBCQUFxQixHQUF3QixLQUFLLENBQUM7UUFDbkQsMkJBQXNCLEdBQXdCLEtBQUssQ0FBQztRQUNwRCwwQkFBcUIsR0FBd0IsS0FBSyxDQUFDO1FBQ25ELGtCQUFhLEdBQXdCLEtBQUssQ0FBQztRQUMzQyxxQkFBZ0Is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SztnQkFDRyx3QkFBd0I7c0JBQWhDLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBQ0csc0JBQXNCO3NCQUE5QixLQUFLO2dCQUNHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNJLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxzQkFBc0I7c0JBQS9CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsXG4gIE9wdGlvbmFsLCBPdXRwdXQsXG4gIFNlbGZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9keW5hbWljZGlhbG9nJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IE9uc2hvcmVGb3JtVGVtcGxhdGVJdGVtIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2Zvcm0ubW9kZWxzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnb25zaG9yZS1mb3JtLWltYWdlLWl0ZW0nLFxuICB0ZW1wbGF0ZVVybDogJy4vZm9ybS1pbWFnZS1pdGVtLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE9uc2hvcmVGb3JtSW1hZ2VJdGVtQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgZm9ybVRlbXBsYXRlITogT25zaG9yZUZvcm1UZW1wbGF0ZUl0ZW07XG4gIEBJbnB1dCgpIGludmVyc2VDb2xvcjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8vIEltYWdlIHVwZGxvYWQgcGFyYW1zXG4gIEBJbnB1dCgpIGltYWdlV2lkdGg6IG51bWJlciA9IDQwMDtcbiAgQElucHV0KCkgaW1hZ2VIZWlnaHQ6IG51bWJlciA9IDQwMDtcbiAgQElucHV0KCkgY29udGFpbldpdGhpbkFzcGVjdFJhdGlvID0gZmFsc2U7XG4gIEBJbnB1dCgpIGFzcGVjdFJhdGlvOiBudW1iZXIgPSAxIC8gMTtcbiAgQElucHV0KCkgZGlzYWJsZUltYWdlU2VsZWN0aW9uOiBib29sZWFuIHwgdW5kZWZpbmVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIGRpc2FibGVXZWJjYW1TZWxlY3Rpb246IGJvb2xlYW4gfCB1bmRlZmluZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgZGlzYWJsZU1lZGlhU2VsZWN0aW9uOiBib29sZWFuIHwgdW5kZWZpbmVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIGRpc2FibGVEZWxldGU6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgaW1hZ2VQbGFjZWhvbGRlcjogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIG1lZGlhVHlwZTogc3RyaW5nID0gJyc7XG4gIEBPdXRwdXQoKSBpbWFnZURlbGV0ZWQ6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgaW1hZ2VDbGVhcmVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGltYWdlU2VsZWN0ZWRGcm9tTWVkaWE6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIGltYWdlID0gJyc7XG4gIGRpc2FibGVkID0gZmFsc2U7XG4gIHdlYmNhbURpYWxvZ1Zpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaW1hZ2VDaG9vc2VyRGlhbG9nVmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHN1YnNjcmlwdGlvbnM6IEFycmF5PFN1YnNjcmlwdGlvbj4gPSBbXTtcblxuICBnZXRGaWxlSW1hZ2UoaW1hZ2U6IGFueSkge1xuICAgIHRoaXMuaW1hZ2VDaG9vc2VyRGlhbG9nVmlzaWJsZSA9IGZhbHNlO1xuICAgIGlmKGltYWdlKSB7XG4gICAgICB0aGlzLmltYWdlID0gaW1hZ2U7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIHRoaXMubmdDb250cm9sPy5jb250cm9sPy5zZXRWYWx1ZSh0aGlzLmltYWdlKTtcbiAgICAgICAgdGhpcy5uZ0NvbnRyb2w/LmNvbnRyb2w/Lm1hcmtBc0RpcnR5KCk7XG4gICAgICB9LCA1MDApO1xuICAgIH1cbiAgfVxuXG4gIGdldFdlYmNhbUltYWdlKGltYWdlOiBhbnkpIHtcbiAgICB0aGlzLndlYmNhbURpYWxvZ1Zpc2libGUgPSBmYWxzZTtcbiAgICBpZihpbWFnZSkge1xuICAgICAgdGhpcy5pbWFnZSA9IGltYWdlO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB0aGlzLm5nQ29udHJvbD8uY29udHJvbD8uc2V0VmFsdWUodGhpcy5pbWFnZSk7XG4gICAgICAgIHRoaXMubmdDb250cm9sPy5jb250cm9sPy5tYXJrQXNEaXJ0eSgpO1xuICAgICAgfSwgNTAwKTtcbiAgICB9XG4gIH1cblxuICAvKnNlYXJjaE1lZGlhKCkge1xuICAgIHRoaXMuZGlhbG9nU2VydmljZS5vcGVuKFNlYXJjaE1lZGlhQ29tcG9uZW50LHtcbiAgICAgIHN0eWxlQ2xhc3M6ICdwLWRpYWxvZy1iYWNrZ3JvdW5kLXdoaXRlJyxcbiAgICAgIG1vZGFsOiB0cnVlLFxuICAgICAgaGVhZGVyOiB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdzZWFyY2gubWVkaWEuZGlhbG9nVGl0bGUnKSxcbiAgICAgIGRhdGE6IHsgdGFyZ2V0VHlwZTogdGhpcy5tZWRpYVR5cGUgfVxuICAgIH0pLm9uQ2xvc2Uuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcbiAgICAgIGlmKHJlc3VsdCkge1xuICAgICAgICB0aGlzLmltYWdlID0gcmVzdWx0LnVybDtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgdGhpcy5uZ0NvbnRyb2w/LmNvbnRyb2w/LnNldFZhbHVlKHRoaXMuaW1hZ2UpO1xuICAgICAgICAgIHRoaXMubmdDb250cm9sPy5jb250cm9sPy5tYXJrQXNEaXJ0eSgpO1xuICAgICAgICAgIHRoaXMuaW1hZ2VTZWxlY3RlZEZyb21NZWRpYS5uZXh0KHJlc3VsdCk7XG4gICAgICAgIH0sIDUwMCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0qL1xuXG4gIHJlbW92ZUltYWdlKCkge1xuICAgIGlmKHRoaXMuaW1hZ2UgJiYgIXRoaXMuaW1hZ2UuaW5jbHVkZXMoJ2Jhc2U2NCcpKSB7XG4gICAgICB0aGlzLmltYWdlRGVsZXRlZC5lbWl0KHRoaXMuaW1hZ2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmltYWdlQ2xlYXJlZC5lbWl0KCk7XG4gICAgfVxuXG4gICAgdGhpcy5uZ0NvbnRyb2w/LmNvbnRyb2w/LnNldFZhbHVlKG51bGwpO1xuICAgIHRoaXMubmdDb250cm9sPy5jb250cm9sPy5tYXJrQXNEaXJ0eSgpO1xuICAgIHRoaXMuaW1hZ2UgPSAnJztcbiAgfVxuXG4gIHB1YmxpYyB3cml0ZVZhbHVlKG9iajogYW55KTogdm9pZCB7XG4gICAgaWYob2JqICYmICFvYmouaW5jbHVkZXMoJ2Jhc2U2NCcpKSB7XG4gICAgICB0aGlzLmltYWdlID0gb2JqO1xuICAgIH1cbiAgICBpZihvYmogPT0gbnVsbCkge1xuICAgICAgdGhpcy5pbWFnZSA9ICcnO1xuICAgIH1cbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICBpZih0aGlzLm5nQ29udHJvbC52YWx1ZSkge1xuICAgICAgdGhpcy5pbWFnZSA9IHRoaXMubmdDb250cm9sLnZhbHVlO1xuICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHt9XG5cbiAgcHVibGljIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmKHRoaXMubmdDb250cm9sLmNvbnRyb2wudmFsdWUgPT0gJycgJiYgdGhpcy5mb3JtVGVtcGxhdGUuZGVmYXVsdCAhPSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMubmdDb250cm9sLmNvbnRyb2wuc2V0VmFsdWUodGhpcy5mb3JtVGVtcGxhdGUuZGVmYXVsdCk7XG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaCgoc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24pID0+IHtcbiAgICAgIHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH0pO1xuICAgIHRoaXMubmdDb250cm9sLmNvbnRyb2wuZGlzYWJsZSgpO1xuICAgIHRoaXMuaW1hZ2UgPSBudWxsO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICAgICAgICBAU2VsZigpIEBPcHRpb25hbCgpIHB1YmxpYyBuZ0NvbnRyb2w6IE5nQ29udHJvbCxcbiAgICAgICAgICAgICAgcHVibGljIGRpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UsXG4gICAgICAgICAgICAgIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlKSB7XG4gICAgdGhpcy5uZ0NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sdW1uIG1iLTNcIiBzdHlsZT1cIm1heC13aWR0aDogNTAwcHhcIj5cbiAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgPGIgW2NsYXNzLnRleHQtbXV0ZWRdPVwiZGlzYWJsZWRcIiBjbGFzcz1cIm1iLTEgd2hpdGUtc3BhY2Utbm93cmFwXCI+XG4gICAgICB7e2Zvcm1UZW1wbGF0ZS5sYWJlbH19XG4gICAgICA8c3BhbiAqbmdJZj1cImZvcm1UZW1wbGF0ZS5yZXF1aXJlZFwiIGNsYXNzPVwidGwtY29sb3ItZGFuZ2VyXCI+Kjwvc3Bhbj5cbiAgICA8L2I+XG4gICAgPGkgKm5nSWY9XCJmb3JtVGVtcGxhdGUudG9vbHRpcFwiIGNsYXNzPVwiZmEgZmEtaW5mby1jaXJjbGUgdGwtY29sb3ItYmxhY2tcIiBbcFRvb2x0aXBdPVwiZm9ybVRlbXBsYXRlLnRvb2x0aXBcIiB0b29sdGlwUG9zaXRpb249XCJsZWZ0XCIgW2VzY2FwZV09XCJmYWxzZVwiPjwvaT5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cInctMTAwXCI+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZSBmbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCIgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZVwiPlxuICAgICAgICA8IS0tPGFwcC1pbWFnZS1wbGFjZWhvbGRlciBjbGFzcz1cInctMTAwXCIgW2ltYWdlXT1cImltYWdlXCIgaW1hZ2VTdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0OyBoZWlnaHQ6IDI1MHB4OyB3aWR0aDogMjUwcHhcIiBbcGxhY2Vob2xkZXJdPVwiZmltYWdlUGxhY2Vob2xkZXIgPyBpbWFnZVBsYWNlaG9sZGVyICsgJyBmYS0xMHgnIDogJ2ZhLWltYWdlIGZhLTEweCdcIiBwbGFjZWhvbGRlclN0eWxlPVwid2lkdGg6IDI1MHB4OyBoZWlnaHQ6IDI1MHB4XCI+PC9hcHAtaW1hZ2UtcGxhY2Vob2xkZXI+LS0+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2x1bW4gbXQtNCB3LTEwMFwiPlxuICAgICAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBbaGlkZGVuXT1cImRpc2FibGVJbWFnZVNlbGVjdGlvblwiXG4gICAgICAgICAgICAgICAgaWNvbj1cImZhIGZhLWltYWdlXCJcbiAgICAgICAgICAgICAgICBsYWJlbD1cIkJpbGQgaG9jaGxhZGVuXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInAtYnV0dG9uLXJvdW5kZWQgcC1idXR0b24tb3V0bGluZWQgdGV4dC1zZWNvbmRhcnkgbWItMlwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiaW1hZ2VDaG9vc2VyRGlhbG9nVmlzaWJsZSA9IHRydWVcIj5cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPGJ1dHRvbiBwQnV0dG9uIHBSaXBwbGUgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgW2hpZGRlbl09XCJkaXNhYmxlV2ViY2FtU2VsZWN0aW9uXCJcbiAgICAgICAgICAgICAgICBpY29uPVwiZmEgZmEtY2FtZXJhXCJcbiAgICAgICAgICAgICAgICBsYWJlbD1cIkZvdG8gYXVmbmVobWVuXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInAtYnV0dG9uLXJvdW5kZWQgcC1idXR0b24tb3V0bGluZWQgdGV4dC1zZWNvbmRhcnkgbWItMlwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwid2ViY2FtRGlhbG9nVmlzaWJsZSA9IHRydWVcIj5cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPCEtLTxidXR0b24gcEJ1dHRvbiBwUmlwcGxlIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIFtoaWRkZW5dPVwiZGlzYWJsZU1lZGlhU2VsZWN0aW9uXCJcbiAgICAgICAgICAgICAgICBpY29uPVwiZmEgZmEtcGhvdG8tdmlkZW9cIlxuICAgICAgICAgICAgICAgIGxhYmVsPVwiTWVkaWVudmVyd2FsdHVuZ1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1yb3VuZGVkIHAtYnV0dG9uLW91dGxpbmVkIHRleHQtc2Vjb25kYXJ5IG1iLTJcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlYXJjaE1lZGlhKClcIj5cbiAgICAgICAgPC9idXR0b24+LS0+XG5cbiAgICAgICAgPGJ1dHRvbiBwQnV0dG9uIHBSaXBwbGUgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgW2hpZGRlbl09XCJkaXNhYmxlRGVsZXRlXCJcbiAgICAgICAgICAgICAgICBpY29uPVwiZmEgZmEtZXJhc2VyXCJcbiAgICAgICAgICAgICAgICBsYWJlbD1cIkVudGZlcm5lblwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZUltYWdlKClcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhaW1hZ2UgfHwgZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwicC1idXR0b24tcm91bmRlZCBwLWJ1dHRvbi1vdXRsaW5lZCB0ZXh0LXNlY29uZGFyeVwiPlxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgPC9kaXY+XG5cbiAgPC9kaXY+XG5cbiAgPHNtYWxsICpuZ0lmPVwiZm9ybVRlbXBsYXRlLmRlc2NyaXB0aW9uXCI+PGkgY2xhc3M9XCJmYSBmYS1pbmZvLWNpcmNsZVwiPjwvaT4ge3tmb3JtVGVtcGxhdGUuZGVzY3JpcHRpb259fTwvc21hbGw+XG5cbjwvZGl2PlxuXG48IS0tXG48cC1kaWFsb2cgW2hlYWRlcl09XCInQmlsZCBhdXN3w6RobGVuJ1wiIFsodmlzaWJsZSldPVwiaW1hZ2VDaG9vc2VyRGlhbG9nVmlzaWJsZVwiIFttb2RhbF09XCJ0cnVlXCIgW3N0eWxlXT1cInsnbWF4LXdpZHRoJzogJzUwdncnfVwiPlxuICA8YXBwLWltYWdlLWNob29zZXIgYnV0dG9uTGFiZWw9XCJBdXN3w6RobGVuXCJcbiAgICAgICAgICAgICAgICAgICAgIChjaG9vc2VuKT1cImdldEZpbGVJbWFnZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgIChjYW5jZWxlZCk9XCJpbWFnZUNob29zZXJEaWFsb2dWaXNpYmxlID0gZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgW2ludmVyc2VDb2xvcl09XCJpbnZlcnNlQ29sb3JcIlxuICAgICAgICAgICAgICAgICAgICAgW3Jlc2l6ZVRvV2lkdGhdPVwiaW1hZ2VXaWR0aFwiXG4gICAgICAgICAgICAgICAgICAgICBbcmVzaXplVG9IZWlnaHRdPVwiaW1hZ2VIZWlnaHRcIlxuICAgICAgICAgICAgICAgICAgICAgW2NvbnRhaW5XaXRoaW5Bc3BlY3RSYXRpb109XCJjb250YWluV2l0aGluQXNwZWN0UmF0aW9cIlxuICAgICAgICAgICAgICAgICAgICAgW2FzcGVjdFJhdGlvXT1cImFzcGVjdFJhdGlvXCJcbiAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcj1cInRyYW5zcGFyZW50XCI+PC9hcHAtaW1hZ2UtY2hvb3Nlcj5cbjwvcC1kaWFsb2c+XG4tLT5cblxuPCEtLVxuPHAtZGlhbG9nIFtoZWFkZXJdPVwiJ0ZvdG8gYXVmbmVobWVuJ1wiIFsodmlzaWJsZSldPVwid2ViY2FtRGlhbG9nVmlzaWJsZVwiIFttb2RhbF09XCJ0cnVlXCIgW3N0eWxlXT1cInsnbWF4LXdpZHRoJzogJzUwdncnfVwiPlxuICA8YXBwLXdlYmNhbSAqbmdJZj1cIndlYmNhbURpYWxvZ1Zpc2libGVcIiBidXR0b25MYWJlbD1cIlNtaWxlXCIgKHNob3QpPVwiZ2V0V2ViY2FtSW1hZ2UoJGV2ZW50KVwiIChjYW5jZWxlZCk9XCJ3ZWJjYW1EaWFsb2dWaXNpYmxlID0gZmFsc2VcIiBbaW52ZXJzZUNvbG9yXT1cImludmVyc2VDb2xvclwiPjwvYXBwLXdlYmNhbT5cbjwvcC1kaWFsb2c+XG4tLT5cbiJdfQ==
|
|
148
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1pbWFnZS1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29uc2hvcmUtZm9ybXMvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0taW1hZ2UtaXRlbS9mb3JtLWltYWdlLWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb25zaG9yZS1mb3Jtcy9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS1pbWFnZS1pdGVtL2Zvcm0taW1hZ2UtaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUM5QixRQUFRLEVBQUUsTUFBTSxFQUNoQixJQUFJLEVBQ0wsTUFBTSxlQUFlLENBQUM7QUFNdkIsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7Ozs7OztBQU9uRSxNQUFNLE9BQU8sNkJBQTZCO0lBd0d4QyxZQUFtQixHQUFzQixFQUNGLFNBQW9CLEVBQ3hDLGFBQTRCLEVBQzNCLFNBQTJCO1FBSDVCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ0YsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUN4QyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUMzQixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQXhHL0MsdUJBQXVCO1FBQ2QsZUFBVSxHQUFXLEdBQUcsQ0FBQztRQUN6QixnQkFBVyxHQUFXLEdBQUcsQ0FBQztRQUMxQiw2QkFBd0IsR0FBRyxLQUFLLENBQUM7UUFDakMsZ0JBQVcsR0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzVCLDBCQUFxQixHQUF3QixLQUFLLENBQUM7UUFDbkQsMkJBQXNCLEdBQXdCLEtBQUssQ0FBQztRQUNwRCwwQkFBcUIsR0FBd0IsS0FBSyxDQUFDO1FBQ25ELGtCQUFhLEdBQXdCLEtB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V0FBVztzQkFBbkIsS0FBSztnQkFDRyx3QkFBd0I7c0JBQWhDLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBQ0csc0JBQXNCO3NCQUE5QixLQUFLO2dCQUNHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUVJLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxlQUFlO3NCQUF4QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LFxuICBPcHRpb25hbCwgT3V0cHV0LFxuICBTZWxmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJ3ByaW1lbmcvZHluYW1pY2RpYWxvZyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBPbnNob3JlRm9ybVRlbXBsYXRlSXRlbSB9IGZyb20gJy4uLy4uL21vZGVscy9mb3JtLm1vZGVscyc7XG5pbXBvcnQgeyBPbnNob3JlRm9ybVRlbXBsYXRlTGF5b3V0IH0gZnJvbSAnLi4vLi4vZW51bXMvZm9ybS5lbnVtcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ29uc2hvcmUtZm9ybS1pbWFnZS1pdGVtJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0taW1hZ2UtaXRlbS5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBPbnNob3JlRm9ybUltYWdlSXRlbUNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIGZvcm1UZW1wbGF0ZSE6IE9uc2hvcmVGb3JtVGVtcGxhdGVJdGVtO1xuXG4gIC8vIEltYWdlIHVwZGxvYWQgcGFyYW1zXG4gIEBJbnB1dCgpIGltYWdlV2lkdGg6IG51bWJlciA9IDQwMDtcbiAgQElucHV0KCkgaW1hZ2VIZWlnaHQ6IG51bWJlciA9IDQwMDtcbiAgQElucHV0KCkgY29udGFpbldpdGhpbkFzcGVjdFJhdGlvID0gZmFsc2U7XG4gIEBJbnB1dCgpIGFzcGVjdFJhdGlvOiBudW1iZXIgPSAxIC8gMTtcbiAgQElucHV0KCkgZGlzYWJsZUltYWdlU2VsZWN0aW9uOiBib29sZWFuIHwgdW5kZWZpbmVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIGRpc2FibGVXZWJjYW1TZWxlY3Rpb246IGJvb2xlYW4gfCB1bmRlZmluZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgZGlzYWJsZU1lZGlhU2VsZWN0aW9uOiBib29sZWFuIHwgdW5kZWZpbmVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIGRpc2FibGVEZWxldGU6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgaW1hZ2VQbGFjZWhvbGRlcjogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIG1lZGlhVHlwZTogc3RyaW5nID0gJyc7XG5cbiAgQE91dHB1dCgpIGltYWdlRGVsZXRlZDogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBpbWFnZUNsZWFyZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgc2VsZWN0RnJvbU1lZGlhOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgLy9PdXRwdXQoKSBpbWFnZVNlbGVjdGVkRnJvbU1lZGlhOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBPbnNob3JlRm9ybVRlbXBsYXRlTGF5b3V0ID0gT25zaG9yZUZvcm1UZW1wbGF0ZUxheW91dDtcblxuICBpbWFnZTogc3RyaW5nIHwgbnVsbCA9ICcnO1xuICBkaXNhYmxlZCA9IGZhbHNlO1xuICB3ZWJjYW1EaWFsb2dWaXNpYmxlOiBib29sZWFuID0gZmFsc2U7XG4gIGltYWdlQ2hvb3NlckRpYWxvZ1Zpc2libGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBzdWJzY3JpcHRpb25zOiBBcnJheTxTdWJzY3JpcHRpb24+ID0gW107XG5cbiAgZ2V0RmlsZUltYWdlKGltYWdlOiBhbnkpIHtcbiAgICB0aGlzLmltYWdlQ2hvb3NlckRpYWxvZ1Zpc2libGUgPSBmYWxzZTtcbiAgICBpZihpbWFnZSkge1xuICAgICAgdGhpcy5pbWFnZSA9IGltYWdlO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB0aGlzLm5nQ29udHJvbD8uY29udHJvbD8uc2V0VmFsdWUodGhpcy5pbWFnZSk7XG4gICAgICAgIHRoaXMubmdDb250cm9sPy5jb250cm9sPy5tYXJrQXNEaXJ0eSgpO1xuICAgICAgfSwgNTAwKTtcbiAgICB9XG4gIH1cblxuICBnZXRXZWJjYW1JbWFnZShpbWFnZTogYW55KSB7XG4gICAgdGhpcy53ZWJjYW1EaWFsb2dWaXNpYmxlID0gZmFsc2U7XG4gICAgaWYoaW1hZ2UpIHtcbiAgICAgIHRoaXMuaW1hZ2UgPSBpbWFnZTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgdGhpcy5uZ0NvbnRyb2w/LmNvbnRyb2w/LnNldFZhbHVlKHRoaXMuaW1hZ2UpO1xuICAgICAgICB0aGlzLm5nQ29udHJvbD8uY29udHJvbD8ubWFya0FzRGlydHkoKTtcbiAgICAgIH0sIDUwMCk7XG4gICAgfVxuICB9XG5cbiAgcmVtb3ZlSW1hZ2UoKSB7XG4gICAgaWYodGhpcy5pbWFnZSAmJiAhdGhpcy5pbWFnZS5pbmNsdWRlcygnYmFzZTY0JykpIHtcbiAgICAgIHRoaXMuaW1hZ2VEZWxldGVkLmVtaXQodGhpcy5pbWFnZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW1hZ2VDbGVhcmVkLmVtaXQoKTtcbiAgICB9XG5cbiAgICB0aGlzLm5nQ29udHJvbD8uY29udHJvbD8uc2V0VmFsdWUobnVsbCk7XG4gICAgdGhpcy5uZ0NvbnRyb2w/LmNvbnRyb2w/Lm1hcmtBc0RpcnR5KCk7XG4gICAgdGhpcy5pbWFnZSA9ICcnO1xuICB9XG5cbiAgcHVibGljIHdyaXRlVmFsdWUob2JqOiBhbnkpOiB2b2lkIHtcbiAgICBpZihvYmogJiYgIW9iai5pbmNsdWRlcygnYmFzZTY0JykpIHtcbiAgICAgIHRoaXMuaW1hZ2UgPSBvYmo7XG4gICAgfVxuICAgIGlmKG9iaiA9PSBudWxsKSB7XG4gICAgICB0aGlzLmltYWdlID0gJyc7XG4gICAgfVxuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIGlmKHRoaXMubmdDb250cm9sLnZhbHVlKSB7XG4gICAgICB0aGlzLmltYWdlID0gdGhpcy5uZ0NvbnRyb2wudmFsdWU7XG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge31cblxuICBwdWJsaWMgc2V0RGlzYWJsZWRTdGF0ZT8oaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYodGhpcy5uZ0NvbnRyb2w/LmNvbnRyb2w/LnZhbHVlID09ICcnICYmIHRoaXMuZm9ybVRlbXBsYXRlLmRlZmF1bHQgIT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLm5nQ29udHJvbD8uY29udHJvbD8uc2V0VmFsdWUodGhpcy5mb3JtVGVtcGxhdGUuZGVmYXVsdCk7XG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaCgoc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24pID0+IHtcbiAgICAgIHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH0pO1xuICAgIHRoaXMubmdDb250cm9sPy5jb250cm9sPy5kaXNhYmxlKCk7XG4gICAgdGhpcy5pbWFnZSA9IG51bGw7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgICAgICAgQFNlbGYoKSBAT3B0aW9uYWwoKSBwdWJsaWMgbmdDb250cm9sOiBOZ0NvbnRyb2wsXG4gICAgICAgICAgICAgIHB1YmxpYyBkaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSkge1xuICAgIHRoaXMubmdDb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xuICB9XG59XG4iLCI8b25zaG9yZS1mb3JtLWl0ZW0tY29udGFpbmVyIFtmb3JtVGVtcGxhdGVdPVwiZm9ybVRlbXBsYXRlXCIgW25nQ29udHJvbF09XCJuZ0NvbnRyb2xcIj5cbiAgPGRpdiBjbGFzcz1cInctZnVsbCBmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LXdyYXBcIj5cblxuICAgIDxkaXYgY2xhc3M9XCJwb3NpdGlvbi1yZWxhdGl2ZSBmbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIG9uc2hvcmUtYm9yZGVyLWdyYXktNCBib3JkZXItc29saWQgYm9yZGVyLTFcIiBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6IHdoaXRlXCI+XG4gICAgICA8b25zaG9yZS1pbWFnZS1wbGFjZWhvbGRlclxuICAgICAgICBjbGFzcz1cInctZnVsbFwiXG4gICAgICAgIFtpbWFnZV09XCJpbWFnZVwiXG4gICAgICAgIGltYWdlU3R5bGU9XCJwb3NpdGlvbjogYWJzb2x1dDsgaGVpZ2h0OiAyNTBweDsgd2lkdGg6IDI1MHB4XCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cImltYWdlUGxhY2Vob2xkZXIgPyBpbWFnZVBsYWNlaG9sZGVyICsgJyBmYS0xMHgnIDogJ2ZhLWltYWdlIGZhLTEweCdcIlxuICAgICAgICBwbGFjZWhvbGRlclN0eWxlPVwid2lkdGg6IDI1MHB4OyBoZWlnaHQ6IDI1MHB4XCI+XG4gICAgICA8L29uc2hvcmUtaW1hZ2UtcGxhY2Vob2xkZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbHVtbiBtLTRcIj5cbiAgICAgIDxidXR0b24gcEJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgW2hpZGRlbl09XCJkaXNhYmxlSW1hZ2VTZWxlY3Rpb25cIlxuICAgICAgICAgICAgICBpY29uPVwiZmEgZmEtaW1hZ2VcIlxuICAgICAgICAgICAgICBbbGFiZWxdPVwiJ2Zvcm0uaW1hZ2VDb250cm9sLnVwbG9hZEltYWdlQnV0dG9uJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwib25zaG9yZS1idXR0b24tcHJpbWFyeSBtYi0yXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImltYWdlQ2hvb3NlckRpYWxvZ1Zpc2libGUgPSB0cnVlOyBjZHIuZGV0ZWN0Q2hhbmdlcygpXCI+XG4gICAgICA8L2J1dHRvbj5cblxuICAgICAgPGJ1dHRvbiBwQnV0dG9uXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBbaGlkZGVuXT1cImRpc2FibGVXZWJjYW1TZWxlY3Rpb25cIlxuICAgICAgICAgICAgICBpY29uPVwiZmEgZmEtY2FtZXJhXCJcbiAgICAgICAgICAgICAgW2xhYmVsXT1cIidmb3JtLmltYWdlQ29udHJvbC53ZWJjYW1JbWFnZUJ1dHRvbicgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICBjbGFzcz1cIm9uc2hvcmUtYnV0dG9uLWxpZ2h0IG1iLTJcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwid2ViY2FtRGlhbG9nVmlzaWJsZSA9IHRydWVcIj5cbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8YnV0dG9uIHBCdXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIFtoaWRkZW5dPVwiZGlzYWJsZU1lZGlhU2VsZWN0aW9uXCJcbiAgICAgICAgICAgICAgaWNvbj1cImZhIGZhLXBob3RvLXZpZGVvXCJcbiAgICAgICAgICAgICAgW2xhYmVsXT1cIidmb3JtLmltYWdlQ29udHJvbC5tZWRpYUltYWdlQnV0dG9uJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwib25zaG9yZS1idXR0b24tbGlnaHQgbWItMlwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RGcm9tTWVkaWEuZW1pdCgpXCI+XG4gICAgICA8L2J1dHRvbj5cblxuICAgICAgPGJ1dHRvbiBwQnV0dG9uXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBbaGlkZGVuXT1cImRpc2FibGVEZWxldGVcIlxuICAgICAgICAgICAgICBpY29uPVwiZmEgZmEtZXJhc2VyXCJcbiAgICAgICAgICAgICAgW2xhYmVsXT1cIidmb3JtLmltYWdlQ29udHJvbC5yZW1vdmVJbWFnZUJ1dHRvbicgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICBjbGFzcz1cIm9uc2hvcmUtYnV0dG9uLWxpZ2h0XCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZUltYWdlKClcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWltYWdlIHx8IGRpc2FibGVkXCI+XG4gICAgICA8L2J1dHRvbj5cblxuICAgIDwvZGl2PlxuXG4gIDwvZGl2PlxuPC9vbnNob3JlLWZvcm0taXRlbS1jb250YWluZXI+XG5cbjxwLWRpYWxvZyBbaGVhZGVyXT1cIidmb3JtLmltYWdlQ29udHJvbC51cGxvYWRJbWFnZVRpdGxlJyB8IHRyYW5zbGF0ZVwiIFsodmlzaWJsZSldPVwiaW1hZ2VDaG9vc2VyRGlhbG9nVmlzaWJsZVwiIFttb2RhbF09XCJ0cnVlXCIgW3N0eWxlXT1cInsnbWF4LXdpZHRoJzogJzUwdncnfVwiPlxuICA8b25zaG9yZS1pbWFnZS1jaG9vc2VyXG4gICAgICAgICAgICAgICAgICAgICAoY2hvb3Nlbik9XCJnZXRGaWxlSW1hZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAoY2FuY2VsZWQpPVwiaW1hZ2VDaG9vc2VyRGlhbG9nVmlzaWJsZSA9IGZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgIFtyZXNpemVUb1dpZHRoXT1cImltYWdlV2lkdGhcIlxuICAgICAgICAgICAgICAgICAgICAgW3Jlc2l6ZVRvSGVpZ2h0XT1cImltYWdlSGVpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgIFtjb250YWluV2l0aGluQXNwZWN0UmF0aW9dPVwiY29udGFpbldpdGhpbkFzcGVjdFJhdGlvXCJcbiAgICAgICAgICAgICAgICAgICAgIFthc3BlY3RSYXRpb109XCJhc3BlY3RSYXRpb1wiXG4gICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I9XCJ0cmFuc3BhcmVudFwiPlxuICA8L29uc2hvcmUtaW1hZ2UtY2hvb3Nlcj5cbjwvcC1kaWFsb2c+XG5cbjxwLWRpYWxvZyBbaGVhZGVyXT1cIidmb3JtLmltYWdlQ29udHJvbC53ZWJhY21JbWFnZVRpdGxlJyB8IHRyYW5zbGF0ZVwiIFsodmlzaWJsZSldPVwid2ViY2FtRGlhbG9nVmlzaWJsZVwiIFttb2RhbF09XCJ0cnVlXCIgW3N0eWxlXT1cInsnbWF4LXdpZHRoJzogJzUwdncnfVwiPlxuICA8b25zaG9yZS13ZWJjYW0gKm5nSWY9XCJ3ZWJjYW1EaWFsb2dWaXNpYmxlXCIgKHNob3QpPVwiZ2V0V2ViY2FtSW1hZ2UoJGV2ZW50KVwiIChjYW5jZWxlZCk9XCJ3ZWJjYW1EaWFsb2dWaXNpYmxlID0gZmFsc2VcIj48L29uc2hvcmUtd2ViY2FtPlxuPC9wLWRpYWxvZz5cbiJdfQ==
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { OnshoreImageError } from '../../enums/form.enums';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/common";
|
|
5
|
+
import * as i2 from "primeng/button";
|
|
6
|
+
import * as i3 from "primeng/api";
|
|
7
|
+
import * as i4 from "ngx-image-cropper";
|
|
8
|
+
import * as i5 from "@ngx-translate/core";
|
|
9
|
+
export class OnshoreImageChooserComponent {
|
|
10
|
+
constructor(cdr) {
|
|
11
|
+
this.cdr = cdr;
|
|
12
|
+
this.drag = false;
|
|
13
|
+
this.image = '';
|
|
14
|
+
this.finalImage = '';
|
|
15
|
+
this.imageErrorType = OnshoreImageError;
|
|
16
|
+
this.imageError = OnshoreImageError.none;
|
|
17
|
+
this.imageQuality = 100;
|
|
18
|
+
this.resizeToHeight = 400;
|
|
19
|
+
this.resizeToWidth = 400;
|
|
20
|
+
this.backgroundColor = 'white';
|
|
21
|
+
this.format = 'png';
|
|
22
|
+
this.alignImage = 'center';
|
|
23
|
+
this.containWithinAspectRatio = false;
|
|
24
|
+
this.aspectRatio = 1 / 1;
|
|
25
|
+
this.cropperPreviewHeight = 200;
|
|
26
|
+
this.cropperPreviewWidth = 200;
|
|
27
|
+
this.circleCropper = false;
|
|
28
|
+
this.autoSave = true;
|
|
29
|
+
this.inverseColor = false;
|
|
30
|
+
this.choosen = new EventEmitter();
|
|
31
|
+
this.canceled = new EventEmitter();
|
|
32
|
+
}
|
|
33
|
+
clear() {
|
|
34
|
+
this.image = '';
|
|
35
|
+
this.finalImage = '';
|
|
36
|
+
this.imageError = OnshoreImageError.none;
|
|
37
|
+
}
|
|
38
|
+
fileChange(event) {
|
|
39
|
+
this.imageError = OnshoreImageError.none;
|
|
40
|
+
const target = event.target;
|
|
41
|
+
const file = target?.files ? target?.files[0] : null;
|
|
42
|
+
if (file?.type != 'image/png' && file?.type != 'image/jpeg' && file?.type != 'image/webp') {
|
|
43
|
+
this.imageError = OnshoreImageError.fileType;
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
if (file?.size > 6400000) {
|
|
47
|
+
this.imageError = OnshoreImageError.size;
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
if (file) {
|
|
51
|
+
const reader = new FileReader();
|
|
52
|
+
reader.readAsDataURL(file);
|
|
53
|
+
reader.onload = () => {
|
|
54
|
+
const img = new Image();
|
|
55
|
+
img.src = window.URL.createObjectURL(file);
|
|
56
|
+
img.onload = () => {
|
|
57
|
+
const originalWidth = img.width;
|
|
58
|
+
const originalHeight = img.height;
|
|
59
|
+
if (originalWidth >= this.resizeToWidth && originalHeight >= this.resizeToHeight) {
|
|
60
|
+
this.image = reader.result?.toString() || '';
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
this.imageError = OnshoreImageError.ratio;
|
|
64
|
+
}
|
|
65
|
+
this.cdr.markForCheck();
|
|
66
|
+
};
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
imageCropped(event) {
|
|
71
|
+
// ToDo: Check needed base64 format
|
|
72
|
+
//this.finalImage = event.base64.split(',')[1];
|
|
73
|
+
this.finalImage = event.base64 || '';
|
|
74
|
+
}
|
|
75
|
+
imageCroppedReady() {
|
|
76
|
+
this.choosen.emit(this.finalImage);
|
|
77
|
+
this.clear();
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
OnshoreImageChooserComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: OnshoreImageChooserComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
81
|
+
OnshoreImageChooserComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: OnshoreImageChooserComponent, selector: "onshore-image-chooser", inputs: { imageQuality: "imageQuality", resizeToHeight: "resizeToHeight", resizeToWidth: "resizeToWidth", backgroundColor: "backgroundColor", format: "format", alignImage: "alignImage", containWithinAspectRatio: "containWithinAspectRatio", aspectRatio: "aspectRatio", cropperPreviewHeight: "cropperPreviewHeight", cropperPreviewWidth: "cropperPreviewWidth", circleCropper: "circleCropper", autoSave: "autoSave", inverseColor: "inverseColor" }, outputs: { choosen: "choosen", canceled: "canceled" }, ngImport: i0, template: "<div class=\"flex flex-column justify-content-center align-items-center w-full\">\n\n <div *ngIf=\"!image\" class=\"flex justify-content-center flex-column align-items-center w-full\">\n <!--<div style=\"max-width: 400px\" class=\"pt-4\">\n <app-info-box title=\"Hinweis\"\n [description]=\"'Die Bilddatei muss mindestens ' + resizeToWidth + 'px x ' + resizeToHeight + 'px betragen, darf maximal 6,4 MB gro\u00DF sein und muss im Dateiformat JPG oder PNG vorliegen.'\"\n icon=\"fa-info-circle\"\n backgroud=\"navy\"\n iconPosition=\"bottom\"\n [descriptionWrap]=\"true\">\n </app-info-box>\n </div>-->\n\n <div\n class=\"onshore-image-upload flex flex-column justify-content-between align-items-center rounded-lg p-4 relative m-3\"\n [class.onshore-border-gray-3]=\"drag\"\n [class.onshore-border-danger]=\"imageError != imageErrorType.none\">\n <i class=\"fa fa-image fa-5x onshore-color-gray-4\"></i>\n <small class=\"onshore-color-gray-4 mb-2\">{{'form.imageControl.dropImageLabel' | translate}}</small>\n\n <button pButton\n type=\"button\"\n icon=\"fa fa-file\"\n [label]=\"'form.imageControl.imageChooserFileButton' | translate\"\n class=\"onshore-button-primary mr-2\">\n </button>\n\n <input\n (change)=\"fileChange($event)\"\n *ngIf=\"!image\"\n accept=\"image/png, image/jpeg, image/webp\"\n class=\"onshore-image-input absolute w-full h-full\"\n type=\"file\"\n (dragenter)=\"drag = true\"\n (dragleave)=\"drag = false\"\n (dragend)=\"drag = false\"\n />\n </div>\n </div>\n\n <div class=\"flex flex-column relative align-items-center w-full\" *ngIf=\"image\">\n <!--<div style=\"max-width: 400px\" class=\"pt-4\">\n <app-info-box title=\"Hinweis\"\n description=\"W\u00E4hle einen Bereich der vom Bild verwendet werden soll.\"\n icon=\"fa-info-circle\"\n backgroud=\"navy\"\n iconPosition=\"bottom\"\n [descriptionWrap]=\"true\">\n </app-info-box>\n </div>-->\n\n <image-cropper\n class=\"onshore-image-cropper m-3\"\n [class.onshore-cropper-circle]=\"circleCropper\"\n (imageCropped)=\"imageCropped($event)\"\n [imageBase64]=\"image\"\n [imageQuality]=\"imageQuality\"\n [alignImage]=\"alignImage\"\n [backgroundColor]=\"backgroundColor\"\n [containWithinAspectRatio]=\"containWithinAspectRatio\"\n [format]=\"format\"\n [aspectRatio]=\"aspectRatio\"\n [resizeToHeight]=\"resizeToHeight\"\n [resizeToWidth]=\"resizeToWidth\">\n </image-cropper>\n </div>\n\n <div *ngIf=\"imageError\"class=\"pb-2 text-wrap text-center onshore-color-danger\">\n <small *ngIf=\"imageError == imageErrorType.ratio\">{{'form.imageControl.imageErrorRatio' | translate: {resizeToWidth, resizeToHeight} }}</small>\n <small *ngIf=\"imageError == imageErrorType.fileType\">{{'form.imageControl.imageErrorFileType' | translate}}</small>\n <small *ngIf=\"imageError == imageErrorType.size\">{{'form.imageControl.imageErrorSize' | translate}}</small>\n </div>\n</div>\n\n\n<p-footer>\n <div class=\"flex justify-content-end align-items-center mt-2\">\n <button pButton\n type=\"button\"\n icon=\"fa fa-times\"\n [label]=\"'form.imageControl.imageChooserCancelButton' | translate\"\n class=\"onshore-button-light mr-2\"\n (click)=\"clear(); canceled.emit(true)\">\n </button>\n\n <button pButton\n type=\"button\"\n [label]=\"'form.imageControl.imageChooserSelectButton' | translate\"\n class=\"onshore-button-light\"\n icon=\"fa fa-check\"\n (click)=\"imageCroppedReady()\">\n </button>\n </div>\n</p-footer>\n\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "component", type: i3.Footer, selector: "p-footer" }, { kind: "component", type: i4.ImageCropperComponent, selector: "image-cropper", inputs: ["imageChangedEvent", "imageURL", "imageBase64", "imageFile", "format", "transform", "maintainAspectRatio", "aspectRatio", "resizeToWidth", "resizeToHeight", "cropperMinWidth", "cropperMinHeight", "cropperMaxHeight", "cropperMaxWidth", "cropperStaticWidth", "cropperStaticHeight", "canvasRotation", "initialStepSize", "roundCropper", "onlyScaleDown", "imageQuality", "autoCrop", "backgroundColor", "containWithinAspectRatio", "hideResizeSquares", "allowMoveImage", "cropper", "alignImage", "disabled"], outputs: ["imageCropped", "startCropImage", "imageLoaded", "cropperReady", "loadImageFailed", "transformChange"] }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
82
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: OnshoreImageChooserComponent, decorators: [{
|
|
83
|
+
type: Component,
|
|
84
|
+
args: [{ selector: 'onshore-image-chooser', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex flex-column justify-content-center align-items-center w-full\">\n\n <div *ngIf=\"!image\" class=\"flex justify-content-center flex-column align-items-center w-full\">\n <!--<div style=\"max-width: 400px\" class=\"pt-4\">\n <app-info-box title=\"Hinweis\"\n [description]=\"'Die Bilddatei muss mindestens ' + resizeToWidth + 'px x ' + resizeToHeight + 'px betragen, darf maximal 6,4 MB gro\u00DF sein und muss im Dateiformat JPG oder PNG vorliegen.'\"\n icon=\"fa-info-circle\"\n backgroud=\"navy\"\n iconPosition=\"bottom\"\n [descriptionWrap]=\"true\">\n </app-info-box>\n </div>-->\n\n <div\n class=\"onshore-image-upload flex flex-column justify-content-between align-items-center rounded-lg p-4 relative m-3\"\n [class.onshore-border-gray-3]=\"drag\"\n [class.onshore-border-danger]=\"imageError != imageErrorType.none\">\n <i class=\"fa fa-image fa-5x onshore-color-gray-4\"></i>\n <small class=\"onshore-color-gray-4 mb-2\">{{'form.imageControl.dropImageLabel' | translate}}</small>\n\n <button pButton\n type=\"button\"\n icon=\"fa fa-file\"\n [label]=\"'form.imageControl.imageChooserFileButton' | translate\"\n class=\"onshore-button-primary mr-2\">\n </button>\n\n <input\n (change)=\"fileChange($event)\"\n *ngIf=\"!image\"\n accept=\"image/png, image/jpeg, image/webp\"\n class=\"onshore-image-input absolute w-full h-full\"\n type=\"file\"\n (dragenter)=\"drag = true\"\n (dragleave)=\"drag = false\"\n (dragend)=\"drag = false\"\n />\n </div>\n </div>\n\n <div class=\"flex flex-column relative align-items-center w-full\" *ngIf=\"image\">\n <!--<div style=\"max-width: 400px\" class=\"pt-4\">\n <app-info-box title=\"Hinweis\"\n description=\"W\u00E4hle einen Bereich der vom Bild verwendet werden soll.\"\n icon=\"fa-info-circle\"\n backgroud=\"navy\"\n iconPosition=\"bottom\"\n [descriptionWrap]=\"true\">\n </app-info-box>\n </div>-->\n\n <image-cropper\n class=\"onshore-image-cropper m-3\"\n [class.onshore-cropper-circle]=\"circleCropper\"\n (imageCropped)=\"imageCropped($event)\"\n [imageBase64]=\"image\"\n [imageQuality]=\"imageQuality\"\n [alignImage]=\"alignImage\"\n [backgroundColor]=\"backgroundColor\"\n [containWithinAspectRatio]=\"containWithinAspectRatio\"\n [format]=\"format\"\n [aspectRatio]=\"aspectRatio\"\n [resizeToHeight]=\"resizeToHeight\"\n [resizeToWidth]=\"resizeToWidth\">\n </image-cropper>\n </div>\n\n <div *ngIf=\"imageError\"class=\"pb-2 text-wrap text-center onshore-color-danger\">\n <small *ngIf=\"imageError == imageErrorType.ratio\">{{'form.imageControl.imageErrorRatio' | translate: {resizeToWidth, resizeToHeight} }}</small>\n <small *ngIf=\"imageError == imageErrorType.fileType\">{{'form.imageControl.imageErrorFileType' | translate}}</small>\n <small *ngIf=\"imageError == imageErrorType.size\">{{'form.imageControl.imageErrorSize' | translate}}</small>\n </div>\n</div>\n\n\n<p-footer>\n <div class=\"flex justify-content-end align-items-center mt-2\">\n <button pButton\n type=\"button\"\n icon=\"fa fa-times\"\n [label]=\"'form.imageControl.imageChooserCancelButton' | translate\"\n class=\"onshore-button-light mr-2\"\n (click)=\"clear(); canceled.emit(true)\">\n </button>\n\n <button pButton\n type=\"button\"\n [label]=\"'form.imageControl.imageChooserSelectButton' | translate\"\n class=\"onshore-button-light\"\n icon=\"fa fa-check\"\n (click)=\"imageCroppedReady()\">\n </button>\n </div>\n</p-footer>\n\n" }]
|
|
85
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { imageQuality: [{
|
|
86
|
+
type: Input
|
|
87
|
+
}], resizeToHeight: [{
|
|
88
|
+
type: Input
|
|
89
|
+
}], resizeToWidth: [{
|
|
90
|
+
type: Input
|
|
91
|
+
}], backgroundColor: [{
|
|
92
|
+
type: Input
|
|
93
|
+
}], format: [{
|
|
94
|
+
type: Input
|
|
95
|
+
}], alignImage: [{
|
|
96
|
+
type: Input
|
|
97
|
+
}], containWithinAspectRatio: [{
|
|
98
|
+
type: Input
|
|
99
|
+
}], aspectRatio: [{
|
|
100
|
+
type: Input
|
|
101
|
+
}], cropperPreviewHeight: [{
|
|
102
|
+
type: Input
|
|
103
|
+
}], cropperPreviewWidth: [{
|
|
104
|
+
type: Input
|
|
105
|
+
}], circleCropper: [{
|
|
106
|
+
type: Input
|
|
107
|
+
}], autoSave: [{
|
|
108
|
+
type: Input
|
|
109
|
+
}], inverseColor: [{
|
|
110
|
+
type: Input
|
|
111
|
+
}], choosen: [{
|
|
112
|
+
type: Output
|
|
113
|
+
}], canceled: [{
|
|
114
|
+
type: Output
|
|
115
|
+
}] } });
|
|
116
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtY2hvb3Nlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnNob3JlLWZvcm1zL3NyYy9saWIvY29tcG9uZW50cy9pbWFnZS1jaG9vc2VyL2ltYWdlLWNob29zZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb25zaG9yZS1mb3Jtcy9zcmMvbGliL2NvbXBvbmVudHMvaW1hZ2UtY2hvb3Nlci9pbWFnZS1jaG9vc2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNQLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7O0FBTzNELE1BQU0sT0FBTyw0QkFBNEI7SUFxRnZDLFlBQW9CLEdBQXNCO1FBQXRCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBbkYxQyxTQUFJLEdBQUcsS0FBSyxDQUFDO1FBQ2IsVUFBSyxHQUFHLEVBQUUsQ0FBQztRQUNYLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFDaEIsbUJBQWMsR0FBRyxpQkFBaUIsQ0FBQztRQUNuQyxlQUFVLEdBQXNCLGlCQUFpQixDQUFDLElBQUksQ0FBQztRQUV2QyxpQkFBWSxHQUFHLEdBQUcsQ0FBQztRQUNuQixtQkFBYyxHQUFHLEdBQUcsQ0FBQztRQUNyQixrQkFBYSxHQUFHLEdBQUcsQ0FBQztRQUNwQixvQkFBZSxHQUFHLE9BQU8sQ0FBQztRQUMxQixXQUFNLEdBQTRDLEtBQUssQ0FBQztRQUN4RCxlQUFVLEdBQXNCLFFBQVEsQ0FBQztRQUN6Qyw2QkFBd0IsR0FBRyxLQUFLLENBQUM7UUFDakMsZ0JBQVcsR0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzVCLHlCQUFvQixHQUFH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QUFTOytCQUNFLHVCQUF1QixtQkFFaEIsdUJBQXVCLENBQUMsTUFBTTt3R0FVL0IsWUFBWTtzQkFBM0IsS0FBSztnQkFDVSxjQUFjO3NCQUE3QixLQUFLO2dCQUNVLGFBQWE7c0JBQTVCLEtBQUs7Z0JBQ1UsZUFBZTtzQkFBOUIsS0FBSztnQkFDVSxNQUFNO3NCQUFyQixLQUFLO2dCQUNVLFVBQVU7c0JBQXpCLEtBQUs7Z0JBQ1Usd0JBQXdCO3NCQUF2QyxLQUFLO2dCQUNVLFdBQVc7c0JBQTFCLEtBQUs7Z0JBQ1Usb0JBQW9CO3NCQUFuQyxLQUFLO2dCQUNVLG1CQUFtQjtzQkFBbEMsS0FBSztnQkFDVSxhQUFhO3NCQUE1QixLQUFLO2dCQUNVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBQ1UsWUFBWTtzQkFBM0IsS0FBSztnQkFFSSxPQUFPO3NCQUFoQixNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT3V0cHV0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW1hZ2VDcm9wcGVkRXZlbnQgfSBmcm9tICduZ3gtaW1hZ2UtY3JvcHBlcic7XG5pbXBvcnQgeyBPbnNob3JlSW1hZ2VFcnJvciB9IGZyb20gJy4uLy4uL2VudW1zL2Zvcm0uZW51bXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvbnNob3JlLWltYWdlLWNob29zZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vaW1hZ2UtY2hvb3Nlci5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBPbnNob3JlSW1hZ2VDaG9vc2VyQ29tcG9uZW50IHtcblxuICBkcmFnID0gZmFsc2U7XG4gIGltYWdlID0gJyc7XG4gIGZpbmFsSW1hZ2UgPSAnJztcbiAgaW1hZ2VFcnJvclR5cGUgPSBPbnNob3JlSW1hZ2VFcnJvcjtcbiAgaW1hZ2VFcnJvcjogT25zaG9yZUltYWdlRXJyb3IgPSBPbnNob3JlSW1hZ2VFcnJvci5ub25lO1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBpbWFnZVF1YWxpdHkgPSAxMDA7XG4gIEBJbnB1dCgpIHB1YmxpYyByZXNpemVUb0hlaWdodCA9IDQwMDtcbiAgQElucHV0KCkgcHVibGljIHJlc2l6ZVRvV2lkdGggPSA0MDA7XG4gIEBJbnB1dCgpIHB1YmxpYyBiYWNrZ3JvdW5kQ29sb3IgPSAnd2hpdGUnO1xuICBASW5wdXQoKSBwdWJsaWMgZm9ybWF0OiAncG5nJyB8ICdqcGVnJyB8ICdibXAnIHwgJ3dlYnAnIHwgJ2ljbycgPSAncG5nJztcbiAgQElucHV0KCkgcHVibGljIGFsaWduSW1hZ2U6ICdsZWZ0JyB8ICdjZW50ZXInID0gJ2NlbnRlcic7XG4gIEBJbnB1dCgpIHB1YmxpYyBjb250YWluV2l0aGluQXNwZWN0UmF0aW8gPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIGFzcGVjdFJhdGlvOiBudW1iZXIgPSAxIC8gMTtcbiAgQElucHV0KCkgcHVibGljIGNyb3BwZXJQcmV2aWV3SGVpZ2h0ID0gMjAwO1xuICBASW5wdXQoKSBwdWJsaWMgY3JvcHBlclByZXZpZXdXaWR0aCA9IDIwMDtcbiAgQElucHV0KCkgcHVibGljIGNpcmNsZUNyb3BwZXIgPSBmYWxzZTtcbiAgQElucHV0KCkgcHVibGljIGF1dG9TYXZlID0gdHJ1ZTtcbiAgQElucHV0KCkgcHVibGljIGludmVyc2VDb2xvcjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSBjaG9vc2VuOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGNhbmNlbGVkOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgY2xlYXIoKSB7XG4gICAgdGhpcy5pbWFnZSA9ICcnO1xuICAgIHRoaXMuZmluYWxJbWFnZSA9ICcnO1xuICAgIHRoaXMuaW1hZ2VFcnJvciA9IE9uc2hvcmVJbWFnZUVycm9yLm5vbmU7XG4gIH1cblxuICBwdWJsaWMgZmlsZUNoYW5nZShldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLmltYWdlRXJyb3IgPSBPbnNob3JlSW1hZ2VFcnJvci5ub25lO1xuICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgIGNvbnN0IGZpbGU6IEZpbGUgfCB1bmRlZmluZWQgfCBudWxsID0gdGFyZ2V0Py5maWxlcyA/IHRhcmdldD8uZmlsZXNbMF0gOiBudWxsO1xuXG4gICAgaWYgKGZpbGU/LnR5cGUgIT0gJ2ltYWdlL3BuZycgJiYgZmlsZT8udHlwZSAhPSAnaW1hZ2UvanBlZycgJiYgZmlsZT8udHlwZSAhPSAnaW1hZ2Uvd2VicCcpIHtcbiAgICAgIHRoaXMuaW1hZ2VFcnJvciA9IE9uc2hvcmVJbWFnZUVycm9yLmZpbGVUeXBlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChmaWxlPy5zaXplID4gNjQwMDAwMCkge1xuICAgICAgdGhpcy5pbWFnZUVycm9yID0gT25zaG9yZUltYWdlRXJyb3Iuc2l6ZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZmlsZSkge1xuICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xuICAgICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHtcblxuICAgICAgICBjb25zdCBpbWcgPSBuZXcgSW1hZ2UoKTtcbiAgICAgICAgaW1nLnNyYyA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGZpbGUpO1xuICAgICAgICBpbWcub25sb2FkID0gKCkgPT4ge1xuXG4gICAgICAgICAgY29uc3Qgb3JpZ2luYWxXaWR0aCA9IGltZy53aWR0aDtcbiAgICAgICAgICBjb25zdCBvcmlnaW5hbEhlaWdodCA9IGltZy5oZWlnaHQ7XG5cbiAgICAgICAgICBpZiAob3JpZ2luYWxXaWR0aCA+PSB0aGlzLnJlc2l6ZVRvV2lkdGggJiYgb3JpZ2luYWxIZWlnaHQgPj0gdGhpcy5yZXNpemVUb0hlaWdodCkge1xuICAgICAgICAgICAgdGhpcy5pbWFnZSA9IHJlYWRlci5yZXN1bHQ/LnRvU3RyaW5nKCkgfHwgJyc7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaW1hZ2VFcnJvciA9IE9uc2hvcmVJbWFnZUVycm9yLnJhdGlvO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcblxuICAgICAgICB9XG5cbiAgICAgIH07XG4gICAgfVxuXG5cblxuICB9XG5cbiAgcHVibGljIGltYWdlQ3JvcHBlZChldmVudDogSW1hZ2VDcm9wcGVkRXZlbnQpOiB2b2lkIHtcbiAgICAvLyBUb0RvOiBDaGVjayBuZWVkZWQgYmFzZTY0IGZvcm1hdFxuICAgIC8vdGhpcy5maW5hbEltYWdlID0gZXZlbnQuYmFzZTY0LnNwbGl0KCcsJylbMV07XG4gICAgdGhpcy5maW5hbEltYWdlID0gZXZlbnQuYmFzZTY0IHx8ICcnO1xuICB9XG5cbiAgcHVibGljIGltYWdlQ3JvcHBlZFJlYWR5KCk6IHZvaWQge1xuICAgIHRoaXMuY2hvb3Nlbi5lbWl0KHRoaXMuZmluYWxJbWFnZSk7XG4gICAgdGhpcy5jbGVhcigpO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sdW1uIGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIHctZnVsbFwiPlxuXG4gIDxkaXYgKm5nSWY9XCIhaW1hZ2VcIiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBmbGV4LWNvbHVtbiBhbGlnbi1pdGVtcy1jZW50ZXIgdy1mdWxsXCI+XG4gICAgPCEtLTxkaXYgc3R5bGU9XCJtYXgtd2lkdGg6IDQwMHB4XCIgY2xhc3M9XCJwdC00XCI+XG4gICAgICA8YXBwLWluZm8tYm94IHRpdGxlPVwiSGlud2Vpc1wiXG4gICAgICAgICAgICAgICAgICAgIFtkZXNjcmlwdGlvbl09XCInRGllIEJpbGRkYXRlaSBtdXNzIG1pbmRlc3RlbnMgJyArIHJlc2l6ZVRvV2lkdGggKyAncHggeCAnICsgcmVzaXplVG9IZWlnaHQgKyAncHggYmV0cmFnZW4sIGRhcmYgbWF4aW1hbCA2LDQgTUIgZ3Jvw58gc2VpbiB1bmQgbXVzcyBpbSBEYXRlaWZvcm1hdCBKUEcgb2RlciBQTkcgdm9ybGllZ2VuLidcIlxuICAgICAgICAgICAgICAgICAgICBpY29uPVwiZmEtaW5mby1jaXJjbGVcIlxuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdWQ9XCJuYXZ5XCJcbiAgICAgICAgICAgICAgICAgICAgaWNvblBvc2l0aW9uPVwiYm90dG9tXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rlc2NyaXB0aW9uV3JhcF09XCJ0cnVlXCI+XG4gICAgICA8L2FwcC1pbmZvLWJveD5cbiAgICA8L2Rpdj4tLT5cblxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwib25zaG9yZS1pbWFnZS11cGxvYWQgZmxleCBmbGV4LWNvbHVtbiBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgcm91bmRlZC1sZyBwLTQgcmVsYXRpdmUgbS0zXCJcbiAgICAgIFtjbGFzcy5vbnNob3JlLWJvcmRlci1ncmF5LTNdPVwiZHJhZ1wiXG4gICAgICBbY2xhc3Mub25zaG9yZS1ib3JkZXItZGFuZ2VyXT1cImltYWdlRXJyb3IgIT0gaW1hZ2VFcnJvclR5cGUubm9uZVwiPlxuICAgICAgPGkgY2xhc3M9XCJmYSBmYS1pbWFnZSBmYS01eCBvbnNob3JlLWNvbG9yLWdyYXktNFwiPjwvaT5cbiAgICAgIDxzbWFsbCBjbGFzcz1cIm9uc2hvcmUtY29sb3ItZ3JheS00IG1iLTJcIj57eydmb3JtLmltYWdlQ29udHJvbC5kcm9wSW1hZ2VMYWJlbCcgfCB0cmFuc2xhdGV9fTwvc21hbGw+XG5cbiAgICAgIDxidXR0b24gcEJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgaWNvbj1cImZhIGZhLWZpbGVcIlxuICAgICAgICAgICAgICBbbGFiZWxdPVwiJ2Zvcm0uaW1hZ2VDb250cm9sLmltYWdlQ2hvb3NlckZpbGVCdXR0b24nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJvbnNob3JlLWJ1dHRvbi1wcmltYXJ5IG1yLTJcIj5cbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8aW5wdXRcbiAgICAgICAgKGNoYW5nZSk9XCJmaWxlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAqbmdJZj1cIiFpbWFnZVwiXG4gICAgICAgIGFjY2VwdD1cImltYWdlL3BuZywgaW1hZ2UvanBlZywgaW1hZ2Uvd2VicFwiXG4gICAgICAgIGNsYXNzPVwib25zaG9yZS1pbWFnZS1pbnB1dCBhYnNvbHV0ZSB3LWZ1bGwgaC1mdWxsXCJcbiAgICAgICAgdHlwZT1cImZpbGVcIlxuICAgICAgICAoZHJhZ2VudGVyKT1cImRyYWcgPSB0cnVlXCJcbiAgICAgICAgKGRyYWdsZWF2ZSk9XCJkcmFnID0gZmFsc2VcIlxuICAgICAgICAoZHJhZ2VuZCk9XCJkcmFnID0gZmFsc2VcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1jb2x1bW4gcmVsYXRpdmUgYWxpZ24taXRlbXMtY2VudGVyIHctZnVsbFwiICpuZ0lmPVwiaW1hZ2VcIj5cbiAgICA8IS0tPGRpdiBzdHlsZT1cIm1heC13aWR0aDogNDAwcHhcIiBjbGFzcz1cInB0LTRcIj5cbiAgICAgIDxhcHAtaW5mby1ib3ggdGl0bGU9XCJIaW53ZWlzXCJcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb249XCJXw6RobGUgZWluZW4gQmVyZWljaCBkZXIgdm9tIEJpbGQgdmVyd2VuZGV0IHdlcmRlbiBzb2xsLlwiXG4gICAgICAgICAgICAgICAgICAgIGljb249XCJmYS1pbmZvLWNpcmNsZVwiXG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91ZD1cIm5hdnlcIlxuICAgICAgICAgICAgICAgICAgICBpY29uUG9zaXRpb249XCJib3R0b21cIlxuICAgICAgICAgICAgICAgICAgICBbZGVzY3JpcHRpb25XcmFwXT1cInRydWVcIj5cbiAgICAgIDwvYXBwLWluZm8tYm94PlxuICAgIDwvZGl2Pi0tPlxuXG4gICAgPGltYWdlLWNyb3BwZXJcbiAgICAgIGNsYXNzPVwib25zaG9yZS1pbWFnZS1jcm9wcGVyIG0tM1wiXG4gICAgICBbY2xhc3Mub25zaG9yZS1jcm9wcGVyLWNpcmNsZV09XCJjaXJjbGVDcm9wcGVyXCJcbiAgICAgIChpbWFnZUNyb3BwZWQpPVwiaW1hZ2VDcm9wcGVkKCRldmVudClcIlxuICAgICAgW2ltYWdlQmFzZTY0XT1cImltYWdlXCJcbiAgICAgIFtpbWFnZVF1YWxpdHldPVwiaW1hZ2VRdWFsaXR5XCJcbiAgICAgIFthbGlnbkltYWdlXT1cImFsaWduSW1hZ2VcIlxuICAgICAgW2JhY2tncm91bmRDb2xvcl09XCJiYWNrZ3JvdW5kQ29sb3JcIlxuICAgICAgW2NvbnRhaW5XaXRoaW5Bc3BlY3RSYXRpb109XCJjb250YWluV2l0aGluQXNwZWN0UmF0aW9cIlxuICAgICAgW2Zvcm1hdF09XCJmb3JtYXRcIlxuICAgICAgW2FzcGVjdFJhdGlvXT1cImFzcGVjdFJhdGlvXCJcbiAgICAgIFtyZXNpemVUb0hlaWdodF09XCJyZXNpemVUb0hlaWdodFwiXG4gICAgICBbcmVzaXplVG9XaWR0aF09XCJyZXNpemVUb1dpZHRoXCI+XG4gICAgPC9pbWFnZS1jcm9wcGVyPlxuICA8L2Rpdj5cblxuICA8ZGl2ICpuZ0lmPVwiaW1hZ2VFcnJvclwiY2xhc3M9XCJwYi0yIHRleHQtd3JhcCB0ZXh0LWNlbnRlciBvbnNob3JlLWNvbG9yLWRhbmdlclwiPlxuICAgIDxzbWFsbCAqbmdJZj1cImltYWdlRXJyb3IgPT0gaW1hZ2VFcnJvclR5cGUucmF0aW9cIj57eydmb3JtLmltYWdlQ29udHJvbC5pbWFnZUVycm9yUmF0aW8nIHwgdHJhbnNsYXRlOiB7cmVzaXplVG9XaWR0aCwgcmVzaXplVG9IZWlnaHR9IH19PC9zbWFsbD5cbiAgICA8c21hbGwgKm5nSWY9XCJpbWFnZUVycm9yID09IGltYWdlRXJyb3JUeXBlLmZpbGVUeXBlXCI+e3snZm9ybS5pbWFnZUNvbnRyb2wuaW1hZ2VFcnJvckZpbGVUeXBlJyB8IHRyYW5zbGF0ZX19PC9zbWFsbD5cbiAgICA8c21hbGwgKm5nSWY9XCJpbWFnZUVycm9yID09IGltYWdlRXJyb3JUeXBlLnNpemVcIj57eydmb3JtLmltYWdlQ29udHJvbC5pbWFnZUVycm9yU2l6ZScgfCB0cmFuc2xhdGV9fTwvc21hbGw+XG4gIDwvZGl2PlxuPC9kaXY+XG5cblxuPHAtZm9vdGVyPlxuICA8ZGl2IGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kIGFsaWduLWl0ZW1zLWNlbnRlciBtdC0yXCI+XG4gICAgPGJ1dHRvbiBwQnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGljb249XCJmYSBmYS10aW1lc1wiXG4gICAgICAgICAgICBbbGFiZWxdPVwiJ2Zvcm0uaW1hZ2VDb250cm9sLmltYWdlQ2hvb3NlckNhbmNlbEJ1dHRvbicgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgY2xhc3M9XCJvbnNob3JlLWJ1dHRvbi1saWdodCBtci0yXCJcbiAgICAgICAgICAgIChjbGljayk9XCJjbGVhcigpOyBjYW5jZWxlZC5lbWl0KHRydWUpXCI+XG4gICAgPC9idXR0b24+XG5cbiAgICA8YnV0dG9uIHBCdXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgW2xhYmVsXT1cIidmb3JtLmltYWdlQ29udHJvbC5pbWFnZUNob29zZXJTZWxlY3RCdXR0b24nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgIGNsYXNzPVwib25zaG9yZS1idXR0b24tbGlnaHRcIlxuICAgICAgICAgICAgaWNvbj1cImZhIGZhLWNoZWNrXCJcbiAgICAgICAgICAgIChjbGljayk9XCJpbWFnZUNyb3BwZWRSZWFkeSgpXCI+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9wLWZvb3Rlcj5cblxuIl19
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/common";
|
|
4
|
+
export class OnshoreImagePlaceholderComponent {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.placeholder = '';
|
|
7
|
+
this.image = '';
|
|
8
|
+
this.imageStyle = '';
|
|
9
|
+
this.placeholderStyle = '';
|
|
10
|
+
this.showLoader = true;
|
|
11
|
+
this.imageLoaded = false;
|
|
12
|
+
}
|
|
13
|
+
loadReady() {
|
|
14
|
+
this.imageLoaded = true;
|
|
15
|
+
this.showLoader = false;
|
|
16
|
+
}
|
|
17
|
+
abort() {
|
|
18
|
+
this.imageLoaded = false;
|
|
19
|
+
this.showLoader = false;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
OnshoreImagePlaceholderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: OnshoreImagePlaceholderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
23
|
+
OnshoreImagePlaceholderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: OnshoreImagePlaceholderComponent, selector: "onshore-image-placeholder", inputs: { placeholder: "placeholder", image: "image", imageStyle: "imageStyle", placeholderStyle: "placeholderStyle", showLoader: "showLoader" }, ngImport: i0, template: "<div class=\"w-full\" [hidden]=\"!imageLoaded || !image\">\n <img [style]=\"imageStyle\" [src]=\"image\" (load)=\"loadReady()\" (abort)=\"abort()\" />\n</div>\n\n<div *ngIf=\"!imageLoaded || !image\" class=\"flex justify-content-center align-items-center p-2 onshore-background-color-gray-2\" [style]=\"placeholderStyle\">\n <i [class]=\"'text-muted fa ' + placeholder\" [class.opacity-20]=\"showLoader && image\"></i>\n <i *ngIf=\"showLoader && image\" class=\"fas fa-circle-notch fa-spin fa-2x absolute\"></i>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
24
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: OnshoreImagePlaceholderComponent, decorators: [{
|
|
25
|
+
type: Component,
|
|
26
|
+
args: [{ selector: 'onshore-image-placeholder', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"w-full\" [hidden]=\"!imageLoaded || !image\">\n <img [style]=\"imageStyle\" [src]=\"image\" (load)=\"loadReady()\" (abort)=\"abort()\" />\n</div>\n\n<div *ngIf=\"!imageLoaded || !image\" class=\"flex justify-content-center align-items-center p-2 onshore-background-color-gray-2\" [style]=\"placeholderStyle\">\n <i [class]=\"'text-muted fa ' + placeholder\" [class.opacity-20]=\"showLoader && image\"></i>\n <i *ngIf=\"showLoader && image\" class=\"fas fa-circle-notch fa-spin fa-2x absolute\"></i>\n</div>\n" }]
|
|
27
|
+
}], ctorParameters: function () { return []; }, propDecorators: { placeholder: [{
|
|
28
|
+
type: Input
|
|
29
|
+
}], image: [{
|
|
30
|
+
type: Input
|
|
31
|
+
}], imageStyle: [{
|
|
32
|
+
type: Input
|
|
33
|
+
}], placeholderStyle: [{
|
|
34
|
+
type: Input
|
|
35
|
+
}], showLoader: [{
|
|
36
|
+
type: Input
|
|
37
|
+
}] } });
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtcGxhY2Vob2xkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb25zaG9yZS1mb3Jtcy9zcmMvbGliL2NvbXBvbmVudHMvaW1hZ2UtcGxhY2Vob2xkZXIvaW1hZ2UtcGxhY2Vob2xkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb25zaG9yZS1mb3Jtcy9zcmMvbGliL2NvbXBvbmVudHMvaW1hZ2UtcGxhY2Vob2xkZXIvaW1hZ2UtcGxhY2Vob2xkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQU8xRSxNQUFNLE9BQU8sZ0NBQWdDO0lBb0IzQztRQWxCZ0IsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFDekIsVUFBSyxHQUFXLEVBQUUsQ0FBQztRQUNuQixlQUFVLEdBQVcsRUFBRSxDQUFDO1FBQ3hCLHFCQUFnQixHQUFXLEVBQUUsQ0FBQztRQUM5QixlQUFVLEdBQVksSUFBSSxDQUFDO1FBRTNDLGdCQUFXLEdBQUcsS0FBSyxDQUFDO0lBWUwsQ0FBQztJQVZoQixTQUFTO1FBQ1AsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDeEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFDMUIsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztRQUN6QixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUMxQixDQUFDOzs2SEFsQlUsZ0NBQWdDO2lIQUFoQyxnQ0FBZ0MsbU5DUDdDLDhnQkFRQTsyRkREYSxnQ0FBZ0M7a0JBTDVDLFNBQVM7K0JBQ0UsMkJBQTJCLG1CQUVwQix1QkFBdUIsQ0FBQyxNQUFNOzBFQUkvQixXQUFXO3NCQUExQixLQUFLO2dCQUNVLEtBQUs7c0JBQXBCLEtBQUs7Z0JBQ1UsVUFBVTtzQkFBekIsS0FBSztnQkFDVSxnQkFBZ0I7c0JBQS9CLEtBQUs7Z0JBQ1UsVUFBVTtzQkFBekIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ29uc2hvcmUtaW1hZ2UtcGxhY2Vob2xkZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vaW1hZ2UtcGxhY2Vob2xkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgT25zaG9yZUltYWdlUGxhY2Vob2xkZXJDb21wb25lbnQge1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBwbGFjZWhvbGRlcjogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHB1YmxpYyBpbWFnZTogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHB1YmxpYyBpbWFnZVN0eWxlOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgcHVibGljIHBsYWNlaG9sZGVyU3R5bGU6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBwdWJsaWMgc2hvd0xvYWRlcjogYm9vbGVhbiA9IHRydWU7XG5cbiAgaW1hZ2VMb2FkZWQgPSBmYWxzZTtcblxuICBsb2FkUmVhZHkoKSB7XG4gICAgdGhpcy5pbWFnZUxvYWRlZCA9IHRydWU7XG4gICAgdGhpcy5zaG93TG9hZGVyID0gZmFsc2U7XG4gIH1cblxuICBhYm9ydCgpIHtcbiAgICB0aGlzLmltYWdlTG9hZGVkID0gZmFsc2U7XG4gICAgdGhpcy5zaG93TG9hZGVyID0gZmFsc2U7XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJ3LWZ1bGxcIiBbaGlkZGVuXT1cIiFpbWFnZUxvYWRlZCB8fCAhaW1hZ2VcIj5cbiAgPGltZyBbc3R5bGVdPVwiaW1hZ2VTdHlsZVwiIFtzcmNdPVwiaW1hZ2VcIiAobG9hZCk9XCJsb2FkUmVhZHkoKVwiIChhYm9ydCk9XCJhYm9ydCgpXCIgLz5cbjwvZGl2PlxuXG48ZGl2ICpuZ0lmPVwiIWltYWdlTG9hZGVkIHx8ICFpbWFnZVwiIGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBwLTIgb25zaG9yZS1iYWNrZ3JvdW5kLWNvbG9yLWdyYXktMlwiIFtzdHlsZV09XCJwbGFjZWhvbGRlclN0eWxlXCI+XG4gIDxpIFtjbGFzc109XCIndGV4dC1tdXRlZCBmYSAnICsgcGxhY2Vob2xkZXJcIiBbY2xhc3Mub3BhY2l0eS0yMF09XCJzaG93TG9hZGVyICYmIGltYWdlXCI+PC9pPlxuICA8aSAqbmdJZj1cInNob3dMb2FkZXIgJiYgaW1hZ2VcIiBjbGFzcz1cImZhcyBmYS1jaXJjbGUtbm90Y2ggZmEtc3BpbiBmYS0yeCBhYnNvbHV0ZVwiPjwvaT5cbjwvZGl2PlxuIl19
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { Subject } from 'rxjs';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/common";
|
|
5
|
+
import * as i2 from "primeng/button";
|
|
6
|
+
import * as i3 from "primeng/api";
|
|
7
|
+
import * as i4 from "ngx-image-cropper";
|
|
8
|
+
import * as i5 from "ngx-webcam";
|
|
9
|
+
import * as i6 from "@ngx-translate/core";
|
|
10
|
+
export class WebcamComponent {
|
|
11
|
+
constructor(cdr) {
|
|
12
|
+
this.cdr = cdr;
|
|
13
|
+
this.inverseColor = false;
|
|
14
|
+
this.imageQuality = 100;
|
|
15
|
+
this.resizeToHeight = 400;
|
|
16
|
+
this.resizeToWidth = 400;
|
|
17
|
+
this.backgroundColor = 'white';
|
|
18
|
+
this.format = 'png';
|
|
19
|
+
this.alignImage = 'center';
|
|
20
|
+
this.containWithinAspectRatio = false;
|
|
21
|
+
this.aspectRatio = 1 / 1;
|
|
22
|
+
this.cropperPreviewHeight = 200;
|
|
23
|
+
this.cropperPreviewWidth = 200;
|
|
24
|
+
this.circleCropper = false;
|
|
25
|
+
this.shot = new EventEmitter();
|
|
26
|
+
this.canceled = new EventEmitter();
|
|
27
|
+
this.image = '';
|
|
28
|
+
this.finalImage = '';
|
|
29
|
+
this.trigger = new Subject();
|
|
30
|
+
}
|
|
31
|
+
camImageShot(webcamImage) {
|
|
32
|
+
this.image = webcamImage.imageAsDataUrl;
|
|
33
|
+
this.cdr.markForCheck();
|
|
34
|
+
}
|
|
35
|
+
imageCropped(event) {
|
|
36
|
+
// ToDo: Check needed base64 format
|
|
37
|
+
this.finalImage = event.base64 || '';
|
|
38
|
+
}
|
|
39
|
+
imageCroppedReady() {
|
|
40
|
+
this.shot.emit(this.finalImage);
|
|
41
|
+
}
|
|
42
|
+
get triggerObservable() {
|
|
43
|
+
return this.trigger.asObservable();
|
|
44
|
+
}
|
|
45
|
+
triggerSnapshot() {
|
|
46
|
+
this.trigger.next();
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
WebcamComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: WebcamComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
50
|
+
WebcamComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: WebcamComponent, selector: "onshore-webcam", inputs: { inverseColor: "inverseColor", imageQuality: "imageQuality", resizeToHeight: "resizeToHeight", resizeToWidth: "resizeToWidth", backgroundColor: "backgroundColor", format: "format", alignImage: "alignImage", containWithinAspectRatio: "containWithinAspectRatio", aspectRatio: "aspectRatio", cropperPreviewHeight: "cropperPreviewHeight", cropperPreviewWidth: "cropperPreviewWidth", circleCropper: "circleCropper" }, outputs: { shot: "shot", canceled: "canceled" }, ngImport: i0, template: "<div class=\"flex w-full justify-content-center align-items-center overflow-hidden p-2\" [class.onshore-inverse-color]=\"inverseColor\">\n <webcam *ngIf=\"!image || image == ''\"\n [mirrorImage]=\"'never'\"\n [height]=\"400\"\n [allowCameraSwitch]=\"true\"\n [trigger]=\"triggerObservable\"\n (imageCapture)=\"camImageShot($event)\">\n </webcam>\n\n <!--<div class=\"onshore-webcam-border position-absolute w-100 h-100\"></div>-->\n\n <image-cropper *ngIf=\"image && image != ''\"\n class=\"onshore-image-cropper m-3\"\n [class.onshore-cropper-circle]=\"circleCropper\"\n (imageCropped)=\"imageCropped($event)\"\n [imageBase64]=\"image\"\n [imageQuality]=\"imageQuality\"\n [alignImage]=\"alignImage\"\n [backgroundColor]=\"backgroundColor\"\n [containWithinAspectRatio]=\"containWithinAspectRatio\"\n [format]=\"format\"\n [aspectRatio]=\"aspectRatio\"\n [resizeToHeight]=\"resizeToHeight\"\n [resizeToWidth]=\"resizeToWidth\">\n </image-cropper>\n</div>\n\n<p-footer>\n <div class=\"flex justify-content-end align-items-center mt-2\" [class.onshore-inverse-color]=\"inverseColor\">\n\n <button pButton\n type=\"button\"\n icon=\"fa fa-times\"\n [label]=\"'global.cancel' | translate\"\n class=\"onshore-button-primary mr-2\"\n (click)=\"canceled.emit(true)\">\n </button>\n\n <button *ngIf=\"!image || image == ''\"\n pButton\n type=\"button\"\n [label]=\"'form.imageControl.webcamSmileButton' | translate\"\n class=\"onshore-button-primary\"\n icon=\"fa fa-laugh-wink\"\n (click)=\"triggerSnapshot()\">\n </button>\n\n <button *ngIf=\"image && image != ''\"\n pButton\n type=\"button\"\n [label]=\"'global.use' | translate\"\n class=\"onshore-button-primary\"\n icon=\"fa fa-check\"\n (click)=\"imageCroppedReady()\">\n </button>\n </div>\n</p-footer>\n\n\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "component", type: i3.Footer, selector: "p-footer" }, { kind: "component", type: i4.ImageCropperComponent, selector: "image-cropper", inputs: ["imageChangedEvent", "imageURL", "imageBase64", "imageFile", "format", "transform", "maintainAspectRatio", "aspectRatio", "resizeToWidth", "resizeToHeight", "cropperMinWidth", "cropperMinHeight", "cropperMaxHeight", "cropperMaxWidth", "cropperStaticWidth", "cropperStaticHeight", "canvasRotation", "initialStepSize", "roundCropper", "onlyScaleDown", "imageQuality", "autoCrop", "backgroundColor", "containWithinAspectRatio", "hideResizeSquares", "allowMoveImage", "cropper", "alignImage", "disabled"], outputs: ["imageCropped", "startCropImage", "imageLoaded", "cropperReady", "loadImageFailed", "transformChange"] }, { kind: "component", type: i5.WebcamComponent, selector: "webcam", inputs: ["width", "height", "videoOptions", "allowCameraSwitch", "mirrorImage", "captureImageData", "imageType", "imageQuality", "trigger", "switchCamera"], outputs: ["imageCapture", "initError", "imageClick", "cameraSwitched"] }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
51
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: WebcamComponent, decorators: [{
|
|
52
|
+
type: Component,
|
|
53
|
+
args: [{ selector: 'onshore-webcam', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"flex w-full justify-content-center align-items-center overflow-hidden p-2\" [class.onshore-inverse-color]=\"inverseColor\">\n <webcam *ngIf=\"!image || image == ''\"\n [mirrorImage]=\"'never'\"\n [height]=\"400\"\n [allowCameraSwitch]=\"true\"\n [trigger]=\"triggerObservable\"\n (imageCapture)=\"camImageShot($event)\">\n </webcam>\n\n <!--<div class=\"onshore-webcam-border position-absolute w-100 h-100\"></div>-->\n\n <image-cropper *ngIf=\"image && image != ''\"\n class=\"onshore-image-cropper m-3\"\n [class.onshore-cropper-circle]=\"circleCropper\"\n (imageCropped)=\"imageCropped($event)\"\n [imageBase64]=\"image\"\n [imageQuality]=\"imageQuality\"\n [alignImage]=\"alignImage\"\n [backgroundColor]=\"backgroundColor\"\n [containWithinAspectRatio]=\"containWithinAspectRatio\"\n [format]=\"format\"\n [aspectRatio]=\"aspectRatio\"\n [resizeToHeight]=\"resizeToHeight\"\n [resizeToWidth]=\"resizeToWidth\">\n </image-cropper>\n</div>\n\n<p-footer>\n <div class=\"flex justify-content-end align-items-center mt-2\" [class.onshore-inverse-color]=\"inverseColor\">\n\n <button pButton\n type=\"button\"\n icon=\"fa fa-times\"\n [label]=\"'global.cancel' | translate\"\n class=\"onshore-button-primary mr-2\"\n (click)=\"canceled.emit(true)\">\n </button>\n\n <button *ngIf=\"!image || image == ''\"\n pButton\n type=\"button\"\n [label]=\"'form.imageControl.webcamSmileButton' | translate\"\n class=\"onshore-button-primary\"\n icon=\"fa fa-laugh-wink\"\n (click)=\"triggerSnapshot()\">\n </button>\n\n <button *ngIf=\"image && image != ''\"\n pButton\n type=\"button\"\n [label]=\"'global.use' | translate\"\n class=\"onshore-button-primary\"\n icon=\"fa fa-check\"\n (click)=\"imageCroppedReady()\">\n </button>\n </div>\n</p-footer>\n\n\n" }]
|
|
54
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { inverseColor: [{
|
|
55
|
+
type: Input
|
|
56
|
+
}], imageQuality: [{
|
|
57
|
+
type: Input
|
|
58
|
+
}], resizeToHeight: [{
|
|
59
|
+
type: Input
|
|
60
|
+
}], resizeToWidth: [{
|
|
61
|
+
type: Input
|
|
62
|
+
}], backgroundColor: [{
|
|
63
|
+
type: Input
|
|
64
|
+
}], format: [{
|
|
65
|
+
type: Input
|
|
66
|
+
}], alignImage: [{
|
|
67
|
+
type: Input
|
|
68
|
+
}], containWithinAspectRatio: [{
|
|
69
|
+
type: Input
|
|
70
|
+
}], aspectRatio: [{
|
|
71
|
+
type: Input
|
|
72
|
+
}], cropperPreviewHeight: [{
|
|
73
|
+
type: Input
|
|
74
|
+
}], cropperPreviewWidth: [{
|
|
75
|
+
type: Input
|
|
76
|
+
}], circleCropper: [{
|
|
77
|
+
type: Input
|
|
78
|
+
}], shot: [{
|
|
79
|
+
type: Output
|
|
80
|
+
}], canceled: [{
|
|
81
|
+
type: Output
|
|
82
|
+
}] } });
|
|
83
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViY2FtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29uc2hvcmUtZm9ybXMvc3JjL2xpYi9jb21wb25lbnRzL3dlYmNhbS93ZWJjYW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb25zaG9yZS1mb3Jtcy9zcmMvbGliL2NvbXBvbmVudHMvd2ViY2FtL3dlYmNhbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7OztBQVMzQyxNQUFNLE9BQU8sZUFBZTtJQTZDMUIsWUFBb0IsR0FBc0I7UUFBdEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUEzQzFCLGlCQUFZLEdBQVksS0FBSyxDQUFDO1FBQzlCLGlCQUFZLEdBQUcsR0FBRyxDQUFDO1FBQ25CLG1CQUFjLEdBQUcsR0FBRyxDQUFDO1FBQ3JCLGtCQUFhLEdBQUcsR0FBRyxDQUFDO1FBQ3BCLG9CQUFlLEdBQUcsT0FBTyxDQUFDO1FBQzFCLFdBQU0sR0FBNEMsS0FBSyxDQUFDO1FBQ3hELGVBQVUsR0FBc0IsUUFBUSxDQUFDO1FBQ3pDLDZCQUF3QixHQUFHLEtBQUssQ0FBQztRQUNqQyxnQkFBVyxHQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDNUIseUJBQW9CLEdBQUcsR0FBRyxDQUFDO1FBQzNCLHdCQUFtQixHQUFHLEdBQUcsQ0FBQztRQUMxQixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUM1QixTQUFJLEdBQXlCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDaEQsYUFBUSxHQUEwQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBRS9ELFVBQUssR0FBRyxFQUFFLENBQUM7UUFDWCxlQUFVLEdBQUcsRUFBRSxDQUFDO1FBRVQsWUFBTyxHQUFrQixJQUFJLE9BQU8sRUFBUSxDQUFDO0lBMEJwRCxDQUFDO0lBeEJNLFlBQVksQ0FBQyxXQUF3QjtRQUMxQyxJQUFJLENBQUMsS0FBSyxHQUFHLFdBQVcsQ0FBQyxjQUFjLENBQUM7UUFDeEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRU0sWUFBWSxDQUFDLEtBQXdCO1FBQzFDLG1DQUFtQztRQUNuQyxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDO0lBQ3ZDLENBQUM7SUFFTSxpQkFBaUI7UUFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFHRCxJQUFXLGlCQUFpQjtRQUMxQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVNLGVBQWU7UUFDcEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN0QixDQUFDOzs0R0EzQ1UsZUFBZTtnR0FBZixlQUFlLDZnQkNqQjVCLHVnRUEyREE7MkZEMUNhLGVBQWU7a0JBTDNCLFNBQVM7K0JBQ0UsZ0JBQWdCLG1CQUVULHVCQUF1QixDQUFDLE1BQU07d0dBSS9CLFlBQVk7c0JBQTNCLEtBQUs7Z0JBQ1UsWUFBWTtzQkFBM0IsS0FBSztnQkFDVSxjQUFjO3NCQUE3QixLQUFLO2dCQUNVLGFBQWE7c0JBQTVCLEtBQUs7Z0JBQ1UsZUFBZTtzQkFBOUIsS0FBSztnQkFDVSxNQUFNO3NCQUFyQixLQUFLO2dCQUNVLFVBQVU7c0JBQXpCLEtBQUs7Z0JBQ1Usd0JBQXdCO3NCQUF2QyxLQUFLO2dCQUNVLFdBQVc7c0JBQTFCLEtBQUs7Z0JBQ1Usb0JBQW9CO3NCQUFuQyxLQUFLO2dCQUNVLG1CQUFtQjtzQkFBbEMsS0FBSztnQkFDVSxhQUFhO3NCQUE1QixLQUFLO2dCQUNJLElBQUk7c0JBQWIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE91dHB1dFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFdlYmNhbUltYWdlIH0gZnJvbSAnbmd4LXdlYmNhbSc7XG5pbXBvcnQgeyBJbWFnZUNyb3BwZWRFdmVudCB9IGZyb20gJ25neC1pbWFnZS1jcm9wcGVyJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnb25zaG9yZS13ZWJjYW0nLFxuICB0ZW1wbGF0ZVVybDogJy4vd2ViY2FtLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFdlYmNhbUNvbXBvbmVudCB7XG5cbiAgQElucHV0KCkgcHVibGljIGludmVyc2VDb2xvcjogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBwdWJsaWMgaW1hZ2VRdWFsaXR5ID0gMTAwO1xuICBASW5wdXQoKSBwdWJsaWMgcmVzaXplVG9IZWlnaHQgPSA0MDA7XG4gIEBJbnB1dCgpIHB1YmxpYyByZXNpemVUb1dpZHRoID0gNDAwO1xuICBASW5wdXQoKSBwdWJsaWMgYmFja2dyb3VuZENvbG9yID0gJ3doaXRlJztcbiAgQElucHV0KCkgcHVibGljIGZvcm1hdDogJ3BuZycgfCAnanBlZycgfCAnYm1wJyB8ICd3ZWJwJyB8ICdpY28nID0gJ3BuZyc7XG4gIEBJbnB1dCgpIHB1YmxpYyBhbGlnbkltYWdlOiAnbGVmdCcgfCAnY2VudGVyJyA9ICdjZW50ZXInO1xuICBASW5wdXQoKSBwdWJsaWMgY29udGFpbldpdGhpbkFzcGVjdFJhdGlvID0gZmFsc2U7XG4gIEBJbnB1dCgpIHB1YmxpYyBhc3BlY3RSYXRpbzogbnVtYmVyID0gMSAvIDE7XG4gIEBJbnB1dCgpIHB1YmxpYyBjcm9wcGVyUHJldmlld0hlaWdodCA9IDIwMDtcbiAgQElucHV0KCkgcHVibGljIGNyb3BwZXJQcmV2aWV3V2lkdGggPSAyMDA7XG4gIEBJbnB1dCgpIHB1YmxpYyBjaXJjbGVDcm9wcGVyID0gZmFsc2U7XG4gIEBPdXRwdXQoKSBzaG90OiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGNhbmNlbGVkOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgaW1hZ2UgPSAnJztcbiAgZmluYWxJbWFnZSA9ICcnO1xuXG4gIHB1YmxpYyB0cmlnZ2VyOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBwdWJsaWMgY2FtSW1hZ2VTaG90KHdlYmNhbUltYWdlOiBXZWJjYW1JbWFnZSk6IHZvaWQge1xuICAgIHRoaXMuaW1hZ2UgPSB3ZWJjYW1JbWFnZS5pbWFnZUFzRGF0YVVybDtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBpbWFnZUNyb3BwZWQoZXZlbnQ6IEltYWdlQ3JvcHBlZEV2ZW50KTogdm9pZCB7XG4gICAgLy8gVG9EbzogQ2hlY2sgbmVlZGVkIGJhc2U2NCBmb3JtYXRcbiAgICB0aGlzLmZpbmFsSW1hZ2UgPSBldmVudC5iYXNlNjQgfHwgJyc7XG4gIH1cblxuICBwdWJsaWMgaW1hZ2VDcm9wcGVkUmVhZHkoKTogdm9pZCB7XG4gICAgdGhpcy5zaG90LmVtaXQodGhpcy5maW5hbEltYWdlKTtcbiAgfVxuXG5cbiAgcHVibGljIGdldCB0cmlnZ2VyT2JzZXJ2YWJsZSgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy50cmlnZ2VyLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIHRyaWdnZXJTbmFwc2hvdCgpOiB2b2lkIHtcbiAgICB0aGlzLnRyaWdnZXIubmV4dCgpO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gIH1cblxufVxuIiwiPGRpdiBjbGFzcz1cImZsZXggdy1mdWxsIGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIG92ZXJmbG93LWhpZGRlbiBwLTJcIiBbY2xhc3Mub25zaG9yZS1pbnZlcnNlLWNvbG9yXT1cImludmVyc2VDb2xvclwiPlxuICA8d2ViY2FtICpuZ0lmPVwiIWltYWdlIHx8IGltYWdlID09ICcnXCJcbiAgICAgICAgICBbbWlycm9ySW1hZ2VdPVwiJ25ldmVyJ1wiXG4gICAgICAgICAgW2hlaWdodF09XCI0MDBcIlxuICAgICAgICAgIFthbGxvd0NhbWVyYVN3aXRjaF09XCJ0cnVlXCJcbiAgICAgICAgICBbdHJpZ2dlcl09XCJ0cmlnZ2VyT2JzZXJ2YWJsZVwiXG4gICAgICAgICAgKGltYWdlQ2FwdHVyZSk9XCJjYW1JbWFnZVNob3QoJGV2ZW50KVwiPlxuICA8L3dlYmNhbT5cblxuICA8IS0tPGRpdiBjbGFzcz1cIm9uc2hvcmUtd2ViY2FtLWJvcmRlciBwb3NpdGlvbi1hYnNvbHV0ZSB3LTEwMCBoLTEwMFwiPjwvZGl2Pi0tPlxuXG4gIDxpbWFnZS1jcm9wcGVyICpuZ0lmPVwiaW1hZ2UgJiYgaW1hZ2UgIT0gJydcIlxuICAgIGNsYXNzPVwib25zaG9yZS1pbWFnZS1jcm9wcGVyIG0tM1wiXG4gICAgW2NsYXNzLm9uc2hvcmUtY3JvcHBlci1jaXJjbGVdPVwiY2lyY2xlQ3JvcHBlclwiXG4gICAgKGltYWdlQ3JvcHBlZCk9XCJpbWFnZUNyb3BwZWQoJGV2ZW50KVwiXG4gICAgW2ltYWdlQmFzZTY0XT1cImltYWdlXCJcbiAgICBbaW1hZ2VRdWFsaXR5XT1cImltYWdlUXVhbGl0eVwiXG4gICAgW2FsaWduSW1hZ2VdPVwiYWxpZ25JbWFnZVwiXG4gICAgW2JhY2tncm91bmRDb2xvcl09XCJiYWNrZ3JvdW5kQ29sb3JcIlxuICAgIFtjb250YWluV2l0aGluQXNwZWN0UmF0aW9dPVwiY29udGFpbldpdGhpbkFzcGVjdFJhdGlvXCJcbiAgICBbZm9ybWF0XT1cImZvcm1hdFwiXG4gICAgW2FzcGVjdFJhdGlvXT1cImFzcGVjdFJhdGlvXCJcbiAgICBbcmVzaXplVG9IZWlnaHRdPVwicmVzaXplVG9IZWlnaHRcIlxuICAgIFtyZXNpemVUb1dpZHRoXT1cInJlc2l6ZVRvV2lkdGhcIj5cbiAgPC9pbWFnZS1jcm9wcGVyPlxuPC9kaXY+XG5cbjxwLWZvb3Rlcj5cbiAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWVuZCBhbGlnbi1pdGVtcy1jZW50ZXIgbXQtMlwiIFtjbGFzcy5vbnNob3JlLWludmVyc2UtY29sb3JdPVwiaW52ZXJzZUNvbG9yXCI+XG5cbiAgICA8YnV0dG9uIHBCdXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgaWNvbj1cImZhIGZhLXRpbWVzXCJcbiAgICAgICAgICAgIFtsYWJlbF09XCInZ2xvYmFsLmNhbmNlbCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgY2xhc3M9XCJvbnNob3JlLWJ1dHRvbi1wcmltYXJ5IG1yLTJcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImNhbmNlbGVkLmVtaXQodHJ1ZSlcIj5cbiAgICA8L2J1dHRvbj5cblxuICAgIDxidXR0b24gKm5nSWY9XCIhaW1hZ2UgfHwgaW1hZ2UgPT0gJydcIlxuICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBbbGFiZWxdPVwiJ2Zvcm0uaW1hZ2VDb250cm9sLndlYmNhbVNtaWxlQnV0dG9uJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICBjbGFzcz1cIm9uc2hvcmUtYnV0dG9uLXByaW1hcnlcIlxuICAgICAgICAgICAgaWNvbj1cImZhIGZhLWxhdWdoLXdpbmtcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRyaWdnZXJTbmFwc2hvdCgpXCI+XG4gICAgPC9idXR0b24+XG5cbiAgICA8YnV0dG9uICpuZ0lmPVwiaW1hZ2UgJiYgaW1hZ2UgIT0gJydcIlxuICAgICAgICAgICAgcEJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBbbGFiZWxdPVwiJ2dsb2JhbC51c2UnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgIGNsYXNzPVwib25zaG9yZS1idXR0b24tcHJpbWFyeVwiXG4gICAgICAgICAgICBpY29uPVwiZmEgZmEtY2hlY2tcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImltYWdlQ3JvcHBlZFJlYWR5KClcIj5cbiAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG48L3AtZm9vdGVyPlxuXG5cbiJdfQ==
|