@dsivd/prestations-ng 14.5.12 → 15.5.13-beta1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -26,8 +26,21 @@ A change is considered **breaking** if you have to change your code or update yo
26
26
 
27
27
  ---
28
28
 
29
+ ## [14.5.13]
30
+
31
+ ### Added
32
+
33
+ - [foehn-picture-upload.module.ts](projects/prestations-ng/src/foehn-upload/foehn-picture-upload/foehn-picture-upload.module.ts)
34
+ - [foehn-picture-upload.component.ts](projects/prestations-ng/src/foehn-upload/foehn-picture-upload/foehn-picture-upload.component.ts)
35
+ - [foehn-picture-upload.component.html](projects/prestations-ng/src/foehn-upload/foehn-picture-upload/foehn-picture-upload.component.html)
36
+ - added a picture uploader that allows the user to crop the uploaded picture
37
+ - requires `ngx-image-cropper@~5.0.0`
38
+ - for examples, see related page in the devtool (https://dsi-vd.github.io/prestations-ng/upload#foehn_picture_upload)
39
+
29
40
  ## [14.5.12]
30
41
 
42
+ ### Fixed
43
+
31
44
  - [foehn-footer.component.ts](projects/prestations-ng/src/foehn-footer/foehn-footer.component.ts)
32
45
  - Fixed "SecurityBestPracticeLink" URL
33
46
 
@@ -1,8 +1,8 @@
1
1
  (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/common/http'), require('rxjs'), require('rxjs/operators'), require('@angular/router'), require('@angular/common'), require('@angular/forms'), require('@fortawesome/free-solid-svg-icons'), require('@fortawesome/angular-fontawesome'), require('@angular/platform-browser'), require('@angular/cdk/a11y'), require('@fortawesome/free-regular-svg-icons'), require('core-js/modules/es.array.includes'), require('@angular/cdk/scrolling'), require('@angular/common/locales/fr'), require('dayjs'), require('dayjs/plugin/isToday'), require('iban'), require('dayjs/plugin/localeData')) :
3
- typeof define === 'function' && define.amd ? define('@dsivd/prestations-ng', ['exports', '@angular/core', '@angular/common/http', 'rxjs', 'rxjs/operators', '@angular/router', '@angular/common', '@angular/forms', '@fortawesome/free-solid-svg-icons', '@fortawesome/angular-fontawesome', '@angular/platform-browser', '@angular/cdk/a11y', '@fortawesome/free-regular-svg-icons', 'core-js/modules/es.array.includes', '@angular/cdk/scrolling', '@angular/common/locales/fr', 'dayjs', 'dayjs/plugin/isToday', 'iban', 'dayjs/plugin/localeData'], factory) :
4
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.dsivd = global.dsivd || {}, global.dsivd['prestations-ng'] = {}), global.ng.core, global.ng.common.http, global.rxjs, global.rxjs.operators, global.ng.router, global.ng.common, global.ng.forms, global['@fortawesome/free-solid-svg-icons'], global['@fortawesome/angular-fontawesome'], global.ng.platformBrowser, global.ng.cdk.a11y, global['@fortawesome/free-regular-svg-icons'], null, global.ng.cdk.scrolling, global.ng.common.locales.fr, global.dayjs, global['dayjs/plugin/isToday'], global.iban, global['dayjs/plugin/localeData']));
5
- }(this, (function (exports, i0, i1, rxjs, operators, i1$1, i3, i4, freeSolidSvgIcons, i1$2, i1$3, i2, freeRegularSvgIcons, es_array_includes, i3$1, localeFr, dayjs, isToday, iban, localeData) { 'use strict';
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/common/http'), require('rxjs'), require('rxjs/operators'), require('@angular/router'), require('@angular/common'), require('@angular/forms'), require('@fortawesome/free-solid-svg-icons'), require('@fortawesome/angular-fontawesome'), require('@angular/platform-browser'), require('@angular/cdk/a11y'), require('@fortawesome/free-regular-svg-icons'), require('core-js/modules/es.array.includes'), require('@angular/cdk/scrolling'), require('@angular/common/locales/fr'), require('dayjs'), require('dayjs/plugin/isToday'), require('ngx-image-cropper'), require('iban'), require('dayjs/plugin/localeData')) :
3
+ typeof define === 'function' && define.amd ? define('@dsivd/prestations-ng', ['exports', '@angular/core', '@angular/common/http', 'rxjs', 'rxjs/operators', '@angular/router', '@angular/common', '@angular/forms', '@fortawesome/free-solid-svg-icons', '@fortawesome/angular-fontawesome', '@angular/platform-browser', '@angular/cdk/a11y', '@fortawesome/free-regular-svg-icons', 'core-js/modules/es.array.includes', '@angular/cdk/scrolling', '@angular/common/locales/fr', 'dayjs', 'dayjs/plugin/isToday', 'ngx-image-cropper', 'iban', 'dayjs/plugin/localeData'], factory) :
4
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.dsivd = global.dsivd || {}, global.dsivd['prestations-ng'] = {}), global.ng.core, global.ng.common.http, global.rxjs, global.rxjs.operators, global.ng.router, global.ng.common, global.ng.forms, global['@fortawesome/free-solid-svg-icons'], global['@fortawesome/angular-fontawesome'], global.ng.platformBrowser, global.ng.cdk.a11y, global['@fortawesome/free-regular-svg-icons'], null, global.ng.cdk.scrolling, global.ng.common.locales.fr, global.dayjs, global['dayjs/plugin/isToday'], global['ngx-image-cropper'], global.iban, global['dayjs/plugin/localeData']));
5
+ }(this, (function (exports, i0, i1, rxjs, operators, i1$1, i3, i4, freeSolidSvgIcons, i1$2, i1$3, i2, freeRegularSvgIcons, es_array_includes, i3$1, localeFr, dayjs, isToday, i5, iban, localeData) { 'use strict';
6
6
 
7
7
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
8
8
 
@@ -38,6 +38,7 @@
38
38
  var localeFr__default = /*#__PURE__*/_interopDefaultLegacy(localeFr);
39
39
  var dayjs__default = /*#__PURE__*/_interopDefaultLegacy(dayjs);
40
40
  var isToday__default = /*#__PURE__*/_interopDefaultLegacy(isToday);
41
+ var i5__namespace = /*#__PURE__*/_interopNamespace(i5);
41
42
  var iban__namespace = /*#__PURE__*/_interopNamespace(iban);
42
43
  var localeData__default = /*#__PURE__*/_interopDefaultLegacy(localeData);
43
44
 
@@ -1903,7 +1904,14 @@
1903
1904
  '(fichier au format pdf), vous devez demander la prestation en étant connecté au portail sécurisé.',
1904
1905
  'use-login.text': "Cette prestation est aussi utilisable au travers de l'espace sécurisé qui vous " +
1905
1906
  "permet de pré-remplir le formulaire et de suivre l'avancement de traitement de la demande.",
1906
- 'use-login.button.text': 'Connectez-vous'
1907
+ 'use-login.button.text': 'Connectez-vous',
1908
+ 'foehn-picture-upload.choose-button-label': 'Choisissez une photo',
1909
+ 'foehn-picture-upload.loading-label': 'Chargement...',
1910
+ 'foehn-picture-upload.loading-failure-label': 'Impossible de charger la photo sélectionnée',
1911
+ 'foehn-picture-upload.validate-selection-label': 'Valider la sélection',
1912
+ 'foehn-picture-upload.cancel-selection-label': 'Annuler',
1913
+ 'foehn-picture-upload.selection-not-validated-label': 'Merci de valider votre sélection',
1914
+ 'foehn-picture-upload.delete-picture-label': 'Supprimer'
1907
1915
  };
1908
1916
 
1909
1917
  var DICTIONARY_BASE_URL = 'api/dictionary';
@@ -10927,6 +10935,206 @@
10927
10935
  return BoDocumentsWithErrors;
10928
10936
  }());
