onshore-forms 0.0.14 → 0.0.15

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.
@@ -17,22 +17,24 @@ export class OnshoreFormImageItemComponent {
17
17
  this.ngControl = ngControl;
18
18
  this.dialogService = dialogService;
19
19
  this.translate = translate;
20
- // Image updload params
21
- this.imageWidth = 400;
22
- this.imageHeight = 400;
23
- this.containWithinAspectRatio = false;
24
- this.aspectRatio = 1 / 1;
25
- this.disableImageSelection = false;
26
- this.disableWebcamSelection = false;
27
- this.disableMediaSelection = false;
28
- this.disableDelete = false;
29
- this.imagePlaceholder = '';
30
- this.mediaType = '';
31
20
  this.imageDeleted = new EventEmitter();
32
21
  this.imageCleared = new EventEmitter();
22
+ this.imageReady = new EventEmitter();
33
23
  this.selectFromMedia = new EventEmitter();
34
- //Output() imageSelectedFromMedia: EventEmitter<any> = new EventEmitter();
24
+ this.isLoading = new EventEmitter();
35
25
  this.OnshoreFormTemplateLayout = OnshoreFormTemplateLayout;
26
+ this.defaultImageSettings = {
27
+ imageWidth: 400,
28
+ imageHeight: 400,
29
+ containWithinAspectRatio: false,
30
+ aspectRatio: 1 / 1,
31
+ imageSelectionEnabled: true,
32
+ webcamSelectionEnabled: true,
33
+ mediaSelectionEnabled: true,
34
+ deleteEnabled: true,
35
+ placeholderImage: '',
36
+ placeholderIcon: 'fa fa-image fa-10x'
37
+ };
36
38
  this.image = '';
37
39
  this.disabled = false;
38
40
  this.webcamDialogVisible = false;
@@ -48,6 +50,7 @@ export class OnshoreFormImageItemComponent {
48
50
  this.cdr.markForCheck();
49
51
  this.ngControl?.control?.setValue(this.image);
50
52
  this.ngControl?.control?.markAsDirty();
53
+ this.imageReady.emit(this.image);
51
54
  }, 500);
52
55
  }
53
56
  }
@@ -59,6 +62,7 @@ export class OnshoreFormImageItemComponent {
59
62
  this.cdr.markForCheck();
60
63
  this.ngControl?.control?.setValue(this.image);
61
64
  this.ngControl?.control?.markAsDirty();
65
+ this.imageReady.emit(this.image);
62
66
  }, 500);
63
67
  }
64
68
  }
@@ -80,6 +84,7 @@ export class OnshoreFormImageItemComponent {
80
84
  if (obj == null) {
81
85
  this.image = '';
82
86
  }
87
+ this.imageReady.emit(this.image);
83
88
  this.cdr.markForCheck();
84
89
  }
85
90
  registerOnChange(fn) {
@@ -106,43 +111,52 @@ export class OnshoreFormImageItemComponent {
106
111
  this.ngControl?.control?.disable();
107
112
  this.image = null;
108
113
  }
114
+ ngOnChanges(changes) {
115
+ const imageSettings = changes['imageSettings']?.currentValue;
116
+ if (imageSettings) {
117
+ if (!imageSettings.imageWidth || !imageSettings.imageHeight) {
118
+ this.imageSettings.imageWidth = this.defaultImageSettings.imageWidth;
119
+ this.imageSettings.imageHeight = this.defaultImageSettings.imageHeight;
120
+ }
121
+ if (!imageSettings.placeholderIcon)
122
+ this.imageSettings.placeholderIcon = this.defaultImageSettings.placeholderIcon;
123
+ if (!imageSettings.aspectRatio)
124
+ this.imageSettings.aspectRatio = this.defaultImageSettings.aspectRatio;
125
+ if (!imageSettings.containWithinAspectRatio)
126
+ this.imageSettings.containWithinAspectRatio = this.defaultImageSettings.containWithinAspectRatio;
127
+ if (!imageSettings.imageSelectionEnabled)
128
+ this.imageSettings.imageSelectionEnabled = this.defaultImageSettings.imageSelectionEnabled;
129
+ if (!imageSettings.mediaSelectionEnabled)
130
+ this.imageSettings.mediaSelectionEnabled = this.defaultImageSettings.mediaSelectionEnabled;
131
+ if (!imageSettings.webcamSelectionEnabled)
132
+ this.imageSettings.webcamSelectionEnabled = this.defaultImageSettings.webcamSelectionEnabled;
133
+ if (!imageSettings.deleteEnabled)
134
+ this.imageSettings.deleteEnabled = this.defaultImageSettings.deleteEnabled;
135
+ }
136
+ }
109
137
  }
