@posiwise/resource-contact-us 0.0.1 → 0.0.3

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.
Files changed (31) hide show
  1. package/esm2022/index.mjs +10 -1
  2. package/esm2022/lib/custom-uploader/custom-uploader.component.mjs +107 -0
  3. package/esm2022/lib/edit-footer-links-modal/edit-footer-links-modal.component.mjs +198 -0
  4. package/esm2022/lib/edit-questions-modal/edit-questions-modal.component.mjs +156 -0
  5. package/esm2022/lib/field-error-display/field-error-display.component.mjs +16 -0
  6. package/esm2022/lib/field-error-display/field-error-display.module.mjs +23 -0
  7. package/esm2022/lib/image-cropper/image-cropper.component.mjs +92 -0
  8. package/esm2022/lib/image-cropper/profile-image-cropper.module.mjs +45 -0
  9. package/esm2022/lib/resource-header/edit-navbar-modal.component.mjs +195 -0
  10. package/esm2022/lib/resource-header/resource-header.component.mjs +226 -0
  11. package/esm2022/lib/resource-header/resource-header.module.mjs +63 -0
  12. package/esm2022/resource-contact-us/resource-contact-us.component.mjs +67 -75
  13. package/esm2022/resource-contact-us/resource-contact-us.module.mjs +7 -5
  14. package/fesm2022/posiwise-resource-contact-us-edit-navbar-modal.component-C59Q3971.mjs +197 -0
  15. package/fesm2022/posiwise-resource-contact-us-edit-navbar-modal.component-C59Q3971.mjs.map +1 -0
  16. package/fesm2022/posiwise-resource-contact-us.mjs +949 -87
  17. package/fesm2022/posiwise-resource-contact-us.mjs.map +1 -1
  18. package/index.d.ts +9 -0
  19. package/lib/custom-uploader/custom-uploader.component.d.ts +35 -0
  20. package/lib/edit-footer-links-modal/edit-footer-links-modal.component.d.ts +22 -0
  21. package/lib/edit-questions-modal/edit-questions-modal.component.d.ts +21 -0
  22. package/lib/field-error-display/field-error-display.component.d.ts +7 -0
  23. package/lib/field-error-display/field-error-display.module.d.ts +13 -0
  24. package/lib/image-cropper/image-cropper.component.d.ts +30 -0
  25. package/lib/image-cropper/profile-image-cropper.module.d.ts +19 -0
  26. package/lib/resource-header/edit-navbar-modal.component.d.ts +22 -0
  27. package/lib/resource-header/resource-header.component.d.ts +46 -0
  28. package/lib/resource-header/resource-header.module.d.ts +21 -0
  29. package/package.json +1 -1
  30. package/resource-contact-us/resource-contact-us.component.d.ts +4 -17
  31. package/resource-contact-us/resource-contact-us.module.d.ts +12 -10
package/esm2022/index.mjs CHANGED
@@ -1,4 +1,13 @@
1
1
  export * from './resource-contact-us/resource-contact-us.component';
2
2
  export * from './resource-contact-us/resource-contact-us.module';