10929
10937
 
10938
+ var blobToFile = function (blobData, fileName) {
10939
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
10940
+ var blob = blobData;
10941
+ blob.name = fileName;
10942
+ return blob;
10943
+ };
10944
+ var convertBase64UrlToFile = function (croppedImageasBase64Url, filename) {
10945
+ var arr = croppedImageasBase64Url.split(',');
10946
+ var mime = arr[0].match(/:(.*?);/)[1];
10947
+ var bstr = atob(arr[1]);
10948
+ var n = bstr.length;
10949
+ var u8arr = new Uint8Array(n);
10950
+ while (n--) {
10951
+ u8arr[n] = bstr.charCodeAt(n);
10952
+ }
10953
+ if (!navigator.msSaveBlob) {
10954
+ // detect if not Edge
10955
+ return new File([u8arr], filename, { type: mime });
10956
+ }
10957
+ else {
10958
+ // Edge support the FileAPI but not the File constructor.
10959
+ return blobToFile(new Blob([u8arr], { type: mime }), filename);
10960
+ }
10961
+ };
10962
+ var FoehnPictureUploadComponent = /** @class */ (function (_super) {
10963
+ __extends(FoehnPictureUploadComponent, _super);
10964
+ function FoehnPictureUploadComponent(growlService, uploadService, dictionaryService) {
10965
+ var _this = _super.call(this) || this;
10966
+ _this.growlService = growlService;
10967
+ _this.uploadService = uploadService;
10968
+ _this.dictionaryService = dictionaryService;
10969
+ _this.baseUrl = 'api/document';
10970
+ _this.croppedPictureFilename = 'photo.png';
10971
+ _this.resizeToWidth = 300;
10972
+ _this.resizeToHeight = 0;
10973
+ _this.loading = false;
10974
+ return _this;
10975
+ }
10976
+ FoehnPictureUploadComponent.prototype.ngOnInit = function () {
10977
+ var _this = this;
10978
+ _super.prototype.ngOnInit.call(this);
10979
+ this.currentLanguageSubscription = this.dictionaryService
10980
+ .getCurrentLanguageCode()
10981
+ .pipe(operators.distinctUntilChanged())
10982
+ .subscribe(function (language) {
10983
+ _this.currentLanguage = language;
10984
+ });
10985
+ };
10986
+ FoehnPictureUploadComponent.prototype.onPictureSelection = function (imgEvent) {
10987
+ this.refreshErrors([[], true]);
10988
+ this.pictureToCrop = imgEvent;
10989
+ this.loading = true;
10990
+ };
10991
+ FoehnPictureUploadComponent.prototype.onPictureSelectionFailed = function () {
10992
+ var errors = [
10993
+ {
10994
+ name: this.name,
10995
+ code: 'LoadingFailure',
10996
+ message: this.dictionaryService.getKeySync('foehn-picture-upload.loading-failure-label')
10997
+ }
10998
+ ];
10999
+ this.refreshErrors([errors, true]);
11000
+ this.resetPictureSelection();
11001
+ };
11002
+ FoehnPictureUploadComponent.prototype.onImageCropped = function (croppedEvent) {
11003
+ this.croppedPictureAsBase64Url = croppedEvent.base64;
11004
+ };
11005
+ FoehnPictureUploadComponent.prototype.resetPictureSelection = function () {
11006
+ this.croppedPictureAsBase64Url = null;
11007
+ this.pictureToCrop = null;
11008
+ this.loading = false;
11009
+ };
11010
+ FoehnPictureUploadComponent.prototype.savePicture = function () {
11011
+ var _this = this;
11012
+ this.markAsPristine();
11013
+ var photo = convertBase64UrlToFile(this.croppedPictureAsBase64Url, this.croppedPictureFilename);
11014
+ this.uploadService
11015
+ .uploadDocuments(this.baseUrl, this.name, this.label, [photo], this.key, false, this.currentLanguage)
11016
+ .pipe(operators.filter(function (result) { return !!result; }))
11017
+ .subscribe(function (_a) {
11018
+ var documents = _a.documents, errors = _a.errors;
11019
+ _this.resetPictureSelection();
11020
+ if (!!documents.length) {
11021
+ _this.markAsDirty();
11022
+ _this.model = documents;
11023
+ _this.refreshErrors([[], true]);
11024
+ }
11025
+ else {
11026
+ _this.model = [];
11027
+ _this.refreshErrors([errors, true]);
11028
+ }
11029
+ });
11030
+ };
11031
+ FoehnPictureUploadComponent.prototype.deleteFile = function () {
11032
+ var _this = this;
11033
+ this.uploadService
11034
+ .deleteDocument(this.baseUrl, this.model[0])
11035
+ .subscribe(function () {
11036
+ _this.model = [];
11037
+ _this.resetPictureSelection();
11038
+ });
11039
+ };
11040
+ FoehnPictureUploadComponent.prototype.getDownloadUrl = function () {
11041
+ return this.uploadService.getDownloadUrl(this.baseUrl, this.model[0]);
11042
+ };
11043
+ Object.defineProperty(FoehnPictureUploadComponent.prototype, "hasPicture", {
11044
+ get: function () {
11045
+ return this.model && this.model.length && !!this.model[0].reference;
11046
+ },
11047
+ enumerable: false,
11048
+ configurable: true
11049
+ });
11050
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
11051
+ FoehnPictureUploadComponent.prototype.refreshErrors = function (results) {
11052
+ var _this = this;
11053
+ var errors = results[0];
11054
+ var isInSelectionMode = !this.hasPicture && !!this.croppedPictureAsBase64Url;
11055
+ if (isInSelectionMode) {
11056
+ var notNullError = errors.find(function (e) { return e.name === _this.name && e.code === 'NotEmpty'; });
11057
+ if (notNullError) {
11058
+ notNullError.message = this.dictionaryService.getKeySync('foehn-picture-upload.selection-not-validated-label');
11059
+ }
11060
+ }
11061
+ _super.prototype.refreshErrors.call(this, results);
11062
+ };
11063
+ return FoehnPictureUploadComponent;
11064
+ }(FoehnInputComponent));
11065
+ FoehnPictureUploadComponent.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0__namespace, type: FoehnPictureUploadComponent, deps: [{ token: GrowlBrokerService }, { token: MultiUploadService }, { token: SdkDictionaryService }], target: i0__namespace.ɵɵFactoryTarget.Component });
11066
+ FoehnPictureUploadComponent.ɵcmp = i0__namespace.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.4", type: FoehnPictureUploadComponent, selector: "foehn-picture-upload", inputs: { name: "name", key: "key", label: "label", baseUrl: "baseUrl", croppedPictureFilename: "croppedPictureFilename", resizeToWidth: "resizeToWidth", resizeToHeight: "resizeToHeight" }, providers: [
11067
+ {
11068
+ provide: FoehnInputComponent,
11069
+ useExisting: i0.forwardRef(function () { return FoehnPictureUploadComponent; }),
11070
+ multi: true
11071
+ }
11072
+ ], usesInheritance: true, ngImport: i0__namespace, template: "<div\n [attr.id]=\"buildId('Container')\"\n [class.has-danger]=\"hasErrors()\"\n [class.vd-form-group-danger]=\"hasErrors()\"\n class=\"form-group clearable-input-form-group\"\n tabindex=\"-1\"\n>\n <label\n [attr.for]=\"buildChildId()\"\n *ngIf=\"!!label\"\n [ngClass]=\"isLabelSrOnly ? 'sr-only' : labelStyleModifier\"\n >\n <span [innerHTML]=\"label\"></span>\n <span\n *ngIf=\"!required && !hideNotRequiredExtraLabel\"\n aria-hidden=\"true\"\n >\n {{ 'foehn-input.optional' | fromDictionary }}\n </span>\n </label>\n\n <foehn-validation-alerts [component]=\"this\"></foehn-validation-alerts>\n\n <small\n *ngIf=\"helpText\"\n [attr.id]=\"buildChildId() + 'Help'\"\n class=\"form-text text-secondary\"\n [innerHTML]=\"helpText\"\n ></small>\n\n <input type=\"hidden\" [name]=\"name || label\" [ngModel]=\"model\" />\n\n <ng-content></ng-content>\n\n <div *ngIf=\"hasPicture\" class=\"row\">\n <div class=\"col-md-6\">\n <img\n [id]=\"buildChildId('Picture')\"\n [attr.alt]=\"label\"\n [src]=\"getDownloadUrl()\"\n />\n </div>\n <div class=\"col-md-4\">\n <button\n type=\"button\"\n class=\"btn btn-danger w-100\"\n [attr.id]=\"buildChildId('DeleteButton')\"\n (click)=\"deleteFile()\"\n >\n {{\n 'foehn-picture-upload.delete-picture-label' | fromDictionary\n }}\n </button>\n </div>\n </div>\n\n <div *ngIf=\"!hasPicture && !croppedPictureAsBase64Url\">\n <input\n #inputFile\n type=\"file\"\n class=\"form-control-file d-none\"\n [attr.id]=\"name\"\n [attr.accept]=\"'.jpeg,.jpg,.png'\"\n [multiple]=\"false\"\n [name]=\"name\"\n (change)=\"onPictureSelection($event)\"\n />\n\n <button\n type=\"button\"\n class=\"btn btn-primary my-2\"\n [attr.id]=\"buildChildId('ChooseButton')\"\n [attr.aria-invalid]=\"hasErrorsToDisplay() || null\"\n [attr.aria-describedby]=\"buildId('ErrorsContainer')\"\n (click)=\"inputFile.click()\"\n [disabled]=\"loading\"\n >\n {{ 'foehn-picture-upload.choose-button-label' | fromDictionary }}\n </button>\n </div>\n\n <div *ngIf=\"loading\">\n {{ 'foehn-picture-upload.loading-label' | fromDictionary }}\n </div>\n\n <div *ngIf=\"!hasPicture\" class=\"row\">\n <div class=\"col-md-6\">\n <image-cropper\n [id]=\"buildChildId('Cropper')\"\n (cropperReady)=\"loading = false\"\n (imageCropped)=\"onImageCropped($event)\"\n (loadImageFailed)=\"onPictureSelectionFailed()\"\n [aspectRatio]=\"3 / 4\"\n [imageChangedEvent]=\"pictureToCrop\"\n [maintainAspectRatio]=\"true\"\n [resizeToWidth]=\"resizeToWidth\"\n [resizeToHeight]=\"resizeToHeight\"\n [onlyScaleDown]=\"true\"\n format=\"png\"\n ></image-cropper>\n </div>\n\n <div *ngIf=\"!hasPicture\" class=\"col-md-4\">\n <div class=\"row mb-3\">\n <button\n *ngIf=\"croppedPictureAsBase64Url\"\n type=\"button\"\n class=\"btn btn-primary w-100\"\n [attr.id]=\"buildChildId('SaveButton')\"\n (click)=\"savePicture()\"\n >\n {{\n 'foehn-picture-upload.validate-selection-label'\n | fromDictionary\n }}\n </button>\n </div>\n <div class=\"row\">\n <button\n *ngIf=\"croppedPictureAsBase64Url\"\n type=\"button\"\n class=\"btn btn-secondary w-100\"\n [attr.id]=\"buildChildId('CancelButton')\"\n (click)=\"resetPictureSelection()\"\n >\n {{\n 'foehn-picture-upload.cancel-selection-label'\n | fromDictionary\n }}\n </button>\n </div>\n </div>\n </div>\n</div>\n", components: [{ type: FoehnValidationAlertsComponent, selector: "foehn-validation-alerts", inputs: ["component", "shouldErrorsBeLive"] }, { type: i5__namespace.ImageCropperComponent, selector: "image-cropper", inputs: ["format", "transform", "maintainAspectRatio", "aspectRatio", "resizeToWidth", "resizeToHeight", "cropperMinWidth", "cropperMinHeight", "cropperMaxHeight", "cropperMaxWidth", "cropperStaticWidth", "cropperStaticHeight", "canvasRotation", "initialStepSize", "roundCropper", "onlyScaleDown", "imageQuality", "autoCrop", "backgroundColor", "containWithinAspectRatio", "hideResizeSquares", "cropper", "alignImage", "disabled", "imageChangedEvent", "imageURL", "imageBase64", "imageFile"], outputs: ["imageCropped", "startCropImage", "imageLoaded", "cropperReady", "loadImageFailed"] }], directives: [{ type: i3__namespace.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3__namespace.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4__namespace.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i4__namespace.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i4__namespace.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], pipes: { "fromDictionary": SdkDictionaryPipe } });
11073
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0__namespace, type: FoehnPictureUploadComponent, decorators: [{
11074
+ type: i0.Component,
11075
+ args: [{
11076
+ selector: 'foehn-picture-upload',
11077
+ templateUrl: './foehn-picture-upload.component.html',
11078
+ providers: [
11079
+ {
11080
+ provide: FoehnInputComponent,
11081
+ useExisting: i0.forwardRef(function () { return FoehnPictureUploadComponent; }),
11082
+ multi: true
11083
+ }
11084
+ ]
11085
+ }]
11086
+ }], ctorParameters: function () { return [{ type: GrowlBrokerService }, { type: MultiUploadService }, { type: SdkDictionaryService }]; }, propDecorators: { name: [{
11087
+ type: i0.Input
11088
+ }], key: [{
11089
+ type: i0.Input
11090
+ }], label: [{
11091
+ type: i0.Input
11092
+ }], baseUrl: [{
11093
+ type: i0.Input
11094
+ }], croppedPictureFilename: [{
11095
+ type: i0.Input
11096
+ }], resizeToWidth: [{
11097
+ type: i0.Input
11098
+ }], resizeToHeight: [{
11099
+ type: i0.Input
11100
+ }] } });
11101
+
11102
+ var FoehnPictureUploadModule = /** @class */ (function () {
11103
+ function FoehnPictureUploadModule() {
11104
+ }
11105
+ return FoehnPictureUploadModule;
11106
+ }());
11107
+ FoehnPictureUploadModule.ɵfac = i0__namespace.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0__namespace, type: FoehnPictureUploadModule, deps: [], target: i0__namespace.ɵɵFactoryTarget.NgModule });
11108
+ FoehnPictureUploadModule.ɵmod = i0__namespace.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0__namespace, type: FoehnPictureUploadModule, declarations: [FoehnPictureUploadComponent], imports: [i3.CommonModule,
11109
+ FoehnIconsModule,
11110
+ FoehnValidationAlertsModule,
11111
+ SdkDictionaryModule,
11112
+ i4.FormsModule,
11113
+ i5.ImageCropperModule], exports: [FoehnPictureUploadComponent] });
11114
+ FoehnPictureUploadModule.ɵinj = i0__namespace.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0__namespace, type: FoehnPictureUploadModule, imports: [[
11115
+ i3.CommonModule,
11116
+ FoehnIconsModule,
11117
+ FoehnValidationAlertsModule,
11118
+ SdkDictionaryModule,
11119
+ i4.FormsModule,
11120
+ i5.ImageCropperModule
11121
+ ]] });
11122
+ i0__namespace.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.4", ngImport: i0__namespace, type: FoehnPictureUploadModule, decorators: [{
11123
+ type: i0.NgModule,
11124
+ args: [{
11125
+ imports: [
11126
+ i3.CommonModule,
11127
+ FoehnIconsModule,
11128
+ FoehnValidationAlertsModule,
11129
+ SdkDictionaryModule,
11130
+ i4.FormsModule,
11131
+ i5.ImageCropperModule
11132
+ ],
11133
+ declarations: [FoehnPictureUploadComponent],
11134
+ exports: [FoehnPictureUploadComponent]
11135
+ }]
11136
+ }] });
11137
+
10930
11138
  var EPaymentRequest = /** @class */ (function () {
10931
11139
  function EPaymentRequest() {
10932
11140
  }
@@ -12898,6 +13106,8 @@
12898
13106
  exports.FoehnPageModalComponent = FoehnPageModalComponent;
12899
13107
  exports.FoehnPageModule = FoehnPageModule;
12900
13108
  exports.FoehnPageService = FoehnPageService;
13109
+ exports.FoehnPictureUploadComponent = FoehnPictureUploadComponent;
13110
+ exports.FoehnPictureUploadModule = FoehnPictureUploadModule;
12901
13111
  exports.FoehnRadioComponent = FoehnRadioComponent;
12902
13112
  exports.FoehnRecapSectionComponent = FoehnRecapSectionComponent;
12903
13113
  exports.FoehnRecapSectionModule = FoehnRecapSectionModule;