@posiwise/shared-components 0.0.141 → 0.0.142

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/index.d.ts CHANGED
@@ -1,11 +1,6 @@
1
1
  export * from './lib/shared-components.module';
2
2
  export * from './lib/resource-shared-components.module';
3
- export * from './lib/image-cropper/profile-image-cropper.module';
4
- export * from './lib/field-error-display/field-error-display.module';
5
- export * from './lib/field-error-display/field-error-display.component';
6
3
  export * from './lib/password-validation/password-validation.component';
7
- export * from './lib/custom-uploader/custom-uploader.component';
8
- export * from './lib/image-cropper/image-cropper.component';
9
4
  export * from './lib/pw-tabs/pw-tabs.component';
10
5
  export * from './lib/permission-tree/permission-tree.component';
11
6
  export * from './lib/input-container/input-container.component';
@@ -4,7 +4,7 @@ import { AdminService } from '@posiwise/admin-module-utils';
4
4
  import { AppBaseComponent } from '@posiwise/app-base-component';
5
5
  import { User } from '@posiwise/common-utilities';
6
6
  import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
7
- import { CustomUploaderComponent } from '../custom-uploader/custom-uploader.component';
7
+ import { CustomUploaderComponent } from '@posiwise/utils';
8
8
  import * as i0 from "@angular/core";