3
3
  export * from './lib/shared/resource-modal.interface';
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL3Jlc291cmNlLWNvbnRhY3QtdXMvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMscURBQXFELENBQUM7QUFDcEUsY0FBYyxrREFBa0QsQ0FBQztBQUNqRSxjQUFjLHVDQUF1QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9yZXNvdXJjZS1jb250YWN0LXVzL3Jlc291cmNlLWNvbnRhY3QtdXMuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vcmVzb3VyY2UtY29udGFjdC11cy9yZXNvdXJjZS1jb250YWN0LXVzLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaGFyZWQvcmVzb3VyY2UtbW9kYWwuaW50ZXJmYWNlJztcblxuIl19
4
+ export * from './lib/resource-header/resource-header.module';
5
+ export * from './lib/resource-header/resource-header.component';
6
+ export * from './lib/custom-uploader/custom-uploader.component';
7
+ export * from './lib/image-cropper/profile-image-cropper.module';
8
+ export * from './lib/image-cropper/image-cropper.component';
9
+ export * from './lib/field-error-display/field-error-display.component';
10
+ export * from './lib/field-error-display/field-error-display.module';
11
+ export * from './lib/edit-footer-links-modal/edit-footer-links-modal.component';
12
+ export * from './lib/edit-questions-modal/edit-questions-modal.component';
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL3Jlc291cmNlLWNvbnRhY3QtdXMvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMscURBQXFELENBQUM7QUFDcEUsY0FBYyxrREFBa0QsQ0FBQztBQUNqRSxjQUFjLHVDQUF1QyxDQUFDO0FBRXRELGNBQWMsOENBQThDLENBQUM7QUFDN0QsY0FBYyxpREFBaUQsQ0FBQztBQUNoRSxjQUFjLGlEQUFpRCxDQUFBO0FBQy9ELGNBQWMsa0RBQWtELENBQUE7QUFDaEUsY0FBYyw2Q0FBNkMsQ0FBQTtBQUMzRCxjQUFjLHlEQUF5RCxDQUFBO0FBQ3ZFLGNBQWMsc0RBQXNELENBQUE7QUFDcEUsY0FBYyxpRUFBaUUsQ0FBQztBQUNoRixjQUFjLDJEQUEyRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9yZXNvdXJjZS1jb250YWN0LXVzL3Jlc291cmNlLWNvbnRhY3QtdXMuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vcmVzb3VyY2UtY29udGFjdC11cy9yZXNvdXJjZS1jb250YWN0LXVzLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zaGFyZWQvcmVzb3VyY2UtbW9kYWwuaW50ZXJmYWNlJztcblxuZXhwb3J0ICogZnJvbSAnLi9saWIvcmVzb3VyY2UtaGVhZGVyL3Jlc291cmNlLWhlYWRlci5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcmVzb3VyY2UtaGVhZGVyL3Jlc291cmNlLWhlYWRlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY3VzdG9tLXVwbG9hZGVyL2N1c3RvbS11cGxvYWRlci5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9pbWFnZS1jcm9wcGVyL3Byb2ZpbGUtaW1hZ2UtY3JvcHBlci5tb2R1bGUnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9pbWFnZS1jcm9wcGVyL2ltYWdlLWNyb3BwZXIuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmllbGQtZXJyb3ItZGlzcGxheS9maWVsZC1lcnJvci1kaXNwbGF5LmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ZpZWxkLWVycm9yLWRpc3BsYXkvZmllbGQtZXJyb3ItZGlzcGxheS5tb2R1bGUnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9lZGl0LWZvb3Rlci1saW5rcy1tb2RhbC9lZGl0LWZvb3Rlci1saW5rcy1tb2RhbC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZWRpdC1xdWVzdGlvbnMtbW9kYWwvZWRpdC1xdWVzdGlvbnMtbW9kYWwuY29tcG9uZW50JzsiXX0=
@@ -0,0 +1,107 @@
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXVwbG9hZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcmVzb3VyY2UtY29udGFjdC11cy9zcmMvbGliL2N1c3RvbS11cGxvYWRlci9jdXN0b20tdXBsb2FkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9yZXNvdXJjZS1jb250YWN0LXVzL3NyYy9saWIvY3VzdG9tLXVwbG9hZGVyL2N1c3RvbS11cGxvYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUV6RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7O0FBT3RELE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxnQkFBZ0I7SUFvQnpELFlBQ0ksUUFBa0IsRUFDRCxZQUFzQixFQUNKLFFBQWtCO1FBRXJELEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUhDLGlCQUFZLEdBQVosWUFBWSxDQUFVO1FBQ0osYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQXRCL0MsY0FBUyxHQUFpRCxJQUFJLFlBQVksRUFHaEYsQ0FBQztRQU1JLGdCQUFXLEdBQUcsTUFBTSxDQUFDO1FBSTlCLGlCQUFZLEdBQUcsSUFBSSxDQUFDO0lBWXBCLENBQUM7SUFFRCxrQkFBa0I7UUFDZCxhQUFhLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDeEMsSUFBSSxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ1osSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUN0QixDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsVUFBVTtRQUNOLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO1lBQ2hCLElBQUksRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVk7WUFDbEUsSUFBSSxFQUFFLElBQUksQ0FBQyxXQUFXO1NBQ3pCLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxzQkFBc0I7SUFFdEIsWUFBWSxDQUFDLEtBQUs7UUFDZCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO0lBQ2xDLENBQUM7SUFFTyxhQUFhLENBQUMsT0FBZTtRQUNqQyxNQUFNLEdBQUcsR0FBRyxPQUFPLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2hDLGlFQUFpRTtRQUNqRSxNQUFNLElBQUksR0FBRyw0QkFBNEIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM1RCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUNwQixNQUFNLEtBQUssR0FBRyxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoQyx1Q0FBdUM7UUFDdkMsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ1QsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEMsQ0FBQztRQUVELE9BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxLQUFLO1FBQ2xCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdkMsTUFBTSxJQUFJLEdBQVMsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUMzRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUN6QixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELFNBQVMsQ0FBQyxPQUFPO1FBQ2IsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBQztJQUNyRixDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFDN0IsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxPQUFPO1FBQ0gsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRUQsWUFBWTtRQUNSLDhCQUE4QjtRQUM5QixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ1osSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3ZCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFhO1FBQ3JCLElBQUksS0FBSyxFQUFFLENBQUM7WUFDUixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBMEIsQ0FBQztZQUNoRCxNQUFNLENBQUMsR0FBRyxHQUFHLHdDQUF3QyxDQUFDO1FBQzFELENBQUM7UUFDRCxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUNyQywyRUFBMkUsQ0FDOUUsQ0FBQztRQUNGLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFhLEVBQUUsRUFBRTtZQUN6QixhQUFhLENBQUMsWUFBWSxDQUFDLElBQW1CLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDNUQsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOytHQXpHUSx1QkFBdUIsa0VBdUJwQixRQUFRO21HQXZCWCx1QkFBdUIsc09DYnBDLHl5RUEwRUE7OzRGRDdEYSx1QkFBdUI7a0JBTG5DLFNBQVM7K0JBQ0ksb0JBQW9COzswQkEyQnpCLE1BQU07MkJBQUMsUUFBUTt5Q0F0QlYsU0FBUztzQkFBbEIsTUFBTTtnQkFLRSxXQUFXO3NCQUFuQixLQUFLO2dCQUVHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBRUcsV0FBVztzQkFBbkIsS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5qZWN0LCBJbmplY3RvciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBBcHBCYXNlQ29tcG9uZW50IH0gZnJvbSAnQHBvc2l3aXNlL2FwcC1iYXNlLWNvbXBvbmVudCc7XG5pbXBvcnQgeyBIZWxwZXJTZXJ2aWNlIH0gZnJvbSAnQHBvc2l3aXNlL2hlbHBlci1zZXJ2aWNlJztcblxuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncHctY3VzdG9tLXVwbG9hZGVyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY3VzdG9tLXVwbG9hZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9jdXN0b20tdXBsb2FkZXIuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBDdXN0b21VcGxvYWRlckNvbXBvbmVudCBleHRlbmRzIEFwcEJhc2VDb21wb25lbnQge1xuICAgIEBPdXRwdXQoKSBzYXZlRXZlbnQ6IEV2ZW50RW1pdHRlcjx7IGZpbGU6IHN0cmluZzsgbmFtZTogc3RyaW5nIH0+ID0gbmV3IEV2ZW50RW1pdHRlcjx7XG4gICAgICAgIGZpbGU6IHN0cmluZztcbiAgICAgICAgbmFtZTogc3RyaW5nO1xuICAgIH0+KCk7XG5cbiAgICBASW5wdXQoKSBjb250cm9sTmFtZTogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgcHJldmlld0RhdGE6IHsgdXJsOiBzdHJpbmc7IG5hbWU/OiBzdHJpbmcgfTtcblxuICAgIEBJbnB1dCgpIGFzcGVjdFJhdGlvID0gJ2F1dG8nO1xuXG4gICAgQElucHV0KCkgdGl0bGU6IHN0cmluZztcblxuICAgIHVwbG9hZGVkRmlsZSA9IG51bGw7XG5cbiAgICBzZWxlY3RlZEZpbGVOYW1lOiBzdHJpbmc7XG5cbiAgICBidXR0b25CdXN5OiBib29sZWFuO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIGluamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsLFxuICAgICAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIHJlYWRvbmx5IGRvY3VtZW50OiBEb2N1bWVudFxuICAgICkge1xuICAgICAgICBzdXBlcihpbmplY3Rvcik7XG4gICAgfVxuXG4gICAgZGVsZXRlRXhpc3RpbmdGaWxlKCkge1xuICAgICAgICBIZWxwZXJTZXJ2aWNlLnJhaXNlRGVsZXRlUG9wdXAoKS50aGVuKHJlcCA9PiB7XG4gICAgICAgICAgICBpZiAocmVwLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcmV2aWV3RGF0YSA9IG51bGw7XG4gICAgICAgICAgICAgICAgdGhpcy5vblNhdmVGaWxlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uU2F2ZUZpbGUoKSB7XG4gICAgICAgIHRoaXMuYnV0dG9uQnVzeSA9IHRydWU7XG4gICAgICAgIHRoaXMuc2F2ZUV2ZW50LmVtaXQoe1xuICAgICAgICAgICAgZmlsZTogdGhpcy5wcmV2aWV3RGF0YT8udXJsID8gdGhpcy5wcmV2aWV3RGF0YSA6IHRoaXMudXBsb2FkZWRGaWxlLFxuICAgICAgICAgICAgbmFtZTogdGhpcy5jb250cm9sTmFtZVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBtb2RhbCBpbWFnZSBjcm9wcGVyXG5cbiAgICBvbkZpbGVDaGFuZ2UodmFsdWUpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEZpbGVOYW1lID0gdmFsdWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkYXRhVVJMdG9CbG9iKGRhdGFVcmw6IHN0cmluZykge1xuICAgICAgICBjb25zdCBhcnIgPSBkYXRhVXJsPy5zcGxpdCgnLCcpO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3ByZWZlci1yZWdleHAtZXhlY1xuICAgICAgICBjb25zdCBtaW1lID0gL15bQS1aXSpbYS16XSo6KC4qPyk7W0EtWl0qLy5leGVjKGFyclswXSk/LlsxXTtcbiAgICAgICAgY29uc3QgYlN0ciA9IGF0b2IoYXJyWzFdKTtcbiAgICAgICAgbGV0IG4gPSBiU3RyLmxlbmd0aDtcbiAgICAgICAgY29uc3QgdThhcnIgPSBuZXcgVWludDhBcnJheShuKTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBsdXNwbHVzXG4gICAgICAgIHdoaWxlIChuLS0pIHtcbiAgICAgICAgICAgIHU4YXJyW25dID0gYlN0ci5jaGFyQ29kZUF0KG4pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5ldyBCbG9iKFt1OGFycl0sIHsgdHlwZTogbWltZSB9KTtcbiAgICB9XG5cbiAgICBvbkltYWdlU2VsZWN0aW9uKGV2ZW50KSB7XG4gICAgICAgIGNvbnN0IGJsb2IgPSB0aGlzLmRhdGFVUkx0b0Jsb2IoZXZlbnQpO1xuICAgICAgICBjb25zdCBmaWxlOiBGaWxlID0gbmV3IEZpbGUoW2Jsb2JdLCB0aGlzLnNlbGVjdGVkRmlsZU5hbWUpO1xuICAgICAgICB0aGlzLnVwbG9hZGVkRmlsZSA9IGZpbGU7XG4gICAgICAgIHRoaXMub25TYXZlRmlsZSgpO1xuICAgIH1cblxuICAgIG9wZW5Nb2RhbChjb250ZW50KSB7XG4gICAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oY29udGVudCwgeyBjZW50ZXJlZDogdHJ1ZSwgd2luZG93Q2xhc3M6ICdtb2RhbC1ob2xkZXInIH0pO1xuICAgIH1cblxuICAgIGNsZWFyVmFsdWVzKCkge1xuICAgICAgICB0aGlzLnVwbG9hZGVkRmlsZSA9IG51bGw7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRGaWxlTmFtZSA9IG51bGw7XG4gICAgICAgIHRoaXMudXBkYXRlSGVpZ2h0KCk7XG4gICAgfVxuXG4gICAgb25DbG9zZSgpIHtcbiAgICAgICAgdGhpcy5tb2RhbFNlcnZpY2UuZGlzbWlzc0FsbCgpO1xuICAgIH1cblxuICAgIHVwZGF0ZUhlaWdodCgpIHtcbiAgICAgICAgLy8gd2FpdCBmb3IgdXBkYXRlIGNhcmQgaGVpZ2h0XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5vbkltZ0NoYW5nZSgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbkltZ0NoYW5nZShldmVudD86IEV2ZW50KSB7XG4gICAgICAgIGlmIChldmVudCkge1xuICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbWFnZUVsZW1lbnQ7XG4gICAgICAgICAgICB0YXJnZXQuc3JjID0gJ2Fzc2V0cy9pbWcvaWNvbnMvaW1hZ2Vub3RhdmFpbGFibGUucG5nJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBlbCA9IHRoaXMuZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcbiAgICAgICAgICAgICdwdy1kb21haW4tY29uZmlnLWludGVyZmFjZSxwdy1kb21haW4tY29uZmlnLWJ1aWxkIGRpdlttYXRjaGhlaWdodD1cImNhcmRcIl0nXG4gICAgICAgICk7XG4gICAgICAgIGVsLmZvckVhY2goKGl0ZW06IEVsZW1lbnQpID0+IHtcbiAgICAgICAgICAgIEhlbHBlclNlcnZpY2UubWF0Y2hIZWlnaHRzKGl0ZW0gYXMgSFRNTEVsZW1lbnQsICdjYXJkJyk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjYXJkIHBiLTJcIj5cbiAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIHVwbG9hZC1idXR0b24tYmFyXCI+XG4gICAgPGJ1dHRvbiBwQnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIFtkaXNhYmxlZF09XCJwcmV2aWV3RGF0YT8udXJsIHx8IHVwbG9hZGVkRmlsZVwiXG4gICAgICAoY2xpY2spPVwib3Blbk1vZGFsKGNvbnRlbnQpXCJcbiAgICAgIChrZXlkb3duLmVudGVyKT1cIm9wZW5Nb2RhbChjb250ZW50KVwiXG4gICAgICBpY29uPVwicGkgcGktcGx1c1wiXG4gICAgICBsYWJlbD1cIkNob29zZVwiPjwvYnV0dG9uPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImNhcmQtYm9keVwiPlxuICAgIDwhLS0gbm8gZmlsZXMgLS0+XG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBwcmV2aWV3LXdyYXBwZXJcIlxuICAgICAgKm5nSWY9XCIhcHJldmlld0RhdGE/LnVybFwiPlxuICAgICAgPGRpdj5cbiAgICAgICAgPGltZyBzcmM9XCJhc3NldHMvaW1nL2ljb25zL25vZmlsZXNmb3VuZC5wbmdcIlxuICAgICAgICAgIChsb2FkKT1cIm9uSW1nQ2hhbmdlKClcIlxuICAgICAgICAgIGNsYXNzPVwibXgtYXV0byBpbWctZmx1aWRcIlxuICAgICAgICAgIGFsdD1cIlwiIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8IS0tIGV4aXN0aW5nIGltYWdlcyAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IHByZXZpZXctd3JhcHBlclwiXG4gICAgICAqbmdJZj1cInByZXZpZXdEYXRhPy51cmxcIj5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxhIFtocmVmXT1cInByZXZpZXdEYXRhPy51cmxcIlxuICAgICAgICAgIHRhcmdldD1cIl9ibGFua1wiPlxuICAgICAgICAgIDxpbWcgW3NyY109XCJwcmV2aWV3RGF0YT8udXJsXCJcbiAgICAgICAgICAgIGFsdD1cIlwiXG4gICAgICAgICAgICAobG9hZCk9XCJvbkltZ0NoYW5nZSgpXCJcbiAgICAgICAgICAgIChlcnJvcik9XCJvbkltZ0NoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiaW1nLWZsdWlkXCIgLz5cbiAgICAgICAgPC9hPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwibXMtM1wiPlxuICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcbiAgICAgICAgICAgICAgICAgICAgbmdiVG9vbHRpcD1cIkRlbGV0ZVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkZWxldGVFeGlzdGluZ0ZpbGUoKVwiXG4gICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cImRlbGV0ZUV4aXN0aW5nRmlsZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uc3BhY2UpPVwiZGVsZXRlRXhpc3RpbmdGaWxlKClcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZhIGZhLXRyYXNoIGRlbGV0ZS1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICA+PC9pPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG48IS0tIGltYWdlIGNyb3BwZXIgLS0+XG48bmctdGVtcGxhdGUgI2NvbnRlbnRcbiAgbGV0LW1vZGFsPlxuICA8ZGl2IGNsYXNzPVwiY2FyZCBtLTBcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1jb250ZW50XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZVwiPlxuICAgICAgICA8aDMgY2xhc3M9XCJtb2RhbC10aXRsZVwiPnt7IHRpdGxlIH19PC9oMz5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzcz1cImJ0bi1jbG9zZSBmbG9hdC1lbmQgZmxvYXQtZW5kXCJcbiAgICAgICAgICBhcmlhLWxhYmVsPVwiQ2xvc2VcIlxuICAgICAgICAgIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cblxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyXCI+XG4gICAgICAgIDxzbWFsbD4ge3sgJ1VzZXIuUHJvZmlsZS5QaWN0dXJlTWVzc2FnZScgfCB0cmFuc2xvY28gfX08L3NtYWxsPlxuICAgICAgICA8cHctaW1hZ2UtY3JvcHBlciAjcHJvZmlsZVxuICAgICAgICAgIFthc3BlY3RSYXRpb109XCJhc3BlY3RSYXRpb1wiXG4gICAgICAgICAgKGZpbGVDaGFuZ2VFdmVudCk9XCJvbkZpbGVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgKGltYWdlU2VsZWN0aW9uRXZlbnQpPVwib25JbWFnZVNlbGVjdGlvbigkZXZlbnQpXCJcbiAgICAgICAgICAoY2xvc2VFdmVudCk9XCJvbkNsb3NlKClcIj5cbiAgICAgICAgPC9wdy1pbWFnZS1jcm9wcGVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -0,0 +1,198 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { FormsModule } from '@angular/forms';
3
+ import { CommonModule } from '@angular/common';
4
+ import { moveItemInArray } from '@angular/cdk/drag-drop';
5
+ import { DragDropModule } from '@angular/cdk/drag-drop';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/common";
8
+ import * as i2 from "@angular/forms";
9
+ import * as i3 from "@angular/cdk/drag-drop";
10
+ /**
11
+ * Edit Footer Links Modal Component
12
+ * Contains drag-drop functionality for reordering footer links
13
+ * This component is lazy-loaded only when the edit modal is opened
14
+ */
15
+ export class EditFooterLinksModalComponent {
16
+ constructor() {
17
+ this.editingFooterLinks = { items: [] };
18
+ this.save = new EventEmitter();
19
+ this.close = new EventEmitter();
20
+ }
21
+ dropFooterLinks(event) {
22
+ moveItemInArray(this.editingFooterLinks.items, event.previousIndex, event.currentIndex);
23
+ }
24
+ dropSubtitles(footerIndex, event) {
25
+ moveItemInArray(this.editingFooterLinks.items[footerIndex].subtitles, event.previousIndex, event.currentIndex);
26
+ }
27
+ addFooterLink() {
28
+ this.editingFooterLinks.items.push({
29
+ title: '',
30
+ path: '',
31
+ subtitles: []
32
+ });
33
+ }
34
+ removeFooterLink(index) {
35
+ this.editingFooterLinks.items.splice(index, 1);
36
+ }
37
+ addSubtitle(footerIndex) {
38
+ this.editingFooterLinks.items[footerIndex].subtitles.push({
39
+ title: '',
40
+ path: ''
41
+ });
42
+ }
43
+ removeSubtitle(footerIndex, subtitleIndex) {
44
+ this.editingFooterLinks.items[footerIndex].subtitles.splice(subtitleIndex, 1);
45
+ }
46
+ onSave() {
47
+ this.save.emit(this.editingFooterLinks);
48
+ }
49
+ onClose() {
50
+ this.close.emit();
51
+ }
52
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: EditFooterLinksModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
53
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: EditFooterLinksModalComponent, isStandalone: true, selector: "pw-edit-footer-links-modal", inputs: { editingFooterLinks: "editingFooterLinks" }, outputs: { save: "save", close: "close" }, ngImport: i0, template: `
54
+ <div class="modal-header">
55
+ <h5 class="modal-title">Edit Footer Links</h5>
56
+ <button type="button" class="btn-close" aria-label="Close" (click)="onClose()"></button>
57
+ </div>
58
+
59
+ <div class="modal-body">
60
+ <h4 class="mb-3">Footer Links Section</h4>
61
+ <div cdkDropList (cdkDropListDropped)="dropFooterLinks($event)">
62
+ <div *ngFor="let footer of editingFooterLinks.items; let i = index" class="border p-3 mb-3" cdkDrag>
63
+ <div class="row">
64
+ <div class="col-md-5 mb-2">
65
+ <label [for]="'footerTitle' + i" class="form-label">Title</label>
66
+ <input [id]="'footerTitle' + i" class="form-control" [(ngModel)]="footer.title" />
67
+ </div>
68
+ <div class="col-md-5 mb-2">
69
+ <label [for]="'footerPath' + i" class="form-label">Path</label>
70
+ <input [id]="'footerPath' + i" class="form-control" [(ngModel)]="footer.path" />
71
+ </div>
72
+ <div class="col-md-2 d-flex justify-content-between align-items-center mt-4">
73
+ <i class="fa fa-trash in-page-trash-icon text-danger cursor-pointer"
74
+ (click)="removeFooterLink(i)"
75
+ (keydown.enter)="removeFooterLink(i)"
76
+ (keydown.space)="removeFooterLink(i)"></i>
77
+ <i class="fa fa-bars in-page-bars-icon cursor-move" cdkDragHandle></i>
78
+ </div>
79
+ </div>
80
+
81
+ <!-- Subtitles -->
82
+ <div cdkDropList (cdkDropListDropped)="dropSubtitles(i, $event)">
83
+ <div *ngFor="let sub of footer.subtitles; let j = index" class="row border p-3 mb-2 align-items-center" cdkDrag>
84
+ <div class="col-md-5">
85
+ <label [for]="'subtitleTitle' + i + j" class="form-label">Subtitle Title</label>
86
+ <input [id]="'subtitleTitle' + i + j" class="form-control" [(ngModel)]="sub.title" />
87
+ </div>
88
+ <div class="col-md-5">
89
+ <label [for]="'subtitlePath' + i + j" class="form-label">Subtitle Path</label>
90
+ <input [id]="'subtitlePath' + i + j" class="form-control" [(ngModel)]="sub.path" />
91
+ </div>
92
+ <div class="col-md-2 d-flex justify-content-between align-items-center mt-4">
93
+ <i class="fa fa-trash in-page-trash-icon text-danger cursor-pointer"
94
+ (click)="removeSubtitle(i, j)"
95
+ (keydown.enter)="removeSubtitle(i, j)"
96
+ (keydown.space)="removeSubtitle(i, j)"></i>
97
+ <i class="fa fa-bars cursor-move in-page-bars-icon" cdkDragHandle></i>
98
+ </div>
99
+ </div>
100
+ </div>
101
+
102
+ <button class="btn btn-outline-primary btn-sm mt-2" (click)="addSubtitle(i)">
103
+ + Add Subtitle
104
+ </button>
105
+ </div>
106
+ </div>
107
+
108
+ <button class="btn btn-primary mt-3" (click)="addFooterLink()">
109
+ + Add Footer Link
110
+ </button>
111
+ </div>
112
+
113
+ <div class="modal-footer">
114
+ <button class="btn btn-secondary" (click)="onClose()">Cancel</button>
115
+ <button class="btn btn-primary" (click)="onSave()">Save</button>
116
+ </div>
117
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: DragDropModule }, { kind: "directive", type: i3.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i3.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i3.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }] }); }
118
+ }
119
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: EditFooterLinksModalComponent, decorators: [{
120
+ type: Component,
121
+ args: [{
122
+ selector: 'pw-edit-footer-links-modal',
123
+ standalone: true,
124
+ imports: [CommonModule, FormsModule, DragDropModule],
125
+ template: `
126
+ <div class="modal-header">
127
+ <h5 class="modal-title">Edit Footer Links</h5>
128
+ <button type="button" class="btn-close" aria-label="Close" (click)="onClose()"></button>
129
+ </div>
130
+
131
+ <div class="modal-body">
132
+ <h4 class="mb-3">Footer Links Section</h4>
133
+ <div cdkDropList (cdkDropListDropped)="dropFooterLinks($event)">
134
+ <div *ngFor="let footer of editingFooterLinks.items; let i = index" class="border p-3 mb-3" cdkDrag>
135
+ <div class="row">
136
+ <div class="col-md-5 mb-2">
137
+ <label [for]="'footerTitle' + i" class="form-label">Title</label>
138
+ <input [id]="'footerTitle' + i" class="form-control" [(ngModel)]="footer.title" />
139
+ </div>
140
+ <div class="col-md-5 mb-2">
141
+ <label [for]="'footerPath' + i" class="form-label">Path</label>
142
+ <input [id]="'footerPath' + i" class="form-control" [(ngModel)]="footer.path" />
143
+ </div>
144
+ <div class="col-md-2 d-flex justify-content-between align-items-center mt-4">
145
+ <i class="fa fa-trash in-page-trash-icon text-danger cursor-pointer"
146
+ (click)="removeFooterLink(i)"
147
+ (keydown.enter)="removeFooterLink(i)"
148
+ (keydown.space)="removeFooterLink(i)"></i>
149
+ <i class="fa fa-bars in-page-bars-icon cursor-move" cdkDragHandle></i>
150
+ </div>
151
+ </div>
152
+
153
+ <!-- Subtitles -->
154
+ <div cdkDropList (cdkDropListDropped)="dropSubtitles(i, $event)">
155
+ <div *ngFor="let sub of footer.subtitles; let j = index" class="row border p-3 mb-2 align-items-center" cdkDrag>
156
+ <div class="col-md-5">
157
+ <label [for]="'subtitleTitle' + i + j" class="form-label">Subtitle Title</label>
158
+ <input [id]="'subtitleTitle' + i + j" class="form-control" [(ngModel)]="sub.title" />
159
+ </div>
160
+ <div class="col-md-5">
161
+ <label [for]="'subtitlePath' + i + j" class="form-label">Subtitle Path</label>
162
+ <input [id]="'subtitlePath' + i + j" class="form-control" [(ngModel)]="sub.path" />
163
+ </div>
164
+ <div class="col-md-2 d-flex justify-content-between align-items-center mt-4">
165
+ <i class="fa fa-trash in-page-trash-icon text-danger cursor-pointer"
166
+ (click)="removeSubtitle(i, j)"
167
+ (keydown.enter)="removeSubtitle(i, j)"
168
+ (keydown.space)="removeSubtitle(i, j)"></i>
169
+ <i class="fa fa-bars cursor-move in-page-bars-icon" cdkDragHandle></i>
170
+ </div>
171
+ </div>
172
+ </div>
173
+
174
+ <button class="btn btn-outline-primary btn-sm mt-2" (click)="addSubtitle(i)">
175
+ + Add Subtitle
176
+ </button>
177
+ </div>
178
+ </div>
179
+
180
+ <button class="btn btn-primary mt-3" (click)="addFooterLink()">
181
+ + Add Footer Link
182
+ </button>
183
+ </div>
184
+
185
+ <div class="modal-footer">
186
+ <button class="btn btn-secondary" (click)="onClose()">Cancel</button>
187
+ <button class="btn btn-primary" (click)="onSave()">Save</button>
188
+ </div>
189
+ `
190
+ }]
191
+ }], propDecorators: { editingFooterLinks: [{
192
+ type: Input
193
+ }], save: [{
194
+ type: Output
195
+ }], close: [{
196
+ type: Output
197
+ }] } });
198
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdC1mb290ZXItbGlua3MtbW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9yZXNvdXJjZS1jb250YWN0LXVzL3NyYy9saWIvZWRpdC1mb290ZXItbGlua3MtbW9kYWwvZWRpdC1mb290ZXItbGlua3MtbW9kYWwuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7OztBQUV4RDs7OztHQUlHO0FBdUVILE1BQU0sT0FBTyw2QkFBNkI7SUF0RTFDO1FBdUVhLHVCQUFrQixHQUFRLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDO1FBQ3ZDLFNBQUksR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQy9CLFVBQUssR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO0tBNEM5QztJQTFDRyxlQUFlLENBQUMsS0FBVTtRQUN0QixlQUFlLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUM1RixDQUFDO0lBRUQsYUFBYSxDQUFDLFdBQW1CLEVBQUUsS0FBVTtRQUN6QyxlQUFlLENBQ1gsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxTQUFTLEVBQ3BELEtBQUssQ0FBQyxhQUFhLEVBQ25CLEtBQUssQ0FBQyxZQUFZLENBQ3JCLENBQUM7SUFDTixDQUFDO0lBRUQsYUFBYTtRQUNULElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO1lBQy9CLEtBQUssRUFBRSxFQUFFO1lBQ1QsSUFBSSxFQUFFLEVBQUU7WUFDUixTQUFTLEVBQUUsRUFBRTtTQUNoQixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsS0FBYTtRQUMxQixJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELFdBQVcsQ0FBQyxXQUFtQjtRQUMzQixJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUM7WUFDdEQsS0FBSyxFQUFFLEVBQUU7WUFDVCxJQUFJLEVBQUUsRUFBRTtTQUNYLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxjQUFjLENBQUMsV0FBbUIsRUFBRSxhQUFxQjtRQUNyRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7SUFFRCxNQUFNO1FBQ0YsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELE9BQU87UUFDSCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3RCLENBQUM7K0dBOUNRLDZCQUE2QjttR0FBN0IsNkJBQTZCLHVMQWxFNUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0FnRVQsMkRBakVTLFlBQVksMkpBQUUsV0FBVyw4bUJBQUUsY0FBYzs7NEZBbUUxQyw2QkFBNkI7a0JBdEV6QyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSw0QkFBNEI7b0JBQ3RDLFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLGNBQWMsQ0FBQztvQkFDcEQsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBZ0VUO2lCQUNKOzhCQUVZLGtCQUFrQjtzQkFBMUIsS0FBSztnQkFDSSxJQUFJO3NCQUFiLE1BQU07Z0JBQ0csS0FBSztzQkFBZCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IG1vdmVJdGVtSW5BcnJheSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuaW1wb3J0IHsgRHJhZ0Ryb3BNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcblxuLyoqXG4gKiBFZGl0IEZvb3RlciBMaW5rcyBNb2RhbCBDb21wb25lbnRcbiAqIENvbnRhaW5zIGRyYWctZHJvcCBmdW5jdGlvbmFsaXR5IGZvciByZW9yZGVyaW5nIGZvb3RlciBsaW5rc1xuICogVGhpcyBjb21wb25lbnQgaXMgbGF6eS1sb2FkZWQgb25seSB3aGVuIHRoZSBlZGl0IG1vZGFsIGlzIG9wZW5lZFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3B3LWVkaXQtZm9vdGVyLWxpbmtzLW1vZGFsJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlLCBEcmFnRHJvcE1vZHVsZV0sXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxuICAgICAgICAgICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIj5FZGl0IEZvb3RlciBMaW5rczwvaDU+XG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1jbG9zZVwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiIChjbGljayk9XCJvbkNsb3NlKClcIj48L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cbiAgICAgICAgICAgIDxoNCBjbGFzcz1cIm1iLTNcIj5Gb290ZXIgTGlua3MgU2VjdGlvbjwvaDQ+XG4gICAgICAgICAgICA8ZGl2IGNka0Ryb3BMaXN0IChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcEZvb3RlckxpbmtzKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBmb290ZXIgb2YgZWRpdGluZ0Zvb3RlckxpbmtzLml0ZW1zOyBsZXQgaSA9IGluZGV4XCIgY2xhc3M9XCJib3JkZXIgcC0zIG1iLTNcIiBjZGtEcmFnPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTUgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBbZm9yXT1cIidmb290ZXJUaXRsZScgKyBpXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+VGl0bGU8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBbaWRdPVwiJ2Zvb3RlclRpdGxlJyArIGlcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIFsobmdNb2RlbCldPVwiZm9vdGVyLnRpdGxlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01IG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgW2Zvcl09XCInZm9vdGVyUGF0aCcgKyBpXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+UGF0aDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IFtpZF09XCInZm9vdGVyUGF0aCcgKyBpXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBbKG5nTW9kZWwpXT1cImZvb3Rlci5wYXRoXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0yIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgbXQtNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdHJhc2ggaW4tcGFnZS10cmFzaC1pY29uIHRleHQtZGFuZ2VyIGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlRm9vdGVyTGluayhpKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwicmVtb3ZlRm9vdGVyTGluayhpKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uc3BhY2UpPVwicmVtb3ZlRm9vdGVyTGluayhpKVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWJhcnMgaW4tcGFnZS1iYXJzLWljb24gY3Vyc29yLW1vdmVcIiBjZGtEcmFnSGFuZGxlPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8IS0tIFN1YnRpdGxlcyAtLT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjZGtEcm9wTGlzdCAoY2RrRHJvcExpc3REcm9wcGVkKT1cImRyb3BTdWJ0aXRsZXMoaSwgJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgc3ViIG9mIGZvb3Rlci5zdWJ0aXRsZXM7IGxldCBqID0gaW5kZXhcIiBjbGFzcz1cInJvdyBib3JkZXIgcC0zIG1iLTIgYWxpZ24taXRlbXMtY2VudGVyXCIgY2RrRHJhZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIFtmb3JdPVwiJ3N1YnRpdGxlVGl0bGUnICsgaSArIGpcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5TdWJ0aXRsZSBUaXRsZTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBbaWRdPVwiJ3N1YnRpdGxlVGl0bGUnICsgaSArIGpcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIFsobmdNb2RlbCldPVwic3ViLnRpdGxlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIFtmb3JdPVwiJ3N1YnRpdGxlUGF0aCcgKyBpICsgalwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPlN1YnRpdGxlIFBhdGg8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgW2lkXT1cIidzdWJ0aXRsZVBhdGgnICsgaSArIGpcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIFsobmdNb2RlbCldPVwic3ViLnBhdGhcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMiBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIG10LTRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS10cmFzaCBpbi1wYWdlLXRyYXNoLWljb24gdGV4dC1kYW5nZXIgY3Vyc29yLXBvaW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlU3VidGl0bGUoaSwgailcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJyZW1vdmVTdWJ0aXRsZShpLCBqKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duLnNwYWNlKT1cInJlbW92ZVN1YnRpdGxlKGksIGopXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWJhcnMgY3Vyc29yLW1vdmUgaW4tcGFnZS1iYXJzLWljb25cIiBjZGtEcmFnSGFuZGxlPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnkgYnRuLXNtIG10LTJcIiAoY2xpY2spPVwiYWRkU3VidGl0bGUoaSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICsgQWRkIFN1YnRpdGxlXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgbXQtM1wiIChjbGljayk9XCJhZGRGb290ZXJMaW5rKClcIj5cbiAgICAgICAgICAgICAgICArIEFkZCBGb290ZXIgTGlua1xuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXJcIj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeVwiIChjbGljayk9XCJvbkNsb3NlKClcIj5DYW5jZWw8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiAoY2xpY2spPVwib25TYXZlKClcIj5TYXZlPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIGBcbn0pXG5leHBvcnQgY2xhc3MgRWRpdEZvb3RlckxpbmtzTW9kYWxDb21wb25lbnQge1xuICAgIEBJbnB1dCgpIGVkaXRpbmdGb290ZXJMaW5rczogYW55ID0geyBpdGVtczogW10gfTtcbiAgICBAT3V0cHV0KCkgc2F2ZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAgIEBPdXRwdXQoKSBjbG9zZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAgIGRyb3BGb290ZXJMaW5rcyhldmVudDogYW55KSB7XG4gICAgICAgIG1vdmVJdGVtSW5BcnJheSh0aGlzLmVkaXRpbmdGb290ZXJMaW5rcy5pdGVtcywgZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcbiAgICB9XG5cbiAgICBkcm9wU3VidGl0bGVzKGZvb3RlckluZGV4OiBudW1iZXIsIGV2ZW50OiBhbnkpIHtcbiAgICAgICAgbW92ZUl0ZW1JbkFycmF5KFxuICAgICAgICAgICAgdGhpcy5lZGl0aW5nRm9vdGVyTGlua3MuaXRlbXNbZm9vdGVySW5kZXhdLnN1YnRpdGxlcyxcbiAgICAgICAgICAgIGV2ZW50LnByZXZpb3VzSW5kZXgsXG4gICAgICAgICAgICBldmVudC5jdXJyZW50SW5kZXhcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBhZGRGb290ZXJMaW5rKCkge1xuICAgICAgICB0aGlzLmVkaXRpbmdGb290ZXJMaW5rcy5pdGVtcy5wdXNoKHtcbiAgICAgICAgICAgIHRpdGxlOiAnJyxcbiAgICAgICAgICAgIHBhdGg6ICcnLFxuICAgICAgICAgICAgc3VidGl0bGVzOiBbXVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZW1vdmVGb290ZXJMaW5rKGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5lZGl0aW5nRm9vdGVyTGlua3MuaXRlbXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9XG5cbiAgICBhZGRTdWJ0aXRsZShmb290ZXJJbmRleDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuZWRpdGluZ0Zvb3RlckxpbmtzLml0ZW1zW2Zvb3RlckluZGV4XS5zdWJ0aXRsZXMucHVzaCh7XG4gICAgICAgICAgICB0aXRsZTogJycsXG4gICAgICAgICAgICBwYXRoOiAnJ1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZW1vdmVTdWJ0aXRsZShmb290ZXJJbmRleDogbnVtYmVyLCBzdWJ0aXRsZUluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5lZGl0aW5nRm9vdGVyTGlua3MuaXRlbXNbZm9vdGVySW5kZXhdLnN1YnRpdGxlcy5zcGxpY2Uoc3VidGl0bGVJbmRleCwgMSk7XG4gICAgfVxuXG4gICAgb25TYXZlKCkge1xuICAgICAgICB0aGlzLnNhdmUuZW1pdCh0aGlzLmVkaXRpbmdGb290ZXJMaW5rcyk7XG4gICAgfVxuXG4gICAgb25DbG9zZSgpIHtcbiAgICAgICAgdGhpcy5jbG9zZS5lbWl0KCk7XG4gICAgfVxufVxuXG4iXX0=
@@ -0,0 +1,156 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { FormsModule } from '@angular/forms';
3
+ import { CommonModule } from '@angular/common';
4
+ import { moveItemInArray } from '@angular/cdk/drag-drop';
5
+ import { DragDropModule } from '@angular/cdk/drag-drop';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/common";
8
+ import * as i2 from "@angular/forms";
9
+ import * as i3 from "@angular/cdk/drag-drop";
10
+ /**
11
+ * Edit Questions Modal Component
12
+ * Contains drag-drop functionality for reordering questions and options
13
+ * This component is lazy-loaded only when the edit modal is opened
14
+ */
15
+ export class EditQuestionsModalComponent {
16
+ constructor() {
17
+ this.editingQuestions = [];
18
+ this.save = new EventEmitter();
19
+ this.close = new EventEmitter();
20
+ }
21
+ dropQuestions(event) {
22
+ moveItemInArray(this.editingQuestions, event.previousIndex, event.currentIndex);
23
+ }
24
+ dropQuestionOptions(qIndex, event) {
25
+ moveItemInArray(this.editingQuestions[qIndex].options, event.previousIndex, event.currentIndex);
26
+ }
27
+ addNewQuestion() {
28
+ this.editingQuestions.push({ question: '', options: [] });
29
+ }
30
+ addQuestionOption(qIndex) {
31
+ this.editingQuestions[qIndex].options.push({ option: '' });
32
+ }
33
+ removeQuestionOption(qIndex, optIndex) {
34
+ this.editingQuestions[qIndex].options.splice(optIndex, 1);
35
+ }
36
+ onSave() {
37
+ this.save.emit(this.editingQuestions);
38
+ }
39
+ onClose() {
40
+ this.close.emit();
41
+ }
42
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: EditQuestionsModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
43
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: EditQuestionsModalComponent, isStandalone: true, selector: "pw-edit-questions-modal", inputs: { editingQuestions: "editingQuestions" }, outputs: { save: "save", close: "close" }, ngImport: i0, template: `
44
+ <div class="modal-header">
45
+ <h5 class="modal-title">Edit Questions</h5>
46
+ <button type="button" class="btn-close" aria-label="Close" (click)="onClose()"></button>
47
+ </div>
48
+
49
+ <div class="modal-body">
50
+ <h4 class="mb-3">Questions Section</h4>
51
+ <div cdkDropList (cdkDropListDropped)="dropQuestions($event)">
52
+ <div *ngFor="let q of editingQuestions; let i = index" class="border p-3 mb-3" cdkDrag>
53
+ <div class="row">
54
+ <div class="col-md-11 mb-2">
55
+ <label [for]="'questionText' + i" class="form-label">Question</label>
56
+ <input [id]="'questionText' + i" class="form-control" [(ngModel)]="q.question" placeholder="Enter question" />
57
+ </div>
58
+ <div class="col-md-1 d-flex justify-content-end align-items-start mt-4">
59
+ <i class="fa fa-bars in-page-bars-icon cursor-move" cdkDragHandle></i>
60
+ </div>
61
+ </div>
62
+
63
+ <!-- Options Section -->
64
+ <div cdkDropList (cdkDropListDropped)="dropQuestionOptions(i, $event)">
65
+ <div *ngFor="let opt of q.options; let j = index" class="row border p-3 mb-2 align-items-center" cdkDrag>
66
+ <div class="col-md-7 mb-2">
67
+ <label [for]="'questionOption' + i + j" class="form-label">Option</label>
68
+ <input [id]="'questionOption' + i + j" class="form-control" [(ngModel)]="opt.option" placeholder="Enter option" />
69
+ </div>
70
+ <div class="col-md-2 d-flex justify-content-between align-items-center mt-4">
71
+ <i class="fa fa-trash in-page-trash-icon text-danger cursor-pointer"
72
+ (click)="removeQuestionOption(i, j)"
73
+ (keydown.enter)="removeQuestionOption(i, j)"
74
+ (keydown.space)="removeQuestionOption(i, j)"></i>
75
+ <i class="fa fa-bars in-page-bars-icon cursor-move" cdkDragHandle></i>
76
+ </div>
77
+ </div>
78
+ </div>
79
+
80
+ <button class="btn btn-outline-primary btn-sm mt-2" (click)="addQuestionOption(i)">+ Add Option</button>
81
+ </div>
82
+ </div>
83
+
84
+ <button class="btn btn-primary mt-3" (click)="addNewQuestion()">+ Add Question</button>
85
+ </div>
86
+
87
+ <div class="modal-footer">
88
+ <button class="btn btn-secondary" (click)="onClose()">Cancel</button>
89
+ <button class="btn btn-primary" (click)="onSave()">Save</button>
90
+ </div>
91
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: DragDropModule }, { kind: "directive", type: i3.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i3.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i3.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }] }); }
92
+ }
93
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: EditQuestionsModalComponent, decorators: [{
94
+ type: Component,
95
+ args: [{
96
+ selector: 'pw-edit-questions-modal',
97
+ standalone: true,
98
+ imports: [CommonModule, FormsModule, DragDropModule],
99
+ template: `
100
+ <div class="modal-header">
101
+ <h5 class="modal-title">Edit Questions</h5>
102
+ <button type="button" class="btn-close" aria-label="Close" (click)="onClose()"></button>
103
+ </div>
104
+
105
+ <div class="modal-body">
106
+ <h4 class="mb-3">Questions Section</h4>
107
+ <div cdkDropList (cdkDropListDropped)="dropQuestions($event)">
108
+ <div *ngFor="let q of editingQuestions; let i = index" class="border p-3 mb-3" cdkDrag>
109
+ <div class="row">
110
+ <div class="col-md-11 mb-2">
111
+ <label [for]="'questionText' + i" class="form-label">Question</label>
112
+ <input [id]="'questionText' + i" class="form-control" [(ngModel)]="q.question" placeholder="Enter question" />
113
+ </div>
114
+ <div class="col-md-1 d-flex justify-content-end align-items-start mt-4">
115
+ <i class="fa fa-bars in-page-bars-icon cursor-move" cdkDragHandle></i>
116
+ </div>
117
+ </div>
118
+
119
+ <!-- Options Section -->
120
+ <div cdkDropList (cdkDropListDropped)="dropQuestionOptions(i, $event)">
121
+ <div *ngFor="let opt of q.options; let j = index" class="row border p-3 mb-2 align-items-center" cdkDrag>
122
+ <div class="col-md-7 mb-2">
123
+ <label [for]="'questionOption' + i + j" class="form-label">Option</label>
124
+ <input [id]="'questionOption' + i + j" class="form-control" [(ngModel)]="opt.option" placeholder="Enter option" />
125
+ </div>
126
+ <div class="col-md-2 d-flex justify-content-between align-items-center mt-4">
127
+ <i class="fa fa-trash in-page-trash-icon text-danger cursor-pointer"
128
+ (click)="removeQuestionOption(i, j)"
129
+ (keydown.enter)="removeQuestionOption(i, j)"
130
+ (keydown.space)="removeQuestionOption(i, j)"></i>
131
+ <i class="fa fa-bars in-page-bars-icon cursor-move" cdkDragHandle></i>
132
+ </div>
133
+ </div>
134
+ </div>
135
+
136
+ <button class="btn btn-outline-primary btn-sm mt-2" (click)="addQuestionOption(i)">+ Add Option</button>
137
+ </div>
138
+ </div>
139
+
140
+ <button class="btn btn-primary mt-3" (click)="addNewQuestion()">+ Add Question</button>
141
+ </div>
142
+
143
+ <div class="modal-footer">
144
+ <button class="btn btn-secondary" (click)="onClose()">Cancel</button>
145
+ <button class="btn btn-primary" (click)="onSave()">Save</button>
146
+ </div>
147
+ `
148
+ }]
149
+ }], propDecorators: { editingQuestions: [{
150
+ type: Input
151
+ }], save: [{
152
+ type: Output
153
+ }], close: [{
154
+ type: Output
155
+ }] } });
156
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdC1xdWVzdGlvbnMtbW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9yZXNvdXJjZS1jb250YWN0LXVzL3NyYy9saWIvZWRpdC1xdWVzdGlvbnMtbW9kYWwvZWRpdC1xdWVzdGlvbnMtbW9kYWwuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7OztBQUV4RDs7OztHQUlHO0FBdURILE1BQU0sT0FBTywyQkFBMkI7SUF0RHhDO1FBdURhLHFCQUFnQixHQUFVLEVBQUUsQ0FBQztRQUM1QixTQUFJLEdBQUcsSUFBSSxZQUFZLEVBQVMsQ0FBQztRQUNqQyxVQUFLLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztLQWlDOUM7SUEvQkcsYUFBYSxDQUFDLEtBQVU7UUFDcEIsZUFBZSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNwRixDQUFDO0lBRUQsbUJBQW1CLENBQUMsTUFBYyxFQUFFLEtBQVU7UUFDMUMsZUFBZSxDQUNYLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQ3JDLEtBQUssQ0FBQyxhQUFhLEVBQ25CLEtBQUssQ0FBQyxZQUFZLENBQ3JCLENBQUM7SUFDTixDQUFDO0lBRUQsY0FBYztRQUNWLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxNQUFjO1FBQzVCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVELG9CQUFvQixDQUFDLE1BQWMsRUFBRSxRQUFnQjtRQUNqRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELE1BQU07UUFDRixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsT0FBTztRQUNILElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdEIsQ0FBQzsrR0FuQ1EsMkJBQTJCO21HQUEzQiwyQkFBMkIsZ0xBbEQxQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBZ0RULDJEQWpEUyxZQUFZLDJKQUFFLFdBQVcsOG1CQUFFLGNBQWM7OzRGQW1EMUMsMkJBQTJCO2tCQXREdkMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUseUJBQXlCO29CQUNuQyxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxjQUFjLENBQUM7b0JBQ3BELFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0tBZ0RUO2lCQUNKOzhCQUVZLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDSSxJQUFJO3NCQUFiLE1BQU07Z0JBQ0csS0FBSztzQkFBZCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IG1vdmVJdGVtSW5BcnJheSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xuaW1wb3J0IHsgRHJhZ0Ryb3BNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcblxuLyoqXG4gKiBFZGl0IFF1ZXN0aW9ucyBNb2RhbCBDb21wb25lbnRcbiAqIENvbnRhaW5zIGRyYWctZHJvcCBmdW5jdGlvbmFsaXR5IGZvciByZW9yZGVyaW5nIHF1ZXN0aW9ucyBhbmQgb3B0aW9uc1xuICogVGhpcyBjb21wb25lbnQgaXMgbGF6eS1sb2FkZWQgb25seSB3aGVuIHRoZSBlZGl0IG1vZGFsIGlzIG9wZW5lZFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3B3LWVkaXQtcXVlc3Rpb25zLW1vZGFsJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlLCBEcmFnRHJvcE1vZHVsZV0sXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxuICAgICAgICAgICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIj5FZGl0IFF1ZXN0aW9uczwvaDU+XG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1jbG9zZVwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiIChjbGljayk9XCJvbkNsb3NlKClcIj48L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cbiAgICAgICAgICAgIDxoNCBjbGFzcz1cIm1iLTNcIj5RdWVzdGlvbnMgU2VjdGlvbjwvaDQ+XG4gICAgICAgICAgICA8ZGl2IGNka0Ryb3BMaXN0IChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcFF1ZXN0aW9ucygkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgcSBvZiBlZGl0aW5nUXVlc3Rpb25zOyBsZXQgaSA9IGluZGV4XCIgY2xhc3M9XCJib3JkZXIgcC0zIG1iLTNcIiBjZGtEcmFnPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTExIG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgW2Zvcl09XCIncXVlc3Rpb25UZXh0JyArIGlcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5RdWVzdGlvbjwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IFtpZF09XCIncXVlc3Rpb25UZXh0JyArIGlcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIFsobmdNb2RlbCldPVwicS5xdWVzdGlvblwiIHBsYWNlaG9sZGVyPVwiRW50ZXIgcXVlc3Rpb25cIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmQgYWxpZ24taXRlbXMtc3RhcnQgbXQtNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtYmFycyBpbi1wYWdlLWJhcnMtaWNvbiBjdXJzb3ItbW92ZVwiIGNka0RyYWdIYW5kbGU+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gT3B0aW9ucyBTZWN0aW9uIC0tPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNka0Ryb3BMaXN0IChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcFF1ZXN0aW9uT3B0aW9ucyhpLCAkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBvcHQgb2YgcS5vcHRpb25zOyBsZXQgaiA9IGluZGV4XCIgY2xhc3M9XCJyb3cgYm9yZGVyIHAtMyBtYi0yIGFsaWduLWl0ZW1zLWNlbnRlclwiIGNka0RyYWc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC03IG1iLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIFtmb3JdPVwiJ3F1ZXN0aW9uT3B0aW9uJyArIGkgKyBqXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+T3B0aW9uPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IFtpZF09XCIncXVlc3Rpb25PcHRpb24nICsgaSArIGpcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIFsobmdNb2RlbCldPVwib3B0Lm9wdGlvblwiIHBsYWNlaG9sZGVyPVwiRW50ZXIgb3B0aW9uXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTIgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBtdC00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdHJhc2ggaW4tcGFnZS10cmFzaC1pY29uIHRleHQtZGFuZ2VyIGN1cnNvci1wb2ludGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZVF1ZXN0aW9uT3B0aW9uKGksIGopXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwicmVtb3ZlUXVlc3Rpb25PcHRpb24oaSwgailcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5zcGFjZSk9XCJyZW1vdmVRdWVzdGlvbk9wdGlvbihpLCBqKVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1iYXJzIGluLXBhZ2UtYmFycy1pY29uIGN1cnNvci1tb3ZlXCIgY2RrRHJhZ0hhbmRsZT48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5IGJ0bi1zbSBtdC0yXCIgKGNsaWNrKT1cImFkZFF1ZXN0aW9uT3B0aW9uKGkpXCI+KyBBZGQgT3B0aW9uPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBtdC0zXCIgKGNsaWNrKT1cImFkZE5ld1F1ZXN0aW9uKClcIj4rIEFkZCBRdWVzdGlvbjwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyXCI+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnlcIiAoY2xpY2spPVwib25DbG9zZSgpXCI+Q2FuY2VsPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCIgKGNsaWNrKT1cIm9uU2F2ZSgpXCI+U2F2ZTwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICBgXG59KVxuZXhwb3J0IGNsYXNzIEVkaXRRdWVzdGlvbnNNb2RhbENvbXBvbmVudCB7XG4gICAgQElucHV0KCkgZWRpdGluZ1F1ZXN0aW9uczogYW55W10gPSBbXTtcbiAgICBAT3V0cHV0KCkgc2F2ZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55W10+KCk7XG4gICAgQE91dHB1dCgpIGNsb3NlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gICAgZHJvcFF1ZXN0aW9ucyhldmVudDogYW55KSB7XG4gICAgICAgIG1vdmVJdGVtSW5BcnJheSh0aGlzLmVkaXRpbmdRdWVzdGlvbnMsIGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XG4gICAgfVxuXG4gICAgZHJvcFF1ZXN0aW9uT3B0aW9ucyhxSW5kZXg6IG51bWJlciwgZXZlbnQ6IGFueSkge1xuICAgICAgICBtb3ZlSXRlbUluQXJyYXkoXG4gICAgICAgICAgICB0aGlzLmVkaXRpbmdRdWVzdGlvbnNbcUluZGV4XS5vcHRpb25zLFxuICAgICAgICAgICAgZXZlbnQucHJldmlvdXNJbmRleCxcbiAgICAgICAgICAgIGV2ZW50LmN1cnJlbnRJbmRleFxuICAgICAgICApO1xuICAgIH1cblxuICAgIGFkZE5ld1F1ZXN0aW9uKCkge1xuICAgICAgICB0aGlzLmVkaXRpbmdRdWVzdGlvbnMucHVzaCh7IHF1ZXN0aW9uOiAnJywgb3B0aW9uczogW10gfSk7XG4gICAgfVxuXG4gICAgYWRkUXVlc3Rpb25PcHRpb24ocUluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5lZGl0aW5nUXVlc3Rpb25zW3FJbmRleF0ub3B0aW9ucy5wdXNoKHsgb3B0aW9uOiAnJyB9KTtcbiAgICB9XG5cbiAgICByZW1vdmVRdWVzdGlvbk9wdGlvbihxSW5kZXg6IG51bWJlciwgb3B0SW5kZXg6IG51bWJlcikge1xuICAgICAgICB0aGlzLmVkaXRpbmdRdWVzdGlvbnNbcUluZGV4XS5vcHRpb25zLnNwbGljZShvcHRJbmRleCwgMSk7XG4gICAgfVxuXG4gICAgb25TYXZlKCkge1xuICAgICAgICB0aGlzLnNhdmUuZW1pdCh0aGlzLmVkaXRpbmdRdWVzdGlvbnMpO1xuICAgIH1cblxuICAgIG9uQ2xvc2UoKSB7XG4gICAgICAgIHRoaXMuY2xvc2UuZW1pdCgpO1xuICAgIH1cbn1cblxuIl19
@@ -0,0 +1,16 @@
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtZXJyb3ItZGlzcGxheS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Jlc291cmNlLWNvbnRhY3QtdXMvc3JjL2xpYi9maWVsZC1lcnJvci1kaXNwbGF5L2ZpZWxkLWVycm9yLWRpc3BsYXkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9yZXNvdXJjZS1jb250YWN0LXVzL3NyYy9saWIvZmllbGQtZXJyb3ItZGlzcGxheS9maWVsZC1lcnJvci1kaXNwbGF5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFNakQsTUFBTSxPQUFPLDBCQUEwQjsrR0FBMUIsMEJBQTBCO21HQUExQiwwQkFBMEIsOEhDTnZDLHVHQU1BOzs0RkRBYSwwQkFBMEI7a0JBSnRDLFNBQVM7K0JBQ0ksd0JBQXdCOzhCQUtsQyxRQUFRO3NCQURQLEtBQUs7Z0JBSU4sWUFBWTtzQkFEWCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3B3LWZpZWxkLWVycm9yLWRpc3BsYXknLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9maWVsZC1lcnJvci1kaXNwbGF5LmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBGaWVsZEVycm9yRGlzcGxheUNvbXBvbmVudCB7XG4gICAgQElucHV0KClcbiAgICBlcnJvck1zZzogc3RyaW5nO1xuXG4gICAgQElucHV0KClcbiAgICBkaXNwbGF5RXJyb3I6IGJvb2xlYW47XG59XG4iLCI8ZGl2ICpuZ0lmPVwiZGlzcGxheUVycm9yXCI+XG4gIDxkaXYgY2xhc3M9XCJ0ZXh0LWRhbmdlclwiPlxuICAgIHt7IGVycm9yTXNnIH19XG4gIDwvZGl2PlxuPC9kaXY+XG5cbiJdfQ==
@@ -0,0 +1,23 @@
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtZXJyb3ItZGlzcGxheS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Jlc291cmNlLWNvbnRhY3QtdXMvc3JjL2xpYi9maWVsZC1lcnJvci1kaXNwbGF5L2ZpZWxkLWVycm9yLWRpc3BsYXkubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOztBQUU3RTs7OztHQUlHO0FBTUgsTUFBTSxPQUFPLHVCQUF1QjsrR0FBdkIsdUJBQXVCO2dIQUF2Qix1QkFBdUIsaUJBSmpCLDBCQUEwQixhQUMvQixZQUFZLGFBQ1osMEJBQTBCO2dIQUUzQix1QkFBdUIsWUFIdEIsWUFBWTs7NEZBR2IsdUJBQXVCO2tCQUxuQyxRQUFRO21CQUFDO29CQUNOLFlBQVksRUFBRSxDQUFDLDBCQUEwQixDQUFDO29CQUMxQyxPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7b0JBQ3ZCLE9BQU8sRUFBRSxDQUFDLDBCQUEwQixDQUFDO2lCQUN4QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBGaWVsZEVycm9yRGlzcGxheUNvbXBvbmVudCB9IGZyb20gJy4vZmllbGQtZXJyb3ItZGlzcGxheS5jb21wb25lbnQnO1xuXG4vKipcbiAqIFN0YW5kYWxvbmUgbW9kdWxlIGZvciBGaWVsZEVycm9yRGlzcGxheUNvbXBvbmVudC5cbiAqIEltcG9ydCB0aGlzIGxpZ2h0d2VpZ2h0IG1vZHVsZSBpbnN0ZWFkIG9mIFNoYXJlZENvbXBvbmVudHNNb2R1bGVcbiAqIHdoZW4geW91IG9ubHkgbmVlZCBmaWVsZCBlcnJvciBkaXNwbGF5IGZ1bmN0aW9uYWxpdHkuXG4gKi9cbkBOZ01vZHVsZSh7XG4gICAgZGVjbGFyYXRpb25zOiBbRmllbGRFcnJvckRpc3BsYXlDb21wb25lbnRdLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICAgIGV4cG9ydHM6IFtGaWVsZEVycm9yRGlzcGxheUNvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgRmllbGRFcnJvckRpc3BsYXlNb2R1bGUge31cbiJdfQ==