@six-group/ui-library-angular 0.0.0-insider.ebd822a → 0.0.0-insider.ec3ffc2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +6 -22
  3. package/esm2022/lib/control-value-accessors/checkbox-value-accessor.mjs +41 -0
  4. package/esm2022/lib/control-value-accessors/datepicker-value-accessor.mjs +37 -0
  5. package/esm2022/lib/control-value-accessors/numeric-value-accessor.mjs +42 -0
  6. package/esm2022/lib/control-value-accessors/radio-value-accessor.mjs +62 -0
  7. package/esm2022/lib/control-value-accessors/range-value-accessor.mjs +42 -0
  8. package/esm2022/lib/control-value-accessors/select-value-accessor.mjs +37 -0
  9. package/esm2022/lib/control-value-accessors/switch-value-accessor.mjs +41 -0
  10. package/esm2022/lib/control-value-accessors/text-value-accessor.mjs +37 -0
  11. package/esm2022/lib/control-value-accessors/timepicker-value-accessor.mjs +37 -0
  12. package/esm2022/lib/control-value-accessors/value-accessor.mjs +138 -0
  13. package/esm2022/lib/form/six-form.directive.mjs +134 -0
  14. package/esm2022/lib/link/six-router-link.directive.mjs +61 -0
  15. package/esm2022/lib/services/alert.service.mjs +21 -0
  16. package/esm2022/lib/services/validation-messages.service.mjs +15 -0
  17. package/esm2022/lib/stencil-generated/angular-component-lib/utils.mjs +59 -0
  18. package/esm2022/lib/stencil-generated/components.mjs +1388 -0
  19. package/esm2022/lib/stencil-generated/index.mjs +60 -0
  20. package/esm2022/lib/ui-library-angular.module.mjs +135 -0
  21. package/esm2022/lib/validators/six-ui-library-validators.mjs +122 -0
  22. package/esm2022/public-api.mjs +28 -0
  23. package/fesm2022/six-group-ui-library-angular.mjs +2446 -0
  24. package/fesm2022/six-group-ui-library-angular.mjs.map +1 -0
  25. package/lib/control-value-accessors/checkbox-value-accessor.d.ts +10 -0
  26. package/lib/control-value-accessors/datepicker-value-accessor.d.ts +9 -0
  27. package/lib/control-value-accessors/numeric-value-accessor.d.ts +10 -0
  28. package/lib/control-value-accessors/radio-value-accessor.d.ts +15 -0
  29. package/lib/control-value-accessors/range-value-accessor.d.ts +10 -0
  30. package/lib/control-value-accessors/select-value-accessor.d.ts +9 -0
  31. package/lib/control-value-accessors/switch-value-accessor.d.ts +10 -0
  32. package/lib/control-value-accessors/text-value-accessor.d.ts +9 -0
  33. package/lib/control-value-accessors/timepicker-value-accessor.d.ts +9 -0
  34. package/lib/control-value-accessors/value-accessor.d.ts +39 -0
  35. package/lib/form/six-form.directive.d.ts +71 -0
  36. package/lib/link/six-router-link.directive.d.ts +26 -0
  37. package/lib/services/alert.service.d.ts +11 -0
  38. package/lib/services/validation-messages.service.d.ts +7 -0
  39. package/lib/stencil-generated/components.d.ts +97 -109
  40. package/lib/stencil-generated/index.d.ts +1 -1
  41. package/lib/ui-library-angular.module.d.ts +16 -1
  42. package/lib/validators/six-ui-library-validators.d.ts +47 -0
  43. package/package.json +13 -13
  44. package/public-api.d.ts +15 -0
  45. package/esm2020/lib/stencil-generated/angular-component-lib/utils.mjs +0 -51
  46. package/esm2020/lib/stencil-generated/components.mjs +0 -1376
  47. package/esm2020/lib/stencil-generated/index.mjs +0 -57
  48. package/esm2020/lib/ui-library-angular.module.mjs +0 -34
  49. package/esm2020/public-api.mjs +0 -7
  50. package/fesm2015/six-group-ui-library-angular.mjs +0 -1468
  51. package/fesm2015/six-group-ui-library-angular.mjs.map +0 -1
  52. package/fesm2020/six-group-ui-library-angular.mjs +0 -1468
  53. package/fesm2020/six-group-ui-library-angular.mjs.map +0 -1
  54. /package/{esm2020 → esm2022}/six-group-ui-library-angular.mjs +0 -0
