@posiwise/resource-contact-us 0.0.2 → 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.
package/esm2022/index.mjs CHANGED
@@ -8,4 +8,6 @@ export * from './lib/image-cropper/profile-image-cropper.module';
8
8
  export * from './lib/image-cropper/image-cropper.component';
9
9
  export * from './lib/field-error-display/field-error-display.component';
10
10
  export * from './lib/field-error-display/field-error-display.module';
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL3Jlc291cmNlLWNvbnRhY3QtdXMvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMscURBQXFELENBQUM7QUFDcEUsY0FBYyxrREFBa0QsQ0FBQztBQUNqRSxjQUFjLHVDQUF1QyxDQUFDO0FBRXRELGNBQWMsOENBQThDLENBQUM7QUFDN0QsY0FBYyxpREFBaUQsQ0FBQztBQUNoRSxjQUFjLGlEQUFpRCxDQUFBO0FBQy9ELGNBQWMsa0RBQWtELENBQUE7QUFDaEUsY0FBYyw2Q0FBNkMsQ0FBQTtBQUMzRCxjQUFjLHlEQUF5RCxDQUFBO0FBQ3ZFLGNBQWMsc0RBQXNELENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3Jlc291cmNlLWNvbnRhY3QtdXMvcmVzb3VyY2UtY29udGFjdC11cy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9yZXNvdXJjZS1jb250YWN0LXVzL3Jlc291cmNlLWNvbnRhY3QtdXMubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NoYXJlZC9yZXNvdXJjZS1tb2RhbC5pbnRlcmZhY2UnO1xuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9yZXNvdXJjZS1oZWFkZXIvcmVzb3VyY2UtaGVhZGVyLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9yZXNvdXJjZS1oZWFkZXIvcmVzb3VyY2UtaGVhZGVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jdXN0b20tdXBsb2FkZXIvY3VzdG9tLXVwbG9hZGVyLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ltYWdlLWNyb3BwZXIvcHJvZmlsZS1pbWFnZS1jcm9wcGVyLm1vZHVsZSdcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ltYWdlLWNyb3BwZXIvaW1hZ2UtY3JvcHBlci5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2xpYi9maWVsZC1lcnJvci1kaXNwbGF5L2ZpZWxkLWVycm9yLWRpc3BsYXkuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmllbGQtZXJyb3ItZGlzcGxheS9maWVsZC1lcnJvci1kaXNwbGF5Lm1vZHVsZSciXX0=
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,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