110
138
  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 });
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 });
139
+ OnshoreFormImageItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: OnshoreFormImageItemComponent, selector: "onshore-form-image-item", inputs: { formTemplate: "formTemplate", imageSettings: "imageSettings" }, outputs: { imageDeleted: "imageDeleted", imageCleared: "imageCleared", imageReady: "imageReady", selectFromMedia: "selectFromMedia", isLoading: "isLoading" }, usesOnChanges: true, 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 [placeholderIcon]=\"imageSettings.placeholderIcon\"\n [placeholderImage]=\"imageSettings.placeholderImage\"\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]=\"!imageSettings.imageSelectionEnabled\"\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]=\"!imageSettings.webcamSelectionEnabled\"\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]=\"!imageSettings.mediaSelectionEnabled\"\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]=\"!imageSettings.deleteEnabled\"\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]=\"imageSettings.imageWidth\"\n [resizeToHeight]=\"imageSettings.imageHeight\"\n [containWithinAspectRatio]=\"imageSettings.containWithinAspectRatio\"\n [aspectRatio]=\"imageSettings.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: ["placeholderIcon", "placeholderImage", "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 });
112
140
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: OnshoreFormImageItemComponent, decorators: [{
113
141
  type: Component,
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" }]
142
+ 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 [placeholderIcon]=\"imageSettings.placeholderIcon\"\n [placeholderImage]=\"imageSettings.placeholderImage\"\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]=\"!imageSettings.imageSelectionEnabled\"\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]=\"!imageSettings.webcamSelectionEnabled\"\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]=\"!imageSettings.mediaSelectionEnabled\"\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]=\"!imageSettings.deleteEnabled\"\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]=\"imageSettings.imageWidth\"\n [resizeToHeight]=\"imageSettings.imageHeight\"\n [containWithinAspectRatio]=\"imageSettings.containWithinAspectRatio\"\n [aspectRatio]=\"imageSettings.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" }]
115
143
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.NgControl, decorators: [{
116
144
  type: Self
117
145
  }, {
118
146
  type: Optional
119
147
  }] }, { type: i2.DialogService }, { type: i3.TranslateService }]; }, propDecorators: { formTemplate: [{
120
148
  type: Input
121
- }], imageWidth: [{
122
- type: Input
123
- }], imageHeight: [{
124
- type: Input
125
- }], containWithinAspectRatio: [{
126
- type: Input
127
- }], aspectRatio: [{
128
- type: Input
129
- }], disableImageSelection: [{
130
- type: Input
131
- }], disableWebcamSelection: [{
132
- type: Input
133
- }], disableMediaSelection: [{
134
- type: Input
135
- }], disableDelete: [{
136
- type: Input
137
- }], imagePlaceholder: [{
138
- type: Input
139
- }], mediaType: [{
149
+ }], imageSettings: [{
140
150
  type: Input
141
151
  }], imageDeleted: [{
142
152
  type: Output
143
153
  }], imageCleared: [{
144
154
  type: Output
155
+ }], imageReady: [{
156
+ type: Output
145
157
  }], selectFromMedia: [{
146
158
  type: Output
159
+ }], isLoading: [{
160
+ type: Output
147
161
  }] } });
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==
162
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1pbWFnZS1pdGVtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29uc2hvcmUtZm9ybXMvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0taW1hZ2UtaXRlbS9mb3JtLWltYWdlLWl0ZW0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb25zaG9yZS1mb3Jtcy9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS1pbWFnZS1pdGVtL2Zvcm0taW1hZ2UtaXRlbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUM5QixRQUFRLEVBQUUsTUFBTSxFQUNoQixJQUFJLEVBQ0wsTUFBTSxlQUFlLENBQUM7QUFNdkIsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7Ozs7OztBQU9uRSxNQUFNLE9BQU8sNkJBQTZCO0lBZ0l4QyxZQUFtQixHQUFzQixFQUNGLFNBQW9CLEVBQ3hDLGFBQTRCLEVBQzNCLFNBQTJCO1FBSDVCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ0YsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUN4QyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUMzQixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQS9IckMsaUJBQVksR0FBeUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN4RCxpQkFBWSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3JELGVBQVUsR0FBeUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN0RCxvQkFBZSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3hELGNBQVMsR0FBMEIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUVoRSw4QkFBeUIsR0FBRyx5QkFBeUIsQ0FBQztRQUV0RCx5QkFBb0IsR0FBNkI7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R0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsc0JBQXNCLENBQUM7WUFDdkksSUFBRyxDQUFDLGFBQWEsQ0FBQyxhQUFhO2dCQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxhQUFhLENBQUM7U0FDN0c7SUFDSCxDQUFDOzswSEE5SFUsNkJBQTZCOzhHQUE3Qiw2QkFBNkIsNlRDbkIxQyxnM0dBMkVBOzJGRHhEYSw2QkFBNkI7a0JBTHpDLFNBQVM7K0JBQ0UseUJBQXlCLG1CQUVsQix1QkFBdUIsQ0FBQyxNQUFNOzswQkFtSWxDLElBQUk7OzBCQUFJLFFBQVE7dUdBaElwQixZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRUksWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPbkluaXQsXG4gIE9wdGlvbmFsLCBPdXRwdXQsXG4gIFNlbGYsIFNpbXBsZUNoYW5nZXNcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9keW5hbWljZGlhbG9nJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IE9uc2hvcmVGb3JtSW1hZ2VTZXR0aW5ncywgT25zaG9yZUZvcm1UZW1wbGF0ZUl0ZW0gfSBmcm9tICcuLi8uLi9tb2RlbHMvZm9ybS5tb2RlbHMnO1xuaW1wb3J0IHsgT25zaG9yZUZvcm1UZW1wbGF0ZUxheW91dCB9IGZyb20gJy4uLy4uL2VudW1zL2Zvcm0uZW51bXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdvbnNob3JlLWZvcm0taW1hZ2UtaXRlbScsXG4gIHRlbXBsYXRlVXJsOiAnLi9mb3JtLWltYWdlLWl0ZW0uY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgT25zaG9yZUZvcm1JbWFnZUl0ZW1Db21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIGZvcm1UZW1wbGF0ZSE6IE9uc2hvcmVGb3JtVGVtcGxhdGVJdGVtO1xuICBASW5wdXQoKSBpbWFnZVNldHRpbmdzOiBPbnNob3JlRm9ybUltYWdlU2V0dGluZ3M7XG5cbiAgQE91dHB1dCgpIGltYWdlRGVsZXRlZDogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBpbWFnZUNsZWFyZWQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgaW1hZ2VSZWFkeTogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBzZWxlY3RGcm9tTWVkaWE6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgaXNMb2FkaW5nOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgT25zaG9yZUZvcm1UZW1wbGF0ZUxheW91dCA9IE9uc2hvcmVGb3JtVGVtcGxhdGVMYXlvdXQ7XG5cbiAgZGVmYXVsdEltYWdlU2V0dGluZ3M6IE9uc2hvcmVGb3JtSW1hZ2VTZXR0aW5ncyA9IHtcbiAgICBpbWFnZVdpZHRoOiA0MDAsXG4gICAgaW1hZ2VIZWlnaHQ6IDQwMCxcbiAgICBjb250YWluV2l0aGluQXNwZWN0UmF0aW86IGZhbHNlLFxuICAgIGFzcGVjdFJhdGlvOiAxIC8gMSxcbiAgICBpbWFnZVNlbGVjdGlvbkVuYWJsZWQ6IHRydWUsXG4gICAgd2ViY2FtU2VsZWN0aW9uRW5hYmxlZDogdHJ1ZSxcbiAgICBtZWRpYVNlbGVjdGlvbkVuYWJsZWQ6IHRydWUsXG4gICAgZGVsZXRlRW5hYmxlZDogdHJ1ZSxcbiAgICBwbGFjZWhvbGRlckltYWdlOiAnJyxcbiAgICBwbGFjZWhvbGRlckljb246ICdmYSBmYS1pbWFnZSBmYS0xMHgnXG4gIH07XG5cbiAgaW1hZ2U6IHN0cmluZyB8IG51bGwgPSAnJztcbiAgZGlzYWJsZWQgPSBmYWxzZTtcbiAgd2ViY2FtRGlhbG9nVmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuICBpbWFnZUNob29zZXJEaWFsb2dWaXNpYmxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgc3Vic2NyaXB0aW9uczogQXJyYXk8U3Vic2NyaXB0aW9uPiA9IFtdO1xuXG4gIGdldEZpbGVJbWFnZShpbWFnZTogYW55KSB7XG4gICAgdGhpcy5pbWFnZUNob29zZXJEaWFsb2dWaXNpYmxlID0gZmFsc2U7XG4gICAgaWYoaW1hZ2UpIHtcbiAgICAgIHRoaXMuaW1hZ2UgPSBpbWFnZTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgdGhpcy5uZ0NvbnRyb2w/LmNvbnRyb2w/LnNldFZhbHVlKHRoaXMuaW1hZ2UpO1xuICAgICAgICB0aGlzLm5nQ29udHJvbD8uY29udHJvbD8ubWFya0FzRGlydHkoKTtcbiAgICAgICAgdGhpcy5pbWFnZVJlYWR5LmVtaXQodGhpcy5pbWFnZSk7XG4gICAgICB9LCA1MDApO1xuICAgIH1cbiAgfVxuXG4gIGdldFdlYmNhbUltYWdlKGltYWdlOiBhbnkpIHtcbiAgICB0aGlzLndlYmNhbURpYWxvZ1Zpc2libGUgPSBmYWxzZTtcbiAgICBpZihpbWFnZSkge1xuICAgICAgdGhpcy5pbWFnZSA9IGltYWdlO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB0aGlzLm5nQ29udHJvbD8uY29udHJvbD8uc2V0VmFsdWUodGhpcy5pbWFnZSk7XG4gICAgICAgIHRoaXMubmdDb250cm9sPy5jb250cm9sPy5tYXJrQXNEaXJ0eSgpO1xuICAgICAgICB0aGlzLmltYWdlUmVhZHkuZW1pdCh0aGlzLmltYWdlKTtcbiAgICAgIH0sIDUwMCk7XG4gICAgfVxuICB9XG5cbiAgcmVtb3ZlSW1hZ2UoKSB7XG4gICAgaWYodGhpcy5pbWFnZSAmJiAhdGhpcy5pbWFnZS5pbmNsdWRlcygnYmFzZTY0JykpIHtcbiAgICAgIHRoaXMuaW1hZ2VEZWxldGVkLmVtaXQodGhpcy5pbWFnZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW1hZ2VDbGVhcmVkLmVtaXQoKTtcbiAgICB9XG5cbiAgICB0aGlzLm5nQ29udHJvbD8uY29udHJvbD8uc2V0VmFsdWUobnVsbCk7XG4gICAgdGhpcy5uZ0NvbnRyb2w/LmNvbnRyb2w/Lm1hcmtBc0RpcnR5KCk7XG4gICAgdGhpcy5pbWFnZSA9ICcnO1xuICB9XG5cbiAgcHVibGljIHdyaXRlVmFsdWUob2JqOiBhbnkpOiB2b2lkIHtcbiAgICBpZihvYmogJiYgIW9iai5pbmNsdWRlcygnYmFzZTY0JykpIHtcbiAgICAgIHRoaXMuaW1hZ2UgPSBvYmo7XG4gICAgfVxuICAgIGlmKG9iaiA9PSBudWxsKSB7XG4gICAgICB0aGlzLmltYWdlID0gJyc7XG4gICAgfVxuXG4gICAgdGhpcy5pbWFnZVJlYWR5LmVtaXQodGhpcy5pbWFnZSk7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgaWYodGhpcy5uZ0NvbnRyb2wudmFsdWUpIHtcbiAgICAgIHRoaXMuaW1hZ2UgPSB0aGlzLm5nQ29udHJvbC52YWx1ZTtcbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7fVxuXG4gIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlPyhpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZih0aGlzLm5nQ29udHJvbD8uY29udHJvbD8udmFsdWUgPT0gJycgJiYgdGhpcy5mb3JtVGVtcGxhdGUuZGVmYXVsdCAhPSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMubmdDb250cm9sPy5jb250cm9sPy5zZXRWYWx1ZSh0aGlzLmZvcm1UZW1wbGF0ZS5kZWZhdWx0KTtcbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKChzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbikgPT4ge1xuICAgICAgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfSk7XG4gICAgdGhpcy5uZ0NvbnRyb2w/LmNvbnRyb2w/LmRpc2FibGUoKTtcbiAgICB0aGlzLmltYWdlID0gbnVsbDtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBjb25zdCBpbWFnZVNldHRpbmdzOiBPbnNob3JlRm9ybUltYWdlU2V0dGluZ3MgPSBjaGFuZ2VzWydpbWFnZVNldHRpbmdzJ10/LmN1cnJlbnRWYWx1ZTtcbiAgICBpZihpbWFnZVNldHRpbmdzKSB7XG4gICAgICBpZighaW1hZ2VTZXR0aW5ncy5pbWFnZVdpZHRoIHx8ICFpbWFnZVNldHRpbmdzLmltYWdlSGVpZ2h0KSB7XG4gICAgICAgIHRoaXMuaW1hZ2VTZXR0aW5ncy5pbWFnZVdpZHRoID0gdGhpcy5kZWZhdWx0SW1hZ2VTZXR0aW5ncy5pbWFnZVdpZHRoO1xuICAgICAgICB0aGlzLmltYWdlU2V0dGluZ3MuaW1hZ2VIZWlnaHQgPSB0aGlzLmRlZmF1bHRJbWFnZVNldHRpbmdzLmltYWdlSGVpZ2h0O1xuICAgICAgfVxuICAgICAgaWYoIWltYWdlU2V0dGluZ3MucGxhY2Vob2xkZXJJY29uKSB0aGlzLmltYWdlU2V0dGluZ3MucGxhY2Vob2xkZXJJY29uID0gdGhpcy5kZWZhdWx0SW1hZ2VTZXR0aW5ncy5wbGFjZWhvbGRlckljb247XG4gICAgICBpZighaW1hZ2VTZXR0aW5ncy5hc3BlY3RSYXRpbykgdGhpcy5pbWFnZVNldHRpbmdzLmFzcGVjdFJhdGlvID0gdGhpcy5kZWZhdWx0SW1hZ2VTZXR0aW5ncy5hc3BlY3RSYXRpbztcbiAgICAgIGlmKCFpbWFnZVNldHRpbmdzLmNvbnRhaW5XaXRoaW5Bc3BlY3RSYXRpbykgdGhpcy5pbWFnZVNldHRpbmdzLmNvbnRhaW5XaXRoaW5Bc3BlY3RSYXRpbyA9IHRoaXMuZGVmYXVsdEltYWdlU2V0dGluZ3MuY29udGFpbldpdGhpbkFzcGVjdFJhdGlvO1xuICAgICAgaWYoIWltYWdlU2V0dGluZ3MuaW1hZ2VTZWxlY3Rpb25FbmFibGVkKSB0aGlzLmltYWdlU2V0dGluZ3MuaW1hZ2VTZWxlY3Rpb25FbmFibGVkID0gdGhpcy5kZWZhdWx0SW1hZ2VTZXR0aW5ncy5pbWFnZVNlbGVjdGlvbkVuYWJsZWQ7XG4gICAgICBpZighaW1hZ2VTZXR0aW5ncy5tZWRpYVNlbGVjdGlvbkVuYWJsZWQpIHRoaXMuaW1hZ2VTZXR0aW5ncy5tZWRpYVNlbGVjdGlvbkVuYWJsZWQgPSB0aGlzLmRlZmF1bHRJbWFnZVNldHRpbmdzLm1lZGlhU2VsZWN0aW9uRW5hYmxlZDtcbiAgICAgIGlmKCFpbWFnZVNldHRpbmdzLndlYmNhbVNlbGVjdGlvbkVuYWJsZWQpIHRoaXMuaW1hZ2VTZXR0aW5ncy53ZWJjYW1TZWxlY3Rpb25FbmFibGVkID0gdGhpcy5kZWZhdWx0SW1hZ2VTZXR0aW5ncy53ZWJjYW1TZWxlY3Rpb25FbmFibGVkO1xuICAgICAgaWYoIWltYWdlU2V0dGluZ3MuZGVsZXRlRW5hYmxlZCkgdGhpcy5pbWFnZVNldHRpbmdzLmRlbGV0ZUVuYWJsZWQgPSB0aGlzLmRlZmF1bHRJbWFnZVNldHRpbmdzLmRlbGV0ZUVuYWJsZWQ7XG4gICAgfVxuICB9XG5cbiAgY29uc3RydWN0b3IocHVibGljIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgICAgICAgIEBTZWxmKCkgQE9wdGlvbmFsKCkgcHVibGljIG5nQ29udHJvbDogTmdDb250cm9sLFxuICAgICAgICAgICAgICBwdWJsaWMgZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UpIHtcbiAgICB0aGlzLm5nQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcbiAgfVxufVxuIiwiPG9uc2hvcmUtZm9ybS1pdGVtLWNvbnRhaW5lciBbZm9ybVRlbXBsYXRlXT1cImZvcm1UZW1wbGF0ZVwiIFtuZ0NvbnRyb2xdPVwibmdDb250cm9sXCI+XG4gIDxkaXYgY2xhc3M9XCJ3LWZ1bGwgZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC13cmFwXCI+XG5cbiAgICA8ZGl2IGNsYXNzPVwicG9zaXRpb24tcmVsYXRpdmUgZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBvbnNob3JlLWJvcmRlci1ncmF5LTQgYm9yZGVyLXNvbGlkIGJvcmRlci0xXCIgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZVwiPlxuICAgICAgPG9uc2hvcmUtaW1hZ2UtcGxhY2Vob2xkZXJcbiAgICAgICAgY2xhc3M9XCJ3LWZ1bGxcIlxuICAgICAgICBbaW1hZ2VdPVwiaW1hZ2VcIlxuICAgICAgICBpbWFnZVN0eWxlPVwicG9zaXRpb246IGFic29sdXQ7IGhlaWdodDogMjUwcHg7IHdpZHRoOiAyNTBweFwiXG4gICAgICAgIFtwbGFjZWhvbGRlckljb25dPVwiaW1hZ2VTZXR0aW5ncy5wbGFjZWhvbGRlckljb25cIlxuICAgICAgICBbcGxhY2Vob2xkZXJJbWFnZV09XCJpbWFnZVNldHRpbmdzLnBsYWNlaG9sZGVySW1hZ2VcIlxuICAgICAgICBwbGFjZWhvbGRlclN0eWxlPVwid2lkdGg6IDI1MHB4OyBoZWlnaHQ6IDI1MHB4XCI+XG4gICAgICA8L29uc2hvcmUtaW1hZ2UtcGxhY2Vob2xkZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbHVtbiBtLTRcIj5cbiAgICAgIDxidXR0b24gcEJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgW2hpZGRlbl09XCIhaW1hZ2VTZXR0aW5ncy5pbWFnZVNlbGVjdGlvbkVuYWJsZWRcIlxuICAgICAgICAgICAgICBpY29uPVwiZmEgZmEtaW1hZ2VcIlxuICAgICAgICAgICAgICBbbGFiZWxdPVwiJ2Zvcm0uaW1hZ2VDb250cm9sLnVwbG9hZEltYWdlQnV0dG9uJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwib25zaG9yZS1idXR0b24tcHJpbWFyeSBtYi0yXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImltYWdlQ2hvb3NlckRpYWxvZ1Zpc2libGUgPSB0cnVlOyBjZHIuZGV0ZWN0Q2hhbmdlcygpXCI+XG4gICAgICA8L2J1dHRvbj5cblxuICAgICAgPGJ1dHRvbiBwQnV0dG9uXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBbaGlkZGVuXT1cIiFpbWFnZVNldHRpbmdzLndlYmNhbVNlbGVjdGlvbkVuYWJsZWRcIlxuICAgICAgICAgICAgICBpY29uPVwiZmEgZmEtY2FtZXJhXCJcbiAgICAgICAgICAgICAgW2xhYmVsXT1cIidmb3JtLmltYWdlQ29udHJvbC53ZWJjYW1JbWFnZUJ1dHRvbicgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICBjbGFzcz1cIm9uc2hvcmUtYnV0dG9uLWxpZ2h0IG1iLTJcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwid2ViY2FtRGlhbG9nVmlzaWJsZSA9IHRydWVcIj5cbiAgICAgIDwvYnV0dG9uPlxuXG4gICAgICA8YnV0dG9uIHBCdXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIFtoaWRkZW5dPVwiIWltYWdlU2V0dGluZ3MubWVkaWFTZWxlY3Rpb25FbmFibGVkXCJcbiAgICAgICAgICAgICAgaWNvbj1cImZhIGZhLXBob3RvLXZpZGVvXCJcbiAgICAgICAgICAgICAgW2xhYmVsXT1cIidmb3JtLmltYWdlQ29udHJvbC5tZWRpYUltYWdlQnV0dG9uJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwib25zaG9yZS1idXR0b24tbGlnaHQgbWItMlwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RGcm9tTWVkaWEuZW1pdCgpXCI+XG4gICAgICA8L2J1dHRvbj5cblxuICAgICAgPGJ1dHRvbiBwQnV0dG9uXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBbaGlkZGVuXT1cIiFpbWFnZVNldHRpbmdzLmRlbGV0ZUVuYWJsZWRcIlxuICAgICAgICAgICAgICBpY29uPVwiZmEgZmEtZXJhc2VyXCJcbiAgICAgICAgICAgICAgW2xhYmVsXT1cIidmb3JtLmltYWdlQ29udHJvbC5yZW1vdmVJbWFnZUJ1dHRvbicgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICBjbGFzcz1cIm9uc2hvcmUtYnV0dG9uLWxpZ2h0XCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZUltYWdlKClcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWltYWdlIHx8IGRpc2FibGVkXCI+XG4gICAgICA8L2J1dHRvbj5cblxuICAgIDwvZGl2PlxuXG4gIDwvZGl2PlxuPC9vbnNob3JlLWZvcm0taXRlbS1jb250YWluZXI+XG5cbjxwLWRpYWxvZyBbaGVhZGVyXT1cIidmb3JtLmltYWdlQ29udHJvbC51cGxvYWRJbWFnZVRpdGxlJyB8IHRyYW5zbGF0ZVwiIFsodmlzaWJsZSldPVwiaW1hZ2VDaG9vc2VyRGlhbG9nVmlzaWJsZVwiIFttb2RhbF09XCJ0cnVlXCIgW3N0eWxlXT1cInsnbWF4LXdpZHRoJzogJzUwdncnfVwiPlxuICA8b25zaG9yZS1pbWFnZS1jaG9vc2VyXG4gICAgICAgICAgICAgICAgICAgICAoY2hvb3Nlbik9XCJnZXRGaWxlSW1hZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAoY2FuY2VsZWQpPVwiaW1hZ2VDaG9vc2VyRGlhbG9nVmlzaWJsZSA9IGZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgIFtyZXNpemVUb1dpZHRoXT1cImltYWdlU2V0dGluZ3MuaW1hZ2VXaWR0aFwiXG4gICAgICAgICAgICAgICAgICAgICBbcmVzaXplVG9IZWlnaHRdPVwiaW1hZ2VTZXR0aW5ncy5pbWFnZUhlaWdodFwiXG4gICAgICAgICAgICAgICAgICAgICBbY29udGFpbldpdGhpbkFzcGVjdFJhdGlvXT1cImltYWdlU2V0dGluZ3MuY29udGFpbldpdGhpbkFzcGVjdFJhdGlvXCJcbiAgICAgICAgICAgICAgICAgICAgIFthc3BlY3RSYXRpb109XCJpbWFnZVNldHRpbmdzLmFzcGVjdFJhdGlvXCJcbiAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcj1cInRyYW5zcGFyZW50XCI+XG4gIDwvb25zaG9yZS1pbWFnZS1jaG9vc2VyPlxuPC9wLWRpYWxvZz5cblxuPHAtZGlhbG9nIFtoZWFkZXJdPVwiJ2Zvcm0uaW1hZ2VDb250cm9sLndlYmFjbUltYWdlVGl0bGUnIHwgdHJhbnNsYXRlXCIgWyh2aXNpYmxlKV09XCJ3ZWJjYW1EaWFsb2dWaXNpYmxlXCIgW21vZGFsXT1cInRydWVcIiBbc3R5bGVdPVwieydtYXgtd2lkdGgnOiAnNTB2dyd9XCI+XG4gIDxvbnNob3JlLXdlYmNhbSAqbmdJZj1cIndlYmNhbURpYWxvZ1Zpc2libGVcIiAoc2hvdCk9XCJnZXRXZWJjYW1JbWFnZSgkZXZlbnQpXCIgKGNhbmNlbGVkKT1cIndlYmNhbURpYWxvZ1Zpc2libGUgPSBmYWxzZVwiPjwvb25zaG9yZS13ZWJjYW0+XG48L3AtZGlhbG9nPlxuIl19
@@ -3,7 +3,8 @@ import * as i0 from "@angular/core";
3
3
  import * as i1 from "@angular/common";