@@ -0,0 +1,37 @@
1
+ import { Directive, HostListener } from '@angular/core';
2
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
+ import { ValueAccessor } from './value-accessor';
4
+ import * as i0 from "@angular/core";
5
+ export class TimepickerValueAccessor extends ValueAccessor {
6
+ constructor(injector, el) {
7
+ super(injector, el);
8
+ }
9
+ handleChangeEvent(el) {
10
+ this.handleValueChange(el, el.value);
11
+ }
12
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TimepickerValueAccessor, deps: [{ token: i0.Injector }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
13
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: TimepickerValueAccessor, selector: "six-timepicker", host: { listeners: { "change": "handleChangeEvent($event.target)" } }, providers: [
14
+ {
15
+ provide: NG_VALUE_ACCESSOR,
16
+ useExisting: TimepickerValueAccessor,
17
+ multi: true,
18
+ },
19
+ ], usesInheritance: true, ngImport: i0 }); }
20
+ }
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TimepickerValueAccessor, decorators: [{
22
+ type: Directive,
23
+ args: [{
24
+ selector: 'six-timepicker',
25
+ providers: [
26
+ {
27
+ provide: NG_VALUE_ACCESSOR,
28
+ useExisting: TimepickerValueAccessor,
29
+ multi: true,
30
+ },
31
+ ],
32
+ }]
33
+ }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i0.ElementRef }]; }, propDecorators: { handleChangeEvent: [{
34
+ type: HostListener,
35
+ args: ['change', ['$event.target']]
36
+ }] } });
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXBpY2tlci12YWx1ZS1hY2Nlc3Nvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29udHJvbC12YWx1ZS1hY2Nlc3NvcnMvdGltZXBpY2tlci12YWx1ZS1hY2Nlc3Nvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUM5RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0FBWWpELE1BQU0sT0FBTyx1QkFBd0IsU0FBUSxhQUFhO0lBQ3hELFlBQVksUUFBa0IsRUFBRSxFQUFjO1FBQzVDLEtBQUssQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUdELGlCQUFpQixDQUFDLEVBQTRCO1FBQzVDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7K0dBUlUsdUJBQXVCO21HQUF2Qix1QkFBdUIsZ0hBUnZCO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsV0FBVyxFQUFFLHVCQUF1QjtnQkFDcEMsS0FBSyxFQUFFLElBQUk7YUFDWjtTQUNGOzs0RkFFVSx1QkFBdUI7a0JBVm5DLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcseUJBQXlCOzRCQUNwQyxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjtpQkFDRjt3SEFPQyxpQkFBaUI7c0JBRGhCLFlBQVk7dUJBQUMsUUFBUSxFQUFFLENBQUMsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFZhbHVlQWNjZXNzb3IgfSBmcm9tICcuL3ZhbHVlLWFjY2Vzc29yJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnc2l4LXRpbWVwaWNrZXInLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBUaW1lcGlja2VyVmFsdWVBY2Nlc3NvcixcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFRpbWVwaWNrZXJWYWx1ZUFjY2Vzc29yIGV4dGVuZHMgVmFsdWVBY2Nlc3NvciB7XG4gIGNvbnN0cnVjdG9yKGluamVjdG9yOiBJbmplY3RvciwgZWw6IEVsZW1lbnRSZWYpIHtcbiAgICBzdXBlcihpbmplY3RvciwgZWwpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignY2hhbmdlJywgWyckZXZlbnQudGFyZ2V0J10pXG4gIGhhbmRsZUNoYW5nZUV2ZW50KGVsOiBIVE1MU2l4VGltZXBpY2tlckVsZW1lbnQpOiB2b2lkIHtcbiAgICB0aGlzLmhhbmRsZVZhbHVlQ2hhbmdlKGVsLCBlbC52YWx1ZSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,138 @@
1
+ import { Directive, HostListener, inject } from '@angular/core';
2
+ import { NgControl } from '@angular/forms';
3
+ import { getLanguage } from '@six-group/ui-library';
4
+ import { ValidationMessagesService } from '../services/validation-messages.service';
5
+ import * as i0 from "@angular/core";
6
+ export class ValueAccessor {
7
+ constructor(injector, el) {
8
+ this.injector = injector;
9
+ this.el = el;
10
+ this.validationMessagesService = inject(ValidationMessagesService);
11
+ this.onChange = () => { };
12
+ this.onTouched = () => { };
13
+ }
14
+ registerOnChange(fn) {
15
+ this.onChange = fn;
16
+ }
17
+ registerOnTouched(fn) {
18
+ this.onTouched = fn;
19
+ }
20
+ writeValue(value) {
21
+ this.el.nativeElement.value = value;
22
+ this.updateValidation();
23
+ }
24
+ /**
25
+ * Notifies the ControlValueAccessor of a change in the value of the control.
26
+ *
27
+ * This is called by each of the ValueAccessor directives when we want to update
28
+ * the status and validity of the form control. For example with text components this
29
+ * is called when the input event is fired. For select components this is called
30
+ * when the change event is fired.
31
+ *
32
+ * This also updates the form status on the element by setting the 'invalid' property to true/false.
33
+ *
34
+ * @param el The component element.
35
+ * @param value The new value of the control.
36
+ */
37
+ handleValueChange(el, value) {
38
+ if (el === this.el.nativeElement) {
39
+ this.onChange(value);
40
+ this.updateValidation();
41
+ }
42
+ }
43
+ _handleBlurEvent(el) {
44
+ if (el === this.el.nativeElement) {
45
+ this.onTouched();
46
+ this.updateValidation();
47
+ }
48
+ }
49
+ updateValidation() {
50
+ nextTick(() => {
51
+ if (this.ngControl?.control == null)
52
+ return;
53
+ const element = this.el.nativeElement;
54
+ const control = this.ngControl?.control;
55
+ const invalid = control.status === 'INVALID' && control.dirty && control.touched;
56
+ let errorTexts;
57
+ if (invalid) {
58
+ errorTexts = this.initialErrorText || this.getErrorTexts(control);
59
+ }
60
+ element.invalid = invalid;
61
+ element.errorText = errorTexts ?? '';
62
+ });
63
+ }
64
+ setDisabledState(isDisabled) {
65
+ this.el.nativeElement.disabled = isDisabled;
66
+ }
67
+ ngOnDestroy() {
68
+ if (this.statusChanges) {
69
+ this.statusChanges.unsubscribe();
70
+ }
71
+ }
72
+ ngAfterViewInit() {
73
+ this.initialErrorText = this.el.nativeElement?.errorText?.trim() || undefined;
74
+ try {
75
+ this.ngControl = this.injector.get(NgControl);
76
+ }
77
+ catch {
78
+ /* No FormControl or ngModel binding */
79
+ }
80
+ if (!this.ngControl) {
81
+ return;
82
+ }
83
+ // Listen for changes in validity, disabled, or pending states
84
+ if (this.ngControl.statusChanges) {
85
+ this.statusChanges = this.ngControl.statusChanges.subscribe(() => this.updateValidation());
86
+ }
87
+ /**
88
+ * TODO FW-2787: Remove this in favor of https://github.com/angular/angular/issues/10887
89
+ * whenever it is implemented.
90
+ */
91
+ const formControl = this.ngControl.control;
92
+ if (formControl) {
93
+ const methodsToPatch = ['markAsTouched', 'markAllAsTouched', 'markAsUntouched', 'markAsDirty', 'markAsPristine'];
94
+ methodsToPatch.forEach((method) => {
95
+ if (typeof formControl[method] !== 'undefined') {
96
+ const oldFn = formControl[method].bind(formControl);
97
+ formControl[method] = (...params) => {
98
+ oldFn(...params);
99
+ this.updateValidation();
100
+ };
101
+ }
102
+ });
103
+ }
104
+ }
105
+ getErrorTexts(control) {
106
+ if (control.errors == null) {
107
+ console.warn('no errors for invalid control', control);
108
+ return [];
109
+ }
110
+ const errorList = Object.entries(control.errors);
111
+ if (errorList.length <= 0) {
112
+ console.warn('no errors for invalid control', control);
113
+ return [];
114
+ }
115
+ return errorList.map((error) => {
116
+ const [key, value] = error;
117
+ return (this.validationMessagesService.getErrorMessage(getLanguage(), { key: key, ...value }) ?? key);
118
+ });
119
+ }
120
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ValueAccessor, deps: [{ token: i0.Injector }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
121
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: ValueAccessor, host: { listeners: { "blur": "_handleBlurEvent($event.target)" } }, ngImport: i0 }); }
122
+ }
123
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ValueAccessor, decorators: [{
124
+ type: Directive
125
+ }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i0.ElementRef }]; }, propDecorators: { _handleBlurEvent: [{
126
+ type: HostListener,
127
+ args: ['blur', ['$event.target']]
128
+ }] } });
129
+ const nextTick = (h) => {
130
+ if (typeof __zone_symbol__requestAnimationFrame === 'function') {
131
+ return __zone_symbol__requestAnimationFrame(h);
132
+ }
133
+ if (typeof requestAnimationFrame === 'function') {
134
+ return requestAnimationFrame(h);
135
+ }
136
+ return setTimeout(h);
137
+ };
138
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsdWUtYWNjZXNzb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbnRyb2wtdmFsdWUtYWNjZXNzb3JzL3ZhbHVlLWFjY2Vzc29yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFjLFlBQVksRUFBRSxNQUFNLEVBQXVCLE1BQU0sZUFBZSxDQUFDO0FBQ2hILE9BQU8sRUFBeUMsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFbEYsT0FBTyxFQUFFLFdBQVcsRUFBbUIsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQzs7QUFHcEYsTUFBTSxPQUFPLGFBQWE7SUFNeEIsWUFBc0IsUUFBa0IsRUFBWSxFQUFjO1FBQTVDLGFBQVEsR0FBUixRQUFRLENBQVU7UUFBWSxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBRjFELDhCQUF5QixHQUFHLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBSTlELGFBQVEsR0FBeUIsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO1FBQzFDLGNBQVMsR0FBZSxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7SUFINEIsQ0FBQztJQUl0RSxnQkFBZ0IsQ0FBQyxFQUF3QjtRQUN2QyxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBQ0QsaUJBQWlCLENBQUMsRUFBYztRQUM5QixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQVU7UUFDbkIsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNwQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7OztPQVlHO0lBQ0gsaUJBQWlCLENBQUMsRUFBZSxFQUFF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QUFFO0lBQy9CLElBQUksT0FBTyxvQ0FBb0MsS0FBSyxVQUFVLEVBQUU7UUFDOUQsT0FBTyxvQ0FBb0MsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUNoRDtJQUNELElBQUksT0FBTyxxQkFBcUIsS0FBSyxVQUFVLEVBQUU7UUFDL0MsT0FBTyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUNqQztJQUNELE9BQU8sVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3ZCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBpbmplY3QsIEluamVjdG9yLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5nQ29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZ2V0TGFuZ3VhZ2UsIFZhbGlkYXRpb25FcnJvciB9IGZyb20gJ0BzaXgtZ3JvdXAvdWktbGlicmFyeSc7XG5pbXBvcnQgeyBWYWxpZGF0aW9uTWVzc2FnZXNTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvdmFsaWRhdGlvbi1tZXNzYWdlcy5zZXJ2aWNlJztcblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgY2xhc3MgVmFsdWVBY2Nlc3NvciBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHN0YXR1c0NoYW5nZXM/OiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgbmdDb250cm9sPzogTmdDb250cm9sO1xuICBwcml2YXRlIGluaXRpYWxFcnJvclRleHQ/OiBzdHJpbmc7XG4gIHByaXZhdGUgdmFsaWRhdGlvbk1lc3NhZ2VzU2VydmljZSA9IGluamVjdChWYWxpZGF0aW9uTWVzc2FnZXNTZXJ2aWNlKTtcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yLCBwcm90ZWN0ZWQgZWw6IEVsZW1lbnRSZWYpIHt9XG5cbiAgcHJpdmF0ZSBvbkNoYW5nZTogKHZhbHVlOiBhbnkpID0+IHZvaWQgPSAoKSA9PiB7fTtcbiAgcHJpdmF0ZSBvblRvdWNoZWQ6ICgpID0+IHZvaWQgPSAoKSA9PiB7fTtcbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBhbnkpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5lbC5uYXRpdmVFbGVtZW50LnZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy51cGRhdGVWYWxpZGF0aW9uKCk7XG4gIH1cblxuICAvKipcbiAgICogTm90aWZpZXMgdGhlIENvbnRyb2xWYWx1ZUFjY2Vzc29yIG9mIGEgY2hhbmdlIGluIHRoZSB2YWx1ZSBvZiB0aGUgY29udHJvbC5cbiAgICpcbiAgICogVGhpcyBpcyBjYWxsZWQgYnkgZWFjaCBvZiB0aGUgVmFsdWVBY2Nlc3NvciBkaXJlY3RpdmVzIHdoZW4gd2Ugd2FudCB0byB1cGRhdGVcbiAgICogdGhlIHN0YXR1cyBhbmQgdmFsaWRpdHkgb2YgdGhlIGZvcm0gY29udHJvbC4gRm9yIGV4YW1wbGUgd2l0aCB0ZXh0IGNvbXBvbmVudHMgdGhpc1xuICAgKiBpcyBjYWxsZWQgd2hlbiB0aGUgaW5wdXQgZXZlbnQgaXMgZmlyZWQuIEZvciBzZWxlY3QgY29tcG9uZW50cyB0aGlzIGlzIGNhbGxlZFxuICAgKiB3aGVuIHRoZSBjaGFuZ2UgZXZlbnQgaXMgZmlyZWQuXG4gICAqXG4gICAqIFRoaXMgYWxzbyB1cGRhdGVzIHRoZSBmb3JtIHN0YXR1cyBvbiB0aGUgZWxlbWVudCBieSBzZXR0aW5nIHRoZSAnaW52YWxpZCcgcHJvcGVydHkgdG8gdHJ1ZS9mYWxzZS5cbiAgICpcbiAgICogQHBhcmFtIGVsIFRoZSBjb21wb25lbnQgZWxlbWVudC5cbiAgICogQHBhcmFtIHZhbHVlIFRoZSBuZXcgdmFsdWUgb2YgdGhlIGNvbnRyb2wuXG4gICAqL1xuICBoYW5kbGVWYWx1ZUNoYW5nZShlbDogSFRNTEVsZW1lbnQsIHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAoZWwgPT09IHRoaXMuZWwubmF0aXZlRWxlbWVudCkge1xuICAgICAgdGhpcy5vbkNoYW5nZSh2YWx1ZSk7XG4gICAgICB0aGlzLnVwZGF0ZVZhbGlkYXRpb24oKTtcbiAgICB9XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdibHVyJywgWyckZXZlbnQudGFyZ2V0J10pXG4gIF9oYW5kbGVCbHVyRXZlbnQoZWw6IGFueSk6IHZvaWQge1xuICAgIGlmIChlbCA9PT0gdGhpcy5lbC5uYXRpdmVFbGVtZW50KSB7XG4gICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgdGhpcy51cGRhdGVWYWxpZGF0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlVmFsaWRhdGlvbigpIHtcbiAgICBuZXh0VGljaygoKSA9PiB7XG4gICAgICBpZiAodGhpcy5uZ0NvbnRyb2w/LmNvbnRyb2wgPT0gbnVsbCkgcmV0dXJuO1xuXG4gICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50IGFzIEhUTUxTaXhJbnB1dEVsZW1lbnQ7XG4gICAgICBjb25zdCBjb250cm9sID0gdGhpcy5uZ0NvbnRyb2w/LmNvbnRyb2w7XG5cbiAgICAgIGNvbnN0IGludmFsaWQgPSBjb250cm9sLnN0YXR1cyA9PT0gJ0lOVkFMSUQnICYmIGNvbnRyb2wuZGlydHkgJiYgY29udHJvbC50b3VjaGVkO1xuICAgICAgbGV0IGVycm9yVGV4dHM7XG4gICAgICBpZiAoaW52YWxpZCkge1xuICAgICAgICBlcnJvclRleHRzID0gdGhpcy5pbml0aWFsRXJyb3JUZXh0IHx8IHRoaXMuZ2V0RXJyb3JUZXh0cyhjb250cm9sKTtcbiAgICAgIH1cbiAgICAgIGVsZW1lbnQuaW52YWxpZCA9IGludmFsaWQ7XG4gICAgICBlbGVtZW50LmVycm9yVGV4dCA9IGVycm9yVGV4dHMgPz8gJyc7XG4gICAgfSk7XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3RhdHVzQ2hhbmdlcykge1xuICAgICAgdGhpcy5zdGF0dXNDaGFuZ2VzLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaW5pdGlhbEVycm9yVGV4dCA9IHRoaXMuZWwubmF0aXZlRWxlbWVudD8uZXJyb3JUZXh0Py50cmltKCkgfHwgdW5kZWZpbmVkO1xuICAgIHRyeSB7XG4gICAgICB0aGlzLm5nQ29udHJvbCA9IHRoaXMuaW5qZWN0b3IuZ2V0PE5nQ29udHJvbD4oTmdDb250cm9sKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8qIE5vIEZvcm1Db250cm9sIG9yIG5nTW9kZWwgYmluZGluZyAqL1xuICAgIH1cbiAgICBpZiAoIXRoaXMubmdDb250cm9sKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gTGlzdGVuIGZvciBjaGFuZ2VzIGluIHZhbGlkaXR5LCBkaXNhYmxlZCwgb3IgcGVuZGluZyBzdGF0ZXNcbiAgICBpZiAodGhpcy5uZ0NvbnRyb2wuc3RhdHVzQ2hhbmdlcykge1xuICAgICAgdGhpcy5zdGF0dXNDaGFuZ2VzID0gdGhpcy5uZ0NvbnRyb2wuc3RhdHVzQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4gdGhpcy51cGRhdGVWYWxpZGF0aW9uKCkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRPRE8gRlctMjc4NzogUmVtb3ZlIHRoaXMgaW4gZmF2b3Igb2YgaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvMTA4ODdcbiAgICAgKiB3aGVuZXZlciBpdCBpcyBpbXBsZW1lbnRlZC5cbiAgICAgKi9cbiAgICBjb25zdCBmb3JtQ29udHJvbCA9IHRoaXMubmdDb250cm9sLmNvbnRyb2wgYXMgYW55O1xuICAgIGlmIChmb3JtQ29udHJvbCkge1xuICAgICAgY29uc3QgbWV0aG9kc1RvUGF0Y2ggPSBbJ21hcmtBc1RvdWNoZWQnLCAnbWFya0FsbEFzVG91Y2hlZCcsICdtYXJrQXNVbnRvdWNoZWQnLCAnbWFya0FzRGlydHknLCAnbWFya0FzUHJpc3RpbmUnXTtcbiAgICAgIG1ldGhvZHNUb1BhdGNoLmZvckVhY2goKG1ldGhvZCkgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIGZvcm1Db250cm9sW21ldGhvZF0gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgY29uc3Qgb2xkRm4gPSBmb3JtQ29udHJvbFttZXRob2RdLmJpbmQoZm9ybUNvbnRyb2wpO1xuICAgICAgICAgIGZvcm1Db250cm9sW21ldGhvZF0gPSAoLi4ucGFyYW1zOiBhbnlbXSkgPT4ge1xuICAgICAgICAgICAgb2xkRm4oLi4ucGFyYW1zKTtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlVmFsaWRhdGlvbigpO1xuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGdldEVycm9yVGV4dHMoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogc3RyaW5nW10ge1xuICAgIGlmIChjb250cm9sLmVycm9ycyA9PSBudWxsKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ25vIGVycm9ycyBmb3IgaW52YWxpZCBjb250cm9sJywgY29udHJvbCk7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgY29uc3QgZXJyb3JMaXN0ID0gT2JqZWN0LmVudHJpZXMoY29udHJvbC5lcnJvcnMpO1xuICAgIGlmIChlcnJvckxpc3QubGVuZ3RoIDw9IDApIHtcbiAgICAgIGNvbnNvbGUud2Fybignbm8gZXJyb3JzIGZvciBpbnZhbGlkIGNvbnRyb2wnLCBjb250cm9sKTtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICByZXR1cm4gZXJyb3JMaXN0Lm1hcCgoZXJyb3IpID0+IHtcbiAgICAgIGNvbnN0IFtrZXksIHZhbHVlXSA9IGVycm9yO1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgdGhpcy52YWxpZGF0aW9uTWVzc2FnZXNTZXJ2aWNlLmdldEVycm9yTWVzc2FnZShnZXRMYW5ndWFnZSgpLCB7IGtleToga2V5LCAuLi52YWx1ZSB9IGFzIFZhbGlkYXRpb25FcnJvcikgPz8ga2V5XG4gICAgICApO1xuICAgIH0pO1xuICB9XG59XG5cbmRlY2xhcmUgY29uc3QgX196b25lX3N5bWJvbF9fcmVxdWVzdEFuaW1hdGlvbkZyYW1lOiBhbnk7XG5kZWNsYXJlIGNvbnN0IHJlcXVlc3RBbmltYXRpb25GcmFtZTogYW55O1xuY29uc3QgbmV4dFRpY2sgPSAoaDogYW55KTogYW55ID0+IHtcbiAgaWYgKHR5cGVvZiBfX3pvbmVfc3ltYm9sX19yZXF1ZXN0QW5pbWF0aW9uRnJhbWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gX196b25lX3N5bWJvbF9fcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGgpO1xuICB9XG4gIGlmICh0eXBlb2YgcmVxdWVzdEFuaW1hdGlvbkZyYW1lID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIHJlcXVlc3RBbmltYXRpb25GcmFtZShoKTtcbiAgfVxuICByZXR1cm4gc2V0VGltZW91dChoKTtcbn07XG4iXX0=
@@ -0,0 +1,134 @@
1
+ import { Directive, EventEmitter, HostListener, Output } from '@angular/core';
2
+ import { FormArray, FormControl, FormGroup } from '@angular/forms';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/forms";
5
+ /**
6
+ * This directive intercepts the ngSubmit event of an Angular form and introduces
7
+ * a supplementary event named sixSubmit. The sixSubmit event is triggered exclusively
8
+ * when the form is valid. In cases where the form is considered invalid, this directive
9
+ * takes proactive actions by marking all form controls as touched and dirty. Additionally,
10
+ * it shifts the focus to the initial invalid form element, facilitating quick error
11
+ * resolution.
12
+ *
13
+ * To utilize this directive, apply it to an Angular form.
14
+ * ```html
15
+ * <form [formGroup]="form" sixForm (sixSubmit)="onSubmit($event)">
16
+ * <!-- form content -->
17
+ * </form>
18
+ * ```
19
+ *
20
+ * For users needing greater flexibility in determining when error messages are displayed,
21
+ * or for those who prefer not to rely solely on the form submission event,
22
+ * an alternative is to use the SixFormUtilDirective.
23
+ */
24
+ export class SixFormDirective {
25
+ onNgSubmit(event) {
26
+ if (this.formGroupDirective.invalid) {
27
+ focusInvalidField(this.formGroupDirective, this.elementRef);
28
+ }
29
+ else {
30
+ this.sixSubmit.emit(event);
31
+ }
32
+ }
33
+ constructor(elementRef, formGroupDirective) {
34
+ this.elementRef = elementRef;
35
+ this.formGroupDirective = formGroupDirective;
36
+ /**
37
+ * Emits an event when the form is valid and the form submission has been triggered.
38
+ */
39
+ this.sixSubmit = new EventEmitter();
40
+ }
41
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SixFormDirective, deps: [{ token: i0.ElementRef }, { token: i1.FormGroupDirective }], target: i0.ɵɵFactoryTarget.Directive }); }
42
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: SixFormDirective, selector: "form[sixForm]", outputs: { sixSubmit: "sixSubmit" }, host: { listeners: { "ngSubmit": "onNgSubmit($event)" } }, ngImport: i0 }); }
43
+ }
44
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SixFormDirective, decorators: [{
45
+ type: Directive,
46
+ args: [{
47
+ selector: 'form[sixForm]',
48
+ }]
49
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.FormGroupDirective }]; }, propDecorators: { sixSubmit: [{
50
+ type: Output
51
+ }], onNgSubmit: [{
52
+ type: HostListener,
53
+ args: ['ngSubmit', ['$event']]
54
+ }] } });
55
+ /**
56
+ * This directive provides a utility method, that marks all form controls
57
+ * as touched and dirty, and focuses the first invalid form element.
58
+ *
59
+ * To utilize this directive, apply it to an Angular form.
60
+ * ```html
61
+ * <form [formGroup]="form" sixFormUtil (ngSubmit)="onSubmit($event)">
62
+ * <!-- form content -->
63
+ * </form>
64
+ * ```
65
+ *
66
+ * Then, get a reference to the directive and invoke `focusInvalidField()` if the
67
+ * form is invalid:
68
+ * ```ts
69
+ * @ViewChild(SixFormUtilDirective) sixFormUtil!: SixFormUtilDirective;
70
+ * // ...
71
+ * onSubmit() {
72
+ * if (this.form.invalid) {
73
+ * this.sixFormUtil.focusInvalidField();
74
+ * } else {
75
+ * // ...
76
+ * }
77
+ * }
78
+ * ```
79
+ */
80
+ export class SixFormUtilDirective {
81
+ constructor(elementRef, formGroupDirective) {
82
+ this.elementRef = elementRef;
83
+ this.formGroupDirective = formGroupDirective;
84
+ }
85
+ /** markAllControlsAsDirty(Object.values(formGroup.controls));
86
+ * Marks all form controls as touched and dirty, and focuses the first
87
+ * invalid form element.
88
+ */
89
+ focusInvalidField() {
90
+ focusInvalidField(this.formGroupDirective, this.elementRef);
91
+ }
92
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SixFormUtilDirective, deps: [{ token: i0.ElementRef }, { token: i1.FormGroupDirective }], target: i0.ɵɵFactoryTarget.Directive }); }
93
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: SixFormUtilDirective, selector: "[sixFormUtil]", ngImport: i0 }); }
94
+ }
95
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SixFormUtilDirective, decorators: [{
96
+ type: Directive,
97
+ args: [{
98
+ selector: '[sixFormUtil]',
99
+ }]
100
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.FormGroupDirective }]; } });
101
+ function focusInvalidField(formGroupDirective, formElement) {
102
+ formGroupDirective.form.markAllAsTouched();
103
+ markAllAsDirty([formGroupDirective.form]);
104
+ const invalidElement = getInvalidElement(formElement.nativeElement);
105
+ if ('setFocus' in invalidElement && typeof invalidElement?.setFocus === 'function') {
106
+ invalidElement.setFocus();
107
+ }
108
+ if ('focus' in invalidElement && typeof invalidElement?.focus === 'function') {
109
+ invalidElement.focus();
110
+ }
111
+ }
112
+ function getInvalidElement(parent) {
113
+ const invalidElement = parent.querySelector('.ng-invalid');
114
+ if (invalidElement == null) {
115
+ return parent;
116
+ }
117
+ return getInvalidElement(invalidElement);
118
+ }
119
+ function markAllAsDirty(controls) {
120
+ controls.forEach((control) => {
121
+ if (control instanceof FormControl) {
122
+ control.markAsDirty({ onlySelf: true });
123
+ }
124
+ else if (control instanceof FormGroup) {
125
+ control.markAsDirty({ onlySelf: true });
126
+ markAllAsDirty(Object.values(control.controls));
127
+ }
128
+ else if (control instanceof FormArray) {
129
+ control.markAsDirty({ onlySelf: true });
130
+ markAllAsDirty(control.controls);
131
+ }
132
+ });
133
+ }
134
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2l4LWZvcm0uZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9mb3JtL3NpeC1mb3JtLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBbUIsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQXNCLE1BQU0sZ0JBQWdCLENBQUM7OztBQUV4Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBa0JHO0FBSUgsTUFBTSxPQUFPLGdCQUFnQjtJQU8zQixVQUFVLENBQUMsS0FBa0I7UUFDM0IsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFO1lBQ25DLGlCQUFpQixDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDN0Q7YUFBTTtZQUNMLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzVCO0lBQ0gsQ0FBQztJQUVELFlBQW9CLFVBQW1DLEVBQVUsa0JBQXNDO1FBQW5GLGVBQVUsR0FBVixVQUFVLENBQXlCO1FBQVUsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQWR2Rzs7V0FFRztRQUNPLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBZSxDQUFDO0lBV29ELENBQUM7K0dBZmhHLGdCQUFnQjttR0FBaEIsZ0JBQWdCOzs0RkFBaEIsZ0JBQWdCO2tCQUg1QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxlQUFlO2lCQUMxQjtrSUFLVyxTQUFTO3NCQUFsQixNQUFNO2dCQUdQLFVBQVU7c0JBRFQsWUFBWTt1QkFBQyxVQUFVLEVBQUUsQ0FBQyxRQUFRLENBQUM7O0FBWXRDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F3Qkc7QUFJSCxNQUFNLE9BQU8sb0JBQW9CO0lBQy9CLFlBQW9CLFVBQW1DLEVBQVUsa0JBQXNDO1FBQW5GLGVBQVUsR0FBVixVQUFVLENBQXlCO1FBQVUsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtJQUFHLENBQUM7SUFFM0c7OztPQUdHO0lBQ0ksaUJBQWlCO1FBQ3RCLGlCQUFpQixDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDOUQsQ0FBQzsrR0FUVSxvQkFBb0I7bUdBQXBCLG9CQUFvQjs7NEZBQXBCLG9CQUFvQjtrQkFIaEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZUFBZTtpQkFDMUI7O0FBYUQsU0FBUyxpQkFBaUIsQ0FBQyxrQkFBc0MsRUFBRSxXQUFvQztJQUNyRyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUMzQyxjQUFjLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBRTFDLE1BQU0sY0FBYyxHQUFHLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNwRSxJQUFJLFVBQVUsSUFBSSxjQUFjLElBQUksT0FBTyxjQUFjLEVBQUUsUUFBUSxLQUFLLFVBQVUsRUFBRTtRQUNsRixjQUFjLENBQUMsUUFBUSxFQUFFLENBQUM7S0FDM0I7SUFDRCxJQUFJLE9BQU8sSUFBSSxjQUFjLElBQUksT0FBTyxjQUFjLEVBQUUsS0FBSyxLQUFLLFVBQVUsRUFBRTtRQUM1RSxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUM7S0FDeEI7QUFDSCxDQUFDO0FBRUQsU0FBUyxpQkFBaUIsQ0FBQyxNQUFlO0lBQ3hDLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDM0QsSUFBSSxjQUFjLElBQUksSUFBSSxFQUFFO1FBQzFCLE9BQU8sTUFBTSxDQUFDO0tBQ2Y7SUFDRCxPQUFPLGlCQUFpQixDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBQzNDLENBQUM7QUFFRCxTQUFTLGNBQWMsQ0FBQyxRQUEyQjtJQUNqRCxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7UUFDM0IsSUFBSSxPQUFPLFlBQVksV0FBVyxFQUFFO1lBQ2xDLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztTQUN6QzthQUFNLElBQUksT0FBTyxZQUFZLFNBQVMsRUFBRTtZQUN2QyxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7WUFDeEMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7U0FDakQ7YUFBTSxJQUFJLE9BQU8sWUFBWSxTQUFTLEVBQUU7WUFDdkMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQ3hDLGNBQWMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDbEM7SUFDSCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUFycmF5LCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBGb3JtR3JvdXBEaXJlY3RpdmUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbi8qKlxuICogVGhpcyBkaXJlY3RpdmUgaW50ZXJjZXB0cyB0aGUgbmdTdWJtaXQgZXZlbnQgb2YgYW4gQW5ndWxhciBmb3JtIGFuZCBpbnRyb2R1Y2VzXG4gKiBhIHN1cHBsZW1lbnRhcnkgZXZlbnQgbmFtZWQgc2l4U3VibWl0LiBUaGUgc2l4U3VibWl0IGV2ZW50IGlzIHRyaWdnZXJlZCBleGNsdXNpdmVseVxuICogd2hlbiB0aGUgZm9ybSBpcyB2YWxpZC4gSW4gY2FzZXMgd2hlcmUgdGhlIGZvcm0gaXMgY29uc2lkZXJlZCBpbnZhbGlkLCB0aGlzIGRpcmVjdGl2ZVxuICogdGFrZXMgcHJvYWN0aXZlIGFjdGlvbnMgYnkgbWFya2luZyBhbGwgZm9ybSBjb250cm9scyBhcyB0b3VjaGVkIGFuZCBkaXJ0eS4gQWRkaXRpb25hbGx5LFxuICogaXQgc2hpZnRzIHRoZSBmb2N1cyB0byB0aGUgaW5pdGlhbCBpbnZhbGlkIGZvcm0gZWxlbWVudCwgZmFjaWxpdGF0aW5nIHF1aWNrIGVycm9yXG4gKiByZXNvbHV0aW9uLlxuICpcbiAqIFRvIHV0aWxpemUgdGhpcyBkaXJlY3RpdmUsIGFwcGx5IGl0IHRvIGFuIEFuZ3VsYXIgZm9ybS5cbiAqIGBgYGh0bWxcbiAqIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiIHNpeEZvcm0gKHNpeFN1Ym1pdCk9XCJvblN1Ym1pdCgkZXZlbnQpXCI+XG4gKiAgIDwhLS0gZm9ybSBjb250ZW50IC0tPlxuICogPC9mb3JtPlxuICogYGBgXG4gKlxuICogRm9yIHVzZXJzIG5lZWRpbmcgZ3JlYXRlciBmbGV4aWJpbGl0eSBpbiBkZXRlcm1pbmluZyB3aGVuIGVycm9yIG1lc3NhZ2VzIGFyZSBkaXNwbGF5ZWQsXG4gKiBvciBmb3IgdGhvc2Ugd2hvIHByZWZlciBub3QgdG8gcmVseSBzb2xlbHkgb24gdGhlIGZvcm0gc3VibWlzc2lvbiBldmVudCxcbiAqIGFuIGFsdGVybmF0aXZlIGlzIHRvIHVzZSB0aGUgU2l4Rm9ybVV0aWxEaXJlY3RpdmUuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ2Zvcm1bc2l4Rm9ybV0nLFxufSlcbmV4cG9ydCBjbGFzcyBTaXhGb3JtRGlyZWN0aXZlIHtcbiAgLyoqXG4gICAqIEVtaXRzIGFuIGV2ZW50IHdoZW4gdGhlIGZvcm0gaXMgdmFsaWQgYW5kIHRoZSBmb3JtIHN1Ym1pc3Npb24gaGFzIGJlZW4gdHJpZ2dlcmVkLlxuICAgKi9cbiAgQE91dHB1dCgpIHNpeFN1Ym1pdCA9IG5ldyBFdmVudEVtaXR0ZXI8U3VibWl0RXZlbnQ+KCk7XG5cbiAgQEhvc3RMaXN0ZW5lcignbmdTdWJtaXQnLCBbJyRldmVudCddKVxuICBvbk5nU3VibWl0KGV2ZW50OiBTdWJtaXRFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmZvcm1Hcm91cERpcmVjdGl2ZS5pbnZhbGlkKSB7XG4gICAgICBmb2N1c0ludmFsaWRGaWVsZCh0aGlzLmZvcm1Hcm91cERpcmVjdGl2ZSwgdGhpcy5lbGVtZW50UmVmKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zaXhTdWJtaXQuZW1pdChldmVudCk7XG4gICAgfVxuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiwgcHJpdmF0ZSBmb3JtR3JvdXBEaXJlY3RpdmU6IEZvcm1Hcm91cERpcmVjdGl2ZSkge31cbn1cblxuLyoqXG4gKiBUaGlzIGRpcmVjdGl2ZSBwcm92aWRlcyBhIHV0aWxpdHkgbWV0aG9kLCB0aGF0IG1hcmtzIGFsbCBmb3JtIGNvbnRyb2xzXG4gKiBhcyB0b3VjaGVkIGFuZCBkaXJ0eSwgYW5kIGZvY3VzZXMgdGhlIGZpcnN0IGludmFsaWQgZm9ybSBlbGVtZW50LlxuICpcbiAqIFRvIHV0aWxpemUgdGhpcyBkaXJlY3RpdmUsIGFwcGx5IGl0IHRvIGFuIEFuZ3VsYXIgZm9ybS5cbiAqIGBgYGh0bWxcbiAqIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiIHNpeEZvcm1VdGlsIChuZ1N1Ym1pdCk9XCJvblN1Ym1pdCgkZXZlbnQpXCI+XG4gKiAgIDwhLS0gZm9ybSBjb250ZW50IC0tPlxuICogPC9mb3JtPlxuICogYGBgXG4gKlxuICogVGhlbiwgZ2V0IGEgcmVmZXJlbmNlIHRvIHRoZSBkaXJlY3RpdmUgYW5kIGludm9rZSBgZm9jdXNJbnZhbGlkRmllbGQoKWAgaWYgdGhlXG4gKiBmb3JtIGlzIGludmFsaWQ6XG4gKiBgYGB0c1xuICogQFZpZXdDaGlsZChTaXhGb3JtVXRpbERpcmVjdGl2ZSkgc2l4Rm9ybVV0aWwhOiBTaXhGb3JtVXRpbERpcmVjdGl2ZTtcbiAqIC8vIC4uLlxuICogb25TdWJtaXQoKSB7XG4gKiAgIGlmICh0aGlzLmZvcm0uaW52YWxpZCkge1xuICogICAgIHRoaXMuc2l4Rm9ybVV0aWwuZm9jdXNJbnZhbGlkRmllbGQoKTtcbiAqICAgfSBlbHNlIHtcbiAqICAgICAgLy8gLi4uXG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICovXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbc2l4Rm9ybVV0aWxdJyxcbn0pXG5leHBvcnQgY2xhc3MgU2l4Rm9ybVV0aWxEaXJlY3RpdmUge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LCBwcml2YXRlIGZvcm1Hcm91cERpcmVjdGl2ZTogRm9ybUdyb3VwRGlyZWN0aXZlKSB7fVxuXG4gIC8qKiBtYXJrQWxsQ29udHJvbHNBc0RpcnR5KE9iamVjdC52YWx1ZXMoZm9ybUdyb3VwLmNvbnRyb2xzKSk7XG4gICAqIE1hcmtzIGFsbCBmb3JtIGNvbnRyb2xzIGFzIHRvdWNoZWQgYW5kIGRpcnR5LCBhbmQgZm9jdXNlcyB0aGUgZmlyc3RcbiAgICogaW52YWxpZCBmb3JtIGVsZW1lbnQuXG4gICAqL1xuICBwdWJsaWMgZm9jdXNJbnZhbGlkRmllbGQoKSB7XG4gICAgZm9jdXNJbnZhbGlkRmllbGQodGhpcy5mb3JtR3JvdXBEaXJlY3RpdmUsIHRoaXMuZWxlbWVudFJlZik7XG4gIH1cbn1cblxuZnVuY3Rpb24gZm9jdXNJbnZhbGlkRmllbGQoZm9ybUdyb3VwRGlyZWN0aXZlOiBGb3JtR3JvdXBEaXJlY3RpdmUsIGZvcm1FbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pikge1xuICBmb3JtR3JvdXBEaXJlY3RpdmUuZm9ybS5tYXJrQWxsQXNUb3VjaGVkKCk7XG4gIG1hcmtBbGxBc0RpcnR5KFtmb3JtR3JvdXBEaXJlY3RpdmUuZm9ybV0pO1xuXG4gIGNvbnN0IGludmFsaWRFbGVtZW50ID0gZ2V0SW52YWxpZEVsZW1lbnQoZm9ybUVsZW1lbnQubmF0aXZlRWxlbWVudCk7XG4gIGlmICgnc2V0Rm9jdXMnIGluIGludmFsaWRFbGVtZW50ICYmIHR5cGVvZiBpbnZhbGlkRWxlbWVudD8uc2V0Rm9jdXMgPT09ICdmdW5jdGlvbicpIHtcbiAgICBpbnZhbGlkRWxlbWVudC5zZXRGb2N1cygpO1xuICB9XG4gIGlmICgnZm9jdXMnIGluIGludmFsaWRFbGVtZW50ICYmIHR5cGVvZiBpbnZhbGlkRWxlbWVudD8uZm9jdXMgPT09ICdmdW5jdGlvbicpIHtcbiAgICBpbnZhbGlkRWxlbWVudC5mb2N1cygpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldEludmFsaWRFbGVtZW50KHBhcmVudDogRWxlbWVudCk6IEVsZW1lbnQge1xuICBjb25zdCBpbnZhbGlkRWxlbWVudCA9IHBhcmVudC5xdWVyeVNlbGVjdG9yKCcubmctaW52YWxpZCcpO1xuICBpZiAoaW52YWxpZEVsZW1lbnQgPT0gbnVsbCkge1xuICAgIHJldHVybiBwYXJlbnQ7XG4gIH1cbiAgcmV0dXJuIGdldEludmFsaWRFbGVtZW50KGludmFsaWRFbGVtZW50KTtcbn1cblxuZnVuY3Rpb24gbWFya0FsbEFzRGlydHkoY29udHJvbHM6IEFic3RyYWN0Q29udHJvbFtdKTogdm9pZCB7XG4gIGNvbnRyb2xzLmZvckVhY2goKGNvbnRyb2wpID0+IHtcbiAgICBpZiAoY29udHJvbCBpbnN0YW5jZW9mIEZvcm1Db250cm9sKSB7XG4gICAgICBjb250cm9sLm1hcmtBc0RpcnR5KHsgb25seVNlbGY6IHRydWUgfSk7XG4gICAgfSBlbHNlIGlmIChjb250cm9sIGluc3RhbmNlb2YgRm9ybUdyb3VwKSB7XG4gICAgICBjb250cm9sLm1hcmtBc0RpcnR5KHsgb25seVNlbGY6IHRydWUgfSk7XG4gICAgICBtYXJrQWxsQXNEaXJ0eShPYmplY3QudmFsdWVzKGNvbnRyb2wuY29udHJvbHMpKTtcbiAgICB9IGVsc2UgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBGb3JtQXJyYXkpIHtcbiAgICAgIGNvbnRyb2wubWFya0FzRGlydHkoeyBvbmx5U2VsZjogdHJ1ZSB9KTtcbiAgICAgIG1hcmtBbGxBc0RpcnR5KGNvbnRyb2wuY29udHJvbHMpO1xuICAgIH1cbiAgfSk7XG59XG4iXX0=
@@ -0,0 +1,61 @@
1
+ import { Directive, HostListener, Input, Optional } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common";
4
+ import * as i2 from "@angular/router";
5
+ /**
6
+ * Forked from https://github.com/ionic-team/ionic-framework/blob/main/packages/angular/common/src/directives/navigation/router-link-delegate.ts.
7
+ */
8
+ export class SixRouterLinkDirective {
9
+ constructor(locationStrategy, elementRef, router, renderer, routerLinkDirective) {
10
+ this.locationStrategy = locationStrategy;
11
+ this.elementRef = elementRef;
12
+ this.router = router;
13
+ this.renderer = renderer;
14
+ this.routerLinkDirective = routerLinkDirective;
15
+ }
16
+ onClick(event) {
17
+ // Prevents the browser from performing a page reload when pressing a SIX-component with routerLink.
18
+ event.preventDefault();
19
+ }
20
+ ngOnInit() {
21
+ this.updateTargetUrlAndHref();
22
+ }
23
+ ngOnChanges() {
24
+ this.updateTargetUrlAndHref();
25
+ }
26
+ updateTargetUrlAndHref() {
27
+ if (this.routerLinkDirective?.urlTree) {
28
+ const url = this.locationStrategy.prepareExternalUrl(this.router.serializeUrl(this.routerLinkDirective.urlTree));
29
+ this.renderer.setAttribute(this.elementRef.nativeElement, 'href', url);
30
+ // Remove the `tabindex` attribute to prevent redundant focus behavior.
31
+ // Angular's RouterLink adds `tabindex="0"` to non-focusable elements (e.g., `<div>`),
32
+ // but custom components like `six-button` already handle focusability.
33
+ // Keeping the tabindex would cause the element to receive focus twice.
34
+ this.renderer.removeAttribute(this.elementRef.nativeElement, 'tabindex');
35
+ }
36
+ }
37
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SixRouterLinkDirective, deps: [{ token: i1.LocationStrategy }, { token: i0.ElementRef }, { token: i2.Router }, { token: i0.Renderer2 }, { token: i2.RouterLink, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
38
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: SixRouterLinkDirective, selector: "six-sidebar-item[routerLink],six-sidebar-item-group[routerLink],six-button[routerLink],six-icon-button[routerLink]", inputs: { routerLink: "routerLink", queryParams: "queryParams", fragment: "fragment", queryParamsHandling: "queryParamsHandling", relativeTo: "relativeTo" }, host: { listeners: { "click": "onClick($event)" } }, usesOnChanges: true, ngImport: i0 }); }
39
+ }
40
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: SixRouterLinkDirective, decorators: [{
41
+ type: Directive,
42
+ args: [{
43
+ selector: 'six-sidebar-item[routerLink],six-sidebar-item-group[routerLink],six-button[routerLink],six-icon-button[routerLink]',
44
+ }]
45
+ }], ctorParameters: function () { return [{ type: i1.LocationStrategy }, { type: i0.ElementRef }, { type: i2.Router }, { type: i0.Renderer2 }, { type: i2.RouterLink, decorators: [{
46
+ type: Optional
47
+ }] }]; }, propDecorators: { onClick: [{
48
+ type: HostListener,
49
+ args: ['click', ['$event']]
50
+ }], routerLink: [{
51
+ type: Input
52
+ }], queryParams: [{
53
+ type: Input
54
+ }], fragment: [{
55
+ type: Input
56
+ }], queryParamsHandling: [{
57
+ type: Input
58
+ }], relativeTo: [{
59
+ type: Input
60
+ }] } });
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2l4LXJvdXRlci1saW5rLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvbGluay9zaXgtcm91dGVyLWxpbmsuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBcUIsUUFBUSxFQUFhLE1BQU0sZUFBZSxDQUFDOzs7O0FBSW5IOztHQUVHO0FBS0gsTUFBTSxPQUFPLHNCQUFzQjtJQUNqQyxZQUNVLGdCQUFrQyxFQUNsQyxVQUFzQixFQUN0QixNQUFjLEVBQ2QsUUFBbUIsRUFDUCxtQkFBZ0M7UUFKNUMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxhQUFRLEdBQVIsUUFBUSxDQUFXO1FBQ1Asd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFhO0lBQ25ELENBQUM7SUFHSixPQUFPLENBQUMsS0FBYztRQUNwQixvR0FBb0c7UUFDcEcsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFRRCxRQUFRO1FBQ04sSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRU8sc0JBQXNCO1FBQzVCLElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFLE9BQU8sRUFBRTtZQUNyQyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDakgsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBRXZFLHVFQUF1RTtZQUN2RSxzRkFBc0Y7WUFDdEYsdUVBQXVFO1lBQ3ZFLHVFQUF1RTtZQUN2RSxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxVQUFVLENBQUMsQ0FBQztTQUMxRTtJQUNILENBQUM7K0dBeENVLHNCQUFzQjttR0FBdEIsc0JBQXNCOzs0RkFBdEIsc0JBQXNCO2tCQUpsQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFDTixvSEFBb0g7aUJBQ3ZIOzswQkFPSSxRQUFROzRDQUlYLE9BQU87c0JBRE4sWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBTXhCLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3B0aW9uYWwsIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyLCBSb3V0ZXJMaW5rIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IExvY2F0aW9uU3RyYXRlZ3kgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG4vKipcbiAqIEZvcmtlZCBmcm9tICBodHRwczovL2dpdGh1Yi5jb20vaW9uaWMtdGVhbS9pb25pYy1mcmFtZXdvcmsvYmxvYi9tYWluL3BhY2thZ2VzL2FuZ3VsYXIvY29tbW9uL3NyYy9kaXJlY3RpdmVzL25hdmlnYXRpb24vcm91dGVyLWxpbmstZGVsZWdhdGUudHMuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjpcbiAgICAnc2l4LXNpZGViYXItaXRlbVtyb3V0ZXJMaW5rXSxzaXgtc2lkZWJhci1pdGVtLWdyb3VwW3JvdXRlckxpbmtdLHNpeC1idXR0b25bcm91dGVyTGlua10sc2l4LWljb24tYnV0dG9uW3JvdXRlckxpbmtdJyxcbn0pXG5leHBvcnQgY2xhc3MgU2l4Um91dGVyTGlua0RpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBsb2NhdGlvblN0cmF0ZWd5OiBMb2NhdGlvblN0cmF0ZWd5LFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHJvdXRlckxpbmtEaXJlY3RpdmU/OiBSb3V0ZXJMaW5rXG4gICkge31cblxuICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pXG4gIG9uQ2xpY2soZXZlbnQ6IFVJRXZlbnQpOiB2b2lkIHtcbiAgICAvLyBQcmV2ZW50cyB0aGUgYnJvd3NlciBmcm9tIHBlcmZvcm1pbmcgYSBwYWdlIHJlbG9hZCB3aGVuIHByZXNzaW5nIGEgU0lYLWNvbXBvbmVudCB3aXRoIHJvdXRlckxpbmsuXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgfVxuXG4gIEBJbnB1dCgpIHJvdXRlckxpbms/OiBhbnk7XG4gIEBJbnB1dCgpIHF1ZXJ5UGFyYW1zPzogYW55O1xuICBASW5wdXQoKSBmcmFnbWVudD86IGFueTtcbiAgQElucHV0KCkgcXVlcnlQYXJhbXNIYW5kbGluZz86IGFueTtcbiAgQElucHV0KCkgcmVsYXRpdmVUbz86IGFueTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnVwZGF0ZVRhcmdldFVybEFuZEhyZWYoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlVGFyZ2V0VXJsQW5kSHJlZigpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVUYXJnZXRVcmxBbmRIcmVmKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJvdXRlckxpbmtEaXJlY3RpdmU/LnVybFRyZWUpIHtcbiAgICAgIGNvbnN0IHVybCA9IHRoaXMubG9jYXRpb25TdHJhdGVneS5wcmVwYXJlRXh0ZXJuYWxVcmwodGhpcy5yb3V0ZXIuc2VyaWFsaXplVXJsKHRoaXMucm91dGVyTGlua0RpcmVjdGl2ZS51cmxUcmVlKSk7XG4gICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2hyZWYnLCB1cmwpO1xuXG4gICAgICAvLyBSZW1vdmUgdGhlIGB0YWJpbmRleGAgYXR0cmlidXRlIHRvIHByZXZlbnQgcmVkdW5kYW50IGZvY3VzIGJlaGF2aW9yLlxuICAgICAgLy8gQW5ndWxhcidzIFJvdXRlckxpbmsgYWRkcyBgdGFiaW5kZXg9XCIwXCJgIHRvIG5vbi1mb2N1c2FibGUgZWxlbWVudHMgKGUuZy4sIGA8ZGl2PmApLFxuICAgICAgLy8gYnV0IGN1c3RvbSBjb21wb25lbnRzIGxpa2UgYHNpeC1idXR0b25gIGFscmVhZHkgaGFuZGxlIGZvY3VzYWJpbGl0eS5cbiAgICAgIC8vIEtlZXBpbmcgdGhlIHRhYmluZGV4IHdvdWxkIGNhdXNlIHRoZSBlbGVtZW50IHRvIHJlY2VpdmUgZm9jdXMgdHdpY2UuXG4gICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUF0dHJpYnV0ZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ3RhYmluZGV4Jyk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -0,0 +1,21 @@
1
+ import { inject, Injectable, NgZone } from '@angular/core';
2
+ import { showAlert } from '@six-group/ui-library';
3
+ import * as i0 from "@angular/core";
4
+ export class AlertService {
5
+ constructor() {
6
+ this.ngZone = inject(NgZone);
7
+ }
8
+ /**
9
+ * Displays an alert as a toast notification.
10
+ */
11
+ showAlert(message, alertType, duration, iconName) {
12
+ this.ngZone.runOutsideAngular(() => showAlert(message, alertType, duration, iconName));
13
+ }
14
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AlertService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
15
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AlertService, providedIn: 'root' }); }
16
+ }
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AlertService, decorators: [{
18
+ type: Injectable,
19
+ args: [{ providedIn: 'root' }]
20
+ }] });
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VydmljZXMvYWxlcnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0QsT0FBTyxFQUFhLFNBQVMsRUFBRSxNQUFNLHVCQUF1QixDQUFDOztBQUc3RCxNQUFNLE9BQU8sWUFBWTtJQUR6QjtRQUVVLFdBQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7S0FRakM7SUFOQzs7T0FFRztJQUNJLFNBQVMsQ0FBQyxPQUFlLEVBQUUsU0FBcUIsRUFBRSxRQUFpQixFQUFFLFFBQWlCO1FBQzNGLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDekYsQ0FBQzsrR0FSVSxZQUFZO21IQUFaLFlBQVksY0FEQyxNQUFNOzs0RkFDbkIsWUFBWTtrQkFEeEIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmplY3QsIEluamVjdGFibGUsIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWxlcnRUeXBlLCBzaG93QWxlcnQgfSBmcm9tICdAc2l4LWdyb3VwL3VpLWxpYnJhcnknO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEFsZXJ0U2VydmljZSB7XG4gIHByaXZhdGUgbmdab25lID0gaW5qZWN0KE5nWm9uZSk7XG5cbiAgLyoqXG4gICAqIERpc3BsYXlzIGFuIGFsZXJ0IGFzIGEgdG9hc3Qgbm90aWZpY2F0aW9uLlxuICAgKi9cbiAgcHVibGljIHNob3dBbGVydChtZXNzYWdlOiBzdHJpbmcsIGFsZXJ0VHlwZT86IEFsZXJ0VHlwZSwgZHVyYXRpb24/OiBudW1iZXIsIGljb25OYW1lPzogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4gc2hvd0FsZXJ0KG1lc3NhZ2UsIGFsZXJ0VHlwZSwgZHVyYXRpb24sIGljb25OYW1lKSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,15 @@
1
+ import { getErrorMessage } from '@six-group/ui-library';
2
+ import { Injectable } from '@angular/core';
3
+ import * as i0 from "@angular/core";
4
+ export class ValidationMessagesService {
5
+ getErrorMessage(language, error) {
6
+ return getErrorMessage(language, error);
7
+ }
8
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ValidationMessagesService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
9
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ValidationMessagesService, providedIn: 'root' }); }
10
+ }
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ValidationMessagesService, decorators: [{
12
+ type: Injectable,
13
+ args: [{ providedIn: 'root' }]
14
+ }] });
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi1tZXNzYWdlcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy92YWxpZGF0aW9uLW1lc3NhZ2VzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBNkIsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUczQyxNQUFNLE9BQU8seUJBQXlCO0lBQzdCLGVBQWUsQ0FBQyxRQUFrQixFQUFFLEtBQXNCO1FBQy9ELE9BQU8sZUFBZSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMxQyxDQUFDOytHQUhVLHlCQUF5QjttSEFBekIseUJBQXlCLGNBRFosTUFBTTs7NEZBQ25CLHlCQUF5QjtrQkFEckMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXRFcnJvck1lc3NhZ2UsIExhbmd1YWdlLCBWYWxpZGF0aW9uRXJyb3IgfSBmcm9tICdAc2l4LWdyb3VwL3VpLWxpYnJhcnknO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFZhbGlkYXRpb25NZXNzYWdlc1NlcnZpY2Uge1xuICBwdWJsaWMgZ2V0RXJyb3JNZXNzYWdlKGxhbmd1YWdlOiBMYW5ndWFnZSwgZXJyb3I6IFZhbGlkYXRpb25FcnJvcik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIGdldEVycm9yTWVzc2FnZShsYW5ndWFnZSwgZXJyb3IpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,59 @@
1
+ /* eslint-disable */
2
+ /* tslint:disable */
3
+ import { fromEvent } from 'rxjs';
4
+ export const proxyInputs = (Cmp, inputs) => {
5
+ const Prototype = Cmp.prototype;
6
+ inputs.forEach((item) => {
7
+ Object.defineProperty(Prototype, item, {
8
+ get() {
9
+ return this.el[item];
10
+ },
11
+ set(val) {
12
+ this.z.runOutsideAngular(() => (this.el[item] = val));
13
+ },
14
+ /**
15
+ * In the event that proxyInputs is called
16
+ * multiple times re-defining these inputs
17
+ * will cause an error to be thrown. As a result
18
+ * we set configurable: true to indicate these
19
+ * properties can be changed.
20
+ */
21
+ configurable: true,
22
+ });
23
+ });
24
+ };
25
+ export const proxyMethods = (Cmp, methods) => {
26
+ const Prototype = Cmp.prototype;
27
+ methods.forEach((methodName) => {
28
+ Prototype[methodName] = function () {
29
+ const args = arguments;
30
+ return this.z.runOutsideAngular(() => this.el[methodName].apply(this.el, args));
31
+ };
32
+ });
33
+ };
34
+ export const proxyOutputs = (instance, el, events) => {
35
+ events.forEach((eventName) => (instance[eventName] = fromEvent(el, eventName)));
36
+ };
37
+ export const defineCustomElement = (tagName, customElement) => {
38
+ if (customElement !== undefined && typeof customElements !== 'undefined' && !customElements.get(tagName)) {
39
+ customElements.define(tagName, customElement);
40
+ }
41
+ };
42
+ // tslint:disable-next-line: only-arrow-functions
43
+ export function ProxyCmp(opts) {
44
+ const decorator = function (cls) {
45
+ const { defineCustomElementFn, inputs, methods } = opts;
46
+ if (defineCustomElementFn !== undefined) {
47
+ defineCustomElementFn();
48
+ }
49
+ if (inputs) {
50
+ proxyInputs(cls, inputs);
51
+ }
52
+ if (methods) {
53
+ proxyMethods(cls, methods);
54
+ }
55
+ return cls;
56
+ };
57
+ return decorator;
58
+ }
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3N0ZW5jaWwtZ2VuZXJhdGVkL2FuZ3VsYXItY29tcG9uZW50LWxpYi91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxvQkFBb0I7QUFDcEIsb0JBQW9CO0FBQ3BCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFakMsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLENBQUMsR0FBUSxFQUFFLE1BQWdCLEVBQUUsRUFBRTtJQUN4RCxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDO0lBQ2hDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtRQUN0QixNQUFNLENBQUMsY0FBYyxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUU7WUFDckMsR0FBRztnQkFDRCxPQUFPLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdkIsQ0FBQztZQUNELEdBQUcsQ0FBQyxHQUFRO2dCQUNWLElBQUksQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDeEQsQ0FBQztZQUNEOzs7Ozs7ZUFNRztZQUNILFlBQVksRUFBRSxJQUFJO1NBQ25CLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsR0FBUSxFQUFFLE9BQWlCLEVBQUUsRUFBRTtJQUMxRCxNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDO0lBQ2hDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRTtRQUM3QixTQUFTLENBQUMsVUFBVSxDQUFDLEdBQUc7WUFDdEIsTUFBTSxJQUFJLEdBQUcsU0FBUyxDQUFDO1lBQ3ZCLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDbEYsQ0FBQyxDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxRQUFhLEVBQUUsRUFBTyxFQUFFLE1BQWdCLEVBQUUsRUFBRTtJQUN2RSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxTQUFTLENBQUMsRUFBRSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsRixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxDQUFDLE9BQWUsRUFBRSxhQUFrQixFQUFFLEVBQUU7SUFDekUsSUFBSSxhQUFhLEtBQUssU0FBUyxJQUFJLE9BQU8sY0FBYyxLQUFLLFdBQVcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDeEcsY0FBYyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsYUFBYSxDQUFDLENBQUM7S0FDL0M7QUFDSCxDQUFDLENBQUM7QUFFRixpREFBaUQ7QUFDakQsTUFBTSxVQUFVLFFBQVEsQ0FBQyxJQUF5RTtJQUNoRyxNQUFNLFNBQVMsR0FBRyxVQUFVLEdBQVE7UUFDbEMsTUFBTSxFQUFFLHFCQUFxQixFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFFeEQsSUFBSSxxQkFBcUIsS0FBSyxTQUFTLEVBQUU7WUFDdkMscUJBQXFCLEVBQUUsQ0FBQztTQUN6QjtRQUVELElBQUksTUFBTSxFQUFFO1lBQ1YsV0FBVyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztTQUMxQjtRQUNELElBQUksT0FBTyxFQUFFO1lBQ1gsWUFBWSxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztTQUM1QjtRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQyxDQUFDO0lBQ0YsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlICovXG4vKiB0c2xpbnQ6ZGlzYWJsZSAqL1xuaW1wb3J0IHsgZnJvbUV2ZW50IH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCBjb25zdCBwcm94eUlucHV0cyA9IChDbXA6IGFueSwgaW5wdXRzOiBzdHJpbmdbXSkgPT4ge1xuICBjb25zdCBQcm90b3R5cGUgPSBDbXAucHJvdG90eXBlO1xuICBpbnB1dHMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShQcm90b3R5cGUsIGl0ZW0sIHtcbiAgICAgIGdldCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWxbaXRlbV07XG4gICAgICB9LFxuICAgICAgc2V0KHZhbDogYW55KSB7XG4gICAgICAgIHRoaXMuei5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiAodGhpcy5lbFtpdGVtXSA9IHZhbCkpO1xuICAgICAgfSxcbiAgICAgIC8qKlxuICAgICAgICogSW4gdGhlIGV2ZW50IHRoYXQgcHJveHlJbnB1dHMgaXMgY2FsbGVkXG4gICAgICAgKiBtdWx0aXBsZSB0aW1lcyByZS1kZWZpbmluZyB0aGVzZSBpbnB1dHNcbiAgICAgICAqIHdpbGwgY2F1c2UgYW4gZXJyb3IgdG8gYmUgdGhyb3duLiBBcyBhIHJlc3VsdFxuICAgICAgICogd2Ugc2V0IGNvbmZpZ3VyYWJsZTogdHJ1ZSB0byBpbmRpY2F0ZSB0aGVzZVxuICAgICAgICogcHJvcGVydGllcyBjYW4gYmUgY2hhbmdlZC5cbiAgICAgICAqL1xuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgIH0pO1xuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBwcm94eU1ldGhvZHMgPSAoQ21wOiBhbnksIG1ldGhvZHM6IHN0cmluZ1tdKSA9PiB7XG4gIGNvbnN0IFByb3RvdHlwZSA9IENtcC5wcm90b3R5cGU7XG4gIG1ldGhvZHMuZm9yRWFjaCgobWV0aG9kTmFtZSkgPT4ge1xuICAgIFByb3RvdHlwZVttZXRob2ROYW1lXSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGFyZ3MgPSBhcmd1bWVudHM7XG4gICAgICByZXR1cm4gdGhpcy56LnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHRoaXMuZWxbbWV0aG9kTmFtZV0uYXBwbHkodGhpcy5lbCwgYXJncykpO1xuICAgIH07XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IHByb3h5T3V0cHV0cyA9IChpbnN0YW5jZTogYW55LCBlbDogYW55LCBldmVudHM6IHN0cmluZ1tdKSA9PiB7XG4gIGV2ZW50cy5mb3JFYWNoKChldmVudE5hbWUpID0+IChpbnN0YW5jZVtldmVudE5hbWVdID0gZnJvbUV2ZW50KGVsLCBldmVudE5hbWUpKSk7XG59O1xuXG5leHBvcnQgY29uc3QgZGVmaW5lQ3VzdG9tRWxlbWVudCA9ICh0YWdOYW1lOiBzdHJpbmcsIGN1c3RvbUVsZW1lbnQ6IGFueSkgPT4ge1xuICBpZiAoY3VzdG9tRWxlbWVudCAhPT0gdW5kZWZpbmVkICYmIHR5cGVvZiBjdXN0b21FbGVtZW50cyAhPT0gJ3VuZGVmaW5lZCcgJiYgIWN1c3RvbUVsZW1lbnRzLmdldCh0YWdOYW1lKSkge1xuICAgIGN1c3RvbUVsZW1lbnRzLmRlZmluZSh0YWdOYW1lLCBjdXN0b21FbGVtZW50KTtcbiAgfVxufTtcblxuLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBvbmx5LWFycm93LWZ1bmN0aW9uc1xuZXhwb3J0IGZ1bmN0aW9uIFByb3h5Q21wKG9wdHM6IHsgZGVmaW5lQ3VzdG9tRWxlbWVudEZuPzogKCkgPT4gdm9pZDsgaW5wdXRzPzogYW55OyBtZXRob2RzPzogYW55IH0pIHtcbiAgY29uc3QgZGVjb3JhdG9yID0gZnVuY3Rpb24gKGNsczogYW55KSB7XG4gICAgY29uc3QgeyBkZWZpbmVDdXN0b21FbGVtZW50Rm4sIGlucHV0cywgbWV0aG9kcyB9ID0gb3B0cztcblxuICAgIGlmIChkZWZpbmVDdXN0b21FbGVtZW50Rm4gIT09IHVuZGVmaW5lZCkge1xuICAgICAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuKCk7XG4gICAgfVxuXG4gICAgaWYgKGlucHV0cykge1xuICAgICAgcHJveHlJbnB1dHMoY2xzLCBpbnB1dHMpO1xuICAgIH1cbiAgICBpZiAobWV0aG9kcykge1xuICAgICAgcHJveHlNZXRob2RzKGNscywgbWV0aG9kcyk7XG4gICAgfVxuICAgIHJldHVybiBjbHM7XG4gIH07XG4gIHJldHVybiBkZWNvcmF0b3I7XG59XG4iXX0=