valtech-components 2.0.434 → 2.0.435
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/lib/components/atoms/fab/fab.component.mjs +5 -4
- package/esm2022/lib/components/molecules/comment-input/comment-input.component.mjs +13 -5
- package/esm2022/lib/components/molecules/comment-input/types.mjs +2 -0
- package/esm2022/lib/components/molecules/date-input/date-input.component.mjs +23 -4
- package/esm2022/lib/components/molecules/date-input/types.mjs +2 -0
- package/esm2022/lib/components/molecules/feedback-form/feedback-form.component.mjs +352 -0
- package/esm2022/lib/components/molecules/feedback-form/types.mjs +2 -0
- package/esm2022/lib/components/molecules/file-input/file-input.component.mjs +7 -7
- package/esm2022/lib/components/molecules/file-input/types.mjs +2 -0
- package/esm2022/lib/components/molecules/number-from-to/number-from-to.component.mjs +23 -9
- package/esm2022/lib/components/molecules/number-from-to/types.mjs +2 -0
- package/esm2022/lib/components/molecules/pin-input/pin-input.component.mjs +2 -2
- package/esm2022/lib/components/molecules/pin-input/types.mjs +2 -0
- package/esm2022/lib/components/organisms/form/form.component.mjs +108 -30
- package/esm2022/lib/services/content/content-types/blog.mjs +275 -0
- package/esm2022/lib/services/content/content-types/documentation.mjs +303 -0
- package/esm2022/lib/services/content/content-types/news.mjs +277 -0
- package/esm2022/lib/services/content/index.mjs +51 -0
- package/esm2022/lib/services/content/transformer.mjs +265 -0
- package/esm2022/lib/services/content/types.mjs +41 -0
- package/esm2022/lib/services/feedback/config.mjs +49 -0
- package/esm2022/lib/services/feedback/feedback.service.mjs +174 -0
- package/esm2022/lib/services/feedback/index.mjs +44 -0
- package/esm2022/lib/services/feedback/types.mjs +30 -0
- package/esm2022/lib/services/firebase/index.mjs +3 -1
- package/esm2022/lib/services/firebase/shared-config.mjs +132 -0
- package/esm2022/public-api.mjs +14 -1
- package/fesm2022/valtech-components.mjs +2225 -177
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/atoms/fab/fab.component.d.ts +2 -0
- package/lib/components/molecules/comment-input/comment-input.component.d.ts +4 -4
- package/lib/components/molecules/comment-input/types.d.ts +59 -0
- package/lib/components/molecules/date-input/date-input.component.d.ts +4 -3
- package/lib/components/molecules/date-input/types.d.ts +74 -0
- package/lib/components/molecules/feedback-form/feedback-form.component.d.ts +56 -0
- package/lib/components/molecules/feedback-form/types.d.ts +54 -0
- package/lib/components/molecules/file-input/file-input.component.d.ts +5 -3
- package/lib/components/molecules/file-input/types.d.ts +72 -0
- package/lib/components/molecules/number-from-to/number-from-to.component.d.ts +8 -2
- package/lib/components/molecules/number-from-to/types.d.ts +76 -0
- package/lib/components/molecules/pin-input/pin-input.component.d.ts +4 -3
- package/lib/components/molecules/pin-input/types.d.ts +63 -0
- package/lib/components/organisms/form/form.component.d.ts +16 -2
- package/lib/services/content/content-types/blog.d.ts +148 -0
- package/lib/services/content/content-types/documentation.d.ts +183 -0
- package/lib/services/content/content-types/news.d.ts +162 -0
- package/lib/services/content/index.d.ts +49 -0
- package/lib/services/content/transformer.d.ts +96 -0
- package/lib/services/content/types.d.ts +220 -0
- package/lib/services/feedback/config.d.ts +35 -0
- package/lib/services/feedback/feedback.service.d.ts +76 -0
- package/lib/services/feedback/index.d.ts +40 -0
- package/lib/services/feedback/types.d.ts +107 -0
- package/lib/services/firebase/index.d.ts +1 -0
- package/lib/services/firebase/shared-config.d.ts +120 -0
- package/package.json +1 -1
- package/public-api.d.ts +9 -0
|
@@ -4,6 +4,7 @@ import { CommonModule } from '@angular/common';
|
|
|
4
4
|
import { addIcons } from 'ionicons';
|
|
5
5
|
import { add, close, share, create, trash, heart, star, camera, mic, send } from 'ionicons/icons';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "../../../services/icons.service";
|
|
7
8
|
addIcons({ add, close, share, create, trash, heart, star, camera, mic, send });
|
|
8
9
|
/**
|
|
9
10
|
* val-fab
|
|
@@ -35,7 +36,7 @@ addIcons({ add, close, share, create, trash, heart, star, camera, mic, send });
|
|
|
35
36
|
* @output actionClick: FabActionMetadata - Emits when an action is clicked
|
|
36
37
|
*/
|
|
37
38
|
export class FabComponent {
|
|
38
|
-
constructor() {
|
|
39
|
+
constructor(icon) {
|
|
39
40
|
this.fabClick = new EventEmitter();
|
|
40
41
|
this.actionClick = new EventEmitter();
|
|
41
42
|
this.isActivated = false;
|
|
@@ -76,7 +77,7 @@ export class FabComponent {
|
|
|
76
77
|
this.isActivated = false;
|
|
77
78
|
}
|
|
78
79
|
}
|
|
79
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FabComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
80
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FabComponent, deps: [{ token: i1.IconService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
80
81
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: FabComponent, isStandalone: true, selector: "val-fab", inputs: { props: "props" }, outputs: { fabClick: "fabClick", actionClick: "actionClick" }, ngImport: i0, template: `
|
|
81
82
|
<ion-fab
|
|
82
83
|
[vertical]="getVertical()"
|
|
@@ -142,11 +143,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
142
143
|
}
|
|
143
144
|
</ion-fab>
|
|
144
145
|
`, styles: [":host{display:block}ion-fab{position:relative}ion-fab-button{--box-shadow: 0 4px 12px rgba(0, 0, 0, .15);transition:transform .2s}ion-fab-button:hover:not([disabled]){transform:scale(1.05)}ion-fab-button:active:not([disabled]){transform:scale(.95)}ion-fab-list ion-fab-button{--box-shadow: 0 2px 8px rgba(0, 0, 0, .1)}\n"] }]
|
|
145
|
-
}], propDecorators: { props: [{
|
|
146
|
+
}], ctorParameters: () => [{ type: i1.IconService }], propDecorators: { props: [{
|
|
146
147
|
type: Input
|
|
147
148
|
}], fabClick: [{
|
|
148
149
|
type: Output
|
|
149
150
|
}], actionClick: [{
|
|
150
151
|
type: Output
|
|
151
152
|
}] } });
|
|
152
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
153
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFiLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9hdG9tcy9mYWIvZmFiLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDaEcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDcEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFHbEcsUUFBUSxDQUFDLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztBQXVDL0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E0Qkc7QUFDSCxNQUFNLE9BQU8sWUFBWTtJQVF2QixZQUFZLElBQWlCO1FBTG5CLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ3BDLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQXFCLENBQUM7UUFFOUQsZ0JBQVcsR0FBRyxLQUFLLENBQUM7SUFFWSxDQUFDO0lBRWpDLFdBQVc7UUFDVCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsSUFBSSxZQUFZLENBQUM7UUFDaEQsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQ3hDLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFBRSxPQUFPLFFBQVEsQ0FBQztRQUM5QyxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0lBRUQsYUFBYTtRQUNYLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxJQUFJLFlBQVksQ0FBQztRQUNoRCxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDO1lBQUUsT0FBTyxPQUFPLENBQUM7UUFDMUMsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztZQUFFLE9BQU8sUUFBUSxDQUFDO1FBQzVDLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNqRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDO1FBQ2xDLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDeEQsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDdkMsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3ZCLENBQUM7SUFDSCxDQUFDO0lBRUQsYUFBYSxDQUFDLE1BQXlCO1FBQ3JDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzlCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDdkMsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDM0IsQ0FBQztJQUNILENBQUM7K0dBNUNVLFlBQVk7bUdBQVosWUFBWSw4SkE5RGI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQThCVCx5WUEvQlMsWUFBWSwrQkFBRSxNQUFNLDZHQUFFLFlBQVksOE9BQUUsVUFBVSx3RkFBRSxPQUFPOzs0RkErRHRELFlBQVk7a0JBbEV4QixTQUFTOytCQUNFLFNBQVMsY0FDUCxJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxZQUNsRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBOEJUO2dGQWlDUSxLQUFLO3NCQUFiLEtBQUs7Z0JBRUksUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IElvbkZhYiwgSW9uRmFiQnV0dG9uLCBJb25GYWJMaXN0LCBJb25JY29uLCBJb25MYWJlbCB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZhYk1ldGFkYXRhLCBGYWJBY3Rpb25NZXRhZGF0YSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgYWRkSWNvbnMgfSBmcm9tICdpb25pY29ucyc7XG5pbXBvcnQgeyBhZGQsIGNsb3NlLCBzaGFyZSwgY3JlYXRlLCB0cmFzaCwgaGVhcnQsIHN0YXIsIGNhbWVyYSwgbWljLCBzZW5kIH0gZnJvbSAnaW9uaWNvbnMvaWNvbnMnO1xuaW1wb3J0IHsgSWNvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pY29ucy5zZXJ2aWNlJztcblxuYWRkSWNvbnMoeyBhZGQsIGNsb3NlLCBzaGFyZSwgY3JlYXRlLCB0cmFzaCwgaGVhcnQsIHN0YXIsIGNhbWVyYSwgbWljLCBzZW5kIH0pO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtZmFiJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgSW9uRmFiLCBJb25GYWJCdXR0b24sIElvbkZhYkxpc3QsIElvbkljb24sIElvbkxhYmVsXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8aW9uLWZhYlxuICAgICAgW3ZlcnRpY2FsXT1cImdldFZlcnRpY2FsKClcIlxuICAgICAgW2hvcml6b250YWxdPVwiZ2V0SG9yaXpvbnRhbCgpXCJcbiAgICAgIFthY3RpdmF0ZWRdPVwiaXNBY3RpdmF0ZWRcIlxuICAgID5cbiAgICAgIDxpb24tZmFiLWJ1dHRvblxuICAgICAgICBbY29sb3JdPVwicHJvcHMuY29sb3IgfHwgJ3ByaW1hcnknXCJcbiAgICAgICAgW3NpemVdPVwicHJvcHMuc2l6ZVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJwcm9wcy5kaXNhYmxlZFwiXG4gICAgICAgIFt0cmFuc2x1Y2VudF09XCJwcm9wcy50cmFuc2x1Y2VudFwiXG4gICAgICAgIChjbGljayk9XCJvbk1haW5DbGljaygpXCJcbiAgICAgID5cbiAgICAgICAgPGlvbi1pY29uIFtuYW1lXT1cImdldE1haW5JY29uKClcIj48L2lvbi1pY29uPlxuICAgICAgPC9pb24tZmFiLWJ1dHRvbj5cblxuICAgICAgQGlmIChwcm9wcy5hY3Rpb25zICYmIHByb3BzLmFjdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgICA8aW9uLWZhYi1saXN0IFtzaWRlXT1cInByb3BzLnNpZGUgfHwgJ3RvcCdcIj5cbiAgICAgICAgICBAZm9yIChhY3Rpb24gb2YgcHJvcHMuYWN0aW9uczsgdHJhY2sgYWN0aW9uLnRva2VuIHx8ICRpbmRleCkge1xuICAgICAgICAgICAgPGlvbi1mYWItYnV0dG9uXG4gICAgICAgICAgICAgIFtjb2xvcl09XCJhY3Rpb24uY29sb3IgfHwgJ2xpZ2h0J1wiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJhY3Rpb24uZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwib25BY3Rpb25DbGljayhhY3Rpb24pXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGlvbi1pY29uIFtuYW1lXT1cImFjdGlvbi5pY29uXCI+PC9pb24taWNvbj5cbiAgICAgICAgICAgIDwvaW9uLWZhYi1idXR0b24+XG4gICAgICAgICAgfVxuICAgICAgICA8L2lvbi1mYWItbGlzdD5cbiAgICAgIH1cbiAgICA8L2lvbi1mYWI+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL2ZhYi5jb21wb25lbnQuc2NzcyddLFxufSlcbi8qKlxuICogdmFsLWZhYlxuICpcbiAqIEEgRmxvYXRpbmcgQWN0aW9uIEJ1dHRvbiBjb21wb25lbnQgd2l0aCBvcHRpb25hbCBzcGVlZCBkaWFsIGFjdGlvbnMuXG4gKlxuICogQGV4YW1wbGUgU2ltcGxlIEZBQlxuICogPHZhbC1mYWIgW3Byb3BzXT1cIntcbiAqICAgaWNvbjogJ2FkZCcsXG4gKiAgIGNvbG9yOiAncHJpbWFyeScsXG4gKiAgIHBvc2l0aW9uOiAnYm90dG9tLWVuZCdcbiAqIH1cIiAoZmFiQ2xpY2spPVwib25DcmVhdGUoKVwiPjwvdmFsLWZhYj5cbiAqXG4gKiBAZXhhbXBsZSBTcGVlZCBkaWFsIEZBQlxuICogPHZhbC1mYWIgW3Byb3BzXT1cIntcbiAqICAgaWNvbjogJ2FkZCcsXG4gKiAgIGljb25BY3RpdmF0ZWQ6ICdjbG9zZScsXG4gKiAgIHBvc2l0aW9uOiAnYm90dG9tLWVuZCcsXG4gKiAgIGFjdGlvbnM6IFtcbiAqICAgICB7IGljb246ICdjYW1lcmEnLCBsYWJlbDogJ1Bob3RvJywgdG9rZW46ICdwaG90bycgfSxcbiAqICAgICB7IGljb246ICdtaWMnLCBsYWJlbDogJ0F1ZGlvJywgdG9rZW46ICdhdWRpbycgfSxcbiAqICAgICB7IGljb246ICdjcmVhdGUnLCBsYWJlbDogJ05vdGUnLCB0b2tlbjogJ25vdGUnIH1cbiAqICAgXSxcbiAqICAgc2lkZTogJ3RvcCdcbiAqIH1cIiAoYWN0aW9uQ2xpY2spPVwib25BY3Rpb24oJGV2ZW50KVwiPjwvdmFsLWZhYj5cbiAqXG4gKiBAaW5wdXQgcHJvcHM6IEZhYk1ldGFkYXRhIC0gQ29uZmlndXJhdGlvbiBmb3IgdGhlIEZBQlxuICogQG91dHB1dCBmYWJDbGljazogdm9pZCAtIEVtaXRzIHdoZW4gbWFpbiBGQUIgaXMgY2xpY2tlZCAod2l0aG91dCBhY3Rpb25zKVxuICogQG91dHB1dCBhY3Rpb25DbGljazogRmFiQWN0aW9uTWV0YWRhdGEgLSBFbWl0cyB3aGVuIGFuIGFjdGlvbiBpcyBjbGlja2VkXG4gKi9cbmV4cG9ydCBjbGFzcyBGYWJDb21wb25lbnQge1xuICBASW5wdXQoKSBwcm9wczogRmFiTWV0YWRhdGE7XG5cbiAgQE91dHB1dCgpIGZhYkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgYWN0aW9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPEZhYkFjdGlvbk1ldGFkYXRhPigpO1xuXG4gIGlzQWN0aXZhdGVkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoaWNvbjogSWNvblNlcnZpY2UpIHt9XG5cbiAgZ2V0VmVydGljYWwoKTogJ3RvcCcgfCAnYm90dG9tJyB8ICdjZW50ZXInIHtcbiAgICBjb25zdCBwb3MgPSB0aGlzLnByb3BzLnBvc2l0aW9uIHx8ICdib3R0b20tZW5kJztcbiAgICBpZiAocG9zLnN0YXJ0c1dpdGgoJ3RvcCcpKSByZXR1cm4gJ3RvcCc7XG4gICAgaWYgKHBvcy5zdGFydHNXaXRoKCdjZW50ZXInKSkgcmV0dXJuICdjZW50ZXInO1xuICAgIHJldHVybiAnYm90dG9tJztcbiAgfVxuXG4gIGdldEhvcml6b250YWwoKTogJ3N0YXJ0JyB8ICdlbmQnIHwgJ2NlbnRlcicge1xuICAgIGNvbnN0IHBvcyA9IHRoaXMucHJvcHMucG9zaXRpb24gfHwgJ2JvdHRvbS1lbmQnO1xuICAgIGlmIChwb3MuZW5kc1dpdGgoJ3N0YXJ0JykpIHJldHVybiAnc3RhcnQnO1xuICAgIGlmIChwb3MuZW5kc1dpdGgoJ2NlbnRlcicpKSByZXR1cm4gJ2NlbnRlcic7XG4gICAgcmV0dXJuICdlbmQnO1xuICB9XG5cbiAgZ2V0TWFpbkljb24oKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5pc0FjdGl2YXRlZCAmJiB0aGlzLnByb3BzLmljb25BY3RpdmF0ZWQpIHtcbiAgICAgIHJldHVybiB0aGlzLnByb3BzLmljb25BY3RpdmF0ZWQ7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnByb3BzLmljb247XG4gIH1cblxuICBvbk1haW5DbGljaygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wcm9wcy5hY3Rpb25zICYmIHRoaXMucHJvcHMuYWN0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLmlzQWN0aXZhdGVkID0gIXRoaXMuaXNBY3RpdmF0ZWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZmFiQ2xpY2suZW1pdCgpO1xuICAgIH1cbiAgfVxuXG4gIG9uQWN0aW9uQ2xpY2soYWN0aW9uOiBGYWJBY3Rpb25NZXRhZGF0YSk6IHZvaWQge1xuICAgIHRoaXMuYWN0aW9uQ2xpY2suZW1pdChhY3Rpb24pO1xuICAgIGlmICh0aGlzLnByb3BzLmNsb3NlT25BY3Rpb24gIT09IGZhbHNlKSB7XG4gICAgICB0aGlzLmlzQWN0aXZhdGVkID0gZmFsc2U7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -10,24 +10,32 @@ import * as i1 from "@angular/forms";
|
|
|
10
10
|
* A textarea input for multi-line comments, integrated with Angular forms.
|
|
11
11
|
*
|
|
12
12
|
* @example
|
|
13
|
-
* <val-comment-input [props]="{ control: myControl,
|
|
13
|
+
* <val-comment-input [props]="{ control: myControl, maxLength: 200 }"></val-comment-input>
|
|
14
14
|
*
|
|
15
|
-
* @input props:
|
|
15
|
+
* @input props: CommentInputMetadata - Configuration for the textarea (form control, maxLength, etc.)
|
|
16
16
|
*/
|
|
17
17
|
export class CommentInputComponent {
|
|
18
18
|
constructor() { }
|
|
19
19
|
ngOnInit() { }
|
|
20
20
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CommentInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
21
21
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: CommentInputComponent, isStandalone: true, selector: "val-comment-input", inputs: { props: "props" }, ngImport: i0, template: `
|
|
22
|
-
<ion-textarea
|
|
22
|
+
<ion-textarea
|
|
23
|
+
[formControl]="props.control"
|
|
24
|
+
[counter]="props.showCounter !== false"
|
|
25
|
+
[maxlength]="props.maxLength"
|
|
26
|
+
></ion-textarea>
|
|
23
27
|
`, isInline: true, styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: IonTextarea, selector: "ion-textarea", inputs: ["autoGrow", "autocapitalize", "autofocus", "clearOnEdit", "color", "cols", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "maxlength", "minlength", "mode", "name", "placeholder", "readonly", "required", "rows", "shape", "spellcheck", "value", "wrap"] }] }); }
|
|
24
28
|
}
|
|
25
29
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CommentInputComponent, decorators: [{
|
|
26
30
|
type: Component,
|
|
27
31
|
args: [{ selector: 'val-comment-input', standalone: true, imports: [CommonModule, ReactiveFormsModule, IonCheckbox, IonTextarea], template: `
|
|
28
|
-
<ion-textarea
|
|
32
|
+
<ion-textarea
|
|
33
|
+
[formControl]="props.control"
|
|
34
|
+
[counter]="props.showCounter !== false"
|
|
35
|
+
[maxlength]="props.maxLength"
|
|
36
|
+
></ion-textarea>
|
|
29
37
|
` }]
|
|
30
38
|
}], ctorParameters: () => [], propDecorators: { props: [{
|
|
31
39
|
type: Input
|
|
32
40
|
}] } });
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudC1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2NvbW1lbnQtaW5wdXQvY29tbWVudC1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7OztBQWdCckU7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxPQUFPLHFCQUFxQjtJQVNoQyxnQkFBZSxDQUFDO0lBRWhCLFFBQVEsS0FBSSxDQUFDOytHQVhGLHFCQUFxQjttR0FBckIscUJBQXFCLHlHQW5CdEI7Ozs7OztHQU1ULHlFQVBTLFlBQVksOEJBQUUsbUJBQW1CLDZkQUFlLFdBQVc7OzRGQW9CMUQscUJBQXFCO2tCQXZCakMsU0FBUzsrQkFDRSxtQkFBbUIsY0FDakIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLG1CQUFtQixFQUFFLFdBQVcsRUFBRSxXQUFXLENBQUMsWUFDNUQ7Ozs7OztHQU1UO3dEQW9CUSxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSW9uQ2hlY2tib3gsIElvblRleHRhcmVhIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBDb21tZW50SW5wdXRNZXRhZGF0YSB9IGZyb20gJy4vdHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtY29tbWVudC1pbnB1dCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIElvbkNoZWNrYm94LCBJb25UZXh0YXJlYV0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGlvbi10ZXh0YXJlYVxuICAgICAgW2Zvcm1Db250cm9sXT1cInByb3BzLmNvbnRyb2xcIlxuICAgICAgW2NvdW50ZXJdPVwicHJvcHMuc2hvd0NvdW50ZXIgIT09IGZhbHNlXCJcbiAgICAgIFttYXhsZW5ndGhdPVwicHJvcHMubWF4TGVuZ3RoXCJcbiAgICA+PC9pb24tdGV4dGFyZWE+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL2NvbW1lbnQtaW5wdXQuY29tcG9uZW50LnNjc3MnXSxcbn0pXG4vKipcbiAqIHZhbC1jb21tZW50LWlucHV0XG4gKlxuICogQSB0ZXh0YXJlYSBpbnB1dCBmb3IgbXVsdGktbGluZSBjb21tZW50cywgaW50ZWdyYXRlZCB3aXRoIEFuZ3VsYXIgZm9ybXMuXG4gKlxuICogQGV4YW1wbGVcbiAqIDx2YWwtY29tbWVudC1pbnB1dCBbcHJvcHNdPVwieyBjb250cm9sOiBteUNvbnRyb2wsIG1heExlbmd0aDogMjAwIH1cIj48L3ZhbC1jb21tZW50LWlucHV0PlxuICpcbiAqIEBpbnB1dCBwcm9wczogQ29tbWVudElucHV0TWV0YWRhdGEgLSBDb25maWd1cmF0aW9uIGZvciB0aGUgdGV4dGFyZWEgKGZvcm0gY29udHJvbCwgbWF4TGVuZ3RoLCBldGMuKVxuICovXG5leHBvcnQgY2xhc3MgQ29tbWVudElucHV0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgLyoqXG4gICAqIElucHV0IGNvbmZpZ3VyYXRpb24gb2JqZWN0LlxuICAgKiBAdHlwZSB7Q29tbWVudElucHV0TWV0YWRhdGF9XG4gICAqIEBwcm9wZXJ0eSBjb250cm9sIC0gVGhlIEFuZ3VsYXIgRm9ybUNvbnRyb2wgZm9yIHRoZSB0ZXh0YXJlYS5cbiAgICogQHByb3BlcnR5IG1heExlbmd0aCAtIE1heGltdW0gY2hhcmFjdGVyIGxlbmd0aC5cbiAgICovXG4gIEBJbnB1dCgpIHByb3BzOiBDb21tZW50SW5wdXRNZXRhZGF0YTtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgbmdPbkluaXQoKSB7fVxufVxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2NvbW1lbnQtaW5wdXQvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ29sb3IgfSBmcm9tICdAaW9uaWMvY29yZSc7XG5pbXBvcnQgeyBDb21wb25lbnRTdGF0ZSB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuLyoqXG4gKiBNZXRhZGF0YSBmb3IgdGhlIGNvbW1lbnQgaW5wdXQgY29tcG9uZW50LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbW1lbnRJbnB1dE1ldGFkYXRhIHtcbiAgLyoqIEZvcm0gY29udHJvbCBmb3IgdGhlIGNvbW1lbnQgdmFsdWUgKi9cbiAgY29udHJvbDogRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD47XG4gIC8qKiBVbmlxdWUgdG9rZW4gZm9yIHRoZSBpbnB1dCAqL1xuICB0b2tlbj86IHN0cmluZztcbiAgLyoqIERpc3BsYXkgbGFiZWwgKi9cbiAgbGFiZWw/OiBzdHJpbmc7XG4gIC8qKiBGaWVsZCBuYW1lICovXG4gIG5hbWU/OiBzdHJpbmc7XG4gIC8qKiBIZWxwIHRleHQgKi9cbiAgaGludD86IHN0cmluZztcbiAgLyoqIFBsYWNlaG9sZGVyIHRleHQgKi9cbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIC8qKiBGaWVsZCBzdGF0ZSAqL1xuICBzdGF0ZT86IENvbXBvbmVudFN0YXRlO1xuXG4gIC8vID09PSBUZXh0YXJlYSBjb25maWd1cmF0aW9uID09PVxuICAvKiogTWF4aW11bSBjaGFyYWN0ZXIgbGVuZ3RoICovXG4gIG1heExlbmd0aD86IG51bWJlcjtcbiAgLyoqIE1pbmltdW0gY2hhcmFjdGVyIGxlbmd0aCAqL1xuICBtaW5MZW5ndGg/OiBudW1iZXI7XG4gIC8qKiBOdW1iZXIgb2YgdmlzaWJsZSByb3dzICovXG4gIHJvd3M/OiBudW1iZXI7XG4gIC8qKiBTaG93IGNoYXJhY3RlciBjb3VudGVyICovXG4gIHNob3dDb3VudGVyPzogYm9vbGVhbjtcbiAgLyoqIENvdW50ZXIgZm9ybWF0IChlLmcuLCAne2N1cnJlbnR9L3ttYXh9JykgKi9cbiAgY291bnRlckZvcm1hdD86IHN0cmluZztcblxuICAvLyA9PT0gU3R5bGluZyA9PT1cbiAgLyoqIENvbXBvbmVudCBjb2xvciAqL1xuICBjb2xvcj86IENvbG9yO1xuICAvKiogQ3VzdG9tIENTUyBjbGFzcyAqL1xuICBjc3NDbGFzcz86IHN0cmluZztcbiAgLyoqIEZpbGwgc3R5bGUgKi9cbiAgZmlsbD86ICdzb2xpZCcgfCAnb3V0bGluZSc7XG5cbiAgLy8gPT09IFJlYWN0aXZlIGNvbnRlbnQgPT09XG4gIC8qKiBDb250ZW50IGtleSBmb3IgcmVhY3RpdmUgbGFiZWwgKi9cbiAgY29udGVudEtleT86IHN0cmluZztcbiAgLyoqIENvbXBvbmVudCBjbGFzcyBuYW1lIGZvciBjb250ZW50IGxvb2t1cCAqL1xuICBjb250ZW50Q2xhc3M/OiBzdHJpbmc7XG4gIC8qKiBGYWxsYmFjayB0ZXh0IGlmIGNvbnRlbnQga2V5IGlzIG5vdCBmb3VuZCAqL1xuICBjb250ZW50RmFsbGJhY2s/OiBzdHJpbmc7XG5cbiAgLy8gPT09IFZhbGlkYXRpb24gZGlzcGxheSA9PT1cbiAgLyoqIEN1c3RvbSBlcnJvciBtZXNzYWdlcyAqL1xuICBlcnJvcnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICAvKiogU2hvdyB2YWxpZGF0aW9uIGVycm9ycyAqL1xuICBzaG93RXJyb3JzPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBFdmVudCBlbWl0dGVkIHdoZW4gY29tbWVudCBpbnB1dCBjaGFuZ2VzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbW1lbnRJbnB1dENoYW5nZUV2ZW50IHtcbiAgLyoqIEN1cnJlbnQgY29tbWVudCB2YWx1ZSAqL1xuICB2YWx1ZTogc3RyaW5nO1xuICAvKiogQ3VycmVudCBjaGFyYWN0ZXIgY291bnQgKi9cbiAgbGVuZ3RoOiBudW1iZXI7XG4gIC8qKiBSZW1haW5pbmcgY2hhcmFjdGVycyAoaWYgbWF4TGVuZ3RoIGlzIHNldCkgKi9cbiAgcmVtYWluaW5nOiBudW1iZXIgfCBudWxsO1xufVxuIl19
|
|
@@ -2,7 +2,6 @@ import { CommonModule } from '@angular/common';
|
|
|
2
2
|
import { Component, Input } from '@angular/core';
|
|
3
3
|
import { ReactiveFormsModule } from '@angular/forms';
|
|
4
4
|
import { IonDatetime, IonDatetimeButton, IonModal } from '@ionic/angular/standalone';
|
|
5
|
-
import { applyDefaultValueToControl } from '../../../shared/utils/form-defaults';
|
|
6
5
|
import * as i0 from "@angular/core";
|
|
7
6
|
import * as i1 from "@angular/forms";
|
|
8
7
|
/**
|
|
@@ -13,14 +12,34 @@ import * as i1 from "@angular/forms";
|
|
|
13
12
|
* @example
|
|
14
13
|
* <val-date-input [props]="{ control: myControl, hint: 'Select a date' }"></val-date-input>
|
|
15
14
|
*
|
|
16
|
-
* @input props:
|
|
15
|
+
* @input props: DateInputMetadata - Configuration for the date input (form control, hint, etc.)
|
|
17
16
|
*/
|
|
18
17
|
export class DateInputComponent {
|
|
19
18
|
constructor() { }
|
|
20
19
|
ngOnInit() {
|
|
21
20
|
// Apply default values on initialization
|
|
22
21
|
if (this.props?.withDefault || this.props?.value) {
|
|
23
|
-
|
|
22
|
+
this.applyDefaultValue();
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
applyDefaultValue() {
|
|
26
|
+
if (!this.props.control)
|
|
27
|
+
return;
|
|
28
|
+
let defaultValue = null;
|
|
29
|
+
// Explicit value takes precedence
|
|
30
|
+
if (this.props.value) {
|
|
31
|
+
defaultValue = new Date(this.props.value).toISOString();
|
|
32
|
+
}
|
|
33
|
+
else if (typeof this.props.withDefault === 'string') {
|
|
34
|
+
defaultValue = new Date(this.props.withDefault).toISOString();
|
|
35
|
+
}
|
|
36
|
+
else if (this.props.withDefault === true) {
|
|
37
|
+
defaultValue = new Date().toISOString();
|
|
38
|
+
}
|
|
39
|
+
if (defaultValue) {
|
|
40
|
+
this.props.control.setValue(defaultValue);
|
|
41
|
+
this.props.control.markAsPristine();
|
|
42
|
+
this.props.control.updateValueAndValidity();
|
|
24
43
|
}
|
|
25
44
|
}
|
|
26
45
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DateInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
@@ -80,4 +99,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
80
99
|
}], ctorParameters: () => [], propDecorators: { props: [{
|
|
81
100
|
type: Input
|
|
82
101
|
}] } });
|
|
83
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
102
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2RhdGUtaW5wdXQvZGF0ZS1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7OztBQWtDckY7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxPQUFPLGtCQUFrQjtJQVM3QixnQkFBZSxDQUFDO0lBRWhCLFFBQVE7UUFDTix5Q0FBeUM7UUFDekMsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLFdBQVcsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDO1lBQ2pELElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQzNCLENBQUM7SUFDSCxDQUFDO0lBRU8saUJBQWlCO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU87WUFBRSxPQUFPO1FBRWhDLElBQUksWUFBWSxHQUFrQixJQUFJLENBQUM7UUFFdkMsa0NBQWtDO1FBQ2xDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNyQixZQUFZLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUMxRCxDQUFDO2FBQU0sSUFBSSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ3RELFlBQVksR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2hFLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxLQUFLLElBQUksRUFBRSxDQUFDO1lBQzNDLFlBQVksR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzFDLENBQUM7UUFFRCxJQUFJLFlBQVksRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUMxQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUNwQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQzlDLENBQUM7SUFDSCxDQUFDOytHQXJDVSxrQkFBa0I7bUdBQWxCLGtCQUFrQixzR0FyQ25COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F3QlQsc3hGQXpCUyxZQUFZLDhCQUFFLG1CQUFtQiwwVEFBRSxXQUFXLG9oQkFBRSxpQkFBaUIsbUhBQUUsUUFBUTs7NEZBc0MxRSxrQkFBa0I7a0JBekM5QixTQUFTOytCQUNFLGdCQUFnQixjQUNkLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxDQUFDLFlBQzVFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F3QlQ7d0RBb0JRLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJb25EYXRldGltZSwgSW9uRGF0ZXRpbWVCdXR0b24sIElvbk1vZGFsIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBEYXRlSW5wdXRNZXRhZGF0YSB9IGZyb20gJy4vdHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtZGF0ZS1pbnB1dCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIElvbkRhdGV0aW1lLCBJb25EYXRldGltZUJ1dHRvbiwgSW9uTW9kYWxdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJidXR0b24tY29udGFpbmVyXCI+XG4gICAgICA8aW9uLWRhdGV0aW1lLWJ1dHRvbiBjbGFzcz1cImFjdGlvblwiIFtkYXRldGltZV09XCJwcm9wcy50b2tlblwiPjwvaW9uLWRhdGV0aW1lLWJ1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8aW9uLW1vZGFsIFtrZWVwQ29udGVudHNNb3VudGVkXT1cInRydWVcIj5cbiAgICAgIDxuZy10ZW1wbGF0ZT5cbiAgICAgICAgPGlvbi1kYXRldGltZVxuICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJwcm9wcy5jb250cm9sXCJcbiAgICAgICAgICBbaWRdPVwicHJvcHMudG9rZW5cIlxuICAgICAgICAgIHByZXNlbnRhdGlvbj1cImRhdGVcIlxuICAgICAgICAgIGxvY2FsZT1cImVzLUVTXCJcbiAgICAgICAgICBbZmlyc3REYXlPZldlZWtdPVwiMVwiXG4gICAgICAgICAgW3Nob3dEZWZhdWx0QnV0dG9uc109XCJ0cnVlXCJcbiAgICAgICAgICBkb25lVGV4dD1cIkFjZXB0YXJcIlxuICAgICAgICAgIGNhbmNlbFRleHQ9XCJDYW5jZWxhclwiXG4gICAgICAgICAgZm9ybWF0T3B0aW9ucz1cIntcbiAgICAgICAgICAgIGRhdGU6IHsgZGF0ZVN0eWxlOiAnbWVkaXVtJyB9LFxuICAgICAgICAgICAgdGltZTogeyB0aW1lU3R5bGU6ICdzaG9ydCcgfVxuICAgICAgICAgIH1cIlxuICAgICAgICA+XG4gICAgICAgICAgPHNwYW4gc2xvdD1cInRpdGxlXCI+e3sgcHJvcHMuaGludCB9fTwvc3Bhbj5cbiAgICAgICAgPC9pb24tZGF0ZXRpbWU+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvaW9uLW1vZGFsPlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi9kYXRlLWlucHV0LmNvbXBvbmVudC5zY3NzJ10sXG59KVxuLyoqXG4gKiB2YWwtZGF0ZS1pbnB1dFxuICpcbiAqIEEgZGF0ZSBwaWNrZXIgaW5wdXQgaW50ZWdyYXRlZCB3aXRoIEFuZ3VsYXIgZm9ybXMsIHVzaW5nIElvbmljJ3MgZGF0ZXRpbWUgY29tcG9uZW50LlxuICpcbiAqIEBleGFtcGxlXG4gKiA8dmFsLWRhdGUtaW5wdXQgW3Byb3BzXT1cInsgY29udHJvbDogbXlDb250cm9sLCBoaW50OiAnU2VsZWN0IGEgZGF0ZScgfVwiPjwvdmFsLWRhdGUtaW5wdXQ+XG4gKlxuICogQGlucHV0IHByb3BzOiBEYXRlSW5wdXRNZXRhZGF0YSAtIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBkYXRlIGlucHV0IChmb3JtIGNvbnRyb2wsIGhpbnQsIGV0Yy4pXG4gKi9cbmV4cG9ydCBjbGFzcyBEYXRlSW5wdXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAvKipcbiAgICogSW5wdXQgY29uZmlndXJhdGlvbiBvYmplY3QuXG4gICAqIEB0eXBlIHtEYXRlSW5wdXRNZXRhZGF0YX1cbiAgICogQHByb3BlcnR5IGNvbnRyb2wgLSBUaGUgQW5ndWxhciBGb3JtQ29udHJvbCBmb3IgdGhlIGRhdGUgaW5wdXQuXG4gICAqIEBwcm9wZXJ0eSBoaW50IC0gVGhlIGhpbnQgdGV4dCBmb3IgdGhlIGlucHV0LlxuICAgKi9cbiAgQElucHV0KCkgcHJvcHM6IERhdGVJbnB1dE1ldGFkYXRhO1xuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICAvLyBBcHBseSBkZWZhdWx0IHZhbHVlcyBvbiBpbml0aWFsaXphdGlvblxuICAgIGlmICh0aGlzLnByb3BzPy53aXRoRGVmYXVsdCB8fCB0aGlzLnByb3BzPy52YWx1ZSkge1xuICAgICAgdGhpcy5hcHBseURlZmF1bHRWYWx1ZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlEZWZhdWx0VmFsdWUoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnByb3BzLmNvbnRyb2wpIHJldHVybjtcblxuICAgIGxldCBkZWZhdWx0VmFsdWU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gICAgLy8gRXhwbGljaXQgdmFsdWUgdGFrZXMgcHJlY2VkZW5jZVxuICAgIGlmICh0aGlzLnByb3BzLnZhbHVlKSB7XG4gICAgICBkZWZhdWx0VmFsdWUgPSBuZXcgRGF0ZSh0aGlzLnByb3BzLnZhbHVlKS50b0lTT1N0cmluZygpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoaXMucHJvcHMud2l0aERlZmF1bHQgPT09ICdzdHJpbmcnKSB7XG4gICAgICBkZWZhdWx0VmFsdWUgPSBuZXcgRGF0ZSh0aGlzLnByb3BzLndpdGhEZWZhdWx0KS50b0lTT1N0cmluZygpO1xuICAgIH0gZWxzZSBpZiAodGhpcy5wcm9wcy53aXRoRGVmYXVsdCA9PT0gdHJ1ZSkge1xuICAgICAgZGVmYXVsdFZhbHVlID0gbmV3IERhdGUoKS50b0lTT1N0cmluZygpO1xuICAgIH1cblxuICAgIGlmIChkZWZhdWx0VmFsdWUpIHtcbiAgICAgIHRoaXMucHJvcHMuY29udHJvbC5zZXRWYWx1ZShkZWZhdWx0VmFsdWUpO1xuICAgICAgdGhpcy5wcm9wcy5jb250cm9sLm1hcmtBc1ByaXN0aW5lKCk7XG4gICAgICB0aGlzLnByb3BzLmNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2RhdGUtaW5wdXQvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ29sb3IgfSBmcm9tICdAaW9uaWMvY29yZSc7XG5pbXBvcnQgeyBDb21wb25lbnRTdGF0ZSB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuLyoqXG4gKiBNZXRhZGF0YSBmb3IgdGhlIGRhdGUgaW5wdXQgY29tcG9uZW50LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERhdGVJbnB1dE1ldGFkYXRhIHtcbiAgLyoqIEZvcm0gY29udHJvbCBmb3IgdGhlIGRhdGUgdmFsdWUgKElTTyBzdHJpbmcpICovXG4gIGNvbnRyb2w6IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+O1xuICAvKiogVW5pcXVlIHRva2VuIGZvciB0aGUgaW5wdXQgKi9cbiAgdG9rZW4/OiBzdHJpbmc7XG4gIC8qKiBEaXNwbGF5IGxhYmVsICovXG4gIGxhYmVsPzogc3RyaW5nO1xuICAvKiogRmllbGQgbmFtZSAqL1xuICBuYW1lPzogc3RyaW5nO1xuICAvKiogSGVscCB0ZXh0IC8gdGl0bGUgZGlzcGxheWVkIGluIG1vZGFsICovXG4gIGhpbnQ/OiBzdHJpbmc7XG4gIC8qKiBQbGFjZWhvbGRlciB0ZXh0ICovXG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICAvKiogRmllbGQgc3RhdGUgKi9cbiAgc3RhdGU/OiBDb21wb25lbnRTdGF0ZTtcblxuICAvLyA9PT0gRGF0ZSBjb25maWd1cmF0aW9uID09PVxuICAvKiogTWluaW11bSBzZWxlY3RhYmxlIGRhdGUgKElTTyBzdHJpbmcpICovXG4gIG1pbj86IHN0cmluZztcbiAgLyoqIE1heGltdW0gc2VsZWN0YWJsZSBkYXRlIChJU08gc3RyaW5nKSAqL1xuICBtYXg/OiBzdHJpbmc7XG4gIC8qKiBMb2NhbGUgZm9yIGRhdGUgZGlzcGxheSAoZS5nLiwgJ2VzLUVTJykgKi9cbiAgbG9jYWxlPzogc3RyaW5nO1xuICAvKiogRmlyc3QgZGF5IG9mIHdlZWsgKDAgPSBTdW5kYXksIDEgPSBNb25kYXkpICovXG4gIGZpcnN0RGF5T2ZXZWVrPzogbnVtYmVyO1xuICAvKiogRGF0ZSBwcmVzZW50YXRpb24gZm9ybWF0ICovXG4gIHByZXNlbnRhdGlvbj86ICdkYXRlJyB8ICdkYXRlLXRpbWUnIHwgJ21vbnRoJyB8ICdtb250aC15ZWFyJyB8ICd5ZWFyJyB8ICd0aW1lJztcbiAgLyoqIEN1c3RvbSBmb3JtYXQgb3B0aW9ucyAqL1xuICBmb3JtYXRPcHRpb25zPzoge1xuICAgIGRhdGU/OiB7IGRhdGVTdHlsZT86ICdmdWxsJyB8ICdsb25nJyB8ICdtZWRpdW0nIHwgJ3Nob3J0JyB9O1xuICAgIHRpbWU/OiB7IHRpbWVTdHlsZT86ICdmdWxsJyB8ICdsb25nJyB8ICdtZWRpdW0nIHwgJ3Nob3J0JyB9O1xuICB9O1xuXG4gIC8vID09PSBNb2RhbCBjb25maWd1cmF0aW9uID09PVxuICAvKiogRG9uZSBidXR0b24gdGV4dCAqL1xuICBkb25lVGV4dD86IHN0cmluZztcbiAgLyoqIENhbmNlbCBidXR0b24gdGV4dCAqL1xuICBjYW5jZWxUZXh0Pzogc3RyaW5nO1xuICAvKiogU2hvdyBkZWZhdWx0IGJ1dHRvbnMgKi9cbiAgc2hvd0RlZmF1bHRCdXR0b25zPzogYm9vbGVhbjtcblxuICAvLyA9PT0gU3R5bGluZyA9PT1cbiAgLyoqIENvbXBvbmVudCBjb2xvciAqL1xuICBjb2xvcj86IENvbG9yO1xuICAvKiogQ3VzdG9tIENTUyBjbGFzcyAqL1xuICBjc3NDbGFzcz86IHN0cmluZztcblxuICAvLyA9PT0gRGVmYXVsdCB2YWx1ZSA9PT1cbiAgLyoqIEluaXRpYWwgdmFsdWUgZm9yIHRoZSBmaWVsZCAqL1xuICB2YWx1ZT86IHN0cmluZztcbiAgLyoqIERlZmF1bHQgdmFsdWUgY29uZmlndXJhdGlvbiAtIHN0cmluZyBmb3IgY3VzdG9tIGRlZmF1bHRzLCB0cnVlIGZvciBhdXRvIGRlZmF1bHRzICovXG4gIHdpdGhEZWZhdWx0Pzogc3RyaW5nIHwgYm9vbGVhbjtcblxuICAvLyA9PT0gUmVhY3RpdmUgY29udGVudCA9PT1cbiAgLyoqIENvbnRlbnQga2V5IGZvciByZWFjdGl2ZSBsYWJlbCAqL1xuICBjb250ZW50S2V5Pzogc3RyaW5nO1xuICAvKiogQ29tcG9uZW50IGNsYXNzIG5hbWUgZm9yIGNvbnRlbnQgbG9va3VwICovXG4gIGNvbnRlbnRDbGFzcz86IHN0cmluZztcbiAgLyoqIEZhbGxiYWNrIHRleHQgaWYgY29udGVudCBrZXkgaXMgbm90IGZvdW5kICovXG4gIGNvbnRlbnRGYWxsYmFjaz86IHN0cmluZztcblxuICAvLyA9PT0gVmFsaWRhdGlvbiBkaXNwbGF5ID09PVxuICAvKiogQ3VzdG9tIGVycm9yIG1lc3NhZ2VzICovXG4gIGVycm9ycz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIC8qKiBTaG93IHZhbGlkYXRpb24gZXJyb3JzICovXG4gIHNob3dFcnJvcnM/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEV2ZW50IGVtaXR0ZWQgd2hlbiBkYXRlIGNoYW5nZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGF0ZUlucHV0Q2hhbmdlRXZlbnQge1xuICAvKiogU2VsZWN0ZWQgZGF0ZSB2YWx1ZSAoSVNPIHN0cmluZykgKi9cbiAgdmFsdWU6IHN0cmluZyB8IG51bGw7XG4gIC8qKiBGb3JtYXR0ZWQgZGF0ZSBzdHJpbmcgZm9yIGRpc3BsYXkgKi9cbiAgZm9ybWF0dGVkVmFsdWU6IHN0cmluZztcbn1cbiJdfQ==
|
|
@@ -0,0 +1,352 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { Component, EventEmitter, Input, Output, inject, signal, } from '@angular/core';
|
|
3
|
+
import { FormBuilder, ReactiveFormsModule, Validators, } from '@angular/forms';
|
|
4
|
+
import { IonButton, IonIcon, IonItem, IonLabel, IonList, IonNote, IonSelect, IonSelectOption, IonSpinner, IonText, IonTextarea, } from '@ionic/angular/standalone';
|
|
5
|
+
import { addIcons } from 'ionicons';
|
|
6
|
+
import { bugOutline, bulbOutline, chatbubbleOutline, checkmarkCircleOutline, closeCircleOutline, documentTextOutline, } from 'ionicons/icons';
|
|
7
|
+
import { FeedbackService, DEFAULT_FEEDBACK_TYPE_OPTIONS, } from '../../../services/feedback';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "@angular/common";
|
|
10
|
+
import * as i2 from "@angular/forms";
|
|
11
|
+
/**
|
|
12
|
+
* val-feedback-form
|
|
13
|
+
*
|
|
14
|
+
* Formulario reutilizable para enviar feedback desde cualquier parte de la aplicación.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```html
|
|
18
|
+
* <!-- Feedback general -->
|
|
19
|
+
* <val-feedback-form
|
|
20
|
+
* [props]="{ defaultType: 'feedback', showTypeSelector: true }"
|
|
21
|
+
* (onSubmit)="handleSuccess($event)"
|
|
22
|
+
* (onCancel)="closeModal()"
|
|
23
|
+
* />
|
|
24
|
+
*
|
|
25
|
+
* <!-- Reportar contenido incorrecto -->
|
|
26
|
+
* <val-feedback-form
|
|
27
|
+
* [props]="{
|
|
28
|
+
* defaultType: 'poor-content',
|
|
29
|
+
* showTypeSelector: false,
|
|
30
|
+
* contentRef: { contentId: article.id, contentType: 'article' },
|
|
31
|
+
* submitButtonText: 'Reportar contenido'
|
|
32
|
+
* }"
|
|
33
|
+
* />
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
export class FeedbackFormComponent {
|
|
37
|
+
constructor() {
|
|
38
|
+
/**
|
|
39
|
+
* Configuración del formulario.
|
|
40
|
+
*/
|
|
41
|
+
this.props = {};
|
|
42
|
+
/**
|
|
43
|
+
* Evento emitido cuando el feedback se envía exitosamente.
|
|
44
|
+
*/
|
|
45
|
+
this.onSubmit = new EventEmitter();
|
|
46
|
+
/**
|
|
47
|
+
* Evento emitido cuando el usuario cancela.
|
|
48
|
+
*/
|
|
49
|
+
this.onCancel = new EventEmitter();
|
|
50
|
+
this.fb = inject(FormBuilder);
|
|
51
|
+
this.feedbackService = inject(FeedbackService);
|
|
52
|
+
this.typeOptions = DEFAULT_FEEDBACK_TYPE_OPTIONS;
|
|
53
|
+
this.isSubmitting = signal(false);
|
|
54
|
+
this.isSuccess = signal(false);
|
|
55
|
+
this.error = signal(null);
|
|
56
|
+
addIcons({
|
|
57
|
+
bugOutline,
|
|
58
|
+
bulbOutline,
|
|
59
|
+
chatbubbleOutline,
|
|
60
|
+
checkmarkCircleOutline,
|
|
61
|
+
closeCircleOutline,
|
|
62
|
+
documentTextOutline,
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
ngOnInit() {
|
|
66
|
+
// Filtrar tipos habilitados si se especifica
|
|
67
|
+
if (this.props.enabledTypes?.length) {
|
|
68
|
+
this.typeOptions = this.typeOptions.filter((opt) => this.props.enabledTypes.includes(opt.value));
|
|
69
|
+
}
|
|
70
|
+
// Usar opciones personalizadas si se proporcionan
|
|
71
|
+
if (this.props.typeOptions?.length) {
|
|
72
|
+
this.typeOptions = this.props.typeOptions;
|
|
73
|
+
}
|
|
74
|
+
// Inicializar formulario
|
|
75
|
+
this.form = this.fb.group({
|
|
76
|
+
type: [this.props.defaultType || 'feedback', Validators.required],
|
|
77
|
+
title: [
|
|
78
|
+
'',
|
|
79
|
+
[Validators.required, Validators.minLength(5), Validators.maxLength(200)],
|
|
80
|
+
],
|
|
81
|
+
description: [
|
|
82
|
+
'',
|
|
83
|
+
[Validators.required, Validators.minLength(10), Validators.maxLength(5000)],
|
|
84
|
+
],
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
async handleSubmit() {
|
|
88
|
+
if (this.form.invalid || this.isSubmitting())
|
|
89
|
+
return;
|
|
90
|
+
this.isSubmitting.set(true);
|
|
91
|
+
this.error.set(null);
|
|
92
|
+
this.isSuccess.set(false);
|
|
93
|
+
try {
|
|
94
|
+
const { type, title, description } = this.form.value;
|
|
95
|
+
const response = await this.feedbackService.createAsync(type, title, description, [], // attachments (por ahora vacío)
|
|
96
|
+
this.props.contentRef);
|
|
97
|
+
this.isSuccess.set(true);
|
|
98
|
+
this.form.reset({ type: this.props.defaultType || 'feedback' });
|
|
99
|
+
this.onSubmit.emit({
|
|
100
|
+
response,
|
|
101
|
+
type: type,
|
|
102
|
+
title,
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
catch (err) {
|
|
106
|
+
this.error.set(err.error?.message || err.message || 'Error al enviar el feedback');
|
|
107
|
+
}
|
|
108
|
+
finally {
|
|
109
|
+
this.isSubmitting.set(false);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
onCancelClick() {
|
|
113
|
+
this.onCancel.emit();
|
|
114
|
+
}
|
|
115
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FeedbackFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
116
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: FeedbackFormComponent, isStandalone: true, selector: "val-feedback-form", inputs: { props: "props" }, outputs: { onSubmit: "onSubmit", onCancel: "onCancel" }, ngImport: i0, template: `
|
|
117
|
+
<form
|
|
118
|
+
[formGroup]="form"
|
|
119
|
+
(ngSubmit)="handleSubmit()"
|
|
120
|
+
class="feedback-form"
|
|
121
|
+
[class.compact]="props.compact"
|
|
122
|
+
[ngClass]="props.cssClass"
|
|
123
|
+
>
|
|
124
|
+
<!-- Type selector -->
|
|
125
|
+
@if (props.showTypeSelector !== false) {
|
|
126
|
+
<ion-item>
|
|
127
|
+
<ion-select
|
|
128
|
+
formControlName="type"
|
|
129
|
+
label="Tipo de feedback"
|
|
130
|
+
labelPlacement="floating"
|
|
131
|
+
interface="popover"
|
|
132
|
+
>
|
|
133
|
+
@for (option of typeOptions; track option.value) {
|
|
134
|
+
<ion-select-option [value]="option.value">
|
|
135
|
+
{{ option.label }}
|
|
136
|
+
</ion-select-option>
|
|
137
|
+
}
|
|
138
|
+
</ion-select>
|
|
139
|
+
</ion-item>
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
<!-- Title -->
|
|
143
|
+
<ion-item>
|
|
144
|
+
<ion-textarea
|
|
145
|
+
formControlName="title"
|
|
146
|
+
[label]="props.titleLabel || 'Título'"
|
|
147
|
+
labelPlacement="floating"
|
|
148
|
+
[placeholder]="props.titlePlaceholder || 'Describe brevemente...'"
|
|
149
|
+
[maxlength]="200"
|
|
150
|
+
[counter]="true"
|
|
151
|
+
[autoGrow]="false"
|
|
152
|
+
rows="1"
|
|
153
|
+
></ion-textarea>
|
|
154
|
+
</ion-item>
|
|
155
|
+
@if (form.get('title')?.invalid && form.get('title')?.touched) {
|
|
156
|
+
<ion-note color="danger" class="ion-padding-start">
|
|
157
|
+
El título debe tener entre 5 y 200 caracteres
|
|
158
|
+
</ion-note>
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
<!-- Description -->
|
|
162
|
+
<ion-item>
|
|
163
|
+
<ion-textarea
|
|
164
|
+
formControlName="description"
|
|
165
|
+
[label]="props.descriptionLabel || 'Descripción'"
|
|
166
|
+
labelPlacement="floating"
|
|
167
|
+
[placeholder]="props.descriptionPlaceholder || 'Proporciona más detalles...'"
|
|
168
|
+
[maxlength]="5000"
|
|
169
|
+
[counter]="true"
|
|
170
|
+
[autoGrow]="true"
|
|
171
|
+
rows="4"
|
|
172
|
+
></ion-textarea>
|
|
173
|
+
</ion-item>
|
|
174
|
+
@if (form.get('description')?.invalid && form.get('description')?.touched) {
|
|
175
|
+
<ion-note color="danger" class="ion-padding-start">
|
|
176
|
+
La descripción debe tener entre 10 y 5000 caracteres
|
|
177
|
+
</ion-note>
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
<!-- Error message -->
|
|
181
|
+
@if (error()) {
|
|
182
|
+
<div class="feedback-alert error">
|
|
183
|
+
<ion-icon name="close-circle-outline"></ion-icon>
|
|
184
|
+
<span>{{ error() }}</span>
|
|
185
|
+
</div>
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
<!-- Success message -->
|
|
189
|
+
@if (isSuccess()) {
|
|
190
|
+
<div class="feedback-alert success">
|
|
191
|
+
<ion-icon name="checkmark-circle-outline"></ion-icon>
|
|
192
|
+
<span>{{ props.successMessage || 'Feedback enviado exitosamente' }}</span>
|
|
193
|
+
</div>
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
<!-- Actions -->
|
|
197
|
+
<div class="form-actions">
|
|
198
|
+
@if (props.cancelButtonText) {
|
|
199
|
+
<ion-button
|
|
200
|
+
fill="outline"
|
|
201
|
+
color="medium"
|
|
202
|
+
type="button"
|
|
203
|
+
(click)="onCancelClick()"
|
|
204
|
+
>
|
|
205
|
+
{{ props.cancelButtonText }}
|
|
206
|
+
</ion-button>
|
|
207
|
+
}
|
|
208
|
+
<ion-button
|
|
209
|
+
type="submit"
|
|
210
|
+
[disabled]="form.invalid || isSubmitting()"
|
|
211
|
+
expand="block"
|
|
212
|
+
>
|
|
213
|
+
@if (isSubmitting()) {
|
|
214
|
+
<ion-spinner name="crescent"></ion-spinner>
|
|
215
|
+
} @else {
|
|
216
|
+
{{ props.submitButtonText || 'Enviar' }}
|
|
217
|
+
}
|
|
218
|
+
</ion-button>
|
|
219
|
+
</div>
|
|
220
|
+
</form>
|
|
221
|
+
`, isInline: true, styles: [".feedback-form{display:flex;flex-direction:column;gap:8px;&.compact{gap:4px}}.form-actions{display:flex;gap:8px;margin-top:16px;justify-content:flex-end;ion-button{flex:1}}.feedback-alert{display:flex;align-items:center;gap:8px;padding:12px 16px;border-radius:8px;margin-top:8px;&.error{background-color:var(--ion-color-danger-tint);color:var(--ion-color-danger-shade)}&.success{background-color:var(--ion-color-success-tint);color:var(--ion-color-success-shade)}ion-icon{font-size:20px}}ion-note{font-size:12px;margin-top:-4px;margin-bottom:8px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: IonNote, selector: "ion-note", inputs: ["color", "mode"] }, { kind: "component", type: IonSelect, selector: "ion-select", inputs: ["cancelText", "color", "compareWith", "disabled", "errorText", "expandedIcon", "fill", "helperText", "interface", "interfaceOptions", "justify", "label", "labelPlacement", "mode", "multiple", "name", "okText", "placeholder", "selectedText", "shape", "toggleIcon", "value"] }, { kind: "component", type: IonSelectOption, selector: "ion-select-option", inputs: ["disabled", "value"] }, { kind: "component", type: IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "component", type: IonTextarea, selector: "ion-textarea", inputs: ["autoGrow", "autocapitalize", "autofocus", "clearOnEdit", "color", "cols", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "maxlength", "minlength", "mode", "name", "placeholder", "readonly", "required", "rows", "shape", "spellcheck", "value", "wrap"] }] }); }
|
|
222
|
+
}
|
|
223
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FeedbackFormComponent, decorators: [{
|
|
224
|
+
type: Component,
|
|
225
|
+
args: [{ selector: 'val-feedback-form', standalone: true, imports: [
|
|
226
|
+
CommonModule,
|
|
227
|
+
ReactiveFormsModule,
|
|
228
|
+
IonButton,
|
|
229
|
+
IonIcon,
|
|
230
|
+
IonItem,
|
|
231
|
+
IonLabel,
|
|
232
|
+
IonList,
|
|
233
|
+
IonNote,
|
|
234
|
+
IonSelect,
|
|
235
|
+
IonSelectOption,
|
|
236
|
+
IonSpinner,
|
|
237
|
+
IonText,
|
|
238
|
+
IonTextarea,
|
|
239
|
+
], template: `
|
|
240
|
+
<form
|
|
241
|
+
[formGroup]="form"
|
|
242
|
+
(ngSubmit)="handleSubmit()"
|
|
243
|
+
class="feedback-form"
|
|
244
|
+
[class.compact]="props.compact"
|
|
245
|
+
[ngClass]="props.cssClass"
|
|
246
|
+
>
|
|
247
|
+
<!-- Type selector -->
|
|
248
|
+
@if (props.showTypeSelector !== false) {
|
|
249
|
+
<ion-item>
|
|
250
|
+
<ion-select
|
|
251
|
+
formControlName="type"
|
|
252
|
+
label="Tipo de feedback"
|
|
253
|
+
labelPlacement="floating"
|
|
254
|
+
interface="popover"
|
|
255
|
+
>
|
|
256
|
+
@for (option of typeOptions; track option.value) {
|
|
257
|
+
<ion-select-option [value]="option.value">
|
|
258
|
+
{{ option.label }}
|
|
259
|
+
</ion-select-option>
|
|
260
|
+
}
|
|
261
|
+
</ion-select>
|
|
262
|
+
</ion-item>
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
<!-- Title -->
|
|
266
|
+
<ion-item>
|
|
267
|
+
<ion-textarea
|
|
268
|
+
formControlName="title"
|
|
269
|
+
[label]="props.titleLabel || 'Título'"
|
|
270
|
+
labelPlacement="floating"
|
|
271
|
+
[placeholder]="props.titlePlaceholder || 'Describe brevemente...'"
|
|
272
|
+
[maxlength]="200"
|
|
273
|
+
[counter]="true"
|
|
274
|
+
[autoGrow]="false"
|
|
275
|
+
rows="1"
|
|
276
|
+
></ion-textarea>
|
|
277
|
+
</ion-item>
|
|
278
|
+
@if (form.get('title')?.invalid && form.get('title')?.touched) {
|
|
279
|
+
<ion-note color="danger" class="ion-padding-start">
|
|
280
|
+
El título debe tener entre 5 y 200 caracteres
|
|
281
|
+
</ion-note>
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
<!-- Description -->
|
|
285
|
+
<ion-item>
|
|
286
|
+
<ion-textarea
|
|
287
|
+
formControlName="description"
|
|
288
|
+
[label]="props.descriptionLabel || 'Descripción'"
|
|
289
|
+
labelPlacement="floating"
|
|
290
|
+
[placeholder]="props.descriptionPlaceholder || 'Proporciona más detalles...'"
|
|
291
|
+
[maxlength]="5000"
|
|
292
|
+
[counter]="true"
|
|
293
|
+
[autoGrow]="true"
|
|
294
|
+
rows="4"
|
|
295
|
+
></ion-textarea>
|
|
296
|
+
</ion-item>
|
|
297
|
+
@if (form.get('description')?.invalid && form.get('description')?.touched) {
|
|
298
|
+
<ion-note color="danger" class="ion-padding-start">
|
|
299
|
+
La descripción debe tener entre 10 y 5000 caracteres
|
|
300
|
+
</ion-note>
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
<!-- Error message -->
|
|
304
|
+
@if (error()) {
|
|
305
|
+
<div class="feedback-alert error">
|
|
306
|
+
<ion-icon name="close-circle-outline"></ion-icon>
|
|
307
|
+
<span>{{ error() }}</span>
|
|
308
|
+
</div>
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
<!-- Success message -->
|
|
312
|
+
@if (isSuccess()) {
|
|
313
|
+
<div class="feedback-alert success">
|
|
314
|
+
<ion-icon name="checkmark-circle-outline"></ion-icon>
|
|
315
|
+
<span>{{ props.successMessage || 'Feedback enviado exitosamente' }}</span>
|
|
316
|
+
</div>
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
<!-- Actions -->
|
|
320
|
+
<div class="form-actions">
|
|
321
|
+
@if (props.cancelButtonText) {
|
|
322
|
+
<ion-button
|
|
323
|
+
fill="outline"
|
|
324
|
+
color="medium"
|
|
325
|
+
type="button"
|
|
326
|
+
(click)="onCancelClick()"
|
|
327
|
+
>
|
|
328
|
+
{{ props.cancelButtonText }}
|
|
329
|
+
</ion-button>
|
|
330
|
+
}
|
|
331
|
+
<ion-button
|
|
332
|
+
type="submit"
|
|
333
|
+
[disabled]="form.invalid || isSubmitting()"
|
|
334
|
+
expand="block"
|
|
335
|
+
>
|
|
336
|
+
@if (isSubmitting()) {
|
|
337
|
+
<ion-spinner name="crescent"></ion-spinner>
|
|
338
|
+
} @else {
|
|
339
|
+
{{ props.submitButtonText || 'Enviar' }}
|
|
340
|
+
}
|
|
341
|
+
</ion-button>
|
|
342
|
+
</div>
|
|
343
|
+
</form>
|
|
344
|
+
`, styles: [".feedback-form{display:flex;flex-direction:column;gap:8px;&.compact{gap:4px}}.form-actions{display:flex;gap:8px;margin-top:16px;justify-content:flex-end;ion-button{flex:1}}.feedback-alert{display:flex;align-items:center;gap:8px;padding:12px 16px;border-radius:8px;margin-top:8px;&.error{background-color:var(--ion-color-danger-tint);color:var(--ion-color-danger-shade)}&.success{background-color:var(--ion-color-success-tint);color:var(--ion-color-success-shade)}ion-icon{font-size:20px}}ion-note{font-size:12px;margin-top:-4px;margin-bottom:8px}\n"] }]
|
|
345
|
+
}], ctorParameters: () => [], propDecorators: { props: [{
|
|
346
|
+
type: Input
|
|
347
|
+
}], onSubmit: [{
|
|
348
|
+
type: Output
|
|
349
|
+
}], onCancel: [{
|
|
350
|
+
type: Output
|
|
351
|
+
}] } });
|
|
352
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVlZGJhY2stZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2ZlZWRiYWNrLWZvcm0vZmVlZGJhY2stZm9ybS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sTUFBTSxFQUNOLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsV0FBVyxFQUVYLG1CQUFtQixFQUNuQixVQUFVLEdBQ1gsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQ0wsU0FBUyxFQUNULE9BQU8sRUFDUCxPQUFPLEVBQ1AsUUFBUSxFQUNSLE9BQU8sRUFDUCxPQUFPLEVBQ1AsU0FBUyxFQUNULGVBQWUsRUFDZixVQUFVLEVBQ1YsT0FBTyxFQUNQLFdBQVcsR0FDWixNQUFNLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDcEMsT0FBTyxFQUNMLFVBQVUsRUFDVixXQUFXLEVBQ1gsaUJBQWlCLEVBQ2pCLHNCQUFzQixFQUN0QixrQkFBa0IsRUFDbEIsbUJBQW1CLEdBQ3BCLE1BQU0sZ0JBQWdCLENBQUM7QUFFeEIsT0FBTyxFQUNMLGVBQWUsRUFHZiw2QkFBNkIsR0FDOUIsTUFBTSw0QkFBNEIsQ0FBQzs7OztBQUdwQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBd0JHO0FBbUxILE1BQU0sT0FBTyxxQkFBcUI7SUEwQmhDO1FBekJBOztXQUVHO1FBQ00sVUFBSyxHQUF5QixFQUFFLENBQUM7UUFFMUM7O1dBRUc7UUFDTyxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQXVCLENBQUM7UUFFN0Q7O1dB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QUNaLFlBQ1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXlHVDt3REEyRFEsS0FBSztzQkFBYixLQUFLO2dCQUtJLFFBQVE7c0JBQWpCLE1BQU07Z0JBS0csUUFBUTtzQkFBakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBpbmplY3QsXG4gIHNpZ25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBGb3JtQnVpbGRlcixcbiAgRm9ybUdyb3VwLFxuICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICBWYWxpZGF0b3JzLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICBJb25CdXR0b24sXG4gIElvbkljb24sXG4gIElvbkl0ZW0sXG4gIElvbkxhYmVsLFxuICBJb25MaXN0LFxuICBJb25Ob3RlLFxuICBJb25TZWxlY3QsXG4gIElvblNlbGVjdE9wdGlvbixcbiAgSW9uU3Bpbm5lcixcbiAgSW9uVGV4dCxcbiAgSW9uVGV4dGFyZWEsXG59IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgYWRkSWNvbnMgfSBmcm9tICdpb25pY29ucyc7XG5pbXBvcnQge1xuICBidWdPdXRsaW5lLFxuICBidWxiT3V0bGluZSxcbiAgY2hhdGJ1YmJsZU91dGxpbmUsXG4gIGNoZWNrbWFya0NpcmNsZU91dGxpbmUsXG4gIGNsb3NlQ2lyY2xlT3V0bGluZSxcbiAgZG9jdW1lbnRUZXh0T3V0bGluZSxcbn0gZnJvbSAnaW9uaWNvbnMvaWNvbnMnO1xuXG5pbXBvcnQge1xuICBGZWVkYmFja1NlcnZpY2UsXG4gIEZlZWRiYWNrVHlwZSxcbiAgQ3JlYXRlRmVlZGJhY2tSZXNwb25zZSxcbiAgREVGQVVMVF9GRUVEQkFDS19UWVBFX09QVElPTlMsXG59IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2ZlZWRiYWNrJztcbmltcG9ydCB7IEZlZWRiYWNrRm9ybU1ldGFkYXRhLCBGZWVkYmFja1N1Ym1pdEV2ZW50IH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogdmFsLWZlZWRiYWNrLWZvcm1cbiAqXG4gKiBGb3JtdWxhcmlvIHJldXRpbGl6YWJsZSBwYXJhIGVudmlhciBmZWVkYmFjayBkZXNkZSBjdWFscXVpZXIgcGFydGUgZGUgbGEgYXBsaWNhY2nDs24uXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGh0bWxcbiAqIDwhLS0gRmVlZGJhY2sgZ2VuZXJhbCAtLT5cbiAqIDx2YWwtZmVlZGJhY2stZm9ybVxuICogICBbcHJvcHNdPVwieyBkZWZhdWx0VHlwZTogJ2ZlZWRiYWNrJywgc2hvd1R5cGVTZWxlY3RvcjogdHJ1ZSB9XCJcbiAqICAgKG9uU3VibWl0KT1cImhhbmRsZVN1Y2Nlc3MoJGV2ZW50KVwiXG4gKiAgIChvbkNhbmNlbCk9XCJjbG9zZU1vZGFsKClcIlxuICogLz5cbiAqXG4gKiA8IS0tIFJlcG9ydGFyIGNvbnRlbmlkbyBpbmNvcnJlY3RvIC0tPlxuICogPHZhbC1mZWVkYmFjay1mb3JtXG4gKiAgIFtwcm9wc109XCJ7XG4gKiAgICAgZGVmYXVsdFR5cGU6ICdwb29yLWNvbnRlbnQnLFxuICogICAgIHNob3dUeXBlU2VsZWN0b3I6IGZhbHNlLFxuICogICAgIGNvbnRlbnRSZWY6IHsgY29udGVudElkOiBhcnRpY2xlLmlkLCBjb250ZW50VHlwZTogJ2FydGljbGUnIH0sXG4gKiAgICAgc3VibWl0QnV0dG9uVGV4dDogJ1JlcG9ydGFyIGNvbnRlbmlkbydcbiAqICAgfVwiXG4gKiAvPlxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1mZWVkYmFjay1mb3JtJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIElvbkJ1dHRvbixcbiAgICBJb25JY29uLFxuICAgIElvbkl0ZW0sXG4gICAgSW9uTGFiZWwsXG4gICAgSW9uTGlzdCxcbiAgICBJb25Ob3RlLFxuICAgIElvblNlbGVjdCxcbiAgICBJb25TZWxlY3RPcHRpb24sXG4gICAgSW9uU3Bpbm5lcixcbiAgICBJb25UZXh0LFxuICAgIElvblRleHRhcmVhLFxuICBdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxmb3JtXG4gICAgICBbZm9ybUdyb3VwXT1cImZvcm1cIlxuICAgICAgKG5nU3VibWl0KT1cImhhbmRsZVN1Ym1pdCgpXCJcbiAgICAgIGNsYXNzPVwiZmVlZGJhY2stZm9ybVwiXG4gICAgICBbY2xhc3MuY29tcGFjdF09XCJwcm9wcy5jb21wYWN0XCJcbiAgICAgIFtuZ0NsYXNzXT1cInByb3BzLmNzc0NsYXNzXCJcbiAgICA+XG4gICAgICA8IS0tIFR5cGUgc2VsZWN0b3IgLS0+XG4gICAgICBAaWYgKHByb3BzLnNob3dUeXBlU2VsZWN0b3IgIT09IGZhbHNlKSB7XG4gICAgICAgIDxpb24taXRlbT5cbiAgICAgICAgICA8aW9uLXNlbGVjdFxuICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwidHlwZVwiXG4gICAgICAgICAgICBsYWJlbD1cIlRpcG8gZGUgZmVlZGJhY2tcIlxuICAgICAgICAgICAgbGFiZWxQbGFjZW1lbnQ9XCJmbG9hdGluZ1wiXG4gICAgICAgICAgICBpbnRlcmZhY2U9XCJwb3BvdmVyXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBAZm9yIChvcHRpb24gb2YgdHlwZU9wdGlvbnM7IHRyYWNrIG9wdGlvbi52YWx1ZSkge1xuICAgICAgICAgICAgICA8aW9uLXNlbGVjdC1vcHRpb24gW3ZhbHVlXT1cIm9wdGlvbi52YWx1ZVwiPlxuICAgICAgICAgICAgICAgIHt7IG9wdGlvbi5sYWJlbCB9fVxuICAgICAgICAgICAgICA8L2lvbi1zZWxlY3Qtb3B0aW9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvaW9uLXNlbGVjdD5cbiAgICAgICAgPC9pb24taXRlbT5cbiAgICAgIH1cblxuICAgICAgPCEtLSBUaXRsZSAtLT5cbiAgICAgIDxpb24taXRlbT5cbiAgICAgICAgPGlvbi10ZXh0YXJlYVxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInRpdGxlXCJcbiAgICAgICAgICBbbGFiZWxdPVwicHJvcHMudGl0bGVMYWJlbCB8fCAnVMOtdHVsbydcIlxuICAgICAgICAgIGxhYmVsUGxhY2VtZW50PVwiZmxvYXRpbmdcIlxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwcm9wcy50aXRsZVBsYWNlaG9sZGVyIHx8ICdEZXNjcmliZSBicmV2ZW1lbnRlLi4uJ1wiXG4gICAgICAgICAgW21heGxlbmd0aF09XCIyMDBcIlxuICAgICAgICAgIFtjb3VudGVyXT1cInRydWVcIlxuICAgICAgICAgIFthdXRvR3Jvd109XCJmYWxzZVwiXG4gICAgICAgICAgcm93cz1cIjFcIlxuICAgICAgICA+PC9pb24tdGV4dGFyZWE+XG4gICAgICA8L2lvbi1pdGVtPlxuICAgICAgQGlmIChmb3JtLmdldCgndGl0bGUnKT8uaW52YWxpZCAmJiBmb3JtLmdldCgndGl0bGUnKT8udG91Y2hlZCkge1xuICAgICAgICA8aW9uLW5vdGUgY29sb3I9XCJkYW5nZXJcIiBjbGFzcz1cImlvbi1wYWRkaW5nLXN0YXJ0XCI+XG4gICAgICAgICAgRWwgdMOtdHVsbyBkZWJlIHRlbmVyIGVudHJlIDUgeSAyMDAgY2FyYWN0ZXJlc1xuICAgICAgICA8L2lvbi1ub3RlPlxuICAgICAgfVxuXG4gICAgICA8IS0tIERlc2NyaXB0aW9uIC0tPlxuICAgICAgPGlvbi1pdGVtPlxuICAgICAgICA8aW9uLXRleHRhcmVhXG4gICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZGVzY3JpcHRpb25cIlxuICAgICAgICAgIFtsYWJlbF09XCJwcm9wcy5kZXNjcmlwdGlvbkxhYmVsIHx8ICdEZXNjcmlwY2nDs24nXCJcbiAgICAgICAgICBsYWJlbFBsYWNlbWVudD1cImZsb2F0aW5nXCJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicHJvcHMuZGVzY3JpcHRpb25QbGFjZWhvbGRlciB8fCAnUHJvcG9yY2lvbmEgbcOhcyBkZXRhbGxlcy4uLidcIlxuICAgICAgICAgIFttYXhsZW5ndGhdPVwiNTAwMFwiXG4gICAgICAgICAgW2NvdW50ZXJdPVwidHJ1ZVwiXG4gICAgICAgICAgW2F1dG9Hcm93XT1cInRydWVcIlxuICAgICAgICAgIHJvd3M9XCI0XCJcbiAgICAgICAgPjwvaW9uLXRleHRhcmVhPlxuICAgICAgPC9pb24taXRlbT5cbiAgICAgIEBpZiAoZm9ybS5nZXQoJ2Rlc2NyaXB0aW9uJyk/LmludmFsaWQgJiYgZm9ybS5nZXQoJ2Rlc2NyaXB0aW9uJyk/LnRvdWNoZWQpIHtcbiAgICAgICAgPGlvbi1ub3RlIGNvbG9yPVwiZGFuZ2VyXCIgY2xhc3M9XCJpb24tcGFkZGluZy1zdGFydFwiPlxuICAgICAgICAgIExhIGRlc2NyaXBjacOzbiBkZWJlIHRlbmVyIGVudHJlIDEwIHkgNTAwMCBjYXJhY3RlcmVzXG4gICAgICAgIDwvaW9uLW5vdGU+XG4gICAgICB9XG5cbiAgICAgIDwhLS0gRXJyb3IgbWVzc2FnZSAtLT5cbiAgICAgIEBpZiAoZXJyb3IoKSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiZmVlZGJhY2stYWxlcnQgZXJyb3JcIj5cbiAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNsb3NlLWNpcmNsZS1vdXRsaW5lXCI+PC9pb24taWNvbj5cbiAgICAgICAgICA8c3Bhbj57eyBlcnJvcigpIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cblxuICAgICAgPCEtLSBTdWNjZXNzIG1lc3NhZ2UgLS0+XG4gICAgICBAaWYgKGlzU3VjY2VzcygpKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmZWVkYmFjay1hbGVydCBzdWNjZXNzXCI+XG4gICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJjaGVja21hcmstY2lyY2xlLW91dGxpbmVcIj48L2lvbi1pY29uPlxuICAgICAgICAgIDxzcGFuPnt7IHByb3BzLnN1Y2Nlc3NNZXNzYWdlIHx8ICdGZWVkYmFjayBlbnZpYWRvIGV4aXRvc2FtZW50ZScgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuXG4gICAgICA8IS0tIEFjdGlvbnMgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1hY3Rpb25zXCI+XG4gICAgICAgIEBpZiAocHJvcHMuY2FuY2VsQnV0dG9uVGV4dCkge1xuICAgICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgICBmaWxsPVwib3V0bGluZVwiXG4gICAgICAgICAgICBjb2xvcj1cIm1lZGl1bVwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvbkNhbmNlbENsaWNrKClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IHByb3BzLmNhbmNlbEJ1dHRvblRleHQgfX1cbiAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgIH1cbiAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiZm9ybS5pbnZhbGlkIHx8IGlzU3VibWl0dGluZygpXCJcbiAgICAgICAgICBleHBhbmQ9XCJibG9ja1wiXG4gICAgICAgID5cbiAgICAgICAgICBAaWYgKGlzU3VibWl0dGluZygpKSB7XG4gICAgICAgICAgICA8aW9uLXNwaW5uZXIgbmFtZT1cImNyZXNjZW50XCI+PC9pb24tc3Bpbm5lcj5cbiAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIHt7IHByb3BzLnN1Ym1pdEJ1dHRvblRleHQgfHwgJ0VudmlhcicgfX1cbiAgICAgICAgICB9XG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZm9ybT5cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgLmZlZWRiYWNrLWZvcm0ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDhweDtcblxuICAgICAgICAmLmNvbXBhY3Qge1xuICAgICAgICAgIGdhcDogNHB4O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5mb3JtLWFjdGlvbnMge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBnYXA6IDhweDtcbiAgICAgICAgbWFyZ2luLXRvcDogMTZweDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcblxuICAgICAgICBpb24tYnV0dG9uIHtcbiAgICAgICAgICBmbGV4OiAxO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5mZWVkYmFjay1hbGVydCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogOHB4O1xuICAgICAgICBwYWRkaW5nOiAxMnB4IDE2cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICAgICAgbWFyZ2luLXRvcDogOHB4O1xuXG4gICAgICAgICYuZXJyb3Ige1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYW5nZXItdGludCk7XG4gICAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYW5nZXItc2hhZGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgJi5zdWNjZXNzIHtcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1pb24tY29sb3Itc3VjY2Vzcy10aW50KTtcbiAgICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLXN1Y2Nlc3Mtc2hhZGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaW9uLWljb24ge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpb24tbm90ZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICAgICAgbWFyZ2luLXRvcDogLTRweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4O1xuICAgICAgfVxuICAgIGAsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEZlZWRiYWNrRm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8qKlxuICAgKiBDb25maWd1cmFjacOzbiBkZWwgZm9ybXVsYXJpby5cbiAgICovXG4gIEBJbnB1dCgpIHByb3BzOiBGZWVkYmFja0Zvcm1NZXRhZGF0YSA9IHt9O1xuXG4gIC8qKlxuICAgKiBFdmVudG8gZW1pdGlkbyBjdWFuZG8gZWwgZmVlZGJhY2sgc2UgZW52w61hIGV4aXRvc2FtZW50ZS5cbiAgICovXG4gIEBPdXRwdXQoKSBvblN1Ym1pdCA9IG5ldyBFdmVudEVtaXR0ZXI8RmVlZGJhY2tTdWJtaXRFdmVudD4oKTtcblxuICAvKipcbiAgICogRXZlbnRvIGVtaXRpZG8gY3VhbmRvIGVsIHVzdWFyaW8gY2FuY2VsYS5cbiAgICovXG4gIEBPdXRwdXQoKSBvbkNhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBwcml2YXRlIGZiID0gaW5qZWN0KEZvcm1CdWlsZGVyKTtcbiAgcHJpdmF0ZSBmZWVkYmFja1NlcnZpY2UgPSBpbmplY3QoRmVlZGJhY2tTZXJ2aWNlKTtcblxuICBmb3JtITogRm9ybUdyb3VwO1xuICB0eXBlT3B0aW9ucyA9IERFRkFVTFRfRkVFREJBQ0tfVFlQRV9PUFRJT05TO1xuXG4gIGlzU3VibWl0dGluZyA9IHNpZ25hbChmYWxzZSk7XG4gIGlzU3VjY2VzcyA9IHNpZ25hbChmYWxzZSk7XG4gIGVycm9yID0gc2lnbmFsPHN0cmluZyB8IG51bGw+KG51bGwpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGFkZEljb25zKHtcbiAgICAgIGJ1Z091dGxpbmUsXG4gICAgICBidWxiT3V0bGluZSxcbiAgICAgIGNoYXRidWJibGVPdXRsaW5lLFxuICAgICAgY2hlY2ttYXJrQ2lyY2xlT3V0bGluZSxcbiAgICAgIGNsb3NlQ2lyY2xlT3V0bGluZSxcbiAgICAgIGRvY3VtZW50VGV4dE91dGxpbmUsXG4gICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAvLyBGaWx0cmFyIHRpcG9zIGhhYmlsaXRhZG9zIHNpIHNlIGVzcGVjaWZpY2FcbiAgICBpZiAodGhpcy5wcm9wcy5lbmFibGVkVHlwZXM/Lmxlbmd0aCkge1xuICAgICAgdGhpcy50eXBlT3B0aW9ucyA9IHRoaXMudHlwZU9wdGlvbnMuZmlsdGVyKChvcHQpID0+XG4gICAgICAgIHRoaXMucHJvcHMuZW5hYmxlZFR5cGVzIS5pbmNsdWRlcyhvcHQudmFsdWUpXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIFVzYXIgb3BjaW9uZXMgcGVyc29uYWxpemFkYXMgc2kgc2UgcHJvcG9yY2lvbmFuXG4gICAgaWYgKHRoaXMucHJvcHMudHlwZU9wdGlvbnM/Lmxlbmd0aCkge1xuICAgICAgdGhpcy50eXBlT3B0aW9ucyA9IHRoaXMucHJvcHMudHlwZU9wdGlvbnM7XG4gICAgfVxuXG4gICAgLy8gSW5pY2lhbGl6YXIgZm9ybXVsYXJpb1xuICAgIHRoaXMuZm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgdHlwZTogW3RoaXMucHJvcHMuZGVmYXVsdFR5cGUgfHwgJ2ZlZWRiYWNrJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICB0aXRsZTogW1xuICAgICAgICAnJyxcbiAgICAgICAgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDUpLCBWYWxpZGF0b3JzLm1heExlbmd0aCgyMDApXSxcbiAgICAgIF0sXG4gICAgICBkZXNjcmlwdGlvbjogW1xuICAgICAgICAnJyxcbiAgICAgICAgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDEwKSwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoNTAwMCldLFxuICAgICAgXSxcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIGhhbmRsZVN1Ym1pdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAodGhpcy5mb3JtLmludmFsaWQgfHwgdGhpcy5pc1N1Ym1pdHRpbmcoKSkgcmV0dXJuO1xuXG4gICAgdGhpcy5pc1N1Ym1pdHRpbmcuc2V0KHRydWUpO1xuICAgIHRoaXMuZXJyb3Iuc2V0KG51bGwpO1xuICAgIHRoaXMuaXNTdWNjZXNzLnNldChmYWxzZSk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgeyB0eXBlLCB0aXRsZSwgZGVzY3JpcHRpb24gfSA9IHRoaXMuZm9ybS52YWx1ZTtcblxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmZlZWRiYWNrU2VydmljZS5jcmVhdGVBc3luYyhcbiAgICAgICAgdHlwZSBhcyBGZWVkYmFja1R5cGUsXG4gICAgICAgIHRpdGxlLFxuICAgICAgICBkZXNjcmlwdGlvbixcbiAgICAgICAgW10sIC8vIGF0dGFjaG1lbnRzIChwb3IgYWhvcmEgdmFjw61vKVxuICAgICAgICB0aGlzLnByb3BzLmNvbnRlbnRSZWZcbiAgICAgICk7XG5cbiAgICAgIHRoaXMuaXNTdWNjZXNzLnNldCh0cnVlKTtcbiAgICAgIHRoaXMuZm9ybS5yZXNldCh7IHR5cGU6IHRoaXMucHJvcHMuZGVmYXVsdFR5cGUgfHwgJ2ZlZWRiYWNrJyB9KTtcblxuICAgICAgdGhpcy5vblN1Ym1pdC5lbWl0KHtcbiAgICAgICAgcmVzcG9uc2UsXG4gICAgICAgIHR5cGU6IHR5cGUgYXMgRmVlZGJhY2tUeXBlLFxuICAgICAgICB0aXRsZSxcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGVycjogYW55KSB7XG4gICAgICB0aGlzLmVycm9yLnNldChcbiAgICAgICAgZXJyLmVycm9yPy5tZXNzYWdlIHx8IGVyci5tZXNzYWdlIHx8ICdFcnJvciBhbCBlbnZpYXIgZWwgZmVlZGJhY2snXG4gICAgICApO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLmlzU3VibWl0dGluZy5zZXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIG9uQ2FuY2VsQ2xpY2soKTogdm9pZCB7XG4gICAgdGhpcy5vbkNhbmNlbC5lbWl0KCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2ZlZWRiYWNrLWZvcm0vdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEZlZWRiYWNrVHlwZSxcbiAgQ29udGVudFJlZixcbiAgQ3JlYXRlRmVlZGJhY2tSZXNwb25zZSxcbiAgRmVlZGJhY2tUeXBlT3B0aW9uLFxufSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9mZWVkYmFjay90eXBlcyc7XG5cbi8qKlxuICogTWV0YWRhdGEgcGFyYSBlbCBjb21wb25lbnRlIEZlZWRiYWNrRm9ybS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGZWVkYmFja0Zvcm1NZXRhZGF0YSB7XG4gIC8qKiBUaXBvIGRlIGZlZWRiYWNrIHByZXNlbGVjY2lvbmFkbyAqL1xuICBkZWZhdWx0VHlwZT86IEZlZWRiYWNrVHlwZTtcblxuICAvKiogUmVmZXJlbmNpYSBhIGNvbnRlbmlkbyAoc2kgYXBsaWNhKSAqL1xuICBjb250ZW50UmVmPzogQ29udGVudFJlZjtcblxuICAvKiogTW9zdHJhciBzZWxlY3RvciBkZSB0aXBvIChkZWZhdWx0OiB0cnVlKSAqL1xuICBzaG93VHlwZVNlbGVjdG9yPzogYm9vbGVhbjtcblxuICAvKiogVGlwb3MgZGUgZmVlZGJhY2sgaGFiaWxpdGFkb3MgKHBvciBkZWZlY3RvIHRvZG9zKSAqL1xuICBlbmFibGVkVHlwZXM/OiBGZWVkYmFja1R5cGVbXTtcblxuICAvKiogT3BjaW9uZXMgcGVyc29uYWxpemFkYXMgcGFyYSB0aXBvcyBkZSBmZWVkYmFjayAqL1xuICB0eXBlT3B0aW9ucz86IEZlZWRiYWNrVHlwZU9wdGlvbltdO1xuXG4gIC8qKiBQbGFjZWhvbGRlciBwYXJhIHTDrXR1bG8gKi9cbiAgdGl0bGVQbGFjZWhvbGRlcj86IHN0cmluZztcblxuICAvKiogUGxhY2Vob2xkZXIgcGFyYSBkZXNjcmlwY2nDs24gKi9cbiAgZGVzY3JpcHRpb25QbGFjZWhvbGRlcj86IHN0cmluZztcblxuICAvKiogTGFiZWwgcGFyYSBjYW1wbyBkZSB0w610dWxvICovXG4gIHRpdGxlTGFiZWw/OiBzdHJpbmc7XG5cbiAgLyoqIExhYmVsIHBhcmEgY2FtcG8gZGUgZGVzY3JpcGNpw7NuICovXG4gIGRlc2NyaXB0aW9uTGFiZWw/OiBzdHJpbmc7XG5cbiAgLyoqIFRleHRvIGRlbCBib3TDs24gZGUgZW52w61vICovXG4gIHN1Ym1pdEJ1dHRvblRleHQ/OiBzdHJpbmc7XG5cbiAgLyoqIFRleHRvIGRlbCBib3TDs24gY2FuY2VsYXIgKHNpIG5vIHNlIHByb3BvcmNpb25hLCBubyBzZSBtdWVzdHJhKSAqL1xuICBjYW5jZWxCdXR0b25UZXh0Pzogc3RyaW5nO1xuXG4gIC8qKiBNb3N0cmFyIGNhbXBvIGRlIGFkanVudG9zIChkZWZhdWx0OiB0cnVlKSAqL1xuICBzaG93QXR0YWNobWVudHM/OiBib29sZWFuO1xuXG4gIC8qKiBMYWJlbCBwYXJhIGNhbXBvIGRlIGFkanVudG9zICovXG4gIGF0dGFjaG1lbnRzTGFiZWw/OiBzdHJpbmc7XG5cbiAgLyoqIE1lbnNhamUgZGUgw6l4aXRvIHBlcnNvbmFsaXphZG8gKi9cbiAgc3VjY2Vzc01lc3NhZ2U/OiBzdHJpbmc7XG5cbiAgLyoqIENTUyBjbGFzcyBhZGljaW9uYWwgcGFyYSBlbCBjb250ZW5lZG9yICovXG4gIGNzc0NsYXNzPzogc3RyaW5nO1xuXG4gIC8qKiBNb2RvIGNvbXBhY3RvIChtZW5vcyBlc3BhY2lhZG8pICovXG4gIGNvbXBhY3Q/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEV2ZW50byBlbWl0aWRvIGN1YW5kbyBlbCBmZWVkYmFjayBzZSBlbnbDrWEgZXhpdG9zYW1lbnRlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZlZWRiYWNrU3VibWl0RXZlbnQge1xuICByZXNwb25zZTogQ3JlYXRlRmVlZGJhY2tSZXNwb25zZTtcbiAgdHlwZTogRmVlZGJhY2tUeXBlO1xuICB0aXRsZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIEVzdGFkbyBkZWwgZm9ybXVsYXJpby5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGZWVkYmFja0Zvcm1TdGF0ZSB7XG4gIGlzU3VibWl0dGluZzogYm9vbGVhbjtcbiAgaXNTdWNjZXNzOiBib29sZWFuO1xuICBlcnJvcjogc3RyaW5nIHwgbnVsbDtcbn1cbiJdfQ==
|