9
9
  export declare class DemoCardsComponent extends AppBaseComponent implements OnInit, OnChanges {
10
10
  private readonly sanitizer;
@@ -11,11 +11,10 @@ import * as i9 from "@ng-bootstrap/ng-bootstrap";
11
11
  import * as i10 from "primeng/progressspinner";
12
12
  import * as i11 from "primeng/autocomplete";
13
13
  import * as i12 from "@angular/cdk/drag-drop";
14
- import * as i13 from "./field-error-display/field-error-display.module";
15
- import * as i14 from "./image-cropper/profile-image-cropper.module";
14
+ import * as i13 from "@posiwise/utils";
16
15
  export declare class ResourceSharedComponentsModule {
17
16
  constructor();
18
17
  static ɵfac: i0.ɵɵFactoryDeclaration<ResourceSharedComponentsModule, never>;
19
- static ɵmod: i0.ɵɵNgModuleDeclaration<ResourceSharedComponentsModule, [typeof i1.NoDataComponent, typeof i2.InputContainerComponent], [typeof i3.CommonModule, typeof i4.FormsModule, typeof i4.ReactiveFormsModule, typeof i5.AppLoaderModule, typeof i6.CoreTranslocoModule, typeof i7.DirectivesModule, typeof i8.ButtonModule, typeof i9.NgbTooltipModule, typeof i10.ProgressSpinnerModule, typeof i11.AutoCompleteModule, typeof i12.DragDropModule, typeof i13.FieldErrorDisplayModule, typeof i14.ProfileImageCropperModule], [typeof i14.ProfileImageCropperModule, typeof i2.InputContainerComponent, typeof i1.NoDataComponent, typeof i8.ButtonModule, typeof i12.DragDropModule, typeof i10.ProgressSpinnerModule, typeof i11.AutoCompleteModule, typeof i13.FieldErrorDisplayModule]>;
18
+ static ɵmod: i0.ɵɵNgModuleDeclaration<ResourceSharedComponentsModule, [typeof i1.NoDataComponent, typeof i2.InputContainerComponent], [typeof i3.CommonModule, typeof i4.FormsModule, typeof i4.ReactiveFormsModule, typeof i5.AppLoaderModule, typeof i6.CoreTranslocoModule, typeof i7.DirectivesModule, typeof i8.ButtonModule, typeof i9.NgbTooltipModule, typeof i10.ProgressSpinnerModule, typeof i11.AutoCompleteModule, typeof i12.DragDropModule, typeof i13.FieldErrorDisplayModule, typeof i13.ProfileImageCropperModule, typeof i13.ResourceHeaderModule], [typeof i13.ProfileImageCropperModule, typeof i13.ResourceHeaderModule, typeof i2.InputContainerComponent, typeof i1.NoDataComponent, typeof i8.ButtonModule, typeof i12.DragDropModule, typeof i10.ProgressSpinnerModule, typeof i11.AutoCompleteModule, typeof i13.FieldErrorDisplayModule]>;
20
19
  static ɵinj: i0.ɵɵInjectorDeclaration<ResourceSharedComponentsModule>;
21
20
  }
@@ -34,7 +34,7 @@ import * as i32 from "ngx-ui-switch";
34
34
  import * as i33 from "ngx-daterangepicker-material";
35
35
  import * as i34 from "@posiwise/pipes";
36
36
  import * as i35 from "@angular/common";
37
- import * as i36 from "./field-error-display/field-error-display.module";
37
+ import * as i36 from "@posiwise/utils";
38
38
  import * as i37 from "./resource-shared-components.module";
39
39
  import * as i38 from "./demo-cards/demo-cards.module";
40
40
  export declare class SharedComponentsModule {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@posiwise/shared-components",
3
- "version": "0.0.141",
3
+ "version": "0.0.142",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "17.3.11",
6
6
  "@angular/core": "17.3.11",
@@ -1,107 +0,0 @@
1
- import { DOCUMENT } from '@angular/common';
2
- import { Component, EventEmitter, Inject, Injector, Input, Output } from '@angular/core';
3
- import { AppBaseComponent } from '@posiwise/app-base-component';
4
- import { HelperService } from '@posiwise/helper-service';
5
- import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "@ng-bootstrap/ng-bootstrap";
8
- import * as i2 from "@angular/common";
9
- import * as i3 from "primeng/button";
10
- import * as i4 from "@posiwise/directives";
11
- import * as i5 from "../image-cropper/image-cropper.component";
12
- import * as i6 from "@jsverse/transloco";
13
- export class CustomUploaderComponent extends AppBaseComponent {
14
- constructor(injector, modalService, document) {
15
- super(injector);
16
- this.modalService = modalService;
17
- this.document = document;
18
- this.saveEvent = new EventEmitter();
19
- this.aspectRatio = 'auto';
20
- this.uploadedFile = null;
21
- }
22
- deleteExistingFile() {
23
- HelperService.raiseDeletePopup().then(rep => {
24
- if (rep.value) {
25
- this.previewData = null;
26
- this.onSaveFile();
27
- }
28
- });
29
- }
30
- onSaveFile() {
31
- this.buttonBusy = true;
32
- this.saveEvent.emit({
33
- file: this.previewData?.url ? this.previewData : this.uploadedFile,
34
- name: this.controlName
35
- });
36
- }
37
- // modal image cropper
38
- onFileChange(value) {
39
- this.selectedFileName = value;
40
- }
41
- dataURLtoBlob(dataUrl) {
42
- const arr = dataUrl?.split(',');
43
- // eslint-disable-next-line @typescript-eslint/prefer-regexp-exec
44
- const mime = /^[A-Z]*[a-z]*:(.*?);[A-Z]*/.exec(arr[0])?.[1];
45
- const bStr = atob(arr[1]);
46
- let n = bStr.length;
47
- const u8arr = new Uint8Array(n);
48
- // eslint-disable-next-line no-plusplus
49
- while (n--) {
50
- u8arr[n] = bStr.charCodeAt(n);
51
- }
52
- return new Blob([u8arr], { type: mime });
53
- }
54
- onImageSelection(event) {
55
- const blob = this.dataURLtoBlob(event);
56
- const file = new File([blob], this.selectedFileName);
57
- this.uploadedFile = file;
58
- this.onSaveFile();
59
- }
60
- openModal(content) {
61
- this.modalService.open(content, { centered: true, windowClass: 'modal-holder' });
62
- }
63
- clearValues() {
64
- this.uploadedFile = null;
65
- this.selectedFileName = null;
66
- this.updateHeight();
67
- }
68
- onClose() {
69
- this.modalService.dismissAll();
70
- }
71
- updateHeight() {
72
- // wait for update card height
73
- setTimeout(() => {
74
- this.onImgChange();
75
- });
76
- }
77
- onImgChange(event) {
78
- if (event) {
79
- const target = event.target;
80
- target.src = 'assets/img/icons/imagenotavailable.png';
81
- }
82
- const el = this.document.querySelectorAll('pw-domain-config-interface,pw-domain-config-build div[matchheight="card"]');
83
- el.forEach((item) => {
84
- HelperService.matchHeights(item, 'card');
85
- });
86
- }
87
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: CustomUploaderComponent, deps: [{ token: i0.Injector }, { token: i1.NgbModal }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component }); }
88
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: CustomUploaderComponent, selector: "pw-custom-uploader", inputs: { controlName: "controlName", previewData: "previewData", aspectRatio: "aspectRatio", title: "title" }, outputs: { saveEvent: "saveEvent" }, usesInheritance: true, ngImport: i0, template: "<div class=\"card pb-2\">\n <div class=\"card-header upload-button-bar\">\n <button pButton\n type=\"button\"\n [disabled]=\"previewData?.url || uploadedFile\"\n (click)=\"openModal(content)\"\n (keydown.enter)=\"openModal(content)\"\n icon=\"pi pi-plus\"\n label=\"Choose\"></button>\n </div>\n <div class=\"card-body\">\n <!-- no files -->\n <div class=\"d-flex preview-wrapper\"\n *ngIf=\"!previewData?.url\">\n <div>\n <img src=\"assets/img/icons/nofilesfound.png\"\n (load)=\"onImgChange()\"\n class=\"mx-auto img-fluid\"\n alt=\"\" />\n </div>\n </div>\n <!-- existing images -->\n <div class=\"d-flex preview-wrapper\"\n *ngIf=\"previewData?.url\">\n <div>\n <a [href]=\"previewData?.url\"\n target=\"_blank\">\n <img [src]=\"previewData?.url\"\n alt=\"\"\n (load)=\"onImgChange()\"\n (error)=\"onImgChange($event)\"\n class=\"img-fluid\" />\n </a>\n </div>\n <div class=\"ms-3\">\n <i\n container=\"body\"\n ngbTooltip=\"Delete\"\n (click)=\"deleteExistingFile()\"\n (keydown.enter)=\"deleteExistingFile()\"\n (keydown.space)=\"deleteExistingFile()\"\n class=\"fa fa-trash delete-icon\"\n aria-hidden=\"true\"\n ></i>\n </div>\n </div>\n </div>\n</div>\n<!-- image cropper -->\n<ng-template #content\n let-modal>\n <div class=\"card m-0\">\n <div class=\"card-content\">\n <div class=\"card-title\">\n <h3 class=\"modal-title\">{{ title }}</h3>\n <button type=\"button\"\n class=\"btn-close float-end float-end\"\n aria-label=\"Close\"\n (click)=\"modal.dismiss()\">\n\n </button>\n </div>\n <div class=\"card-header\">\n <small> {{ 'User.Profile.PictureMessage' | transloco }}</small>\n <pw-image-cropper #profile\n [aspectRatio]=\"aspectRatio\"\n (fileChangeEvent)=\"onFileChange($event)\"\n (imageSelectionEvent)=\"onImageSelection($event)\"\n (closeEvent)=\"onClose()\">\n </pw-image-cropper>\n </div>\n </div>\n </div>\n</ng-template>\n", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_sub_bg: rgb(70, 136, 236);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}.upload-button-bar{background:#efefef;padding:1rem 1.25rem}.card{min-height:270px!important;max-height:550px!important;height:auto}.preview-wrapper{align-items:center;text-align:center}.preview-wrapper div{padding:1rem;flex:1 1 auto;width:25%;word-break:break-all}button[label=Choose],button[label=Choose]:hover,button[label=Choose]:enabled:active{background-color:#616161;border-color:#616161}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain"] }, { kind: "directive", type: i4.LazyImgDirective, selector: "img" }, { kind: "component", type: i5.ProfileImageCropperComponent, selector: "pw-image-cropper", inputs: ["aspectRatio", "dynamicData"], outputs: ["imageSelectionEvent", "closeEvent", "fileChangeEvent"] }, { kind: "pipe", type: i6.TranslocoPipe, name: "transloco" }] }); }
89
- }
90
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: CustomUploaderComponent, decorators: [{
91
- type: Component,
92
- args: [{ selector: 'pw-custom-uploader', template: "<div class=\"card pb-2\">\n <div class=\"card-header upload-button-bar\">\n <button pButton\n type=\"button\"\n [disabled]=\"previewData?.url || uploadedFile\"\n (click)=\"openModal(content)\"\n (keydown.enter)=\"openModal(content)\"\n icon=\"pi pi-plus\"\n label=\"Choose\"></button>\n </div>\n <div class=\"card-body\">\n <!-- no files -->\n <div class=\"d-flex preview-wrapper\"\n *ngIf=\"!previewData?.url\">\n <div>\n <img src=\"assets/img/icons/nofilesfound.png\"\n (load)=\"onImgChange()\"\n class=\"mx-auto img-fluid\"\n alt=\"\" />\n </div>\n </div>\n <!-- existing images -->\n <div class=\"d-flex preview-wrapper\"\n *ngIf=\"previewData?.url\">\n <div>\n <a [href]=\"previewData?.url\"\n target=\"_blank\">\n <img [src]=\"previewData?.url\"\n alt=\"\"\n (load)=\"onImgChange()\"\n (error)=\"onImgChange($event)\"\n class=\"img-fluid\" />\n </a>\n </div>\n <div class=\"ms-3\">\n <i\n container=\"body\"\n ngbTooltip=\"Delete\"\n (click)=\"deleteExistingFile()\"\n (keydown.enter)=\"deleteExistingFile()\"\n (keydown.space)=\"deleteExistingFile()\"\n class=\"fa fa-trash delete-icon\"\n aria-hidden=\"true\"\n ></i>\n </div>\n </div>\n </div>\n</div>\n<!-- image cropper -->\n<ng-template #content\n let-modal>\n <div class=\"card m-0\">\n <div class=\"card-content\">\n <div class=\"card-title\">\n <h3 class=\"modal-title\">{{ title }}</h3>\n <button type=\"button\"\n class=\"btn-close float-end float-end\"\n aria-label=\"Close\"\n (click)=\"modal.dismiss()\">\n\n </button>\n </div>\n <div class=\"card-header\">\n <small> {{ 'User.Profile.PictureMessage' | transloco }}</small>\n <pw-image-cropper #profile\n [aspectRatio]=\"aspectRatio\"\n (fileChangeEvent)=\"onFileChange($event)\"\n (imageSelectionEvent)=\"onImageSelection($event)\"\n (closeEvent)=\"onClose()\">\n </pw-image-cropper>\n </div>\n </div>\n </div>\n</ng-template>\n", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_sub_bg: rgb(70, 136, 236);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}.upload-button-bar{background:#efefef;padding:1rem 1.25rem}.card{min-height:270px!important;max-height:550px!important;height:auto}.preview-wrapper{align-items:center;text-align:center}.preview-wrapper div{padding:1rem;flex:1 1 auto;width:25%;word-break:break-all}button[label=Choose],button[label=Choose]:hover,button[label=Choose]:enabled:active{background-color:#616161;border-color:#616161}\n"] }]
93
- }], ctorParameters: () => [{ type: i0.Injector }, { type: i1.NgbModal }, { type: Document, decorators: [{
94
- type: Inject,
95
- args: [DOCUMENT]
96
- }] }], propDecorators: { saveEvent: [{
97
- type: Output
98
- }], controlName: [{
99
- type: Input
100
- }], previewData: [{
101
- type: Input
102
- }], aspectRatio: [{
103
- type: Input
104
- }], title: [{
105
- type: Input
106
- }] } });
107
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXVwbG9hZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2hhcmVkLWNvbXBvbmVudHMvc3JjL2xpYi9jdXN0b20tdXBsb2FkZXIvY3VzdG9tLXVwbG9hZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2hhcmVkLWNvbXBvbmVudHMvc3JjL2xpYi9jdXN0b20tdXBsb2FkZXIvY3VzdG9tLXVwbG9hZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRXpELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7Ozs7QUFPdEQsTUFBTSxPQUFPLHVCQUF3QixTQUFRLGdCQUFnQjtJQW9CekQsWUFDSSxRQUFrQixFQUNELFlBQXNCLEVBQ0osUUFBa0I7UUFFckQsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBSEMsaUJBQVksR0FBWixZQUFZLENBQVU7UUFDSixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBdEIvQyxjQUFTLEdBQWlELElBQUksWUFBWSxFQUdoRixDQUFDO1FBTUksZ0JBQVcsR0FBRyxNQUFNLENBQUM7UUFJOUIsaUJBQVksR0FBRyxJQUFJLENBQUM7SUFZcEIsQ0FBQztJQUVELGtCQUFrQjtRQUNkLGFBQWEsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUN4QyxJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDWixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztnQkFDeEIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3RCLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxVQUFVO1FBQ04sSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDdkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7WUFDaEIsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWTtZQUNsRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFdBQVc7U0FDekIsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELHNCQUFzQjtJQUV0QixZQUFZLENBQUMsS0FBSztRQUNkLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7SUFDbEMsQ0FBQztJQUVPLGFBQWEsQ0FBQyxPQUFlO1FBQ2pDLE1BQU0sR0FBRyxHQUFHLE9BQU8sRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDaEMsaUVBQWlFO1FBQ2pFLE1BQU0sSUFBSSxHQUFHLDRCQUE0QixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzVELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQ3BCLE1BQU0sS0FBSyxHQUFHLElBQUksVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2hDLHVDQUF1QztRQUN2QyxPQUFPLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDVCxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsQyxDQUFDO1FBRUQsT0FBTyxJQUFJLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELGdCQUFnQixDQUFDLEtBQUs7UUFDbEIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QyxNQUFNLElBQUksR0FBUyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsU0FBUyxDQUFDLE9BQU87UUFDYixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsQ0FBQyxDQUFDO0lBQ3JGLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFDekIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztRQUM3QixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVELE9BQU87UUFDSCxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFRCxZQUFZO1FBQ1IsOEJBQThCO1FBQzlCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDdkIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQWE7UUFDckIsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNSLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUEwQixDQUFDO1lBQ2hELE1BQU0sQ0FBQyxHQUFHLEdBQUcsd0NBQXdDLENBQUM7UUFDMUQsQ0FBQztRQUNELE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQ3JDLDJFQUEyRSxDQUM5RSxDQUFDO1FBQ0YsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQWEsRUFBRSxFQUFFO1lBQ3pCLGFBQWEsQ0FBQyxZQUFZLENBQUMsSUFBbUIsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUM1RCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7K0dBekdRLHVCQUF1QixrRUF1QnBCLFFBQVE7bUdBdkJYLHVCQUF1QixzT0NicEMseXlFQTBFQTs7NEZEN0RhLHVCQUF1QjtrQkFMbkMsU0FBUzsrQkFDSSxvQkFBb0I7OzBCQTJCekIsTUFBTTsyQkFBQyxRQUFRO3lDQXRCVixTQUFTO3NCQUFsQixNQUFNO2dCQUtFLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUcsV0FBVztzQkFBbkIsS0FBSztnQkFFRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVHLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbmplY3QsIEluamVjdG9yLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEFwcEJhc2VDb21wb25lbnQgfSBmcm9tICdAcG9zaXdpc2UvYXBwLWJhc2UtY29tcG9uZW50JztcbmltcG9ydCB7IEhlbHBlclNlcnZpY2UgfSBmcm9tICdAcG9zaXdpc2UvaGVscGVyLXNlcnZpY2UnO1xuXG5pbXBvcnQgeyBOZ2JNb2RhbCB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdwdy1jdXN0b20tdXBsb2FkZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jdXN0b20tdXBsb2FkZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2N1c3RvbS11cGxvYWRlci5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEN1c3RvbVVwbG9hZGVyQ29tcG9uZW50IGV4dGVuZHMgQXBwQmFzZUNvbXBvbmVudCB7XG4gICAgQE91dHB1dCgpIHNhdmVFdmVudDogRXZlbnRFbWl0dGVyPHsgZmlsZTogc3RyaW5nOyBuYW1lOiBzdHJpbmcgfT4gPSBuZXcgRXZlbnRFbWl0dGVyPHtcbiAgICAgICAgZmlsZTogc3RyaW5nO1xuICAgICAgICBuYW1lOiBzdHJpbmc7XG4gICAgfT4oKTtcblxuICAgIEBJbnB1dCgpIGNvbnRyb2xOYW1lOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBwcmV2aWV3RGF0YTogeyB1cmw6IHN0cmluZyB9O1xuXG4gICAgQElucHV0KCkgYXNwZWN0UmF0aW8gPSAnYXV0byc7XG5cbiAgICBASW5wdXQoKSB0aXRsZTogc3RyaW5nO1xuXG4gICAgdXBsb2FkZWRGaWxlID0gbnVsbDtcblxuICAgIHNlbGVjdGVkRmlsZU5hbWU6IHN0cmluZztcblxuICAgIGJ1dHRvbkJ1c3k6IGJvb2xlYW47XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IG1vZGFsU2VydmljZTogTmdiTW9kYWwsXG4gICAgICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgcmVhZG9ubHkgZG9jdW1lbnQ6IERvY3VtZW50XG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGluamVjdG9yKTtcbiAgICB9XG5cbiAgICBkZWxldGVFeGlzdGluZ0ZpbGUoKSB7XG4gICAgICAgIEhlbHBlclNlcnZpY2UucmFpc2VEZWxldGVQb3B1cCgpLnRoZW4ocmVwID0+IHtcbiAgICAgICAgICAgIGlmIChyZXAudmFsdWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnByZXZpZXdEYXRhID0gbnVsbDtcbiAgICAgICAgICAgICAgICB0aGlzLm9uU2F2ZUZpbGUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25TYXZlRmlsZSgpIHtcbiAgICAgICAgdGhpcy5idXR0b25CdXN5ID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zYXZlRXZlbnQuZW1pdCh7XG4gICAgICAgICAgICBmaWxlOiB0aGlzLnByZXZpZXdEYXRhPy51cmwgPyB0aGlzLnByZXZpZXdEYXRhIDogdGhpcy51cGxvYWRlZEZpbGUsXG4gICAgICAgICAgICBuYW1lOiB0aGlzLmNvbnRyb2xOYW1lXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIG1vZGFsIGltYWdlIGNyb3BwZXJcblxuICAgIG9uRmlsZUNoYW5nZSh2YWx1ZSkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkRmlsZU5hbWUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGRhdGFVUkx0b0Jsb2IoZGF0YVVybDogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IGFyciA9IGRhdGFVcmw/LnNwbGl0KCcsJyk7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvcHJlZmVyLXJlZ2V4cC1leGVjXG4gICAgICAgIGNvbnN0IG1pbWUgPSAvXltBLVpdKlthLXpdKjooLio/KTtbQS1aXSovLmV4ZWMoYXJyWzBdKT8uWzFdO1xuICAgICAgICBjb25zdCBiU3RyID0gYXRvYihhcnJbMV0pO1xuICAgICAgICBsZXQgbiA9IGJTdHIubGVuZ3RoO1xuICAgICAgICBjb25zdCB1OGFyciA9IG5ldyBVaW50OEFycmF5KG4pO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGx1c3BsdXNcbiAgICAgICAgd2hpbGUgKG4tLSkge1xuICAgICAgICAgICAgdThhcnJbbl0gPSBiU3RyLmNoYXJDb2RlQXQobik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbmV3IEJsb2IoW3U4YXJyXSwgeyB0eXBlOiBtaW1lIH0pO1xuICAgIH1cblxuICAgIG9uSW1hZ2VTZWxlY3Rpb24oZXZlbnQpIHtcbiAgICAgICAgY29uc3QgYmxvYiA9IHRoaXMuZGF0YVVSTHRvQmxvYihldmVudCk7XG4gICAgICAgIGNvbnN0IGZpbGU6IEZpbGUgPSBuZXcgRmlsZShbYmxvYl0sIHRoaXMuc2VsZWN0ZWRGaWxlTmFtZSk7XG4gICAgICAgIHRoaXMudXBsb2FkZWRGaWxlID0gZmlsZTtcbiAgICAgICAgdGhpcy5vblNhdmVGaWxlKCk7XG4gICAgfVxuXG4gICAgb3Blbk1vZGFsKGNvbnRlbnQpIHtcbiAgICAgICAgdGhpcy5tb2RhbFNlcnZpY2Uub3Blbihjb250ZW50LCB7IGNlbnRlcmVkOiB0cnVlLCB3aW5kb3dDbGFzczogJ21vZGFsLWhvbGRlcicgfSk7XG4gICAgfVxuXG4gICAgY2xlYXJWYWx1ZXMoKSB7XG4gICAgICAgIHRoaXMudXBsb2FkZWRGaWxlID0gbnVsbDtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEZpbGVOYW1lID0gbnVsbDtcbiAgICAgICAgdGhpcy51cGRhdGVIZWlnaHQoKTtcbiAgICB9XG5cbiAgICBvbkNsb3NlKCkge1xuICAgICAgICB0aGlzLm1vZGFsU2VydmljZS5kaXNtaXNzQWxsKCk7XG4gICAgfVxuXG4gICAgdXBkYXRlSGVpZ2h0KCkge1xuICAgICAgICAvLyB3YWl0IGZvciB1cGRhdGUgY2FyZCBoZWlnaHRcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm9uSW1nQ2hhbmdlKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uSW1nQ2hhbmdlKGV2ZW50PzogRXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50KSB7XG4gICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEltYWdlRWxlbWVudDtcbiAgICAgICAgICAgIHRhcmdldC5zcmMgPSAnYXNzZXRzL2ltZy9pY29ucy9pbWFnZW5vdGF2YWlsYWJsZS5wbmcnO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGVsID0gdGhpcy5kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFxuICAgICAgICAgICAgJ3B3LWRvbWFpbi1jb25maWctaW50ZXJmYWNlLHB3LWRvbWFpbi1jb25maWctYnVpbGQgZGl2W21hdGNoaGVpZ2h0PVwiY2FyZFwiXSdcbiAgICAgICAgKTtcbiAgICAgICAgZWwuZm9yRWFjaCgoaXRlbTogRWxlbWVudCkgPT4ge1xuICAgICAgICAgICAgSGVscGVyU2VydmljZS5tYXRjaEhlaWdodHMoaXRlbSBhcyBIVE1MRWxlbWVudCwgJ2NhcmQnKTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImNhcmQgcGItMlwiPlxuICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgdXBsb2FkLWJ1dHRvbi1iYXJcIj5cbiAgICA8YnV0dG9uIHBCdXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgW2Rpc2FibGVkXT1cInByZXZpZXdEYXRhPy51cmwgfHwgdXBsb2FkZWRGaWxlXCJcbiAgICAgIChjbGljayk9XCJvcGVuTW9kYWwoY29udGVudClcIlxuICAgICAgKGtleWRvd24uZW50ZXIpPVwib3Blbk1vZGFsKGNvbnRlbnQpXCJcbiAgICAgIGljb249XCJwaSBwaS1wbHVzXCJcbiAgICAgIGxhYmVsPVwiQ2hvb3NlXCI+PC9idXR0b24+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5XCI+XG4gICAgPCEtLSBubyBmaWxlcyAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IHByZXZpZXctd3JhcHBlclwiXG4gICAgICAqbmdJZj1cIiFwcmV2aWV3RGF0YT8udXJsXCI+XG4gICAgICA8ZGl2PlxuICAgICAgICA8aW1nIHNyYz1cImFzc2V0cy9pbWcvaWNvbnMvbm9maWxlc2ZvdW5kLnBuZ1wiXG4gICAgICAgICAgKGxvYWQpPVwib25JbWdDaGFuZ2UoKVwiXG4gICAgICAgICAgY2xhc3M9XCJteC1hdXRvIGltZy1mbHVpZFwiXG4gICAgICAgICAgYWx0PVwiXCIgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDwhLS0gZXhpc3RpbmcgaW1hZ2VzIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggcHJldmlldy13cmFwcGVyXCJcbiAgICAgICpuZ0lmPVwicHJldmlld0RhdGE/LnVybFwiPlxuICAgICAgPGRpdj5cbiAgICAgICAgPGEgW2hyZWZdPVwicHJldmlld0RhdGE/LnVybFwiXG4gICAgICAgICAgdGFyZ2V0PVwiX2JsYW5rXCI+XG4gICAgICAgICAgPGltZyBbc3JjXT1cInByZXZpZXdEYXRhPy51cmxcIlxuICAgICAgICAgICAgYWx0PVwiXCJcbiAgICAgICAgICAgIChsb2FkKT1cIm9uSW1nQ2hhbmdlKClcIlxuICAgICAgICAgICAgKGVycm9yKT1cIm9uSW1nQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgY2xhc3M9XCJpbWctZmx1aWRcIiAvPlxuICAgICAgICA8L2E+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtcy0zXCI+XG4gICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcj1cImJvZHlcIlxuICAgICAgICAgICAgICAgICAgICBuZ2JUb29sdGlwPVwiRGVsZXRlXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZUV4aXN0aW5nRmlsZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiZGVsZXRlRXhpc3RpbmdGaWxlKClcIlxuICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5zcGFjZSk9XCJkZWxldGVFeGlzdGluZ0ZpbGUoKVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmEgZmEtdHJhc2ggZGVsZXRlLWljb25cIlxuICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgICAgID48L2k+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbjwhLS0gaW1hZ2UgY3JvcHBlciAtLT5cbjxuZy10ZW1wbGF0ZSAjY29udGVudFxuICBsZXQtbW9kYWw+XG4gIDxkaXYgY2xhc3M9XCJjYXJkIG0tMFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWNvbnRlbnRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRpdGxlXCI+XG4gICAgICAgIDxoMyBjbGFzcz1cIm1vZGFsLXRpdGxlXCI+e3sgdGl0bGUgfX08L2gzPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzPVwiYnRuLWNsb3NlIGZsb2F0LWVuZCBmbG9hdC1lbmRcIlxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJDbG9zZVwiXG4gICAgICAgICAgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxuXG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXJcIj5cbiAgICAgICAgPHNtYWxsPiB7eyAnVXNlci5Qcm9maWxlLlBpY3R1cmVNZXNzYWdlJyB8IHRyYW5zbG9jbyB9fTwvc21hbGw+XG4gICAgICAgIDxwdy1pbWFnZS1jcm9wcGVyICNwcm9maWxlXG4gICAgICAgICAgW2FzcGVjdFJhdGlvXT1cImFzcGVjdFJhdGlvXCJcbiAgICAgICAgICAoZmlsZUNoYW5nZUV2ZW50KT1cIm9uRmlsZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAoaW1hZ2VTZWxlY3Rpb25FdmVudCk9XCJvbkltYWdlU2VsZWN0aW9uKCRldmVudClcIlxuICAgICAgICAgIChjbG9zZUV2ZW50KT1cIm9uQ2xvc2UoKVwiPlxuICAgICAgICA8L3B3LWltYWdlLWNyb3BwZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -1,16 +0,0 @@
1
- import { Component, Input } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "@angular/common";
4
- export class FieldErrorDisplayComponent {
5
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: FieldErrorDisplayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
6
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: FieldErrorDisplayComponent, selector: "pw-field-error-display", inputs: { errorMsg: "errorMsg", displayError: "displayError" }, ngImport: i0, template: "<div *ngIf=\"displayError\">\n <div class=\"text-danger\">\n {{ errorMsg }}\n </div>\n</div>\n\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
7
- }
8
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: FieldErrorDisplayComponent, decorators: [{
9
- type: Component,
10
- args: [{ selector: 'pw-field-error-display', template: "<div *ngIf=\"displayError\">\n <div class=\"text-danger\">\n {{ errorMsg }}\n </div>\n</div>\n\n" }]
11
- }], propDecorators: { errorMsg: [{
12
- type: Input
13
- }], displayError: [{
14
- type: Input
15
- }] } });
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtZXJyb3ItZGlzcGxheS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NoYXJlZC1jb21wb25lbnRzL3NyYy9saWIvZmllbGQtZXJyb3ItZGlzcGxheS9maWVsZC1lcnJvci1kaXNwbGF5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2hhcmVkLWNvbXBvbmVudHMvc3JjL2xpYi9maWVsZC1lcnJvci1kaXNwbGF5L2ZpZWxkLWVycm9yLWRpc3BsYXkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQU1qRCxNQUFNLE9BQU8sMEJBQTBCOytHQUExQiwwQkFBMEI7bUdBQTFCLDBCQUEwQiw4SENOdkMsdUdBTUE7OzRGREFhLDBCQUEwQjtrQkFKdEMsU0FBUzsrQkFDSSx3QkFBd0I7OEJBS2xDLFFBQVE7c0JBRFAsS0FBSztnQkFJTixZQUFZO3NCQURYLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncHctZmllbGQtZXJyb3ItZGlzcGxheScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ZpZWxkLWVycm9yLWRpc3BsYXkuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIEZpZWxkRXJyb3JEaXNwbGF5Q29tcG9uZW50IHtcbiAgICBASW5wdXQoKVxuICAgIGVycm9yTXNnOiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKVxuICAgIGRpc3BsYXlFcnJvcjogYm9vbGVhbjtcbn1cbiIsIjxkaXYgKm5nSWY9XCJkaXNwbGF5RXJyb3JcIj5cbiAgPGRpdiBjbGFzcz1cInRleHQtZGFuZ2VyXCI+XG4gICAge3sgZXJyb3JNc2cgfX1cbiAgPC9kaXY+XG48L2Rpdj5cblxuIl19
@@ -1,23 +0,0 @@
1
- import { CommonModule } from '@angular/common';
2
- import { NgModule } from '@angular/core';
3
- import { FieldErrorDisplayComponent } from './field-error-display.component';
4
- import * as i0 from "@angular/core";
5
- /**
6
- * Standalone module for FieldErrorDisplayComponent.
7
- * Import this lightweight module instead of SharedComponentsModule
8
- * when you only need field error display functionality.
9
- */
10
- export class FieldErrorDisplayModule {
11
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: FieldErrorDisplayModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
12
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.11", ngImport: i0, type: FieldErrorDisplayModule, declarations: [FieldErrorDisplayComponent], imports: [CommonModule], exports: [FieldErrorDisplayComponent] }); }
13
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: FieldErrorDisplayModule, imports: [CommonModule] }); }
14
- }
15
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: FieldErrorDisplayModule, decorators: [{
16
- type: NgModule,
17
- args: [{
18
- declarations: [FieldErrorDisplayComponent],
19
- imports: [CommonModule],
20
- exports: [FieldErrorDisplayComponent]
21
- }]
22
- }] });
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtZXJyb3ItZGlzcGxheS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NoYXJlZC1jb21wb25lbnRzL3NyYy9saWIvZmllbGQtZXJyb3ItZGlzcGxheS9maWVsZC1lcnJvci1kaXNwbGF5Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV6QyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7QUFFN0U7Ozs7R0FJRztBQU1ILE1BQU0sT0FBTyx1QkFBdUI7K0dBQXZCLHVCQUF1QjtnSEFBdkIsdUJBQXVCLGlCQUpqQiwwQkFBMEIsYUFDL0IsWUFBWSxhQUNaLDBCQUEwQjtnSEFFM0IsdUJBQXVCLFlBSHRCLFlBQVk7OzRGQUdiLHVCQUF1QjtrQkFMbkMsUUFBUTttQkFBQztvQkFDTixZQUFZLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQztvQkFDMUMsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN2QixPQUFPLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQztpQkFDeEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgRmllbGRFcnJvckRpc3BsYXlDb21wb25lbnQgfSBmcm9tICcuL2ZpZWxkLWVycm9yLWRpc3BsYXkuY29tcG9uZW50JztcblxuLyoqXG4gKiBTdGFuZGFsb25lIG1vZHVsZSBmb3IgRmllbGRFcnJvckRpc3BsYXlDb21wb25lbnQuXG4gKiBJbXBvcnQgdGhpcyBsaWdodHdlaWdodCBtb2R1bGUgaW5zdGVhZCBvZiBTaGFyZWRDb21wb25lbnRzTW9kdWxlXG4gKiB3aGVuIHlvdSBvbmx5IG5lZWQgZmllbGQgZXJyb3IgZGlzcGxheSBmdW5jdGlvbmFsaXR5LlxuICovXG5ATmdNb2R1bGUoe1xuICAgIGRlY2xhcmF0aW9uczogW0ZpZWxkRXJyb3JEaXNwbGF5Q29tcG9uZW50XSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgICBleHBvcnRzOiBbRmllbGRFcnJvckRpc3BsYXlDb21wb25lbnRdXG59KVxuZXhwb3J0IGNsYXNzIEZpZWxkRXJyb3JEaXNwbGF5TW9kdWxlIHt9XG4iXX0=
@@ -1,92 +0,0 @@
1
- import { ChangeDetectorRef, Component, EventEmitter, Input, Output } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "@angular/common";
4
- import * as i2 from "ngx-image-cropper";
5
- import * as i3 from "@posiwise/directives";
6
- export class ProfileImageCropperComponent {
7
- constructor(cdr) {
8
- this.cdr = cdr;
9
- this.imageChangedEvent = '';
10
- this.croppedImage = '';
11
- this.imageSelectionEvent = new EventEmitter();
12
- this.closeEvent = new EventEmitter();
13
- this.fileChangeEvent = new EventEmitter();
14
- this.aspectRatio = 'auto';
15
- this.transform = {};
16
- this.canvasRotation = 0;
17
- this.showCropper = false;
18
- }
19
- onFileChange(event) {
20
- const input = event.target;
21
- if (input.files && input.files.length > 0) {
22
- this.imageChangedEvent = event;
23
- this.fileChangeEvent.emit(input.files[0].name);
24
- }
25
- }
26
- imageCropped(event) {
27
- const reader = new FileReader();
28
- reader.onloadend = () => {
29
- this.croppedImage = reader.result;
30
- this.cdr.detectChanges();
31
- };
32
- reader.readAsDataURL(event.blob);
33
- }
34
- imageLoaded() {
35
- this.showCropper = true;
36
- }
37
- rotateLeft() {
38
- this.canvasRotation--;
39
- this.flipAfterRotate();
40
- }
41
- rotateRight() {
42
- this.canvasRotation++;
43
- this.flipAfterRotate();
44
- }
45
- flipAfterRotate() {
46
- const flippedH = this.transform.flipH;
47
- const flippedV = this.transform.flipV;
48
- this.transform = {
49
- ...this.transform,
50
- flipH: flippedV,
51
- flipV: flippedH
52
- };
53
- }
54
- flipHorizontal() {
55
- this.transform = {
56
- ...this.transform,
57
- flipH: !this.transform.flipH
58
- };
59
- }
60
- flipVertical() {
61
- this.transform = {
62
- ...this.transform,
63
- flipV: !this.transform.flipV
64
- };
65
- }
66
- saveProfilePicture() {
67
- if (this.croppedImage) {
68
- this.imageSelectionEvent.emit(this.croppedImage);
69
- this.busy = true;
70
- }
71
- }
72
- onCloseModal() {
73
- this.closeEvent.emit();
74
- }
75
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ProfileImageCropperComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
76
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: ProfileImageCropperComponent, selector: "pw-image-cropper", inputs: { aspectRatio: "aspectRatio", dynamicData: "dynamicData" }, outputs: { imageSelectionEvent: "imageSelectionEvent", closeEvent: "closeEvent", fileChangeEvent: "fileChangeEvent" }, ngImport: i0, template: "<section class=\"image-cropper\">\n <div class=\"row text-start\">\n <div class=\"col-12\">\n <div class=\"card-block pb-0\">\n <div class=\"row\">\n <div class=\"col-12\">\n <div class=\"file-upload my-2 float-start\">\n <label for=\"custom-input\">\n Upload Pic\n <input id=\"custom-input\"\n type=\"file\"\n (change)=\"onFileChange($event)\" />\n </label>\n </div>\n\n <div class=\"float-end m-2\">\n <button class=\"btn btn-primary btn-sm mx-2\"\n title=\"Rotate Left\">\n <i\n class=\"fa fa-undo-alt\"\n (click)=\"rotateLeft()\"\n (keydown.enter)=\"rotateLeft()\"\n aria-hidden=\"true\"\n ></i>\n </button>\n\n <button class=\"btn btn-primary btn-sm mx-2\"\n title=\"Rotate Right\">\n <i\n class=\"fa fa-redo-alt\"\n (click)=\"rotateRight()\"\n (keydown.enter)=\"rotateRight()\"\n aria-hidden=\"true\"\n ></i>\n </button>\n\n <button class=\"btn btn-primary btn-sm mx-2\"\n title=\"Flip Horizontal\">\n <i\n class=\"fa fa-arrows-alt-h\"\n (click)=\"flipHorizontal()\"\n (keydown.enter)=\"flipHorizontal()\"\n aria-hidden=\"true\"\n ></i>\n </button>\n <button class=\"btn btn-primary btn-sm mx-2\"\n title=\"Flip Vertical\">\n <i\n class=\"fa fa-arrows-alt-v\"\n (click)=\"flipVertical()\"\n (keydown.enter)=\"flipVertical()\"\n aria-hidden=\"true\"\n ></i>\n </button>\n </div>\n </div>\n </div>\n\n <div class=\"row\">\n <div class=\"col-8\">\n <div *ngIf=\"aspectRatio === 'auto'\">\n <image-cropper [imageChangedEvent]=\"imageChangedEvent\"\n [maintainAspectRatio]=\"true\"\n [canvasRotation]=\"canvasRotation\"\n [aspectRatio]=\"4 / 4\"\n [onlyScaleDown]=\"true\"\n [transform]=\"transform\"\n [roundCropper]=\"false\"\n alignImage=\"center\"\n outputType=\"base64\"\n (imageCropped)=\"imageCropped($event)\"\n (imageLoaded)=\"imageLoaded()\"\n imageQuality=\"100\"\n [style.display]=\"showCropper ? null : 'none'\"></image-cropper>\n </div>\n\n <div *ngIf=\"aspectRatio === 'fullLogo'\">\n <image-cropper [imageChangedEvent]=\"imageChangedEvent\"\n [maintainAspectRatio]=\"true\"\n [aspectRatio]=\"5 / 1.1\"\n [onlyScaleDown]=\"true\"\n [roundCropper]=\"false\"\n alignImage=\"center\"\n outputType=\"base64\"\n (imageCropped)=\"imageCropped($event)\"\n (imageLoaded)=\"imageLoaded()\"\n imageQuality=\"100\"\n [style.display]=\"showCropper ? null : 'none'\"></image-cropper>\n </div>\n\n <div *ngIf=\"aspectRatio === 'rectangular'\">\n <image-cropper\n [imageChangedEvent]=\"imageChangedEvent\"\n [maintainAspectRatio]=\"true\"\n [aspectRatio]=\"3 / 1\"\n [onlyScaleDown]=\"true\"\n [canvasRotation]=\"canvasRotation\"\n [transform]=\"transform\"\n [roundCropper]=\"false\"\n alignImage=\"center\"\n outputType=\"base64\"\n (imageCropped)=\"imageCropped($event)\"\n (imageLoaded)=\"imageLoaded()\"\n imageQuality=\"100\"\n [style.display]=\"showCropper ? null : 'none'\"></image-cropper>\n </div>\n\n <div *ngIf=\"aspectRatio === 'dynamic'\">\n <image-cropper\n [imageChangedEvent]=\"imageChangedEvent\"\n [maintainAspectRatio]=\"false\"\n [resizeToWidth]=\"0\"\n [cropperStaticWidth]=\"0\"\n [cropperStaticHeight]=\"0\"\n [cropperMinWidth]=\"10\"\n [cropperMinHeight]=\"10\"\n [onlyScaleDown]=\"false\"\n [canvasRotation]=\"canvasRotation\"\n [transform]=\"transform\"\n [roundCropper]=\"false\"\n alignImage=\"center\"\n outputType=\"base64\"\n imageQuality=\"100\"\n (imageCropped)=\"imageCropped($event)\"\n (imageLoaded)=\"imageLoaded()\"\n [style.display]=\"showCropper ? null : 'none'\">\n </image-cropper>\n </div>\n\n <div *ngIf=\"aspectRatio === 'custom'\">\n <image-cropper [imageChangedEvent]=\"imageChangedEvent\"\n [maintainAspectRatio]=\"true\"\n [canvasRotation]=\"canvasRotation\"\n [transform]=\"transform\"\n [aspectRatio]=\"4 / 3\"\n [onlyScaleDown]=\"true\"\n [roundCropper]=\"false\"\n alignImage=\"center\"\n outputType=\"base64\"\n (imageCropped)=\"imageCropped($event)\"\n (imageLoaded)=\"imageLoaded()\"\n imageQuality=\"100\"\n [style.display]=\"showCropper ? null : 'none'\"></image-cropper>\n </div>\n </div>\n <div *ngIf=\"croppedImage\" class=\"col-4 mt-2\">\n <img [src]=\"croppedImage\"\n class=\"cropped-image\"\n alt=\"cropped.png\"\n width=\"128\" />\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"card-footer px-3\">\n <div class=\"float-end mt-2\">\n <button type=\"button\"\n class=\"btn btn-outline-default me-2\"\n (click)=\"onCloseModal()\">\n Close\n </button>\n <button type=\"button\"\n class=\"btn btn-primary\"\n (click)=\"saveProfilePicture()\"\n [buttonBusy]=\"busy\">\n Save\n </button>\n </div>\n </div>\n</section>\n", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_sub_bg: rgb(70, 136, 236);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}.image-cropper label{background:var(--first);border-radius:5px;color:#fff;display:table;font-size:13px;font-weight:500;padding:7px}.image-cropper input[type=file]{display:none}.cropped-image{max-height:390px!important}.card-footer{background-color:transparent;left:0}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.ImageCropperComponent, selector: "image-cropper", inputs: ["imageChangedEvent", "imageURL", "imageBase64", "imageFile", "imageAltText", "cropperFrameAriaLabel", "output", "format", "transform", "maintainAspectRatio", "aspectRatio", "resetCropOnAspectRatioChange", "resizeToWidth", "resizeToHeight", "cropperMinWidth", "cropperMinHeight", "cropperMaxHeight", "cropperMaxWidth", "cropperStaticWidth", "cropperStaticHeight", "canvasRotation", "initialStepSize", "roundCropper", "onlyScaleDown", "imageQuality", "autoCrop", "backgroundColor", "containWithinAspectRatio", "hideResizeSquares", "allowMoveImage", "cropper", "alignImage", "disabled", "hidden"], outputs: ["imageCropped", "startCropImage", "imageLoaded", "cropperReady", "loadImageFailed", "transformChange"] }, { kind: "directive", type: i3.ButtonBusyDirective, selector: "[buttonBusy]", inputs: ["buttonBusy", "busyText"] }, { kind: "directive", type: i3.LazyImgDirective, selector: "img" }] }); }
77
- }
78
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ProfileImageCropperComponent, decorators: [{
79
- type: Component,
80
- args: [{ selector: 'pw-image-cropper', template: "<section class=\"image-cropper\">\n <div class=\"row text-start\">\n <div class=\"col-12\">\n <div class=\"card-block pb-0\">\n <div class=\"row\">\n <div class=\"col-12\">\n <div class=\"file-upload my-2 float-start\">\n <label for=\"custom-input\">\n Upload Pic\n <input id=\"custom-input\"\n type=\"file\"\n (change)=\"onFileChange($event)\" />\n </label>\n </div>\n\n <div class=\"float-end m-2\">\n <button class=\"btn btn-primary btn-sm mx-2\"\n title=\"Rotate Left\">\n <i\n class=\"fa fa-undo-alt\"\n (click)=\"rotateLeft()\"\n (keydown.enter)=\"rotateLeft()\"\n aria-hidden=\"true\"\n ></i>\n </button>\n\n <button class=\"btn btn-primary btn-sm mx-2\"\n title=\"Rotate Right\">\n <i\n class=\"fa fa-redo-alt\"\n (click)=\"rotateRight()\"\n (keydown.enter)=\"rotateRight()\"\n aria-hidden=\"true\"\n ></i>\n </button>\n\n <button class=\"btn btn-primary btn-sm mx-2\"\n title=\"Flip Horizontal\">\n <i\n class=\"fa fa-arrows-alt-h\"\n (click)=\"flipHorizontal()\"\n (keydown.enter)=\"flipHorizontal()\"\n aria-hidden=\"true\"\n ></i>\n </button>\n <button class=\"btn btn-primary btn-sm mx-2\"\n title=\"Flip Vertical\">\n <i\n class=\"fa fa-arrows-alt-v\"\n (click)=\"flipVertical()\"\n (keydown.enter)=\"flipVertical()\"\n aria-hidden=\"true\"\n ></i>\n </button>\n </div>\n </div>\n </div>\n\n <div class=\"row\">\n <div class=\"col-8\">\n <div *ngIf=\"aspectRatio === 'auto'\">\n <image-cropper [imageChangedEvent]=\"imageChangedEvent\"\n [maintainAspectRatio]=\"true\"\n [canvasRotation]=\"canvasRotation\"\n [aspectRatio]=\"4 / 4\"\n [onlyScaleDown]=\"true\"\n [transform]=\"transform\"\n [roundCropper]=\"false\"\n alignImage=\"center\"\n outputType=\"base64\"\n (imageCropped)=\"imageCropped($event)\"\n (imageLoaded)=\"imageLoaded()\"\n imageQuality=\"100\"\n [style.display]=\"showCropper ? null : 'none'\"></image-cropper>\n </div>\n\n <div *ngIf=\"aspectRatio === 'fullLogo'\">\n <image-cropper [imageChangedEvent]=\"imageChangedEvent\"\n [maintainAspectRatio]=\"true\"\n [aspectRatio]=\"5 / 1.1\"\n [onlyScaleDown]=\"true\"\n [roundCropper]=\"false\"\n alignImage=\"center\"\n outputType=\"base64\"\n (imageCropped)=\"imageCropped($event)\"\n (imageLoaded)=\"imageLoaded()\"\n imageQuality=\"100\"\n [style.display]=\"showCropper ? null : 'none'\"></image-cropper>\n </div>\n\n <div *ngIf=\"aspectRatio === 'rectangular'\">\n <image-cropper\n [imageChangedEvent]=\"imageChangedEvent\"\n [maintainAspectRatio]=\"true\"\n [aspectRatio]=\"3 / 1\"\n [onlyScaleDown]=\"true\"\n [canvasRotation]=\"canvasRotation\"\n [transform]=\"transform\"\n [roundCropper]=\"false\"\n alignImage=\"center\"\n outputType=\"base64\"\n (imageCropped)=\"imageCropped($event)\"\n (imageLoaded)=\"imageLoaded()\"\n imageQuality=\"100\"\n [style.display]=\"showCropper ? null : 'none'\"></image-cropper>\n </div>\n\n <div *ngIf=\"aspectRatio === 'dynamic'\">\n <image-cropper\n [imageChangedEvent]=\"imageChangedEvent\"\n [maintainAspectRatio]=\"false\"\n [resizeToWidth]=\"0\"\n [cropperStaticWidth]=\"0\"\n [cropperStaticHeight]=\"0\"\n [cropperMinWidth]=\"10\"\n [cropperMinHeight]=\"10\"\n [onlyScaleDown]=\"false\"\n [canvasRotation]=\"canvasRotation\"\n [transform]=\"transform\"\n [roundCropper]=\"false\"\n alignImage=\"center\"\n outputType=\"base64\"\n imageQuality=\"100\"\n (imageCropped)=\"imageCropped($event)\"\n (imageLoaded)=\"imageLoaded()\"\n [style.display]=\"showCropper ? null : 'none'\">\n </image-cropper>\n </div>\n\n <div *ngIf=\"aspectRatio === 'custom'\">\n <image-cropper [imageChangedEvent]=\"imageChangedEvent\"\n [maintainAspectRatio]=\"true\"\n [canvasRotation]=\"canvasRotation\"\n [transform]=\"transform\"\n [aspectRatio]=\"4 / 3\"\n [onlyScaleDown]=\"true\"\n [roundCropper]=\"false\"\n alignImage=\"center\"\n outputType=\"base64\"\n (imageCropped)=\"imageCropped($event)\"\n (imageLoaded)=\"imageLoaded()\"\n imageQuality=\"100\"\n [style.display]=\"showCropper ? null : 'none'\"></image-cropper>\n </div>\n </div>\n <div *ngIf=\"croppedImage\" class=\"col-4 mt-2\">\n <img [src]=\"croppedImage\"\n class=\"cropped-image\"\n alt=\"cropped.png\"\n width=\"128\" />\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"card-footer px-3\">\n <div class=\"float-end mt-2\">\n <button type=\"button\"\n class=\"btn btn-outline-default me-2\"\n (click)=\"onCloseModal()\">\n Close\n </button>\n <button type=\"button\"\n class=\"btn btn-primary\"\n (click)=\"saveProfilePicture()\"\n [buttonBusy]=\"busy\">\n Save\n </button>\n </div>\n </div>\n</section>\n", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_sub_bg: rgb(70, 136, 236);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}.image-cropper label{background:var(--first);border-radius:5px;color:#fff;display:table;font-size:13px;font-weight:500;padding:7px}.image-cropper input[type=file]{display:none}.cropped-image{max-height:390px!important}.card-footer{background-color:transparent;left:0}\n"] }]
81
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { imageSelectionEvent: [{
82
- type: Output
83
- }], closeEvent: [{
84
- type: Output
85
- }], fileChangeEvent: [{
86
- type: Output
87
- }], aspectRatio: [{
88
- type: Input
89
- }], dynamicData: [{
90
- type: Input
91
- }] } });
92
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtY3JvcHBlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NoYXJlZC1jb21wb25lbnRzL3NyYy9saWIvaW1hZ2UtY3JvcHBlci9pbWFnZS1jcm9wcGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2hhcmVkLWNvbXBvbmVudHMvc3JjL2xpYi9pbWFnZS1jcm9wcGVyL2ltYWdlLWNyb3BwZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFTMUYsTUFBTSxPQUFPLDRCQUE0QjtJQWlCckMsWUFBNkIsR0FBc0I7UUFBdEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFoQm5ELHNCQUFpQixHQUFtQixFQUFFLENBQUM7UUFDdkMsaUJBQVksR0FBRyxFQUFFLENBQUM7UUFFUix3QkFBbUIsR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUN2RSxlQUFVLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFDMUQsb0JBQWUsR0FBeUIsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUVwRSxnQkFBVyxHQUFHLE1BQU0sQ0FBQztRQUc5QixjQUFTLEdBQW1CLEVBQUUsQ0FBQztRQUMvQixtQkFBYyxHQUFHLENBQUMsQ0FBQztRQUNuQixnQkFBVyxHQUFHLEtBQUssQ0FBQztJQUlrQyxDQUFDO0lBRXZELFlBQVksQ0FBQyxLQUFZO1FBQ3JCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUEwQixDQUFDO1FBQy9DLElBQUksS0FBSyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN4QyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO1lBQy9CLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkQsQ0FBQztJQUNMLENBQUM7SUFFRCxZQUFZLENBQUMsS0FBd0I7UUFDakMsTUFBTSxNQUFNLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUNoQyxNQUFNLENBQUMsU0FBUyxHQUFHLEdBQUcsRUFBRTtZQUNwQixJQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQyxNQUFnQixDQUFDO1lBQzVDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDN0IsQ0FBQyxDQUFDO1FBQ0YsTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztJQUM1QixDQUFDO0lBRUQsVUFBVTtRQUNOLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFTyxlQUFlO1FBQ25CLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDO1FBQ3RDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDO1FBQ3RDLElBQUksQ0FBQyxTQUFTLEdBQUc7WUFDYixHQUFHLElBQUksQ0FBQyxTQUFTO1lBQ2pCLEtBQUssRUFBRSxRQUFRO1lBQ2YsS0FBSyxFQUFFLFFBQVE7U0FDbEIsQ0FBQztJQUNOLENBQUM7SUFFRCxjQUFjO1FBQ1YsSUFBSSxDQUFDLFNBQVMsR0FBRztZQUNiLEdBQUcsSUFBSSxDQUFDLFNBQVM7WUFDakIsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLO1NBQy9CLENBQUM7SUFDTixDQUFDO0lBRUQsWUFBWTtRQUNSLElBQUksQ0FBQyxTQUFTLEdBQUc7WUFDYixHQUFHLElBQUksQ0FBQyxTQUFTO1lBQ2pCLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSztTQUMvQixDQUFDO0lBQ04sQ0FBQztJQUVELGtCQUFrQjtRQUNkLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ2pELElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ3JCLENBQUM7SUFDTCxDQUFDO0lBRUQsWUFBWTtRQUNSLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDM0IsQ0FBQzsrR0FuRlEsNEJBQTRCO21HQUE1Qiw0QkFBNEIsbVBDVHpDLDR0TkEyS0E7OzRGRGxLYSw0QkFBNEI7a0JBTHhDLFNBQVM7K0JBQ0ksa0JBQWtCO3NGQVFsQixtQkFBbUI7c0JBQTVCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxlQUFlO3NCQUF4QixNQUFNO2dCQUVFLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBJbWFnZUNyb3BwZWRFdmVudCwgSW1hZ2VUcmFuc2Zvcm0gfSBmcm9tICduZ3gtaW1hZ2UtY3JvcHBlcic7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncHctaW1hZ2UtY3JvcHBlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ltYWdlLWNyb3BwZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2ltYWdlLWNyb3BwZXIuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBQcm9maWxlSW1hZ2VDcm9wcGVyQ29tcG9uZW50IHtcbiAgICBpbWFnZUNoYW5nZWRFdmVudDogRXZlbnQgfCBzdHJpbmcgPSAnJztcbiAgICBjcm9wcGVkSW1hZ2UgPSAnJztcblxuICAgIEBPdXRwdXQoKSBpbWFnZVNlbGVjdGlvbkV2ZW50OiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICAgIEBPdXRwdXQoKSBjbG9zZUV2ZW50OiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gICAgQE91dHB1dCgpIGZpbGVDaGFuZ2VFdmVudDogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICAgIEBJbnB1dCgpIGFzcGVjdFJhdGlvID0gJ2F1dG8nO1xuICAgIEBJbnB1dCgpIGR5bmFtaWNEYXRhO1xuXG4gICAgdHJhbnNmb3JtOiBJbWFnZVRyYW5zZm9ybSA9IHt9O1xuICAgIGNhbnZhc1JvdGF0aW9uID0gMDtcbiAgICBzaG93Q3JvcHBlciA9IGZhbHNlO1xuXG4gICAgYnVzeTogYm9vbGVhbjtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICAgIG9uRmlsZUNoYW5nZShldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICAgICAgaWYgKGlucHV0LmZpbGVzICYmIGlucHV0LmZpbGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuaW1hZ2VDaGFuZ2VkRXZlbnQgPSBldmVudDtcbiAgICAgICAgICAgIHRoaXMuZmlsZUNoYW5nZUV2ZW50LmVtaXQoaW5wdXQuZmlsZXNbMF0ubmFtZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpbWFnZUNyb3BwZWQoZXZlbnQ6IEltYWdlQ3JvcHBlZEV2ZW50KSB7XG4gICAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICAgIHJlYWRlci5vbmxvYWRlbmQgPSAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNyb3BwZWRJbWFnZSA9IHJlYWRlci5yZXN1bHQgYXMgc3RyaW5nO1xuICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9O1xuICAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChldmVudC5ibG9iKTtcbiAgICB9XG5cbiAgICBpbWFnZUxvYWRlZCgpIHtcbiAgICAgICAgdGhpcy5zaG93Q3JvcHBlciA9IHRydWU7XG4gICAgfVxuXG4gICAgcm90YXRlTGVmdCgpIHtcbiAgICAgICAgdGhpcy5jYW52YXNSb3RhdGlvbi0tO1xuICAgICAgICB0aGlzLmZsaXBBZnRlclJvdGF0ZSgpO1xuICAgIH1cblxuICAgIHJvdGF0ZVJpZ2h0KCkge1xuICAgICAgICB0aGlzLmNhbnZhc1JvdGF0aW9uKys7XG4gICAgICAgIHRoaXMuZmxpcEFmdGVyUm90YXRlKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmbGlwQWZ0ZXJSb3RhdGUoKSB7XG4gICAgICAgIGNvbnN0IGZsaXBwZWRIID0gdGhpcy50cmFuc2Zvcm0uZmxpcEg7XG4gICAgICAgIGNvbnN0IGZsaXBwZWRWID0gdGhpcy50cmFuc2Zvcm0uZmxpcFY7XG4gICAgICAgIHRoaXMudHJhbnNmb3JtID0ge1xuICAgICAgICAgICAgLi4udGhpcy50cmFuc2Zvcm0sXG4gICAgICAgICAgICBmbGlwSDogZmxpcHBlZFYsXG4gICAgICAgICAgICBmbGlwVjogZmxpcHBlZEhcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmbGlwSG9yaXpvbnRhbCgpIHtcbiAgICAgICAgdGhpcy50cmFuc2Zvcm0gPSB7XG4gICAgICAgICAgICAuLi50aGlzLnRyYW5zZm9ybSxcbiAgICAgICAgICAgIGZsaXBIOiAhdGhpcy50cmFuc2Zvcm0uZmxpcEhcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmbGlwVmVydGljYWwoKSB7XG4gICAgICAgIHRoaXMudHJhbnNmb3JtID0ge1xuICAgICAgICAgICAgLi4udGhpcy50cmFuc2Zvcm0sXG4gICAgICAgICAgICBmbGlwVjogIXRoaXMudHJhbnNmb3JtLmZsaXBWXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgc2F2ZVByb2ZpbGVQaWN0dXJlKCkge1xuICAgICAgICBpZiAodGhpcy5jcm9wcGVkSW1hZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuaW1hZ2VTZWxlY3Rpb25FdmVudC5lbWl0KHRoaXMuY3JvcHBlZEltYWdlKTtcbiAgICAgICAgICAgIHRoaXMuYnVzeSA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkNsb3NlTW9kYWwoKSB7XG4gICAgICAgIHRoaXMuY2xvc2VFdmVudC5lbWl0KCk7XG4gICAgfVxufVxuIiwiPHNlY3Rpb24gY2xhc3M9XCJpbWFnZS1jcm9wcGVyXCI+XG4gIDxkaXYgY2xhc3M9XCJyb3cgdGV4dC1zdGFydFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJsb2NrIHBiLTBcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWxlLXVwbG9hZCBteS0yIGZsb2F0LXN0YXJ0XCI+XG4gICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJjdXN0b20taW5wdXRcIj5cbiAgICAgICAgICAgICAgICBVcGxvYWQgUGljXG4gICAgICAgICAgICAgICAgPGlucHV0IGlkPVwiY3VzdG9tLWlucHV0XCJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25GaWxlQ2hhbmdlKCRldmVudClcIiAvPlxuICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbG9hdC1lbmQgbS0yXCI+XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtIG14LTJcIlxuICAgICAgICAgICAgICAgIHRpdGxlPVwiUm90YXRlIExlZnRcIj5cbiAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmYSBmYS11bmRvLWFsdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicm90YXRlTGVmdCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cInJvdGF0ZUxlZnQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9pPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbSBteC0yXCJcbiAgICAgICAgICAgICAgICB0aXRsZT1cIlJvdGF0ZSBSaWdodFwiPlxuICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZhIGZhLXJlZG8tYWx0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyb3RhdGVSaWdodCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cInJvdGF0ZVJpZ2h0KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvaT5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc20gbXgtMlwiXG4gICAgICAgICAgICAgICAgdGl0bGU9XCJGbGlwIEhvcml6b250YWxcIj5cbiAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmYSBmYS1hcnJvd3MtYWx0LWhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImZsaXBIb3Jpem9udGFsKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiZmxpcEhvcml6b250YWwoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9pPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc20gbXgtMlwiXG4gICAgICAgICAgICAgICAgdGl0bGU9XCJGbGlwIFZlcnRpY2FsXCI+XG4gICAgICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmEgZmEtYXJyb3dzLWFsdC12XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJmbGlwVmVydGljYWwoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJmbGlwVmVydGljYWwoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9pPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC04XCI+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYXNwZWN0UmF0aW8gPT09ICdhdXRvJ1wiPlxuICAgICAgICAgICAgICA8aW1hZ2UtY3JvcHBlciBbaW1hZ2VDaGFuZ2VkRXZlbnRdPVwiaW1hZ2VDaGFuZ2VkRXZlbnRcIlxuICAgICAgICAgICAgICAgIFttYWludGFpbkFzcGVjdFJhdGlvXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIFtjYW52YXNSb3RhdGlvbl09XCJjYW52YXNSb3RhdGlvblwiXG4gICAgICAgICAgICAgICAgW2FzcGVjdFJhdGlvXT1cIjQgLyA0XCJcbiAgICAgICAgICAgICAgICBbb25seVNjYWxlRG93bl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbdHJhbnNmb3JtXT1cInRyYW5zZm9ybVwiXG4gICAgICAgICAgICAgICAgW3JvdW5kQ3JvcHBlcl09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgYWxpZ25JbWFnZT1cImNlbnRlclwiXG4gICAgICAgICAgICAgICAgb3V0cHV0VHlwZT1cImJhc2U2NFwiXG4gICAgICAgICAgICAgICAgKGltYWdlQ3JvcHBlZCk9XCJpbWFnZUNyb3BwZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKGltYWdlTG9hZGVkKT1cImltYWdlTG9hZGVkKClcIlxuICAgICAgICAgICAgICAgIGltYWdlUXVhbGl0eT1cIjEwMFwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmRpc3BsYXldPVwic2hvd0Nyb3BwZXIgPyBudWxsIDogJ25vbmUnXCI+PC9pbWFnZS1jcm9wcGVyPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJhc3BlY3RSYXRpbyA9PT0gJ2Z1bGxMb2dvJ1wiPlxuICAgICAgICAgICAgICA8aW1hZ2UtY3JvcHBlciBbaW1hZ2VDaGFuZ2VkRXZlbnRdPVwiaW1hZ2VDaGFuZ2VkRXZlbnRcIlxuICAgICAgICAgICAgICAgIFttYWludGFpbkFzcGVjdFJhdGlvXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIFthc3BlY3RSYXRpb109XCI1IC8gMS4xXCJcbiAgICAgICAgICAgICAgICBbb25seVNjYWxlRG93bl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbcm91bmRDcm9wcGVyXT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICBhbGlnbkltYWdlPVwiY2VudGVyXCJcbiAgICAgICAgICAgICAgICBvdXRwdXRUeXBlPVwiYmFzZTY0XCJcbiAgICAgICAgICAgICAgICAoaW1hZ2VDcm9wcGVkKT1cImltYWdlQ3JvcHBlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoaW1hZ2VMb2FkZWQpPVwiaW1hZ2VMb2FkZWQoKVwiXG4gICAgICAgICAgICAgICAgaW1hZ2VRdWFsaXR5PVwiMTAwXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuZGlzcGxheV09XCJzaG93Q3JvcHBlciA/IG51bGwgOiAnbm9uZSdcIj48L2ltYWdlLWNyb3BwZXI+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImFzcGVjdFJhdGlvID09PSAncmVjdGFuZ3VsYXInXCI+XG4gICAgICAgICAgICAgIDxpbWFnZS1jcm9wcGVyXG4gICAgICAgICAgICAgICAgW2ltYWdlQ2hhbmdlZEV2ZW50XT1cImltYWdlQ2hhbmdlZEV2ZW50XCJcbiAgICAgICAgICAgICAgICBbbWFpbnRhaW5Bc3BlY3RSYXRpb109XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbYXNwZWN0UmF0aW9dPVwiMyAvIDFcIlxuICAgICAgICAgICAgICAgIFtvbmx5U2NhbGVEb3duXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIFtjYW52YXNSb3RhdGlvbl09XCJjYW52YXNSb3RhdGlvblwiXG4gICAgICAgICAgICAgICAgW3RyYW5zZm9ybV09XCJ0cmFuc2Zvcm1cIlxuICAgICAgICAgICAgICAgIFtyb3VuZENyb3BwZXJdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgIGFsaWduSW1hZ2U9XCJjZW50ZXJcIlxuICAgICAgICAgICAgICAgIG91dHB1dFR5cGU9XCJiYXNlNjRcIlxuICAgICAgICAgICAgICAgIChpbWFnZUNyb3BwZWQpPVwiaW1hZ2VDcm9wcGVkKCRldmVudClcIlxuICAgICAgICAgICAgICAgIChpbWFnZUxvYWRlZCk9XCJpbWFnZUxvYWRlZCgpXCJcbiAgICAgICAgICAgICAgICBpbWFnZVF1YWxpdHk9XCIxMDBcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5kaXNwbGF5XT1cInNob3dDcm9wcGVyID8gbnVsbCA6ICdub25lJ1wiPjwvaW1hZ2UtY3JvcHBlcj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYXNwZWN0UmF0aW8gPT09ICdkeW5hbWljJ1wiPlxuICAgICAgICAgICAgICA8aW1hZ2UtY3JvcHBlclxuICAgICAgICAgICAgICBbaW1hZ2VDaGFuZ2VkRXZlbnRdPVwiaW1hZ2VDaGFuZ2VkRXZlbnRcIlxuICAgICAgICAgICAgICBbbWFpbnRhaW5Bc3BlY3RSYXRpb109XCJmYWxzZVwiXG4gICAgICAgICAgICAgIFtyZXNpemVUb1dpZHRoXT1cIjBcIlxuICAgICAgICAgICAgICBbY3JvcHBlclN0YXRpY1dpZHRoXT1cIjBcIlxuICAgICAgICAgICAgICBbY3JvcHBlclN0YXRpY0hlaWdodF09XCIwXCJcbiAgICAgICAgICAgICAgW2Nyb3BwZXJNaW5XaWR0aF09XCIxMFwiXG4gICAgICAgICAgICAgIFtjcm9wcGVyTWluSGVpZ2h0XT1cIjEwXCJcbiAgICAgICAgICAgICAgW29ubHlTY2FsZURvd25dPVwiZmFsc2VcIlxuICAgICAgICAgICAgICBbY2FudmFzUm90YXRpb25dPVwiY2FudmFzUm90YXRpb25cIlxuICAgICAgICAgICAgICBbdHJhbnNmb3JtXT1cInRyYW5zZm9ybVwiXG4gICAgICAgICAgICAgIFtyb3VuZENyb3BwZXJdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICBhbGlnbkltYWdlPVwiY2VudGVyXCJcbiAgICAgICAgICAgICAgb3V0cHV0VHlwZT1cImJhc2U2NFwiXG4gICAgICAgICAgICAgIGltYWdlUXVhbGl0eT1cIjEwMFwiXG4gICAgICAgICAgICAgIChpbWFnZUNyb3BwZWQpPVwiaW1hZ2VDcm9wcGVkKCRldmVudClcIlxuICAgICAgICAgICAgICAoaW1hZ2VMb2FkZWQpPVwiaW1hZ2VMb2FkZWQoKVwiXG4gICAgICAgICAgICAgIFtzdHlsZS5kaXNwbGF5XT1cInNob3dDcm9wcGVyID8gbnVsbCA6ICdub25lJ1wiPlxuICAgICAgICAgICAgICA8L2ltYWdlLWNyb3BwZXI+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImFzcGVjdFJhdGlvID09PSAnY3VzdG9tJ1wiPlxuICAgICAgICAgICAgICA8aW1hZ2UtY3JvcHBlciBbaW1hZ2VDaGFuZ2VkRXZlbnRdPVwiaW1hZ2VDaGFuZ2VkRXZlbnRcIlxuICAgICAgICAgICAgICAgIFttYWludGFpbkFzcGVjdFJhdGlvXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIFtjYW52YXNSb3RhdGlvbl09XCJjYW52YXNSb3RhdGlvblwiXG4gICAgICAgICAgICAgICAgW3RyYW5zZm9ybV09XCJ0cmFuc2Zvcm1cIlxuICAgICAgICAgICAgICAgIFthc3BlY3RSYXRpb109XCI0IC8gM1wiXG4gICAgICAgICAgICAgICAgW29ubHlTY2FsZURvd25dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW3JvdW5kQ3JvcHBlcl09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgYWxpZ25JbWFnZT1cImNlbnRlclwiXG4gICAgICAgICAgICAgICAgb3V0cHV0VHlwZT1cImJhc2U2NFwiXG4gICAgICAgICAgICAgICAgKGltYWdlQ3JvcHBlZCk9XCJpbWFnZUNyb3BwZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKGltYWdlTG9hZGVkKT1cImltYWdlTG9hZGVkKClcIlxuICAgICAgICAgICAgICAgIGltYWdlUXVhbGl0eT1cIjEwMFwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmRpc3BsYXldPVwic2hvd0Nyb3BwZXIgPyBudWxsIDogJ25vbmUnXCI+PC9pbWFnZS1jcm9wcGVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cImNyb3BwZWRJbWFnZVwiIGNsYXNzPVwiY29sLTQgbXQtMlwiPlxuICAgICAgICAgICAgPGltZyBbc3JjXT1cImNyb3BwZWRJbWFnZVwiXG4gICAgICAgICAgICBjbGFzcz1cImNyb3BwZWQtaW1hZ2VcIlxuICAgICAgICAgICAgICBhbHQ9XCJjcm9wcGVkLnBuZ1wiXG4gICAgICAgICAgICAgIHdpZHRoPVwiMTI4XCIgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJjYXJkLWZvb3RlciBweC0zXCI+XG4gICAgPGRpdiBjbGFzcz1cImZsb2F0LWVuZCBtdC0yXCI+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1kZWZhdWx0IG1lLTJcIlxuICAgICAgICAoY2xpY2spPVwib25DbG9zZU1vZGFsKClcIj5cbiAgICAgICAgQ2xvc2VcbiAgICAgIDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIlxuICAgICAgICAoY2xpY2spPVwic2F2ZVByb2ZpbGVQaWN0dXJlKClcIlxuICAgICAgICBbYnV0dG9uQnVzeV09XCJidXN5XCI+XG4gICAgICAgIFNhdmVcbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvc2VjdGlvbj5cbiJdfQ==
@@ -1,45 +0,0 @@
1
- import { CommonModule } from '@angular/common';
2
- import { NgModule } from '@angular/core';
3
- import { CoreTranslocoModule } from '@posiwise/core-transloco';
4
- import { DirectivesModule } from '@posiwise/directives';
5
- import { ImageCropperModule } from 'ngx-image-cropper';
6
- import { ButtonModule } from 'primeng/button';
7
- import { CustomUploaderComponent } from '../custom-uploader/custom-uploader.component';
8
- import { ProfileImageCropperComponent } from './image-cropper.component';
9
- import * as i0 from "@angular/core";
10
- /**
11
- * Lightweight module for pw-image-cropper component
12
- *
13
- * Minimal dependencies - only CommonModule, ImageCropperModule, DirectivesModule
14
- * Use this instead of ResourceSharedComponentsModule when you only need image cropping
15
- */
16
- export class ProfileImageCropperModule {
17
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ProfileImageCropperModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
18
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.11", ngImport: i0, type: ProfileImageCropperModule, declarations: [ProfileImageCropperComponent, CustomUploaderComponent], imports: [CommonModule,
19
- CoreTranslocoModule,
20
- ButtonModule,
21
- ImageCropperModule, // for <image-cropper>
22
- DirectivesModule // for [buttonBusy] directive
23
- ], exports: [ProfileImageCropperComponent, CustomUploaderComponent] }); }
24
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ProfileImageCropperModule, imports: [CommonModule,
25
- CoreTranslocoModule,
26
- ButtonModule,
27
- ImageCropperModule, // for <image-cropper>
28
- DirectivesModule // for [buttonBusy] directive
29
- ] }); }
30
- }
31
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: ProfileImageCropperModule, decorators: [{
32
- type: NgModule,
33
- args: [{
34
- declarations: [ProfileImageCropperComponent, CustomUploaderComponent],
35
- imports: [
36
- CommonModule,
37
- CoreTranslocoModule,
38
- ButtonModule,
39
- ImageCropperModule, // for <image-cropper>
40
- DirectivesModule // for [buttonBusy] directive
41
- ],
42
- exports: [ProfileImageCropperComponent, CustomUploaderComponent]
43
- }]
44
- }] });
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS1pbWFnZS1jcm9wcGVyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc2hhcmVkLWNvbXBvbmVudHMvc3JjL2xpYi9pbWFnZS1jcm9wcGVyL3Byb2ZpbGUtaW1hZ2UtY3JvcHBlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekMsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFeEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTlDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBRXZGLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDJCQUEyQixDQUFDOztBQUV6RTs7Ozs7R0FLRztBQVlILE1BQU0sT0FBTyx5QkFBeUI7K0dBQXpCLHlCQUF5QjtnSEFBekIseUJBQXlCLGlCQVZuQiw0QkFBNEIsRUFBRSx1QkFBdUIsYUFFaEUsWUFBWTtZQUNaLG1CQUFtQjtZQUNuQixZQUFZO1lBQ1osa0JBQWtCLEVBQUUsc0JBQXNCO1lBQzFDLGdCQUFnQixDQUFDLDZCQUE2QjtxQkFFeEMsNEJBQTRCLEVBQUUsdUJBQXVCO2dIQUV0RCx5QkFBeUIsWUFSOUIsWUFBWTtZQUNaLG1CQUFtQjtZQUNuQixZQUFZO1lBQ1osa0JBQWtCLEVBQUUsc0JBQXNCO1lBQzFDLGdCQUFnQixDQUFDLDZCQUE2Qjs7OzRGQUl6Qyx5QkFBeUI7a0JBWHJDLFFBQVE7bUJBQUM7b0JBQ04sWUFBWSxFQUFFLENBQUMsNEJBQTRCLEVBQUUsdUJBQXVCLENBQUM7b0JBQ3JFLE9BQU8sRUFBRTt3QkFDTCxZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIsWUFBWTt3QkFDWixrQkFBa0IsRUFBRSxzQkFBc0I7d0JBQzFDLGdCQUFnQixDQUFDLDZCQUE2QjtxQkFDakQ7b0JBQ0QsT0FBTyxFQUFFLENBQUMsNEJBQTRCLEVBQUUsdUJBQXVCLENBQUM7aUJBQ25FIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IENvcmVUcmFuc2xvY29Nb2R1bGUgfSBmcm9tICdAcG9zaXdpc2UvY29yZS10cmFuc2xvY28nO1xuaW1wb3J0IHsgRGlyZWN0aXZlc01vZHVsZSB9IGZyb20gJ0Bwb3Npd2lzZS9kaXJlY3RpdmVzJztcblxuaW1wb3J0IHsgSW1hZ2VDcm9wcGVyTW9kdWxlIH0gZnJvbSAnbmd4LWltYWdlLWNyb3BwZXInO1xuaW1wb3J0IHsgQnV0dG9uTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9idXR0b24nO1xuXG5pbXBvcnQgeyBDdXN0b21VcGxvYWRlckNvbXBvbmVudCB9IGZyb20gJy4uL2N1c3RvbS11cGxvYWRlci9jdXN0b20tdXBsb2FkZXIuY29tcG9uZW50JztcblxuaW1wb3J0IHsgUHJvZmlsZUltYWdlQ3JvcHBlckNvbXBvbmVudCB9IGZyb20gJy4vaW1hZ2UtY3JvcHBlci5jb21wb25lbnQnO1xuXG4vKipcbiAqIExpZ2h0d2VpZ2h0IG1vZHVsZSBmb3IgcHctaW1hZ2UtY3JvcHBlciBjb21wb25lbnRcbiAqXG4gKiBNaW5pbWFsIGRlcGVuZGVuY2llcyAtIG9ubHkgQ29tbW9uTW9kdWxlLCBJbWFnZUNyb3BwZXJNb2R1bGUsIERpcmVjdGl2ZXNNb2R1bGVcbiAqIFVzZSB0aGlzIGluc3RlYWQgb2YgUmVzb3VyY2VTaGFyZWRDb21wb25lbnRzTW9kdWxlIHdoZW4geW91IG9ubHkgbmVlZCBpbWFnZSBjcm9wcGluZ1xuICovXG5ATmdNb2R1bGUoe1xuICAgIGRlY2xhcmF0aW9uczogW1Byb2ZpbGVJbWFnZUNyb3BwZXJDb21wb25lbnQsIEN1c3RvbVVwbG9hZGVyQ29tcG9uZW50XSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgQ29yZVRyYW5zbG9jb01vZHVsZSxcbiAgICAgICAgQnV0dG9uTW9kdWxlLFxuICAgICAgICBJbWFnZUNyb3BwZXJNb2R1bGUsIC8vIGZvciA8aW1hZ2UtY3JvcHBlcj5cbiAgICAgICAgRGlyZWN0aXZlc01vZHVsZSAvLyBmb3IgW2J1dHRvbkJ1c3ldIGRpcmVjdGl2ZVxuICAgIF0sXG4gICAgZXhwb3J0czogW1Byb2ZpbGVJbWFnZUNyb3BwZXJDb21wb25lbnQsIEN1c3RvbVVwbG9hZGVyQ29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBQcm9maWxlSW1hZ2VDcm9wcGVyTW9kdWxlIHt9XG4iXX0=
@@ -1,34 +0,0 @@
1
- import { EventEmitter, Injector } from '@angular/core';
2
- import { AppBaseComponent } from '@posiwise/app-base-component';
3
- import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
4
- import * as i0 from "@angular/core";
5
- export declare class CustomUploaderComponent extends AppBaseComponent {
6
- private readonly modalService;
7
- private readonly document;
8
- saveEvent: EventEmitter<{
9
- file: string;
10
- name: string;
11
- }>;
12
- controlName: string;
13
- previewData: {
14
- url: string;
15
- };
16
- aspectRatio: string;
17
- title: string;
18
- uploadedFile: any;
19
- selectedFileName: string;
20
- buttonBusy: boolean;
21
- constructor(injector: Injector, modalService: NgbModal, document: Document);
22
- deleteExistingFile(): void;
23
- onSaveFile(): void;
24
- onFileChange(value: any): void;
25
- private dataURLtoBlob;
26
- onImageSelection(event: any): void;
27
- openModal(content: any): void;
28
- clearValues(): void;
29
- onClose(): void;
30
- updateHeight(): void;
31
- onImgChange(event?: Event): void;
32
- static ɵfac: i0.ɵɵFactoryDeclaration<CustomUploaderComponent, never>;
33
- static ɵcmp: i0.ɵɵComponentDeclaration<CustomUploaderComponent, "pw-custom-uploader", never, { "controlName": { "alias": "controlName"; "required": false; }; "previewData": { "alias": "previewData"; "required": false; }; "aspectRatio": { "alias": "aspectRatio"; "required": false; }; "title": { "alias": "title"; "required": false; }; }, { "saveEvent": "saveEvent"; }, never, never, false, never>;
34
- }
@@ -1,7 +0,0 @@
1
- import * as i0 from "@angular/core";
2
- export declare class FieldErrorDisplayComponent {
3
- errorMsg: string;
4
- displayError: boolean;
5
- static ɵfac: i0.ɵɵFactoryDeclaration<FieldErrorDisplayComponent, never>;
6
- static ɵcmp: i0.ɵɵComponentDeclaration<FieldErrorDisplayComponent, "pw-field-error-display", never, { "errorMsg": { "alias": "errorMsg"; "required": false; }; "displayError": { "alias": "displayError"; "required": false; }; }, {}, never, never, false, never>;
7
- }
@@ -1,13 +0,0 @@
1
- import * as i0 from "@angular/core";
2
- import * as i1 from "./field-error-display.component";
3
- import * as i2 from "@angular/common";
4
- /**
5
- * Standalone module for FieldErrorDisplayComponent.
6
- * Import this lightweight module instead of SharedComponentsModule
7
- * when you only need field error display functionality.
8
- */
9
- export declare class FieldErrorDisplayModule {
10
- static ɵfac: i0.ɵɵFactoryDeclaration<FieldErrorDisplayModule, never>;
11
- static ɵmod: i0.ɵɵNgModuleDeclaration<FieldErrorDisplayModule, [typeof i1.FieldErrorDisplayComponent], [typeof i2.CommonModule], [typeof i1.FieldErrorDisplayComponent]>;
12
- static ɵinj: i0.ɵɵInjectorDeclaration<FieldErrorDisplayModule>;
13
- }
@@ -1,30 +0,0 @@
1
- import { ChangeDetectorRef, EventEmitter } from '@angular/core';
2
- import { ImageCroppedEvent, ImageTransform } from 'ngx-image-cropper';
3
- import * as i0 from "@angular/core";
4
- export declare class ProfileImageCropperComponent {
5
- private readonly cdr;
6
- imageChangedEvent: Event | string;
7
- croppedImage: string;
8
- imageSelectionEvent: EventEmitter<string>;
9
- closeEvent: EventEmitter<void>;
10
- fileChangeEvent: EventEmitter<string>;
11
- aspectRatio: string;
12
- dynamicData: any;
13
- transform: ImageTransform;
14
- canvasRotation: number;
15
- showCropper: boolean;
16
- busy: boolean;
17
- constructor(cdr: ChangeDetectorRef);
18
- onFileChange(event: Event): void;
19
- imageCropped(event: ImageCroppedEvent): void;
20
- imageLoaded(): void;
21
- rotateLeft(): void;
22
- rotateRight(): void;
23
- private flipAfterRotate;
24
- flipHorizontal(): void;
25
- flipVertical(): void;
26
- saveProfilePicture(): void;
27
- onCloseModal(): void;
28
- static ɵfac: i0.ɵɵFactoryDeclaration<ProfileImageCropperComponent, never>;
29
- static ɵcmp: i0.ɵɵComponentDeclaration<ProfileImageCropperComponent, "pw-image-cropper", never, { "aspectRatio": { "alias": "aspectRatio"; "required": false; }; "dynamicData": { "alias": "dynamicData"; "required": false; }; }, { "imageSelectionEvent": "imageSelectionEvent"; "closeEvent": "closeEvent"; "fileChangeEvent": "fileChangeEvent"; }, never, never, false, never>;
30
- }
@@ -1,19 +0,0 @@
1
- import * as i0 from "@angular/core";
2
- import * as i1 from "./image-cropper.component";
3
- import * as i2 from "../custom-uploader/custom-uploader.component";
4
- import * as i3 from "@angular/common";
5
- import * as i4 from "@posiwise/core-transloco";
6
- import * as i5 from "primeng/button";
7
- import * as i6 from "ngx-image-cropper";
8
- import * as i7 from "@posiwise/directives";
9
- /**
10
- * Lightweight module for pw-image-cropper component
11
- *
12
- * Minimal dependencies - only CommonModule, ImageCropperModule, DirectivesModule
13
- * Use this instead of ResourceSharedComponentsModule when you only need image cropping
14
- */
15
- export declare class ProfileImageCropperModule {
16
- static ɵfac: i0.ɵɵFactoryDeclaration<ProfileImageCropperModule, never>;
17
- static ɵmod: i0.ɵɵNgModuleDeclaration<ProfileImageCropperModule, [typeof i1.ProfileImageCropperComponent, typeof i2.CustomUploaderComponent], [typeof i3.CommonModule, typeof i4.CoreTranslocoModule, typeof i5.ButtonModule, typeof i6.ImageCropperModule, typeof i7.DirectivesModule], [typeof i1.ProfileImageCropperComponent, typeof i2.CustomUploaderComponent]>;
18
- static ɵinj: i0.ɵɵInjectorDeclaration<ProfileImageCropperModule>;
19
- }