4
4
  export class OnshoreImagePlaceholderComponent {
5
5
  constructor() {
6
- this.placeholder = '';
6
+ this.placeholderIcon = '';
7
+ this.placeholderImage = '';
7
8
  this.image = '';
8
9
  this.imageStyle = '';
9
10
  this.placeholderStyle = '';
@@ -20,11 +21,13 @@ export class OnshoreImagePlaceholderComponent {
20
21
  }
21
22
  }
22
23
  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
+ OnshoreImagePlaceholderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: OnshoreImagePlaceholderComponent, selector: "onshore-image-placeholder", inputs: { placeholderIcon: "placeholderIcon", placeholderImage: "placeholderImage", image: "image", imageStyle: "imageStyle", placeholderStyle: "placeholderStyle", showLoader: "showLoader" }, ngImport: i0, template: "<div class=\"h-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\" [style]=\"placeholderStyle\" [class.bg-gray-200]=\"placeholderIcon\" [class.p-2]=\"placeholderIcon\">\n <i *ngIf=\"placeholderIcon\" [class]=\"'text-muted fa ' + placeholderIcon\" [class.opacity-20]=\"showLoader && image\"></i>\n <img *ngIf=\"placeholderImage\" [src]=\"placeholderImage\" [class.opacity-20]=\"showLoader && image\" class=\"h-full\" />\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
25
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: OnshoreImagePlaceholderComponent, decorators: [{
25
26
  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: [{
27
+ args: [{ selector: 'onshore-image-placeholder', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"h-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\" [style]=\"placeholderStyle\" [class.bg-gray-200]=\"placeholderIcon\" [class.p-2]=\"placeholderIcon\">\n <i *ngIf=\"placeholderIcon\" [class]=\"'text-muted fa ' + placeholderIcon\" [class.opacity-20]=\"showLoader && image\"></i>\n <img *ngIf=\"placeholderImage\" [src]=\"placeholderImage\" [class.opacity-20]=\"showLoader && image\" class=\"h-full\" />\n <i *ngIf=\"showLoader && image\" class=\"fas fa-circle-notch fa-spin fa-2x absolute\"></i>\n</div>\n" }]
28
+ }], ctorParameters: function () { return []; }, propDecorators: { placeholderIcon: [{
29
+ type: Input
30
+ }], placeholderImage: [{
28
31
  type: Input
29
32
  }], image: [{
30
33
  type: Input
@@ -35,4 +38,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImpor
35
38
  }], showLoader: [{
36
39
  type: Input
37
40
  }] } });
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtcGxhY2Vob2xkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb25zaG9yZS1mb3Jtcy9zcmMvbGliL2NvbXBvbmVudHMvaW1hZ2UtcGxhY2Vob2xkZXIvaW1hZ2UtcGxhY2Vob2xkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb25zaG9yZS1mb3Jtcy9zcmMvbGliL2NvbXBvbmVudHMvaW1hZ2UtcGxhY2Vob2xkZXIvaW1hZ2UtcGxhY2Vob2xkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQU8xRSxNQUFNLE9BQU8sZ0NBQWdDO0lBb0IzQztRQWxCZ0IsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFDekIsVUFBSyxHQUFXLEVBQUUsQ0FBQztRQUNuQixlQUFVLEdBQVcsRUFBRSxDQUFDO1FBQ3hCLHFCQUFnQixHQUFXLEVBQUUsQ0FBQztRQUM5QixlQUFVLEdBQVksSUFBSSxDQUFDO1FBRTNDLGdCQUFXLEdBQUcsS0FBSyxDQUFDO0lBWUwsQ0FBQztJQVZoQixTQUFTO1FBQ1AsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDeEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFDMUIsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztRQUN6QixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUMxQixDQUFDOzs2SEFsQlUsZ0NBQWdDO2lIQUFoQyxnQ0FBZ0MsbU5DUDdDLDhnQkFRQTsyRkREYSxnQ0FBZ0M7a0JBTDVDLFNBQVM7K0JBQ0UsMkJBQTJCLG1CQUVwQix1QkFBdUIsQ0FBQyxNQUFNOzBFQUkvQixXQUFXO3NCQUExQixLQUFLO2dCQUNVLEtBQUs7c0JBQXBCLEtBQUs7Z0JBQ1UsVUFBVTtzQkFBekIsS0FBSztnQkFDVSxnQkFBZ0I7c0JBQS9CLEtBQUs7Z0JBQ1UsVUFBVTtzQkFBekIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ29uc2hvcmUtaW1hZ2UtcGxhY2Vob2xkZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vaW1hZ2UtcGxhY2Vob2xkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgT25zaG9yZUltYWdlUGxhY2Vob2xkZXJDb21wb25lbnQge1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBwbGFjZWhvbGRlcjogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHB1YmxpYyBpbWFnZTogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHB1YmxpYyBpbWFnZVN0eWxlOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgcHVibGljIHBsYWNlaG9sZGVyU3R5bGU6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBwdWJsaWMgc2hvd0xvYWRlcjogYm9vbGVhbiA9IHRydWU7XG5cbiAgaW1hZ2VMb2FkZWQgPSBmYWxzZTtcblxuICBsb2FkUmVhZHkoKSB7XG4gICAgdGhpcy5pbWFnZUxvYWRlZCA9IHRydWU7XG4gICAgdGhpcy5zaG93TG9hZGVyID0gZmFsc2U7XG4gIH1cblxuICBhYm9ydCgpIHtcbiAgICB0aGlzLmltYWdlTG9hZGVkID0gZmFsc2U7XG4gICAgdGhpcy5zaG93TG9hZGVyID0gZmFsc2U7XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbn1cbiIsIjxkaXYgY2xhc3M9XCJ3LWZ1bGxcIiBbaGlkZGVuXT1cIiFpbWFnZUxvYWRlZCB8fCAhaW1hZ2VcIj5cbiAgPGltZyBbc3R5bGVdPVwiaW1hZ2VTdHlsZVwiIFtzcmNdPVwiaW1hZ2VcIiAobG9hZCk9XCJsb2FkUmVhZHkoKVwiIChhYm9ydCk9XCJhYm9ydCgpXCIgLz5cbjwvZGl2PlxuXG48ZGl2ICpuZ0lmPVwiIWltYWdlTG9hZGVkIHx8ICFpbWFnZVwiIGNsYXNzPVwiZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBwLTIgb25zaG9yZS1iYWNrZ3JvdW5kLWNvbG9yLWdyYXktMlwiIFtzdHlsZV09XCJwbGFjZWhvbGRlclN0eWxlXCI+XG4gIDxpIFtjbGFzc109XCIndGV4dC1tdXRlZCBmYSAnICsgcGxhY2Vob2xkZXJcIiBbY2xhc3Mub3BhY2l0eS0yMF09XCJzaG93TG9hZGVyICYmIGltYWdlXCI+PC9pPlxuICA8aSAqbmdJZj1cInNob3dMb2FkZXIgJiYgaW1hZ2VcIiBjbGFzcz1cImZhcyBmYS1jaXJjbGUtbm90Y2ggZmEtc3BpbiBmYS0yeCBhYnNvbHV0ZVwiPjwvaT5cbjwvZGl2PlxuIl19
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtcGxhY2Vob2xkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb25zaG9yZS1mb3Jtcy9zcmMvbGliL2NvbXBvbmVudHMvaW1hZ2UtcGxhY2Vob2xkZXIvaW1hZ2UtcGxhY2Vob2xkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb25zaG9yZS1mb3Jtcy9zcmMvbGliL2NvbXBvbmVudHMvaW1hZ2UtcGxhY2Vob2xkZXIvaW1hZ2UtcGxhY2Vob2xkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQU8xRSxNQUFNLE9BQU8sZ0NBQWdDO0lBcUIzQztRQW5CZ0Isb0JBQWUsR0FBVyxFQUFFLENBQUM7UUFDN0IscUJBQWdCLEdBQVcsRUFBRSxDQUFDO1FBQzlCLFVBQUssR0FBVyxFQUFFLENBQUM7UUFDbkIsZUFBVSxHQUFXLEVBQUUsQ0FBQztRQUN4QixxQkFBZ0IsR0FBVyxFQUFFLENBQUM7UUFDOUIsZUFBVSxHQUFZLElBQUksQ0FBQztRQUUzQyxnQkFBVyxHQUFHLEtBQUssQ0FBQztJQVlMLENBQUM7SUFWaEIsU0FBUztRQUNQLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO0lBQzFCLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDekIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7SUFDMUIsQ0FBQzs7NkhBbkJVLGdDQUFnQztpSEFBaEMsZ0NBQWdDLGlRQ1A3Qyw2c0JBU0E7MkZERmEsZ0NBQWdDO2tCQUw1QyxTQUFTOytCQUNFLDJCQUEyQixtQkFFcEIsdUJBQXVCLENBQUMsTUFBTTswRUFJL0IsZUFBZTtzQkFBOUIsS0FBSztnQkFDVSxnQkFBZ0I7c0JBQS9CLEtBQUs7Z0JBQ1UsS0FBSztzQkFBcEIsS0FBSztnQkFDVSxVQUFVO3NCQUF6QixLQUFLO2dCQUNVLGdCQUFnQjtzQkFBL0IsS0FBSztnQkFDVSxVQUFVO3NCQUF6QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnb25zaG9yZS1pbWFnZS1wbGFjZWhvbGRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9pbWFnZS1wbGFjZWhvbGRlci5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBPbnNob3JlSW1hZ2VQbGFjZWhvbGRlckNvbXBvbmVudCB7XG5cbiAgQElucHV0KCkgcHVibGljIHBsYWNlaG9sZGVySWNvbjogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHB1YmxpYyBwbGFjZWhvbGRlckltYWdlOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgcHVibGljIGltYWdlOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgcHVibGljIGltYWdlU3R5bGU6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBwdWJsaWMgcGxhY2Vob2xkZXJTdHlsZTogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHB1YmxpYyBzaG93TG9hZGVyOiBib29sZWFuID0gdHJ1ZTtcblxuICBpbWFnZUxvYWRlZCA9IGZhbHNlO1xuXG4gIGxvYWRSZWFkeSgpIHtcbiAgICB0aGlzLmltYWdlTG9hZGVkID0gdHJ1ZTtcbiAgICB0aGlzLnNob3dMb2FkZXIgPSBmYWxzZTtcbiAgfVxuXG4gIGFib3J0KCkge1xuICAgIHRoaXMuaW1hZ2VMb2FkZWQgPSBmYWxzZTtcbiAgICB0aGlzLnNob3dMb2FkZXIgPSBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge31cblxufVxuIiwiPGRpdiBjbGFzcz1cImgtZnVsbFwiIFtoaWRkZW5dPVwiIWltYWdlTG9hZGVkIHx8ICFpbWFnZVwiPlxuICA8aW1nIFtzdHlsZV09XCJpbWFnZVN0eWxlXCIgW3NyY109XCJpbWFnZVwiIChsb2FkKT1cImxvYWRSZWFkeSgpXCIgKGFib3J0KT1cImFib3J0KClcIiAvPlxuPC9kaXY+XG5cbjxkaXYgKm5nSWY9XCIhaW1hZ2VMb2FkZWQgfHwgIWltYWdlXCIgY2xhc3M9XCJmbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCIgW3N0eWxlXT1cInBsYWNlaG9sZGVyU3R5bGVcIiBbY2xhc3MuYmctZ3JheS0yMDBdPVwicGxhY2Vob2xkZXJJY29uXCIgW2NsYXNzLnAtMl09XCJwbGFjZWhvbGRlckljb25cIj5cbiAgPGkgKm5nSWY9XCJwbGFjZWhvbGRlckljb25cIiBbY2xhc3NdPVwiJ3RleHQtbXV0ZWQgZmEgJyArIHBsYWNlaG9sZGVySWNvblwiIFtjbGFzcy5vcGFjaXR5LTIwXT1cInNob3dMb2FkZXIgJiYgaW1hZ2VcIj48L2k+XG4gIDxpbWcgKm5nSWY9XCJwbGFjZWhvbGRlckltYWdlXCIgW3NyY109XCJwbGFjZWhvbGRlckltYWdlXCIgW2NsYXNzLm9wYWNpdHktMjBdPVwic2hvd0xvYWRlciAmJiBpbWFnZVwiIGNsYXNzPVwiaC1mdWxsXCIgLz5cbiAgPGkgKm5nSWY9XCJzaG93TG9hZGVyICYmIGltYWdlXCIgY2xhc3M9XCJmYXMgZmEtY2lyY2xlLW5vdGNoIGZhLXNwaW4gZmEtMnggYWJzb2x1dGVcIj48L2k+XG48L2Rpdj5cbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5tb2RlbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnNob3JlLWZvcm1zL3NyYy9saWIvbW9kZWxzL2Zvcm0ubW9kZWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPbnNob3JlRm9ybVRlbXBsYXRlTGF5b3V0LCBPbnNob3JlRm9ybVRlbXBsYXRlVHlwZSB9IGZyb20gJy4uL2VudW1zL2Zvcm0uZW51bXMnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBPbnNob3JlQ291bnRyeUNvZGUge1xyXG4gIGlkOiBudW1iZXI7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIGFscGhhMjogc3RyaW5nO1xyXG4gIGFscGhhMzogc3RyaW5nO1xyXG4gIGN1cnJlbmN5Pzogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE9uc2hvcmVMYW5ndWFnZUxvY2FsZSB7XHJcbiAgaWQ6IG51bWJlcjtcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgY29kZTogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE9uc2hvcmVGb3JtVGVtcGxhdGVJdGVtIHtcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgbGFiZWxTdHlsZT86IHN0cmluZztcclxuICB0eXBlPzogT25zaG9yZUZvcm1UZW1wbGF0ZVR5cGU7XHJcbiAgcmVxdWlyZWQ/OiBib29sZWFuO1xyXG4gIGxhYmVsPzogc3RyaW5nO1xyXG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xyXG4gIHRvb2x0aXA/OiBzdHJpbmc7XHJcbiAgZW5hYmxlZD86IGJvb2xlYW47XHJcbiAgbG9ja2VkPzogYm9vbGVhbjtcclxuICBsYXlvdXQ/OiBPbnNob3JlRm9ybVRlbXBsYXRlTGF5b3V0O1xyXG4gIG9wdGlvbnM/OiBPbnNob3JlRm9ybVRlbXBsYXRlT3B0aW9uc1tdIHwgdm9pZFtdO1xyXG4gIG9wdGlvbkRhdGFLZXk/OiBzdHJpbmc7XHJcbiAgZGVmYXVsdD86IGFueTtcclxuICBkZXNjcmlwdGlvbj86IHN0cmluZztcclxuICB2YWxpZGF0aW9uSXRlbXM/OiBzdHJpbmdbXTtcclxuICB2YWxpZGF0b3JzPzogYW55W107XHJcbiAgc3ViZm9ybUFycmF5PzogT25zaG9yZUZvcm1UZW1wbGF0ZUl0ZW1bXTtcclxuICBzdWJmb3JtT2JqZWN0PzogT25zaG9yZUZvcm1UZW1wbGF0ZUl0ZW1bXTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBPbnNob3JlRm9ybVRlbXBsYXRlT3B0aW9ucyB7XHJcbiAgbGFiZWw6IHN0cmluZztcclxuICB2YWx1ZTogYW55O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE9uc2hvcmVGb3JtQXV0b2NvbXBsZXRlSXRlbSB7XHJcbiAgZmlyc3RMaW5lTGFiZWw6IHN0cmluZztcclxuICBzZWNvbmRMaW5lTGFiZWw/OiBzdHJpbmc7XHJcbiAgdGhpcmRMaW5lTGFiZWw/OiBzdHJpbmc7XHJcbiAgZGF0YTogYW55O1xyXG59XHJcbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5tb2RlbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vbnNob3JlLWZvcm1zL3NyYy9saWIvbW9kZWxzL2Zvcm0ubW9kZWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPbnNob3JlRm9ybVRlbXBsYXRlTGF5b3V0LCBPbnNob3JlRm9ybVRlbXBsYXRlVHlwZSB9IGZyb20gJy4uL2VudW1zL2Zvcm0uZW51bXMnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBPbnNob3JlQ291bnRyeUNvZGUge1xyXG4gIGlkOiBudW1iZXI7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIGFscGhhMjogc3RyaW5nO1xyXG4gIGFscGhhMzogc3RyaW5nO1xyXG4gIGN1cnJlbmN5Pzogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE9uc2hvcmVMYW5ndWFnZUxvY2FsZSB7XHJcbiAgaWQ6IG51bWJlcjtcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgY29kZTogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE9uc2hvcmVGb3JtVGVtcGxhdGVJdGVtIHtcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgbGFiZWxTdHlsZT86IHN0cmluZztcclxuICB0eXBlPzogT25zaG9yZUZvcm1UZW1wbGF0ZVR5cGU7XHJcbiAgcmVxdWlyZWQ/OiBib29sZWFuO1xyXG4gIGxhYmVsPzogc3RyaW5nO1xyXG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xyXG4gIHRvb2x0aXA/OiBzdHJpbmc7XHJcbiAgZW5hYmxlZD86IGJvb2xlYW47XHJcbiAgbG9ja2VkPzogYm9vbGVhbjtcclxuICBsYXlvdXQ/OiBPbnNob3JlRm9ybVRlbXBsYXRlTGF5b3V0O1xyXG4gIG9wdGlvbnM/OiBPbnNob3JlRm9ybVRlbXBsYXRlT3B0aW9uc1tdIHwgdm9pZFtdO1xyXG4gIG9wdGlvbkRhdGFLZXk/OiBzdHJpbmc7XHJcbiAgZGVmYXVsdD86IGFueTtcclxuICBkZXNjcmlwdGlvbj86IHN0cmluZztcclxuICB2YWxpZGF0aW9uSXRlbXM/OiBzdHJpbmdbXTtcclxuICB2YWxpZGF0b3JzPzogYW55W107XHJcbiAgc3ViZm9ybUFycmF5PzogT25zaG9yZUZvcm1UZW1wbGF0ZUl0ZW1bXTtcclxuICBzdWJmb3JtT2JqZWN0PzogT25zaG9yZUZvcm1UZW1wbGF0ZUl0ZW1bXTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBPbnNob3JlRm9ybVRlbXBsYXRlT3B0aW9ucyB7XHJcbiAgbGFiZWw6IHN0cmluZztcclxuICB2YWx1ZTogYW55O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE9uc2hvcmVGb3JtQXV0b2NvbXBsZXRlSXRlbSB7XHJcbiAgZmlyc3RMaW5lTGFiZWw6IHN0cmluZztcclxuICBzZWNvbmRMaW5lTGFiZWw/OiBzdHJpbmc7XHJcbiAgdGhpcmRMaW5lTGFiZWw/OiBzdHJpbmc7XHJcbiAgZGF0YTogYW55O1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE9uc2hvcmVGb3JtSW1hZ2VTZXR0aW5ncyB7XHJcbiAgaW1hZ2VXaWR0aD86IG51bWJlcjtcclxuICBpbWFnZUhlaWdodD86IG51bWJlcjtcclxuICBjb250YWluV2l0aGluQXNwZWN0UmF0aW8/OiBib29sZWFuO1xyXG4gIGFzcGVjdFJhdGlvPzogbnVtYmVyO1xyXG4gIGltYWdlU2VsZWN0aW9uRW5hYmxlZD86IGJvb2xlYW47XHJcbiAgd2ViY2FtU2VsZWN0aW9uRW5hYmxlZD86IGJvb2xlYW47XHJcbiAgbWVkaWFTZWxlY3Rpb25FbmFibGVkPzogYm9vbGVhbjtcclxuICBkZWxldGVFbmFibGVkPzogYm9vbGVhbjtcclxuICBwbGFjZWhvbGRlckltYWdlPzogc3RyaW5nO1xyXG4gIHBsYWNlaG9sZGVySWNvbj86IHN0cmluZztcclxufVxyXG5cclxuXHJcbiJdfQ==
@@ -1,7 +1,7 @@
1
1
  export class OnshoreValidators {
2
2
  }
3
3
  OnshoreValidators.slug = (control) => {
4
- return /^[a-zA-Z0-9_.+-].{1,}/.test(control.value) ? null : { slug: true };
4
+ return /^[A-Za-z0-9\._-]{2,20}$/.test(control.value) ? null : { slug: true };
5
5
  };
6
6
  OnshoreValidators.numeric = (control) => {
7
7
  return /^[0-9]*$/.test(control.value) ? null : { numeric: true };
@@ -12,4 +12,4 @@ OnshoreValidators.email = (control) => {
12
12
  OnshoreValidators.cleanComment = (control) => {
13
13
  return /[A-Z]{5}\d{4}[A-Z]{1}/.test(control.value) ? null : { cleanComment: true };
14
14
  };
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS52YWxpZGF0b3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb25zaG9yZS1mb3Jtcy9zcmMvbGliL3ZhbGlkYXRvcnMvZm9ybS52YWxpZGF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBTyxpQkFBaUI7O0FBQ3JCLHNCQUFJLEdBQWdCLENBQUMsT0FBd0IsRUFBMkIsRUFBRTtJQUMvRSxPQUFPLHVCQUF1QixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUM7QUFDN0UsQ0FBQyxDQUFBO0FBRU0seUJBQU8sR0FBZ0IsQ0FBQyxPQUF3QixFQUEyQixFQUFFO0lBQ2xGLE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7QUFDbkUsQ0FBQyxDQUFBO0FBRU0sdUJBQUssR0FBZ0IsQ0FBQyxPQUF3QixFQUEyQixFQUFFO0lBQ2hGLE9BQU8scUNBQXFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQztBQUM1RixDQUFDLENBQUE7QUFFTSw4QkFBWSxHQUFnQixDQUFDLE9BQXdCLEVBQTJCLEVBQUU7SUFDdkYsT0FBTyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDO0FBQ3JGLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgVmFsaWRhdGlvbkVycm9ycywgVmFsaWRhdG9yRm4gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmV4cG9ydCBjbGFzcyBPbnNob3JlVmFsaWRhdG9ycyB7XG4gIHN0YXRpYyBzbHVnOiBWYWxpZGF0b3JGbiA9IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XG4gICAgcmV0dXJuIC9eW2EtekEtWjAtOV8uKy1dLnsxLH0vLnRlc3QoY29udHJvbC52YWx1ZSkgPyBudWxsIDogeyBzbHVnOiB0cnVlIH07XG4gIH1cblxuICBzdGF0aWMgbnVtZXJpYzogVmFsaWRhdG9yRm4gPSAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgIHJldHVybiAvXlswLTldKiQvLnRlc3QoY29udHJvbC52YWx1ZSkgPyBudWxsIDogeyBudW1lcmljOiB0cnVlIH07XG4gIH1cblxuICBzdGF0aWMgZW1haWw6IFZhbGlkYXRvckZuID0gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICByZXR1cm4gL14oW1xcdy1cXC5dK0AoW1xcdy1dK1xcLikrW1xcdy1dezIsNH0pPyQvLnRlc3QoY29udHJvbC52YWx1ZSkgPyBudWxsIDogeyBlbWFpbDogdHJ1ZSB9O1xuICB9XG5cbiAgc3RhdGljIGNsZWFuQ29tbWVudDogVmFsaWRhdG9yRm4gPSAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgIHJldHVybiAvW0EtWl17NX1cXGR7NH1bQS1aXXsxfS8udGVzdChjb250cm9sLnZhbHVlKSA/IG51bGwgOiB7IGNsZWFuQ29tbWVudDogdHJ1ZSB9O1xuICB9XG59XG4iXX0=
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS52YWxpZGF0b3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb25zaG9yZS1mb3Jtcy9zcmMvbGliL3ZhbGlkYXRvcnMvZm9ybS52YWxpZGF0b3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBTyxpQkFBaUI7O0FBQ3JCLHNCQUFJLEdBQWdCLENBQUMsT0FBd0IsRUFBMkIsRUFBRTtJQUMvRSxPQUFPLHlCQUF5QixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUM7QUFDL0UsQ0FBQyxDQUFBO0FBRU0seUJBQU8sR0FBZ0IsQ0FBQyxPQUF3QixFQUEyQixFQUFFO0lBQ2xGLE9BQU8sVUFBVSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7QUFDbkUsQ0FBQyxDQUFBO0FBRU0sdUJBQUssR0FBZ0IsQ0FBQyxPQUF3QixFQUEyQixFQUFFO0lBQ2hGLE9BQU8scUNBQXFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQztBQUM1RixDQUFDLENBQUE7QUFFTSw4QkFBWSxHQUFnQixDQUFDLE9BQXdCLEVBQTJCLEVBQUU7SUFDdkYsT0FBTyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDO0FBQ3JGLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgVmFsaWRhdGlvbkVycm9ycywgVmFsaWRhdG9yRm4gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmV4cG9ydCBjbGFzcyBPbnNob3JlVmFsaWRhdG9ycyB7XG4gIHN0YXRpYyBzbHVnOiBWYWxpZGF0b3JGbiA9IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XG4gICAgcmV0dXJuIC9eW0EtWmEtejAtOVxcLl8tXXsyLDIwfSQvLnRlc3QoY29udHJvbC52YWx1ZSkgPyBudWxsIDogeyBzbHVnOiB0cnVlIH07XG4gIH1cblxuICBzdGF0aWMgbnVtZXJpYzogVmFsaWRhdG9yRm4gPSAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgIHJldHVybiAvXlswLTldKiQvLnRlc3QoY29udHJvbC52YWx1ZSkgPyBudWxsIDogeyBudW1lcmljOiB0cnVlIH07XG4gIH1cblxuICBzdGF0aWMgZW1haWw6IFZhbGlkYXRvckZuID0gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgICByZXR1cm4gL14oW1xcdy1cXC5dK0AoW1xcdy1dK1xcLikrW1xcdy1dezIsNH0pPyQvLnRlc3QoY29udHJvbC52YWx1ZSkgPyBudWxsIDogeyBlbWFpbDogdHJ1ZSB9O1xuICB9XG5cbiAgc3RhdGljIGNsZWFuQ29tbWVudDogVmFsaWRhdG9yRm4gPSAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgIHJldHVybiAvW0EtWl17NX1cXGR7NH1bQS1aXXsxfS8udGVzdChjb250cm9sLnZhbHVlKSA/IG51bGwgOiB7IGNsZWFuQ29tbWVudDogdHJ1ZSB9O1xuICB9XG59XG4iXX0=
@@ -467,7 +467,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImpor
467
467
 
468
468
  class OnshoreImagePlaceholderComponent {
469
469
  constructor() {
470
- this.placeholder = '';
470
+ this.placeholderIcon = '';
471
+ this.placeholderImage = '';
471
472
  this.image = '';
472
473
  this.imageStyle = '';
473
474
  this.placeholderStyle = '';
@@ -484,11 +485,13 @@ class OnshoreImagePlaceholderComponent {
484
485
  }
485
486
  }
486
487
  OnshoreImagePlaceholderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: OnshoreImagePlaceholderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
487
- 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 });
488
+ OnshoreImagePlaceholderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: OnshoreImagePlaceholderComponent, selector: "onshore-image-placeholder", inputs: { placeholderIcon: "placeholderIcon", placeholderImage: "placeholderImage", image: "image", imageStyle: "imageStyle", placeholderStyle: "placeholderStyle", showLoader: "showLoader" }, ngImport: i0, template: "<div class=\"h-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\" [style]=\"placeholderStyle\" [class.bg-gray-200]=\"placeholderIcon\" [class.p-2]=\"placeholderIcon\">\n <i *ngIf=\"placeholderIcon\" [class]=\"'text-muted fa ' + placeholderIcon\" [class.opacity-20]=\"showLoader && image\"></i>\n <img *ngIf=\"placeholderImage\" [src]=\"placeholderImage\" [class.opacity-20]=\"showLoader && image\" class=\"h-full\" />\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 });
488
489
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: OnshoreImagePlaceholderComponent, decorators: [{
489
490
  type: Component,
490
- 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" }]
491
- }], ctorParameters: function () { return []; }, propDecorators: { placeholder: [{
491
+ args: [{ selector: 'onshore-image-placeholder', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"h-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\" [style]=\"placeholderStyle\" [class.bg-gray-200]=\"placeholderIcon\" [class.p-2]=\"placeholderIcon\">\n <i *ngIf=\"placeholderIcon\" [class]=\"'text-muted fa ' + placeholderIcon\" [class.opacity-20]=\"showLoader && image\"></i>\n <img *ngIf=\"placeholderImage\" [src]=\"placeholderImage\" [class.opacity-20]=\"showLoader && image\" class=\"h-full\" />\n <i *ngIf=\"showLoader && image\" class=\"fas fa-circle-notch fa-spin fa-2x absolute\"></i>\n</div>\n" }]
492
+ }], ctorParameters: function () { return []; }, propDecorators: { placeholderIcon: [{
493
+ type: Input
494
+ }], placeholderImage: [{
492
495
  type: Input
493
496
  }], image: [{
494
497
  type: Input
@@ -689,22 +692,24 @@ class OnshoreFormImageItemComponent {
689
692
  this.ngControl = ngControl;
690
693
  this.dialogService = dialogService;
691
694
  this.translate = translate;
692
- // Image updload params
693
- this.imageWidth = 400;
694
- this.imageHeight = 400;
695
- this.containWithinAspectRatio = false;
696
- this.aspectRatio = 1 / 1;
697
- this.disableImageSelection = false;
698
- this.disableWebcamSelection = false;
699
- this.disableMediaSelection = false;
700
- this.disableDelete = false;
701
- this.imagePlaceholder = '';
702
- this.mediaType = '';
703
695
  this.imageDeleted = new EventEmitter();
704
696
  this.imageCleared = new EventEmitter();
697
+ this.imageReady = new EventEmitter();
705
698
  this.selectFromMedia = new EventEmitter();
706
- //Output() imageSelectedFromMedia: EventEmitter<any> = new EventEmitter();
699
+ this.isLoading = new EventEmitter();
707
700
  this.OnshoreFormTemplateLayout = OnshoreFormTemplateLayout;
701
+ this.defaultImageSettings = {
702
+ imageWidth: 400,
703
+ imageHeight: 400,
704
+ containWithinAspectRatio: false,
705
+ aspectRatio: 1 / 1,
706
+ imageSelectionEnabled: true,
707
+ webcamSelectionEnabled: true,
708
+ mediaSelectionEnabled: true,
709
+ deleteEnabled: true,
710
+ placeholderImage: '',
711
+ placeholderIcon: 'fa fa-image fa-10x'
712
+ };
708
713
  this.image = '';
709
714
  this.disabled = false;
710
715
  this.webcamDialogVisible = false;
@@ -721,6 +726,7 @@ class OnshoreFormImageItemComponent {
721
726
  this.cdr.markForCheck();
722
727
  (_b = (_a = this.ngControl) === null || _a === void 0 ? void 0 : _a.control) === null || _b === void 0 ? void 0 : _b.setValue(this.image);
723
728
  (_d = (_c = this.ngControl) === null || _c === void 0 ? void 0 : _c.control) === null || _d === void 0 ? void 0 : _d.markAsDirty();
729
+ this.imageReady.emit(this.image);
724
730
  }, 500);
725
731
  }
726
732
  }
@@ -733,6 +739,7 @@ class OnshoreFormImageItemComponent {
733
739
  this.cdr.markForCheck();
734
740
  (_b = (_a = this.ngControl) === null || _a === void 0 ? void 0 : _a.control) === null || _b === void 0 ? void 0 : _b.setValue(this.image);
735
741
  (_d = (_c = this.ngControl) === null || _c === void 0 ? void 0 : _c.control) === null || _d === void 0 ? void 0 : _d.markAsDirty();
742
+ this.imageReady.emit(this.image);
736
743
  }, 500);
737
744
  }
738
745
  }
@@ -755,6 +762,7 @@ class OnshoreFormImageItemComponent {
755
762
  if (obj == null) {
756
763
  this.image = '';
757
764
  }
765
+ this.imageReady.emit(this.image);
758
766
  this.cdr.markForCheck();
759
767
  }
760
768
  registerOnChange(fn) {
@@ -783,12 +791,36 @@ class OnshoreFormImageItemComponent {
783
791
  (_b = (_a = this.ngControl) === null || _a === void 0 ? void 0 : _a.control) === null || _b === void 0 ? void 0 : _b.disable();
784
792
  this.image = null;
785
793
  }
794
+ ngOnChanges(changes) {
795
+ var _a;
796
+ const imageSettings = (_a = changes['imageSettings']) === null || _a === void 0 ? void 0 : _a.currentValue;
797
+ if (imageSettings) {
798
+ if (!imageSettings.imageWidth || !imageSettings.imageHeight) {
799
+ this.imageSettings.imageWidth = this.defaultImageSettings.imageWidth;
800
+ this.imageSettings.imageHeight = this.defaultImageSettings.imageHeight;
801
+ }
802
+ if (!imageSettings.placeholderIcon)
803
+ this.imageSettings.placeholderIcon = this.defaultImageSettings.placeholderIcon;
804
+ if (!imageSettings.aspectRatio)
805
+ this.imageSettings.aspectRatio = this.defaultImageSettings.aspectRatio;
806
+ if (!imageSettings.containWithinAspectRatio)
807
+ this.imageSettings.containWithinAspectRatio = this.defaultImageSettings.containWithinAspectRatio;
808
+ if (!imageSettings.imageSelectionEnabled)
809
+ this.imageSettings.imageSelectionEnabled = this.defaultImageSettings.imageSelectionEnabled;
810
+ if (!imageSettings.mediaSelectionEnabled)
811
+ this.imageSettings.mediaSelectionEnabled = this.defaultImageSettings.mediaSelectionEnabled;
812
+ if (!imageSettings.webcamSelectionEnabled)
813
+ this.imageSettings.webcamSelectionEnabled = this.defaultImageSettings.webcamSelectionEnabled;
814
+ if (!imageSettings.deleteEnabled)
815
+ this.imageSettings.deleteEnabled = this.defaultImageSettings.deleteEnabled;
816
+ }
817
+ }
786
818
  }
787
819
  OnshoreFormImageItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: OnshoreFormImageItemComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1$1.NgControl, optional: true, self: true }, { token: i2$3.DialogService }, { token: i3.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
788
- 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: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$2.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: OnshoreImagePlaceholderComponent, selector: "onshore-image-placeholder", inputs: ["placeholder", "image", "imageStyle", "placeholderStyle", "showLoader"] }, { kind: "component", type: OnshoreFormItemContainer, selector: "onshore-form-item-container", inputs: ["formTemplate", "ngControl"] }, { kind: "component", type: 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: 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 });
820
+ OnshoreFormImageItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: OnshoreFormImageItemComponent, selector: "onshore-form-image-item", inputs: { formTemplate: "formTemplate", imageSettings: "imageSettings" }, outputs: { imageDeleted: "imageDeleted", imageCleared: "imageCleared", imageReady: "imageReady", selectFromMedia: "selectFromMedia", isLoading: "isLoading" }, usesOnChanges: true, 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 [placeholderIcon]=\"imageSettings.placeholderIcon\"\n [placeholderImage]=\"imageSettings.placeholderImage\"\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]=\"!imageSettings.imageSelectionEnabled\"\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]=\"!imageSettings.webcamSelectionEnabled\"\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]=\"!imageSettings.mediaSelectionEnabled\"\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]=\"!imageSettings.deleteEnabled\"\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]=\"imageSettings.imageWidth\"\n [resizeToHeight]=\"imageSettings.imageHeight\"\n [containWithinAspectRatio]=\"imageSettings.containWithinAspectRatio\"\n [aspectRatio]=\"imageSettings.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: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$2.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: OnshoreImagePlaceholderComponent, selector: "onshore-image-placeholder", inputs: ["placeholderIcon", "placeholderImage", "image", "imageStyle", "placeholderStyle", "showLoader"] }, { kind: "component", type: OnshoreFormItemContainer, selector: "onshore-form-item-container", inputs: ["formTemplate", "ngControl"] }, { kind: "component", type: 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: 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 });
789
821
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: OnshoreFormImageItemComponent, decorators: [{
790
822
  type: Component,
791
- 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" }]
823
+ 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 [placeholderIcon]=\"imageSettings.placeholderIcon\"\n [placeholderImage]=\"imageSettings.placeholderImage\"\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]=\"!imageSettings.imageSelectionEnabled\"\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]=\"!imageSettings.webcamSelectionEnabled\"\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]=\"!imageSettings.mediaSelectionEnabled\"\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]=\"!imageSettings.deleteEnabled\"\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]=\"imageSettings.imageWidth\"\n [resizeToHeight]=\"imageSettings.imageHeight\"\n [containWithinAspectRatio]=\"imageSettings.containWithinAspectRatio\"\n [aspectRatio]=\"imageSettings.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" }]
792
824
  }], ctorParameters: function () {
793
825
  return [{ type: i0.ChangeDetectorRef }, { type: i1$1.NgControl, decorators: [{
794
826
  type: Self
@@ -797,32 +829,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImpor
797
829
  }] }, { type: i2$3.DialogService }, { type: i3.TranslateService }];
798
830
  }, propDecorators: { formTemplate: [{
799
831
  type: Input
800
- }], imageWidth: [{
801
- type: Input
802
- }], imageHeight: [{
803
- type: Input
804
- }], containWithinAspectRatio: [{
805
- type: Input
806
- }], aspectRatio: [{
807
- type: Input
808
- }], disableImageSelection: [{
809
- type: Input
810
- }], disableWebcamSelection: [{
811
- type: Input
812
- }], disableMediaSelection: [{
813
- type: Input
814
- }], disableDelete: [{
815
- type: Input
816
- }], imagePlaceholder: [{
817
- type: Input
818
- }], mediaType: [{
832
+ }], imageSettings: [{
819
833
  type: Input
820
834
  }], imageDeleted: [{
821
835
  type: Output
822
836
  }], imageCleared: [{
823
837
  type: Output
838
+ }], imageReady: [{
839
+ type: Output
824
840
  }], selectFromMedia: [{
825
841
  type: Output
842
+ }], isLoading: [{
843
+ type: Output
826
844
  }] } });
827
845
 
828
846
  class OnshoreFormDropdownItemComponent {
@@ -1272,7 +1290,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImpor
1272
1290
  class OnshoreValidators {
1273
1291
  }
1274
1292
  OnshoreValidators.slug = (control) => {
1275
- return /^[a-zA-Z0-9_.+-].{1,}/.test(control.value) ? null : { slug: true };
1293
+ return /^[A-Za-z0-9\._-]{2,20}$/.test(control.value) ? null : { slug: true };
1276
1294
  };
1277
1295
  OnshoreValidators.numeric = (control) => {
1278
1296
  return /^[0-9]*$/.test(control.value) ? null : { numeric: true };