@verisoft/ui-core 18.8.0 → 19.0.0-rc001

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 (132) hide show
  1. package/fesm2022/verisoft-ui-core.mjs +83 -84
  2. package/fesm2022/verisoft-ui-core.mjs.map +1 -1
  3. package/lib/components/breadcrumb/breadcrumbcore.component.d.ts +1 -1
  4. package/lib/components/checkbox/checkbox.model.d.ts +5 -3
  5. package/lib/components/dropdown-button/dropdown-button.model.d.ts +14 -0
  6. package/lib/components/dropdown-button/index.d.ts +1 -0
  7. package/lib/components/index.d.ts +1 -1
  8. package/lib/components/page-header/page-headercore.component.d.ts +1 -1
  9. package/lib/components/side-menu/services/side-menu-provider.service.d.ts +1 -1
  10. package/lib/components/unsubscribe.component.d.ts +1 -1
  11. package/package.json +15 -14
  12. package/esm2022/index.mjs +0 -7
  13. package/esm2022/lib/common/angular-helper.mjs +0 -23
  14. package/esm2022/lib/common/constants.mjs +0 -4
  15. package/esm2022/lib/common/control.models.mjs +0 -63
  16. package/esm2022/lib/common/datasource-component.model.mjs +0 -14
  17. package/esm2022/lib/common/deactivate-guard.model.mjs +0 -2
  18. package/esm2022/lib/common/download-file.mjs +0 -13
  19. package/esm2022/lib/common/filter.mjs +0 -7
  20. package/esm2022/lib/common/icons.mjs +0 -2
  21. package/esm2022/lib/common/index.mjs +0 -11
  22. package/esm2022/lib/common/notificable-property.model.mjs +0 -2
  23. package/esm2022/lib/common/rxjs.mjs +0 -11
  24. package/esm2022/lib/components/action-button-group/action-button-group.model.mjs +0 -3
  25. package/esm2022/lib/components/action-button-group/action-button.model.mjs +0 -2
  26. package/esm2022/lib/components/action-button-group/index.mjs +0 -3
  27. package/esm2022/lib/components/base-form/base-form-input.component.mjs +0 -100
  28. package/esm2022/lib/components/base-form/base-form.component.mjs +0 -187
  29. package/esm2022/lib/components/base-form/directives/detail-store.directive.mjs +0 -163
  30. package/esm2022/lib/components/base-form/index.mjs +0 -5
  31. package/esm2022/lib/components/base-form/models/base-form-input.models.mjs +0 -7
  32. package/esm2022/lib/components/base-form/models/base-form.models.mjs +0 -10
  33. package/esm2022/lib/components/base-form/models/index.mjs +0 -3
  34. package/esm2022/lib/components/breadcrumb/breadcrumb.model.mjs +0 -3
  35. package/esm2022/lib/components/breadcrumb/breadcrumb.service.mjs +0 -16
  36. package/esm2022/lib/components/breadcrumb/breadcrumbcore.component.mjs +0 -88
  37. package/esm2022/lib/components/breadcrumb/index.mjs +0 -4
  38. package/esm2022/lib/components/button/button.model.mjs +0 -3
  39. package/esm2022/lib/components/button/index.mjs +0 -2
  40. package/esm2022/lib/components/calendar/calendar.model.mjs +0 -3
  41. package/esm2022/lib/components/calendar/index.mjs +0 -2
  42. package/esm2022/lib/components/checkbox/checkbox.model.mjs +0 -3
  43. package/esm2022/lib/components/checkbox/index.mjs +0 -2
  44. package/esm2022/lib/components/confirm-dialog/confirm-dialog.model.mjs +0 -3
  45. package/esm2022/lib/components/confirm-dialog/index.mjs +0 -2
  46. package/esm2022/lib/components/dropdown/dropdown.model.mjs +0 -3
  47. package/esm2022/lib/components/dropdown/index.mjs +0 -2
  48. package/esm2022/lib/components/dynamic-component/dynamic-component.model.mjs +0 -2
  49. package/esm2022/lib/components/dynamic-component/index.mjs +0 -2
  50. package/esm2022/lib/components/filter/filter.model.mjs +0 -3
  51. package/esm2022/lib/components/filter/index.mjs +0 -2
  52. package/esm2022/lib/components/form-field/form-field.model.mjs +0 -3
  53. package/esm2022/lib/components/form-field/index.mjs +0 -2
  54. package/esm2022/lib/components/generic-field/generic-field.model.mjs +0 -3
  55. package/esm2022/lib/components/generic-field/index.mjs +0 -2
  56. package/esm2022/lib/components/generic-form/generic-form.component.mjs +0 -10
  57. package/esm2022/lib/components/generic-form/index.mjs +0 -2
  58. package/esm2022/lib/components/header/header.model.mjs +0 -4
  59. package/esm2022/lib/components/header/index.mjs +0 -2
  60. package/esm2022/lib/components/icons/icons.component.mjs +0 -29
  61. package/esm2022/lib/components/icons/icons.model.mjs +0 -3
  62. package/esm2022/lib/components/icons/index.mjs +0 -3
  63. package/esm2022/lib/components/index.mjs +0 -36
  64. package/esm2022/lib/components/input-group/index.mjs +0 -2
  65. package/esm2022/lib/components/input-group/input-group.model.mjs +0 -3
  66. package/esm2022/lib/components/loader/index.mjs +0 -2
  67. package/esm2022/lib/components/loader/loader.model.mjs +0 -3
  68. package/esm2022/lib/components/multiselect/index.mjs +0 -2
  69. package/esm2022/lib/components/multiselect/mutiselect.model.mjs +0 -3
  70. package/esm2022/lib/components/number-input/index.mjs +0 -2
  71. package/esm2022/lib/components/number-input/number-input.model.mjs +0 -3
  72. package/esm2022/lib/components/page-header/index.mjs +0 -4
  73. package/esm2022/lib/components/page-header/page-header.model.mjs +0 -3
  74. package/esm2022/lib/components/page-header/page-header.service.mjs +0 -16
  75. package/esm2022/lib/components/page-header/page-headercore.component.mjs +0 -52
  76. package/esm2022/lib/components/password/index.mjs +0 -2
  77. package/esm2022/lib/components/password/password.model.mjs +0 -11
  78. package/esm2022/lib/components/radiobutton/index.mjs +0 -2
  79. package/esm2022/lib/components/radiobutton/radiobutton.model.mjs +0 -3
  80. package/esm2022/lib/components/section/index.mjs +0 -2
  81. package/esm2022/lib/components/section/section.model.mjs +0 -3
  82. package/esm2022/lib/components/side-menu/directives/side-menu-service.directive.mjs +0 -31
  83. package/esm2022/lib/components/side-menu/index.mjs +0 -5
  84. package/esm2022/lib/components/side-menu/services/side-menu-provider.service.mjs +0 -25
  85. package/esm2022/lib/components/side-menu/services/side-menu.service.mjs +0 -50
  86. package/esm2022/lib/components/side-menu/side-menu.model.mjs +0 -6
  87. package/esm2022/lib/components/slider/index.mjs +0 -2
  88. package/esm2022/lib/components/slider/slider.model.mjs +0 -3
  89. package/esm2022/lib/components/snackbar/index.mjs +0 -2
  90. package/esm2022/lib/components/snackbar/snackbar.model.mjs +0 -3
  91. package/esm2022/lib/components/stepper/index.mjs +0 -2
  92. package/esm2022/lib/components/stepper/stepper.model.mjs +0 -3
  93. package/esm2022/lib/components/switch/index.mjs +0 -2
  94. package/esm2022/lib/components/switch/switch.model.mjs +0 -3
  95. package/esm2022/lib/components/tab-view/index.mjs +0 -2
  96. package/esm2022/lib/components/tab-view/tab-view.model.mjs +0 -3
  97. package/esm2022/lib/components/table/column-configuration.mjs +0 -32
  98. package/esm2022/lib/components/table/index.mjs +0 -5
  99. package/esm2022/lib/components/table/table-builder.mjs +0 -68
  100. package/esm2022/lib/components/table/table-column.directive.mjs +0 -86
  101. package/esm2022/lib/components/table/table.models.mjs +0 -150
  102. package/esm2022/lib/components/table-filter/index.mjs +0 -2
  103. package/esm2022/lib/components/table-filter/table-filter.model.mjs +0 -3
  104. package/esm2022/lib/components/textarea/index.mjs +0 -2
  105. package/esm2022/lib/components/textarea/textarea.model.mjs +0 -3
  106. package/esm2022/lib/components/textfield/index.mjs +0 -2
  107. package/esm2022/lib/components/textfield/textfield.model.mjs +0 -3
  108. package/esm2022/lib/components/tristatecheckbox/index.mjs +0 -2
  109. package/esm2022/lib/components/tristatecheckbox/tristatecheckbox.model.mjs +0 -3
  110. package/esm2022/lib/components/unsubscribe.component.mjs +0 -16
  111. package/esm2022/lib/directives/datasource.directive.mjs +0 -175
  112. package/esm2022/lib/directives/index.mjs +0 -5
  113. package/esm2022/lib/directives/shortcut.directive.mjs +0 -46
  114. package/esm2022/lib/directives/table-datasource.directive.mjs +0 -124
  115. package/esm2022/lib/directives/table-filter.directive.mjs +0 -56
  116. package/esm2022/lib/format/format.mjs +0 -63
  117. package/esm2022/lib/pipes/error/error.codes.mjs +0 -10
  118. package/esm2022/lib/pipes/error/error.models.mjs +0 -21
  119. package/esm2022/lib/pipes/error/error.pipe.mjs +0 -31
  120. package/esm2022/lib/pipes/error/warning.codes.mjs +0 -4
  121. package/esm2022/lib/pipes/error/warning.pipe.mjs +0 -31
  122. package/esm2022/lib/pipes/helper/enumToList.pipe.mjs +0 -22
  123. package/esm2022/lib/pipes/index.mjs +0 -8
  124. package/esm2022/lib/pipes/keyOrFn/keyOrFn.pipe.mjs +0 -31
  125. package/esm2022/lib/services/confirm-dialog.service.mjs +0 -45
  126. package/esm2022/lib/services/index.mjs +0 -5
  127. package/esm2022/lib/services/leave-form.service.mjs +0 -52
  128. package/esm2022/lib/services/screen-size.service.mjs +0 -29
  129. package/esm2022/lib/services/table.service.mjs +0 -27
  130. package/esm2022/verisoft-ui-core.mjs +0 -5
  131. package/lib/components/tristatecheckbox/index.d.ts +0 -1
  132. package/lib/components/tristatecheckbox/tristatecheckbox.model.d.ts +0 -4
@@ -1,187 +0,0 @@
1
- import { ChangeDetectorRef, Directive, EventEmitter, HostListener, inject, Input, Output, } from '@angular/core';
2
- import { cloneDeep } from 'lodash-es';
3
- import { Subject, takeUntil, filter, map } from 'rxjs';
4
- import { PreventUnsavedChangesDirective } from '../../services';
5
- import { isFormStateEqual } from './models';
6
- import * as i0 from "@angular/core";
7
- export class BaseFormDirective {
8
- data;
9
- dataChange = new EventEmitter();
10
- statusChange = new EventEmitter();
11
- formSubmit = new EventEmitter();
12
- formClear = new EventEmitter();
13
- formDestroyed$ = new Subject();
14
- keys = [];
15
- formGroup;
16
- cd = inject(ChangeDetectorRef);
17
- valueInitialization = false;
18
- lastState;
19
- guardViewChild;
20
- formSubmitted = false;
21
- guard = inject(PreventUnsavedChangesDirective);
22
- unloadHandler(event) {
23
- if (this.formGroup.dirty) {
24
- event.preventDefault();
25
- }
26
- }
27
- canDeactivate() {
28
- if (this.formGroup.dirty && !this.formSubmitted) {
29
- const result = this.guard.showConfirmationDialog();
30
- return result;
31
- }
32
- return true;
33
- }
34
- ngOnInit() {
35
- this.initializeFormGroup();
36
- }
37
- ngOnChanges(changes) {
38
- if (changes['data'] && this.formGroup) {
39
- this.valueInitialization = true;
40
- const dirty = this.formGroup.dirty;
41
- this.formGroup.patchValue(this.fromModel(this.data), {
42
- emitEvent: false,
43
- onlySelf: true,
44
- });
45
- this.formGroup.updateValueAndValidity();
46
- if (!dirty) {
47
- this.formGroup.markAsPristine();
48
- }
49
- this.valueInitialization = false;
50
- this.createAndEmitIfFormStateChanged();
51
- }
52
- }
53
- ngAfterViewInit() {
54
- this.cd.detectChanges();
55
- }
56
- ngOnDestroy() {
57
- this.formDestroyed$.next();
58
- this.formDestroyed$.complete();
59
- }
60
- createCompleteData() {
61
- const change = this.toModel(this.formGroup?.value);
62
- this.recursiveObjectAttributesTransformation(change);
63
- const updatedData = this.applyChanges(cloneDeep(this.data), cloneDeep(change));
64
- return updatedData;
65
- }
66
- submit() {
67
- this.formSubmitted = true;
68
- this.formGroup.markAllAsTouched();
69
- if (!this.formGroup.invalid) {
70
- this.formSubmit.emit(this.createCompleteData());
71
- }
72
- this.formGroup.markAsPristine();
73
- }
74
- clear() {
75
- this.formClear.emit();
76
- }
77
- initializeFormGroup() {
78
- this.formGroup = this.createFormGroup();
79
- this.valueInitialization = true;
80
- this.formGroup.patchValue(this.fromModel(this.data), {
81
- emitEvent: false,
82
- onlySelf: true,
83
- });
84
- this.formGroup.markAsPristine();
85
- this.initValueChanges();
86
- this.initStatusChanges();
87
- this.valueInitialization = false;
88
- }
89
- initValueChanges() {
90
- this.formGroup.valueChanges
91
- .pipe(takeUntil(this.formDestroyed$), filter(() => !this.valueInitialization), map((value) => {
92
- const change = this.toModel(value);
93
- this.recursiveObjectAttributesTransformation(change);
94
- const updatedData = this.applyChanges(cloneDeep(this.data), cloneDeep(change));
95
- return updatedData;
96
- }))
97
- .subscribe((updatedData) => {
98
- this.dataChange.emit(updatedData);
99
- });
100
- }
101
- initStatusChanges() {
102
- this.formGroup.statusChanges
103
- .pipe(takeUntil(this.formDestroyed$))
104
- .subscribe(() => {
105
- if (!this.valueInitialization) {
106
- this.createAndEmitIfFormStateChanged();
107
- }
108
- });
109
- this.createAndEmitIfFormStateChanged();
110
- }
111
- createAndEmitIfFormStateChanged() {
112
- const formState = {
113
- valid: !this.formGroup.invalid,
114
- dirty: this.formGroup.dirty,
115
- };
116
- if (!isFormStateEqual(formState, this.lastState)) {
117
- this.lastState = formState;
118
- this.statusChange.emit(formState);
119
- }
120
- }
121
- applyChanges(data, changes) {
122
- return Object.assign(data || {}, changes);
123
- }
124
- toModel(data) {
125
- return data || {};
126
- }
127
- fromModel(data) {
128
- return { ...(data || {}) };
129
- }
130
- recursiveObjectAttributesTransformation(obj) {
131
- this.recursiveObjectAttributesTraversal(obj, this.transformEmptyStringToNullStringFn);
132
- }
133
- recursiveObjectAttributesTraversal(obj, transformationFn) {
134
- if (obj === null ||
135
- transformationFn === null ||
136
- typeof transformationFn !== 'function') {
137
- return;
138
- }
139
- const traverse = (obj) => {
140
- for (const key in obj) {
141
- // eslint-disable-next-line no-prototype-builtins
142
- if (obj.hasOwnProperty(key)) {
143
- transformationFn(obj, key);
144
- if (typeof obj[key] === 'object') {
145
- traverse(obj[key]);
146
- }
147
- }
148
- }
149
- };
150
- traverse(obj);
151
- }
152
- transformEmptyStringToNullStringFn(obj, key) {
153
- // if empty string - transformation to null string
154
- if (typeof obj[key] === 'string' && obj[key] === '') {
155
- try {
156
- obj[key] = null;
157
- }
158
- catch (error) {
159
- console.error(`Cannot modify ${key}: ${error}`);
160
- }
161
- }
162
- }
163
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: BaseFormDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
164
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.8", type: BaseFormDirective, isStandalone: true, selector: "[v-baseForm]", inputs: { data: "data" }, outputs: { dataChange: "dataChange", statusChange: "statusChange", formSubmit: "formSubmit", formClear: "formClear" }, host: { listeners: { "window:beforeunload": "unloadHandler($event)" } }, usesOnChanges: true, ngImport: i0 });
165
- }
166
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: BaseFormDirective, decorators: [{
167
- type: Directive,
168
- args: [{
169
- // eslint-disable-next-line @angular-eslint/directive-selector
170
- selector: '[v-baseForm]',
171
- standalone: true,
172
- }]
173
- }], propDecorators: { data: [{
174
- type: Input
175
- }], dataChange: [{
176
- type: Output
177
- }], statusChange: [{
178
- type: Output
179
- }], formSubmit: [{
180
- type: Output
181
- }], formClear: [{
182
- type: Output
183
- }], unloadHandler: [{
184
- type: HostListener,
185
- args: ['window:beforeunload', ['$event']]
186
- }] } });
187
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWJzL3VpLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL2Jhc2UtZm9ybS9iYXNlLWZvcm0uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFJTCxNQUFNLEdBR1AsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN0QyxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBRW5FLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2hFLE9BQU8sRUFBYSxnQkFBZ0IsRUFBRSxNQUFNLFVBQVUsQ0FBQzs7QUFNdkQsTUFBTSxPQUFnQixpQkFBaUI7SUFHNUIsSUFBSSxDQUFXO0lBQ2QsVUFBVSxHQUFHLElBQUksWUFBWSxFQUFLLENBQUM7SUFDbkMsWUFBWSxHQUFHLElBQUksWUFBWSxFQUFhLENBQUM7SUFDN0MsVUFBVSxHQUFHLElBQUksWUFBWSxFQUFLLENBQUM7SUFDbkMsU0FBUyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7SUFFL0MsY0FBYyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFDckMsSUFBSSxHQUF1RSxFQUFFLENBQUM7SUFDOUUsU0FBUyxDQUFhO0lBQ3RCLEVBQUUsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUMvQixtQkFBbUIsR0FBRyxLQUFLLENBQUM7SUFDNUIsU0FBUyxDQUFhO0lBQ3RCLGNBQWMsQ0FBYTtJQUMzQixhQUFhLEdBQUcsS0FBSyxDQUFDO0lBQ1osS0FBSyxHQUFH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USxFQUFFLGNBQWM7b0JBQ3hCLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjs4QkFJVSxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0ksVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTTtnQkFhUCxhQUFhO3NCQURaLFlBQVk7dUJBQUMscUJBQXFCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgRGlyZWN0aXZlLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RMaXN0ZW5lcixcbiAgaW5qZWN0LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgY2xvbmVEZWVwIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCwgZmlsdGVyLCBtYXAsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFByZXZlbnRVbnNhdmVkQ2hhbmdlc0NvcmUgfSBmcm9tICcuLi8uLi9jb21tb24nO1xuaW1wb3J0IHsgUHJldmVudFVuc2F2ZWRDaGFuZ2VzRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgRm9ybVN0YXRlLCBpc0Zvcm1TdGF0ZUVxdWFsIH0gZnJvbSAnLi9tb2RlbHMnO1xuQERpcmVjdGl2ZSh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAnW3YtYmFzZUZvcm1dJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZUZvcm1EaXJlY3RpdmU8VCBleHRlbmRzIG9iamVjdD5cbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBBZnRlclZpZXdJbml0LCBQcmV2ZW50VW5zYXZlZENoYW5nZXNDb3JlXG57XG4gIEBJbnB1dCgpIGRhdGEhOiBUIHwgYW55O1xuICBAT3V0cHV0KCkgZGF0YUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8VD4oKTtcbiAgQE91dHB1dCgpIHN0YXR1c0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Rm9ybVN0YXRlPigpO1xuICBAT3V0cHV0KCkgZm9ybVN1Ym1pdCA9IG5ldyBFdmVudEVtaXR0ZXI8VD4oKTtcbiAgQE91dHB1dCgpIGZvcm1DbGVhciA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBmb3JtRGVzdHJveWVkJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIGtleXM6IHsga2V5OiBzdHJpbmc7IGFsaWFzPzogc3RyaW5nOyB0eXBlPzogc3RyaW5nOyByZWFkT25seTogc3RyaW5nIH1bXSA9IFtdO1xuICBmb3JtR3JvdXAhOiBGb3JtR3JvdXA7XG4gIGNkID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgdmFsdWVJbml0aWFsaXphdGlvbiA9IGZhbHNlO1xuICBsYXN0U3RhdGUhOiBGb3JtU3RhdGU7XG4gIGd1YXJkVmlld0NoaWxkITogVmlld0NoaWxkO1xuICBmb3JtU3VibWl0dGVkID0gZmFsc2U7XG4gIHByb3RlY3RlZCBndWFyZCA9IGluamVjdChQcmV2ZW50VW5zYXZlZENoYW5nZXNEaXJlY3RpdmUpO1xuXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpiZWZvcmV1bmxvYWQnLCBbJyRldmVudCddKVxuICB1bmxvYWRIYW5kbGVyKGV2ZW50OiBCZWZvcmVVbmxvYWRFdmVudCkge1xuICAgIGlmICh0aGlzLmZvcm1Hcm91cC5kaXJ0eSkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gIH1cblxuICBjYW5EZWFjdGl2YXRlKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4gfCBQcm9taXNlPGJvb2xlYW4+IHwgYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMuZm9ybUdyb3VwLmRpcnR5ICYmICF0aGlzLmZvcm1TdWJtaXR0ZWQpIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuZ3VhcmQuc2hvd0NvbmZpcm1hdGlvbkRpYWxvZygpO1xuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaW5pdGlhbGl6ZUZvcm1Hcm91cCgpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydkYXRhJ10gJiYgdGhpcy5mb3JtR3JvdXApIHtcbiAgICAgIHRoaXMudmFsdWVJbml0aWFsaXphdGlvbiA9IHRydWU7XG4gICAgICBjb25zdCBkaXJ0eSA9IHRoaXMuZm9ybUdyb3VwLmRpcnR5O1xuXG4gICAgICB0aGlzLmZvcm1Hcm91cC5wYXRjaFZhbHVlKHRoaXMuZnJvbU1vZGVsKHRoaXMuZGF0YSksIHtcbiAgICAgICAgZW1pdEV2ZW50OiBmYWxzZSxcbiAgICAgICAgb25seVNlbGY6IHRydWUsXG4gICAgICB9KTtcblxuICAgICAgdGhpcy5mb3JtR3JvdXAudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgaWYgKCFkaXJ0eSkge1xuICAgICAgICB0aGlzLmZvcm1Hcm91cC5tYXJrQXNQcmlzdGluZSgpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnZhbHVlSW5pdGlhbGl6YXRpb24gPSBmYWxzZTtcbiAgICAgIHRoaXMuY3JlYXRlQW5kRW1pdElmRm9ybVN0YXRlQ2hhbmdlZCgpO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZm9ybURlc3Ryb3llZCQubmV4dCgpO1xuICAgIHRoaXMuZm9ybURlc3Ryb3llZCQuY29tcGxldGUoKTtcbiAgfVxuXG4gIGFic3RyYWN0IGNyZWF0ZUZvcm1Hcm91cCgpOiBGb3JtR3JvdXA7XG5cbiAgY3JlYXRlQ29tcGxldGVEYXRhKCkge1xuICAgIGNvbnN0IGNoYW5nZSA9IHRoaXMudG9Nb2RlbCh0aGlzLmZvcm1Hcm91cD8udmFsdWUpO1xuICAgIHRoaXMucmVjdXJzaXZlT2JqZWN0QXR0cmlidXRlc1RyYW5zZm9ybWF0aW9uKGNoYW5nZSk7XG4gICAgY29uc3QgdXBkYXRlZERhdGEgPSB0aGlzLmFwcGx5Q2hhbmdlcyhcbiAgICAgIGNsb25lRGVlcCh0aGlzLmRhdGEpLFxuICAgICAgY2xvbmVEZWVwKGNoYW5nZSlcbiAgICApO1xuXG4gICAgcmV0dXJuIHVwZGF0ZWREYXRhO1xuICB9XG5cbiAgc3VibWl0KCkge1xuICAgIHRoaXMuZm9ybVN1Ym1pdHRlZCA9IHRydWU7XG4gICAgdGhpcy5mb3JtR3JvdXAubWFya0FsbEFzVG91Y2hlZCgpO1xuICAgIGlmICghdGhpcy5mb3JtR3JvdXAuaW52YWxpZCkge1xuICAgICAgdGhpcy5mb3JtU3VibWl0LmVtaXQodGhpcy5jcmVhdGVDb21wbGV0ZURhdGEoKSk7XG4gICAgfVxuICAgIHRoaXMuZm9ybUdyb3VwLm1hcmtBc1ByaXN0aW5lKCk7XG4gIH1cblxuICBjbGVhcigpIHtcbiAgICB0aGlzLmZvcm1DbGVhci5lbWl0KCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVGb3JtR3JvdXAoKSB7XG4gICAgdGhpcy5mb3JtR3JvdXAgPSB0aGlzLmNyZWF0ZUZvcm1Hcm91cCgpO1xuICAgIHRoaXMudmFsdWVJbml0aWFsaXphdGlvbiA9IHRydWU7XG4gICAgdGhpcy5mb3JtR3JvdXAucGF0Y2hWYWx1ZSh0aGlzLmZyb21Nb2RlbCh0aGlzLmRhdGEpLCB7XG4gICAgICBlbWl0RXZlbnQ6IGZhbHNlLFxuICAgICAgb25seVNlbGY6IHRydWUsXG4gICAgfSk7XG5cbiAgICB0aGlzLmZvcm1Hcm91cC5tYXJrQXNQcmlzdGluZSgpO1xuICAgIHRoaXMuaW5pdFZhbHVlQ2hhbmdlcygpO1xuICAgIHRoaXMuaW5pdFN0YXR1c0NoYW5nZXMoKTtcbiAgICB0aGlzLnZhbHVlSW5pdGlhbGl6YXRpb24gPSBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdFZhbHVlQ2hhbmdlcygpIHtcbiAgICB0aGlzLmZvcm1Hcm91cC52YWx1ZUNoYW5nZXNcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlVW50aWwodGhpcy5mb3JtRGVzdHJveWVkJCksXG4gICAgICAgIGZpbHRlcigoKSA9PiAhdGhpcy52YWx1ZUluaXRpYWxpemF0aW9uKSxcbiAgICAgICAgbWFwKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNoYW5nZSA9IHRoaXMudG9Nb2RlbCh2YWx1ZSk7XG4gICAgICAgICAgdGhpcy5yZWN1cnNpdmVPYmplY3RBdHRyaWJ1dGVzVHJhbnNmb3JtYXRpb24oY2hhbmdlKTtcbiAgICAgICAgICBjb25zdCB1cGRhdGVkRGF0YSA9IHRoaXMuYXBwbHlDaGFuZ2VzKFxuICAgICAgICAgICAgY2xvbmVEZWVwKHRoaXMuZGF0YSksXG4gICAgICAgICAgICBjbG9uZURlZXAoY2hhbmdlKVxuICAgICAgICAgICk7XG4gICAgICAgICAgcmV0dXJuIHVwZGF0ZWREYXRhO1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgodXBkYXRlZERhdGEpID0+IHtcbiAgICAgICAgdGhpcy5kYXRhQ2hhbmdlLmVtaXQodXBkYXRlZERhdGEpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGluaXRTdGF0dXNDaGFuZ2VzKCkge1xuICAgIHRoaXMuZm9ybUdyb3VwLnN0YXR1c0NoYW5nZXNcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmZvcm1EZXN0cm95ZWQkKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMudmFsdWVJbml0aWFsaXphdGlvbikge1xuICAgICAgICAgIHRoaXMuY3JlYXRlQW5kRW1pdElmRm9ybVN0YXRlQ2hhbmdlZCgpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIHRoaXMuY3JlYXRlQW5kRW1pdElmRm9ybVN0YXRlQ2hhbmdlZCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVBbmRFbWl0SWZGb3JtU3RhdGVDaGFuZ2VkKCkge1xuICAgIGNvbnN0IGZvcm1TdGF0ZTogRm9ybVN0YXRlID0ge1xuICAgICAgdmFsaWQ6ICF0aGlzLmZvcm1Hcm91cC5pbnZhbGlkLFxuICAgICAgZGlydHk6IHRoaXMuZm9ybUdyb3VwLmRpcnR5LFxuICAgIH07XG5cbiAgICBpZiAoIWlzRm9ybVN0YXRlRXF1YWwoZm9ybVN0YXRlLCB0aGlzLmxhc3RTdGF0ZSkpIHtcbiAgICAgIHRoaXMubGFzdFN0YXRlID0gZm9ybVN0YXRlO1xuICAgICAgdGhpcy5zdGF0dXNDaGFuZ2UuZW1pdChmb3JtU3RhdGUpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBhcHBseUNoYW5nZXMoZGF0YTogVCwgY2hhbmdlczogUGFydGlhbDxUPik6IFQge1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKGRhdGEgfHwgKHt9IGFzIFQpLCBjaGFuZ2VzKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB0b01vZGVsKGRhdGE6IFQpOiBQYXJ0aWFsPFQ+IHtcbiAgICByZXR1cm4gZGF0YSB8fCB7fTtcbiAgfVxuXG4gIHByb3RlY3RlZCBmcm9tTW9kZWwoZGF0YTogVCk6IFQge1xuICAgIHJldHVybiB7IC4uLihkYXRhIHx8IHt9KSB9IGFzIFQ7XG4gIH1cblxuICBwcml2YXRlIHJlY3Vyc2l2ZU9iamVjdEF0dHJpYnV0ZXNUcmFuc2Zvcm1hdGlvbihvYmo6IGFueSk6IHZvaWQge1xuICAgIHRoaXMucmVjdXJzaXZlT2JqZWN0QXR0cmlidXRlc1RyYXZlcnNhbChcbiAgICAgIG9iaixcbiAgICAgIHRoaXMudHJhbnNmb3JtRW1wdHlTdHJpbmdUb051bGxTdHJpbmdGblxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHJlY3Vyc2l2ZU9iamVjdEF0dHJpYnV0ZXNUcmF2ZXJzYWwoXG4gICAgb2JqOiBhbnksXG4gICAgdHJhbnNmb3JtYXRpb25GbjogKG9iajogYW55LCBrZXk6IHN0cmluZykgPT4gdm9pZFxuICApIHtcbiAgICBpZiAoXG4gICAgICBvYmogPT09IG51bGwgfHxcbiAgICAgIHRyYW5zZm9ybWF0aW9uRm4gPT09IG51bGwgfHxcbiAgICAgIHR5cGVvZiB0cmFuc2Zvcm1hdGlvbkZuICE9PSAnZnVuY3Rpb24nXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdHJhdmVyc2UgPSAob2JqOiBhbnkpID0+IHtcbiAgICAgIGZvciAoY29uc3Qga2V5IGluIG9iaikge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zXG4gICAgICAgIGlmIChvYmouaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgIHRyYW5zZm9ybWF0aW9uRm4ob2JqLCBrZXkpO1xuXG4gICAgICAgICAgaWYgKHR5cGVvZiBvYmpba2V5XSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIHRyYXZlcnNlKG9ialtrZXldKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdHJhdmVyc2Uob2JqKTtcbiAgfVxuXG4gIHByaXZhdGUgdHJhbnNmb3JtRW1wdHlTdHJpbmdUb051bGxTdHJpbmdGbihvYmo6IGFueSwga2V5OiBzdHJpbmcpIHtcbiAgICAvLyBpZiBlbXB0eSBzdHJpbmcgLSB0cmFuc2Zvcm1hdGlvbiB0byBudWxsIHN0cmluZ1xuICAgIGlmICh0eXBlb2Ygb2JqW2tleV0gPT09ICdzdHJpbmcnICYmIG9ialtrZXldID09PSAnJykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgb2JqW2tleV0gPSBudWxsO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihgQ2Fubm90IG1vZGlmeSAke2tleX06ICR7ZXJyb3J9YClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -1,163 +0,0 @@
1
- import { Directive, inject, Input, ChangeDetectorRef, } from '@angular/core';
2
- import { ActivatedRoute } from '@angular/router';
3
- import { createFeatureSelector, createSelector, Store } from '@ngrx/store';
4
- import { createInitDetailAction, createInitNewDetailAction, createResetStateAction, createUpdateDetailAction, createUpdateDetailSetErrorsAction, createUpdateFormStateAction, } from '@verisoft/store';
5
- import { takeUntil } from 'rxjs';
6
- import { UnsubscribeComponent } from '../../unsubscribe.component';
7
- import { BaseFormDirective } from '../base-form.component';
8
- import * as i0 from "@angular/core";
9
- export class DetailStoreDirective extends UnsubscribeComponent {
10
- form;
11
- detailsRepository;
12
- autoBind = true;
13
- detailId;
14
- ngrxFeatureKey;
15
- destroyForm = true;
16
- readonly = false;
17
- readonlyControlNames = [];
18
- store = inject(Store);
19
- cdr = inject(ChangeDetectorRef);
20
- route = inject(ActivatedRoute);
21
- itemCache = null;
22
- loaded;
23
- ngOnInit() {
24
- if (!this.loaded) {
25
- this.listenFormState();
26
- }
27
- this.listenFormChange();
28
- this.listenFormStatusChange();
29
- }
30
- ngAfterViewInit() {
31
- if (this.autoBind && !this.loaded) {
32
- this.initForm();
33
- }
34
- }
35
- ngOnDestroy() {
36
- super.ngOnDestroy();
37
- if (this.destroyForm) {
38
- this.store.dispatch(createResetStateAction(this.detailsRepository)());
39
- }
40
- }
41
- initForm() {
42
- if (this.detailId === 'create') {
43
- this.store.dispatch(createInitNewDetailAction(this.detailsRepository)());
44
- }
45
- else {
46
- this.store.dispatch(createInitDetailAction(this.detailsRepository)({ obj: this.detailId }));
47
- }
48
- if (this.readonly) {
49
- this.form.formGroup.disable();
50
- return;
51
- }
52
- this.readonlyControlNames.forEach(x => {
53
- this.form.formGroup.get(x)?.disable();
54
- });
55
- }
56
- listenFormState() {
57
- const selectIncomeData = createSelector(createFeatureSelector(this.ngrxFeatureKey), (state) => state?.[this.detailsRepository]);
58
- this.store
59
- .select(selectIncomeData)
60
- .pipe(takeUntil(this.destroyed$))
61
- .subscribe(({ item, loaded, backendValidationErrors } = {
62
- item: undefined,
63
- loaded: false,
64
- saveItemState: { saveInProgress: false },
65
- backendValidationErrors: []
66
- }) => {
67
- if (item
68
- && ((item.validationErrors || item.validationWarnings) && !this.form.formGroup.dirty)
69
- || backendValidationErrors.length) {
70
- this.handleValidation('propertyName', item.validationWarnings || [], 'validationWarning', 'warningMessage');
71
- this.handleValidation('propertyName', item.validationErrors || [], 'validationError', 'errorMessage');
72
- if (this.itemCache && this.isStateChanged(item) && backendValidationErrors.length) {
73
- backendValidationErrors = this.dispatchErrors(item, backendValidationErrors);
74
- }
75
- this.handleBackendValidation(backendValidationErrors);
76
- this.cdr.markForCheck();
77
- }
78
- this.itemCache = item;
79
- this.loaded = loaded;
80
- this.cdr.detectChanges();
81
- });
82
- }
83
- listenFormChange() {
84
- this.form.dataChange.pipe(takeUntil(this.destroyed$)).subscribe((item) => {
85
- this.store.dispatch(createUpdateDetailAction(this.detailsRepository)({ item }));
86
- });
87
- }
88
- listenFormStatusChange() {
89
- this.form.statusChange
90
- .pipe(takeUntil(this.destroyed$))
91
- .subscribe((formState) => {
92
- this.store.dispatch(createUpdateFormStateAction(this.detailsRepository)({ formState }));
93
- });
94
- }
95
- handleValidation = (controlName, errors, errorKey, messageKey) => {
96
- if (errors.length > 0)
97
- return;
98
- errors.forEach((error) => {
99
- const control = this.form.formGroup.get(error[controlName]);
100
- if (control) {
101
- control.disabled
102
- ? control.disable({ emitEvent: false, onlySelf: true })
103
- : control.enable({ emitEvent: false, onlySelf: true });
104
- control.setErrors({ [errorKey]: error[messageKey] }, { emitEvent: true });
105
- control.markAsDirty();
106
- }
107
- });
108
- };
109
- handleBackendValidation(errors) {
110
- errors.forEach(({ parameters, code }) => {
111
- const control = this.form.formGroup.get(this.normalizePropertyNames(parameters));
112
- if (!control)
113
- return;
114
- control[control.disabled ? "disable" : "enable"]({ emitEvent: false, onlySelf: true });
115
- control.setErrors({ "validationError": code }, { emitEvent: true });
116
- control.markAsDirty();
117
- });
118
- }
119
- dispatchErrors(item, errors) {
120
- const error = errors.filter((e) => {
121
- return this.itemCache[this.normalizePropertyNames(e.parameters)] === item[this.normalizePropertyNames(e.parameters)];
122
- });
123
- this.store.dispatch(createUpdateDetailSetErrorsAction(this.detailsRepository)({ error }));
124
- return error;
125
- }
126
- normalizePropertyNames(input) {
127
- return String(input[0]).toLocaleLowerCase() + String(input).slice(1);
128
- }
129
- isStateChanged(item) {
130
- return item !== this.itemCache;
131
- }
132
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: DetailStoreDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
133
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.8", type: DetailStoreDirective, isStandalone: true, selector: "[v-useDetailStore]", inputs: { form: "form", detailsRepository: "detailsRepository", autoBind: "autoBind", detailId: "detailId", ngrxFeatureKey: "ngrxFeatureKey", destroyForm: "destroyForm", readonly: "readonly", readonlyControlNames: "readonlyControlNames" }, exportAs: ["useDetailStore"], usesInheritance: true, ngImport: i0 });
134
- }
135
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: DetailStoreDirective, decorators: [{
136
- type: Directive,
137
- args: [{
138
- // eslint-disable-next-line @angular-eslint/directive-selector
139
- selector: '[v-useDetailStore]',
140
- exportAs: 'useDetailStore',
141
- standalone: true,
142
- }]
143
- }], propDecorators: { form: [{
144
- type: Input,
145
- args: [{ required: true }]
146
- }], detailsRepository: [{
147
- type: Input,
148
- args: [{ required: true }]
149
- }], autoBind: [{
150
- type: Input
151
- }], detailId: [{
152
- type: Input
153
- }], ngrxFeatureKey: [{
154
- type: Input,
155
- args: [{ required: true }]
156
- }], destroyForm: [{
157
- type: Input
158
- }], readonly: [{
159
- type: Input
160
- }], readonlyControlNames: [{
161
- type: Input
162
- }] } });
163
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0YWlsLXN0b3JlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWJzL3VpLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL2Jhc2UtZm9ybS9kaXJlY3RpdmVzL2RldGFpbC1zdG9yZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxNQUFNLEVBQ04sS0FBSyxFQUVMLGlCQUFpQixHQUVsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDM0UsT0FBTyxFQUVMLHNCQUFzQixFQUN0Qix5QkFBeUIsRUFDekIsc0JBQXNCLEVBQ3RCLHdCQUF3QixFQUN4QixpQ0FBaUMsRUFDakMsMkJBQTJCLEdBRTVCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7QUFRM0QsTUFBTSxPQUFPLG9CQUNYLFNBQVEsb0JBQW9CO0lBR0QsSUFBSSxDQUEwQjtJQUU5QixpQkFBaUIsQ0FBVTtJQUU3QyxRQUFRLEdBQUcsSUFBSSxDQUFDO0lBRWhCLFFBQVEsQ0FBK0I7SUFFckIsY0FBYyxDQUFVO0lBRTFDLFdBQVcsR0FBRyxJQUFJLENBQUM7SUFFbkIsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUVqQixvQkFBb0IsR0FBYSxFQUFFLENBQUM7SUFFN0MsS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0QixHQUFHLEdBQUcsTUFB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QzFDLE9BQU8sTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixFQUFFLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRU8sY0FBYyxDQUFDLElBQVM7UUFDOUIsT0FBTyxJQUFJLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUNqQyxDQUFDO3VHQTFMVSxvQkFBb0I7MkZBQXBCLG9CQUFvQjs7MkZBQXBCLG9CQUFvQjtrQkFOaEMsU0FBUzttQkFBQztvQkFDVCw4REFBOEQ7b0JBQzlELFFBQVEsRUFBRSxvQkFBb0I7b0JBQzlCLFFBQVEsRUFBRSxnQkFBZ0I7b0JBQzFCLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjs4QkFLNEIsSUFBSTtzQkFBOUIsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBRUUsaUJBQWlCO3NCQUEzQyxLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFFaEIsUUFBUTtzQkFBaEIsS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVxQixjQUFjO3NCQUF4QyxLQUFLO3VCQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRTtnQkFFaEIsV0FBVztzQkFBbkIsS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVHLG9CQUFvQjtzQkFBNUIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERpcmVjdGl2ZSxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgaW5qZWN0LFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgT25EZXN0cm95LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGNyZWF0ZUZlYXR1cmVTZWxlY3RvciwgY3JlYXRlU2VsZWN0b3IsIFN0b3JlIH0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHtcbiAgQmFja2VuZFZhbGlkYXRpb25FcnJvcixcbiAgY3JlYXRlSW5pdERldGFpbEFjdGlvbixcbiAgY3JlYXRlSW5pdE5ld0RldGFpbEFjdGlvbixcbiAgY3JlYXRlUmVzZXRTdGF0ZUFjdGlvbixcbiAgY3JlYXRlVXBkYXRlRGV0YWlsQWN0aW9uLFxuICBjcmVhdGVVcGRhdGVEZXRhaWxTZXRFcnJvcnNBY3Rpb24sXG4gIGNyZWF0ZVVwZGF0ZUZvcm1TdGF0ZUFjdGlvbixcbiAgRGV0YWlsU3RhdGUsXG59IGZyb20gJ0B2ZXJpc29mdC9zdG9yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFVuc3Vic2NyaWJlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vdW5zdWJzY3JpYmUuY29tcG9uZW50JztcbmltcG9ydCB7IEJhc2VGb3JtRGlyZWN0aXZlIH0gZnJvbSAnLi4vYmFzZS1mb3JtLmNvbXBvbmVudCc7XG5cbkBEaXJlY3RpdmUoe1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1zZWxlY3RvclxuICBzZWxlY3RvcjogJ1t2LXVzZURldGFpbFN0b3JlXScsXG4gIGV4cG9ydEFzOiAndXNlRGV0YWlsU3RvcmUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBEZXRhaWxTdG9yZURpcmVjdGl2ZVxuICBleHRlbmRzIFVuc3Vic2NyaWJlQ29tcG9uZW50XG4gIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3lcbntcbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgZm9ybSE6IEJhc2VGb3JtRGlyZWN0aXZlPGFueT47XG5cbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSkgZGV0YWlsc1JlcG9zaXRvcnkhOiBzdHJpbmc7XG5cbiAgQElucHV0KCkgYXV0b0JpbmQgPSB0cnVlO1xuXG4gIEBJbnB1dCgpIGRldGFpbElkITogc3RyaW5nIHwgbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIG5ncnhGZWF0dXJlS2V5ITogc3RyaW5nO1xuXG4gIEBJbnB1dCgpIGRlc3Ryb3lGb3JtID0gdHJ1ZTtcblxuICBASW5wdXQoKSByZWFkb25seSA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIHJlYWRvbmx5Q29udHJvbE5hbWVzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIHN0b3JlID0gaW5qZWN0KFN0b3JlKTtcbiAgY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuXG4gIHByaXZhdGUgaXRlbUNhY2hlOiBhbnkgPSBudWxsO1xuICBwcml2YXRlIGxvYWRlZCE6IGJvb2xlYW47XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmxvYWRlZCkge1xuICAgICAgdGhpcy5saXN0ZW5Gb3JtU3RhdGUoKTtcbiAgICB9XG4gICAgdGhpcy5saXN0ZW5Gb3JtQ2hhbmdlKCk7XG4gICAgdGhpcy5saXN0ZW5Gb3JtU3RhdHVzQ2hhbmdlKCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYXV0b0JpbmQgJiYgIXRoaXMubG9hZGVkKSB7XG4gICAgICB0aGlzLmluaXRGb3JtKCk7XG4gICAgfVxuICB9XG5cbiAgb3ZlcnJpZGUgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICBpZiAodGhpcy5kZXN0cm95Rm9ybSkge1xuICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChjcmVhdGVSZXNldFN0YXRlQWN0aW9uKHRoaXMuZGV0YWlsc1JlcG9zaXRvcnkpKCkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW5pdEZvcm0oKSB7XG4gICAgaWYgKHRoaXMuZGV0YWlsSWQgPT09ICdjcmVhdGUnKSB7XG4gICAgICB0aGlzLnN0b3JlLmRpc3BhdGNoKGNyZWF0ZUluaXROZXdEZXRhaWxBY3Rpb24odGhpcy5kZXRhaWxzUmVwb3NpdG9yeSkoKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICAgIGNyZWF0ZUluaXREZXRhaWxBY3Rpb24odGhpcy5kZXRhaWxzUmVwb3NpdG9yeSkoeyBvYmo6IHRoaXMuZGV0YWlsSWQgfSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucmVhZG9ubHkpIHtcbiAgICAgIHRoaXMuZm9ybS5mb3JtR3JvdXAuZGlzYWJsZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMucmVhZG9ubHlDb250cm9sTmFtZXMuZm9yRWFjaCh4ID0+IHtcbiAgICAgIHRoaXMuZm9ybS5mb3JtR3JvdXAuZ2V0KHgpPy5kaXNhYmxlKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGxpc3RlbkZvcm1TdGF0ZSgpIHtcbiAgICBjb25zdCBzZWxlY3RJbmNvbWVEYXRhID0gY3JlYXRlU2VsZWN0b3IoXG4gICAgICBjcmVhdGVGZWF0dXJlU2VsZWN0b3I8YW55Pih0aGlzLm5ncnhGZWF0dXJlS2V5KSxcbiAgICAgIChzdGF0ZTogYW55KSA9PiBzdGF0ZT8uW3RoaXMuZGV0YWlsc1JlcG9zaXRvcnldIGFzIERldGFpbFN0YXRlPGFueT5cbiAgICApO1xuICAgIHRoaXMuc3RvcmVcbiAgICAgIC5zZWxlY3Qoc2VsZWN0SW5jb21lRGF0YSlcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpKVxuICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgKFxuICAgICAgICAgIHsgaXRlbSwgbG9hZGVkLCBiYWNrZW5kVmFsaWRhdGlvbkVycm9ycyB9ID0ge1xuICAgICAgICAgICAgaXRlbTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgbG9hZGVkOiBmYWxzZSxcbiAgICAgICAgICAgIHNhdmVJdGVtU3RhdGU6IHsgc2F2ZUluUHJvZ3Jlc3M6IGZhbHNlIH0sXG4gICAgICAgICAgICBiYWNrZW5kVmFsaWRhdGlvbkVycm9yczogW11cbiAgICAgICAgICB9XG4gICAgICAgICkgPT4ge1xuICAgICAgICAgIGlmIChpdGVtXG4gICAgICAgICAgICAmJiAoKGl0ZW0udmFsaWRhdGlvbkVycm9ycyB8fCBpdGVtLnZhbGlkYXRpb25XYXJuaW5ncykgJiYgIXRoaXMuZm9ybS5mb3JtR3JvdXAuZGlydHkpXG4gICAgICAgICAgICB8fCBiYWNrZW5kVmFsaWRhdGlvbkVycm9ycy5sZW5ndGhcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlVmFsaWRhdGlvbihcbiAgICAgICAgICAgICAgJ3Byb3BlcnR5TmFtZScsXG4gICAgICAgICAgICAgIGl0ZW0udmFsaWRhdGlvbldhcm5pbmdzIHx8IFtdLFxuICAgICAgICAgICAgICAndmFsaWRhdGlvbldhcm5pbmcnLFxuICAgICAgICAgICAgICAnd2FybmluZ01lc3NhZ2UnXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVWYWxpZGF0aW9uKFxuICAgICAgICAgICAgICAncHJvcGVydHlOYW1lJyxcbiAgICAgICAgICAgICAgaXRlbS52YWxpZGF0aW9uRXJyb3JzIHx8IFtdLFxuICAgICAgICAgICAgICAndmFsaWRhdGlvbkVycm9yJyxcbiAgICAgICAgICAgICAgJ2Vycm9yTWVzc2FnZSdcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLml0ZW1DYWNoZSAmJiB0aGlzLmlzU3RhdGVDaGFuZ2VkKGl0ZW0pICYmIGJhY2tlbmRWYWxpZGF0aW9uRXJyb3JzLmxlbmd0aCkge1xuICAgICAgICAgICAgICBiYWNrZW5kVmFsaWRhdGlvbkVycm9ycyA9IHRoaXMuZGlzcGF0Y2hFcnJvcnMoaXRlbSwgYmFja2VuZFZhbGlkYXRpb25FcnJvcnMpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmhhbmRsZUJhY2tlbmRWYWxpZGF0aW9uKGJhY2tlbmRWYWxpZGF0aW9uRXJyb3JzKTtcbiAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuaXRlbUNhY2hlID0gaXRlbTtcblxuICAgICAgICAgIHRoaXMubG9hZGVkID0gbG9hZGVkO1xuICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgbGlzdGVuRm9ybUNoYW5nZSgpIHtcbiAgICB0aGlzLmZvcm0uZGF0YUNoYW5nZS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpKS5zdWJzY3JpYmUoKGl0ZW0pID0+IHtcbiAgICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICAgIGNyZWF0ZVVwZGF0ZURldGFpbEFjdGlvbih0aGlzLmRldGFpbHNSZXBvc2l0b3J5KSh7IGl0ZW0gfSlcbiAgICAgICk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGxpc3RlbkZvcm1TdGF0dXNDaGFuZ2UoKSB7XG4gICAgdGhpcy5mb3JtLnN0YXR1c0NoYW5nZVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJCkpXG4gICAgICAuc3Vic2NyaWJlKChmb3JtU3RhdGUpID0+IHtcbiAgICAgICAgdGhpcy5zdG9yZS5kaXNwYXRjaChcbiAgICAgICAgICBjcmVhdGVVcGRhdGVGb3JtU3RhdGVBY3Rpb24odGhpcy5kZXRhaWxzUmVwb3NpdG9yeSkoeyBmb3JtU3RhdGUgfSlcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVWYWxpZGF0aW9uID0gKFxuICAgIGNvbnRyb2xOYW1lOiBzdHJpbmcsXG4gICAgZXJyb3JzOiBhbnlbXSxcbiAgICBlcnJvcktleTogc3RyaW5nLFxuICAgIG1lc3NhZ2VLZXk6IHN0cmluZ1xuICApID0+IHtcbiAgICBpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHJldHVybjtcbiAgICBlcnJvcnMuZm9yRWFjaCgoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMuZm9ybS5mb3JtR3JvdXAuZ2V0KGVycm9yW2NvbnRyb2xOYW1lXSk7XG4gICAgICBpZiAoY29udHJvbCkge1xuICAgICAgICBjb250cm9sLmRpc2FibGVkXG4gICAgICAgICAgPyBjb250cm9sLmRpc2FibGUoeyBlbWl0RXZlbnQ6IGZhbHNlLCBvbmx5U2VsZjogdHJ1ZSB9KVxuICAgICAgICAgIDogY29udHJvbC5lbmFibGUoeyBlbWl0RXZlbnQ6IGZhbHNlLCBvbmx5U2VsZjogdHJ1ZSB9KTtcbiAgICAgICAgY29udHJvbC5zZXRFcnJvcnMoXG4gICAgICAgICAgeyBbZXJyb3JLZXldOiBlcnJvclttZXNzYWdlS2V5XSB9LFxuICAgICAgICAgIHsgZW1pdEV2ZW50OiB0cnVlIH1cbiAgICAgICAgKTtcbiAgICAgICAgY29udHJvbC5tYXJrQXNEaXJ0eSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9O1xuXG4gIHByaXZhdGUgaGFuZGxlQmFja2VuZFZhbGlkYXRpb24oZXJyb3JzOiBCYWNrZW5kVmFsaWRhdGlvbkVycm9yW10pIHtcbiAgICBlcnJvcnMuZm9yRWFjaCgoeyBwYXJhbWV0ZXJzLCBjb2RlIH06IEJhY2tlbmRWYWxpZGF0aW9uRXJyb3IpID0+IHtcbiAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmZvcm0uZm9ybUdyb3VwLmdldCh0aGlzLm5vcm1hbGl6ZVByb3BlcnR5TmFtZXMocGFyYW1ldGVycykpO1xuICAgICAgaWYgKCFjb250cm9sKSByZXR1cm47XG5cbiAgICAgIGNvbnRyb2xbY29udHJvbC5kaXNhYmxlZCA/IFwiZGlzYWJsZVwiIDogXCJlbmFibGVcIl0oeyBlbWl0RXZlbnQ6IGZhbHNlLCBvbmx5U2VsZjogdHJ1ZSB9KTtcbiAgICAgIGNvbnRyb2wuc2V0RXJyb3JzKHsgXCJ2YWxpZGF0aW9uRXJyb3JcIjogY29kZSB9LCB7IGVtaXRFdmVudDogdHJ1ZSB9KTtcbiAgICAgIGNvbnRyb2wubWFya0FzRGlydHkoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZGlzcGF0Y2hFcnJvcnMoaXRlbTogYW55LCBlcnJvcnM6IEJhY2tlbmRWYWxpZGF0aW9uRXJyb3JbXSk6IEJhY2tlbmRWYWxpZGF0aW9uRXJyb3JbXSB7XG4gICAgY29uc3QgZXJyb3IgPSBlcnJvcnMuZmlsdGVyKChlOiBCYWNrZW5kVmFsaWRhdGlvbkVycm9yKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5pdGVtQ2FjaGVbdGhpcy5ub3JtYWxpemVQcm9wZXJ0eU5hbWVzKGUucGFyYW1ldGVycyldID09PSBpdGVtW3RoaXMubm9ybWFsaXplUHJvcGVydHlOYW1lcyhlLnBhcmFtZXRlcnMpXTtcbiAgICB9KTtcblxuICAgIHRoaXMuc3RvcmUuZGlzcGF0Y2goXG4gICAgICBjcmVhdGVVcGRhdGVEZXRhaWxTZXRFcnJvcnNBY3Rpb24odGhpcy5kZXRhaWxzUmVwb3NpdG9yeSkoeyBlcnJvciB9KVxuICAgICk7XG5cbiAgICByZXR1cm4gZXJyb3I7XG4gIH1cblxuICBwcml2YXRlIG5vcm1hbGl6ZVByb3BlcnR5TmFtZXMoaW5wdXQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFN0cmluZyhpbnB1dFswXSkudG9Mb2NhbGVMb3dlckNhc2UoKSArIFN0cmluZyhpbnB1dCkuc2xpY2UoMSk7XG4gIH1cblxuICBwcml2YXRlIGlzU3RhdGVDaGFuZ2VkKGl0ZW06IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpdGVtICE9PSB0aGlzLml0ZW1DYWNoZTtcbiAgfVxufVxuIl19
@@ -1,5 +0,0 @@
1
- export * from './base-form-input.component';
2
- export * from './base-form.component';
3
- export * from './directives/detail-store.directive';
4
- export * from './models';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGlicy91aS1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9iYXNlLWZvcm0vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw2QkFBNkIsQ0FBQztBQUM1QyxjQUFjLHVCQUF1QixDQUFBO0FBQ3JDLGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyxVQUFVLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2Jhc2UtZm9ybS1pbnB1dC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9iYXNlLWZvcm0uY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9kaXJlY3RpdmVzL2RldGFpbC1zdG9yZS5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9tb2RlbHMnOyJdfQ==
@@ -1,7 +0,0 @@
1
- export class BaseInputControls {
2
- value;
3
- ngControl;
4
- label;
5
- required;
6
- }
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1mb3JtLWlucHV0Lm1vZGVscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWJzL3VpLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL2Jhc2UtZm9ybS9tb2RlbHMvYmFzZS1mb3JtLWlucHV0Lm1vZGVscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLE9BQWdCLGlCQUFpQjtJQUNyQyxLQUFLLENBQVk7SUFFUixTQUFTLENBQWE7SUFFdEIsS0FBSyxDQUFVO0lBRWYsUUFBUSxDQUFXO0NBQzdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZUlucHV0Q29udHJvbHM8VD4ge1xuICB2YWx1ZT86IFQgfCBudWxsO1xuXG4gIHJlYWRvbmx5IG5nQ29udHJvbD86IE5nQ29udHJvbDtcblxuICByZWFkb25seSBsYWJlbD86IHN0cmluZztcblxuICByZWFkb25seSByZXF1aXJlZCE6IGJvb2xlYW47XG59XG4iXX0=
@@ -1,10 +0,0 @@
1
- export function isFormStateEqual(current, other) {
2
- if (!current && !other) {
3
- return true;
4
- }
5
- if (current && other) {
6
- return current.dirty === other.dirty && current.valid === other.valid;
7
- }
8
- return false;
9
- }
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1mb3JtLm1vZGVscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWJzL3VpLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL2Jhc2UtZm9ybS9tb2RlbHMvYmFzZS1mb3JtLm1vZGVscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFvQkEsTUFBTSxVQUFVLGdCQUFnQixDQUFDLE9BQWtCLEVBQUUsS0FBZ0I7SUFDbkUsSUFBSSxDQUFDLE9BQU8sSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELElBQUksT0FBTyxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ3JCLE9BQU8sT0FBTyxDQUFDLEtBQUssS0FBSyxLQUFLLENBQUMsS0FBSyxJQUFJLE9BQU8sQ0FBQyxLQUFLLEtBQUssS0FBSyxDQUFDLEtBQUssQ0FBQztJQUN4RSxDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBCYXNlRm9ybUNvcmUge1xuICBsYWJlbD86IHN0cmluZztcbiAgcmVxdWlyZWQ6IGJvb2xlYW47XG4gIHJlYWRvbmx5OiBib29sZWFuO1xuICB0b29sdGlwOiBzdHJpbmc7XG4gIGZvcm1EaXNwbGF5OiAnZmxleCcgfCAnYmxvY2snO1xuICBjbGVhcmFibGU6IGJvb2xlYW47XG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nXG4gIHRlc3RJZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCYXNlRm9ybURpcmVjdGl2ZUNvcmU8VD4ge1xuICBpbml0aWFsRGF0YTogVCB8IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGb3JtU3RhdGUge1xuICBkaXJ0eTogYm9vbGVhbjtcbiAgdmFsaWQ6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0Zvcm1TdGF0ZUVxdWFsKGN1cnJlbnQ6IEZvcm1TdGF0ZSwgb3RoZXI6IEZvcm1TdGF0ZSkge1xuICBpZiAoIWN1cnJlbnQgJiYgIW90aGVyKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpZiAoY3VycmVudCAmJiBvdGhlcikge1xuICAgIHJldHVybiBjdXJyZW50LmRpcnR5ID09PSBvdGhlci5kaXJ0eSAmJiBjdXJyZW50LnZhbGlkID09PSBvdGhlci52YWxpZDtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cbiJdfQ==
@@ -1,3 +0,0 @@
1
- export * from './base-form-input.models';
2
- export * from './base-form.models';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGlicy91aS1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9iYXNlLWZvcm0vbW9kZWxzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYyxvQkFBb0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYmFzZS1mb3JtLWlucHV0Lm1vZGVscyc7XG5leHBvcnQgKiBmcm9tICcuL2Jhc2UtZm9ybS5tb2RlbHMnOyJdfQ==
@@ -1,3 +0,0 @@
1
- import { InjectionToken } from '@angular/core';
2
- export const BREADCRUMB_COMPONENT_TOKEN = new InjectionToken('BreadcrumbComponentToken');
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWJzL3VpLWNvcmUvc3JjL2xpYi9jb21wb25lbnRzL2JyZWFkY3J1bWIvYnJlYWRjcnVtYi5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSS9DLE1BQU0sQ0FBQyxNQUFNLDBCQUEwQixHQUFHLElBQUksY0FBYyxDQUN4RCwwQkFBMEIsQ0FDN0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcbmltcG9ydCB7IE1lbnVJdGVtIH0gZnJvbSAnLi4vc2lkZS1tZW51JztcblxuZXhwb3J0IGNvbnN0IEJSRUFEQ1JVTUJfQ09NUE9ORU5UX1RPS0VOID0gbmV3IEluamVjdGlvblRva2VuPEJyZWFkY3J1bWJDb3JlPihcbiAgICAnQnJlYWRjcnVtYkNvbXBvbmVudFRva2VuJ1xuKTtcblxuZXhwb3J0IGludGVyZmFjZSBCcmVhZGNydW1iQ29yZSB7XG4gICAgaXRlbXM6IE1lbnVJdGVtW107XG4gICAgaG9tZVJvdXRlOiBzdHJpbmc7XG4gICAgdXNlSG9tZVJvdXRlOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJyZWFkY3J1bWIge1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgcm91dGVyTGluaz86IHN0cmluZztcbiAgICB1cmw/OiBzdHJpbmc7XG4gICAgYWN0aXZlPzogYm9vbGVhbjtcbiAgICBhY3RpdmF0ZWRSb3V0ZT86IEFjdGl2YXRlZFJvdXRlO1xufVxuIl19
@@ -1,16 +0,0 @@
1
- import { EventEmitter, Injectable, Output } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export class BreadcrumbService {
4
- routeChange = new EventEmitter();
5
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: BreadcrumbService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
6
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: BreadcrumbService, providedIn: 'root' });
7
- }
8
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: BreadcrumbService, decorators: [{
9
- type: Injectable,
10
- args: [{
11
- providedIn: 'root',
12
- }]
13
- }], propDecorators: { routeChange: [{
14
- type: Output
15
- }] } });
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYnMvdWktY29yZS9zcmMvbGliL2NvbXBvbmVudHMvYnJlYWRjcnVtYi9icmVhZGNydW1iLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQU1qRSxNQUFNLE9BQU8saUJBQWlCO0lBQ2xCLFdBQVcsR0FBNkIsSUFBSSxZQUFZLEVBQUUsQ0FBQzt1R0FEMUQsaUJBQWlCOzJHQUFqQixpQkFBaUIsY0FGaEIsTUFBTTs7MkZBRVAsaUJBQWlCO2tCQUg3QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs4QkFFVyxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyLCBJbmplY3RhYmxlLCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJyZWFkY3J1bWIgfSBmcm9tICcuL2JyZWFkY3J1bWIubW9kZWwnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgQnJlYWRjcnVtYlNlcnZpY2Uge1xuICBAT3V0cHV0KCkgcm91dGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxCcmVhZGNydW1iPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbn1cbiJdfQ==
@@ -1,88 +0,0 @@
1
- import { ChangeDetectorRef, Directive, Input, inject, } from '@angular/core';
2
- import { ActivatedRoute, NavigationEnd, Router } from '@angular/router';
3
- import { filter, takeUntil } from 'rxjs';
4
- import { UnsubscribeComponent } from '../unsubscribe.component';
5
- import { BreadcrumbService } from './breadcrumb.service';
6
- import * as i0 from "@angular/core";
7
- export class BreadcrumbCoreComponent extends UnsubscribeComponent {
8
- items = [];
9
- homeRoute = '/';
10
- useHomeRoute = false;
11
- static ROUTE_DATA_BREADCRUMB = 'breadcrumb';
12
- static ROUTE_DATA_BREADCRUMB_URL = 'breadcrumb_url';
13
- static ROUTE_DATA_NO_BREADCRUMB_ROUTE = 'breadcrumb_no_route';
14
- static BREADCRUMB_HIDE = 'breadcrumb_hide';
15
- home = { icon: 'pi pi-home', routerLink: this.homeRoute };
16
- router = inject(Router);
17
- activatedRoute = inject(ActivatedRoute);
18
- breadcrumbService = inject(BreadcrumbService);
19
- cdr = inject(ChangeDetectorRef);
20
- ngOnInit() {
21
- this.initBreadcrumbsCreation();
22
- this.initRouteChangeListen();
23
- }
24
- initBreadcrumbsCreation() {
25
- this.router.events
26
- .pipe(filter((event) => event instanceof NavigationEnd), takeUntil(this.destroyed$))
27
- .subscribe(() => (this.items = this.createBreadcrumbs(this.activatedRoute.root)));
28
- }
29
- initRouteChangeListen() {
30
- this.breadcrumbService.routeChange
31
- .pipe(filter((x) => x.label !== 'Undefined'), takeUntil(this.destroyed$))
32
- .subscribe((x) => {
33
- this.items = [
34
- ...this.items,
35
- {
36
- label: x.label,
37
- routerLink: x.routerLink,
38
- url: x.url,
39
- class: 'breadcrumb',
40
- },
41
- ];
42
- this.cdr.detectChanges();
43
- });
44
- }
45
- createBreadcrumbs(route, routerLink = '', breadcrumbs = []) {
46
- const children = route.children;
47
- if (children.length === 0) {
48
- return breadcrumbs;
49
- }
50
- for (const child of children) {
51
- const routeURL = child.snapshot.url
52
- .map((segment) => segment.path)
53
- .join('/');
54
- if (!child.snapshot.data[BreadcrumbCoreComponent.BREADCRUMB_HIDE]) {
55
- if (BreadcrumbCoreComponent.ROUTE_DATA_BREADCRUMB_URL !== undefined) {
56
- const route = child.snapshot.data[BreadcrumbCoreComponent.ROUTE_DATA_BREADCRUMB_URL];
57
- routerLink += `/${route}`;
58
- }
59
- if (!BreadcrumbCoreComponent.ROUTE_DATA_BREADCRUMB_URL && routeURL !== '') {
60
- routerLink += `/${routeURL}`;
61
- }
62
- const label = child.snapshot.data[BreadcrumbCoreComponent.ROUTE_DATA_BREADCRUMB];
63
- if (label &&
64
- BreadcrumbCoreComponent.ROUTE_DATA_NO_BREADCRUMB_ROUTE &&
65
- child.snapshot.data[BreadcrumbCoreComponent.ROUTE_DATA_NO_BREADCRUMB_ROUTE]) {
66
- breadcrumbs.push({ label, routerLink: undefined });
67
- }
68
- else if (label && child.snapshot.routeConfig?.path !== '') {
69
- breadcrumbs.push({ label, routerLink: routerLink });
70
- }
71
- }
72
- return this.createBreadcrumbs(child, routerLink, breadcrumbs);
73
- }
74
- }
75
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: BreadcrumbCoreComponent, deps: null, target: i0.ɵɵFactoryTarget.Directive });
76
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.8", type: BreadcrumbCoreComponent, inputs: { items: "items", homeRoute: "homeRoute", useHomeRoute: "useHomeRoute" }, usesInheritance: true, ngImport: i0 });
77
- }
78
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: BreadcrumbCoreComponent, decorators: [{
79
- type: Directive,
80
- args: [{}]
81
- }], propDecorators: { items: [{
82
- type: Input
83
- }], homeRoute: [{
84
- type: Input
85
- }], useHomeRoute: [{
86
- type: Input
87
- }] } });
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJlYWRjcnVtYmNvcmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYnMvdWktY29yZS9zcmMvbGliL2NvbXBvbmVudHMvYnJlYWRjcnVtYi9icmVhZGNydW1iY29yZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUV6QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUVoRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7QUFHekQsTUFBTSxPQUFPLHVCQUNYLFNBQVEsb0JBQW9CO0lBR25CLEtBQUssR0FBZSxFQUFFLENBQUM7SUFDdkIsU0FBUyxHQUFHLEdBQUcsQ0FBQztJQUNoQixZQUFZLEdBQUcsS0FBSyxDQUFDO0lBRTlCLE1BQU0sQ0FBVSxxQkFBcUIsR0FBRyxZQUFZLENBQUM7SUFDckQsTUFBTSxDQUFVLHlCQUF5QixHQUFHLGdCQUFnQixDQUFDO0lBQzdELE1BQU0sQ0FBVSw4QkFBOEIsR0FBRyxxQkFBcUIsQ0FBQztJQUN2RSxNQUFNLENBQVUsZUFBZSxHQUFHLGlCQUFpQixDQUFDO0lBQzNDLElBQUksR0FBRyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUVuRSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3hCLGNBQWMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDeEMsaUJBQWlCLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDOUMsR0FBRyxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBRWhDLFFBQVE7UUFDTixJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztRQUMvQixJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRU8sdUJBQXVCO1FBQzdCLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTTthQUNmLElBQUksQ0FDSCxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssWUFBWSxhQUFhLENBQUMsRUFDakQsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FDM0I7YUFDQSxTQUFTLENBQ1IsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQ3RFLENBQUM7SUFDTixDQUFDO0lBRU8scUJBQXFCO1FBQzNCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXO2FBQy9CLElBQUksQ0FDSCxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssV0FBVyxDQUFDLEVBQ3RDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQzNCO2FBQ0EsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDZixJQUFJLENBQUMsS0FBSyxHQUFHO2dCQUNYLEdBQUcsSUFBSSxDQUFDLEtBQUs7Z0JBQ2I7b0JBQ0UsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLO29CQUNkLFVBQVUsRUFBRSxDQUFDLENBQUMsVUFBVTtvQkFDeEIsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHO29CQUNWLEtBQUssRUFBRSxZQUFZO2lCQUNwQjthQUNGLENBQUM7WUFDRixJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLGlCQUFpQixDQUN2QixLQUFxQixFQUNyQixVQUFVLEdBQUcsRUFBRSxFQUNmLGNBQTBCLEVBQUU7UUFFNUIsTUFBTSxRQUFRLEdBQXFCLEtBQUssQ0FBQyxRQUFRLENBQUM7UUFFbEQsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQzFCLE9BQU8sV0FBVyxDQUFDO1FBQ3JCLENBQUM7UUFFRCxLQUFLLE1BQU0sS0FBSyxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQzdCLE1BQU0sUUFBUSxHQUFXLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRztpQkFDeEMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO2lCQUM5QixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFFYixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQztnQkFDbEUsSUFBSSx1QkFBdUIsQ0FBQyx5QkFBeUIsS0FBSyxTQUFTLEVBQUUsQ0FBQztvQkFDcEUsTUFBTSxLQUFLLEdBQ1QsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMseUJBQXlCLENBQUMsQ0FBQztvQkFDekUsVUFBVSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7Z0JBQzVCLENBQUM7Z0JBRUQsSUFBSSxDQUFDLHVCQUF1QixDQUFDLHlCQUF5QixJQUFJLFFBQVEsS0FBSyxFQUFFLEVBQUUsQ0FBQztvQkFDMUUsVUFBVSxJQUFJLElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQy9CLENBQUM7Z0JBRUQsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMscUJBQXFCLENBQUMsQ0FBQztnQkFDakYsSUFDRSxLQUFLO29CQUNMLHVCQUF1QixDQUFDLDhCQUE4QjtvQkFDdEQsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ2pCLHVCQUF1QixDQUFDLDhCQUE4QixDQUN2RCxFQUNELENBQUM7b0JBQ0QsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztnQkFDckQsQ0FBQztxQkFBTSxJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxJQUFJLEtBQUssRUFBRSxFQUFFLENBQUM7b0JBQzVELFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7Z0JBQ3RELENBQUM7WUFDSCxDQUFDO1lBRUQsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUNoRSxDQUFDO0lBQ0gsQ0FBQzt1R0FsR1UsdUJBQXVCOzJGQUF2Qix1QkFBdUI7OzJGQUF2Qix1QkFBdUI7a0JBRG5DLFNBQVM7bUJBQUMsRUFBRTs4QkFLRixLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIERpcmVjdGl2ZSxcbiAgSW5wdXQsXG4gIGluamVjdCxcbiAgT25Jbml0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgZmlsdGVyLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE1lbnVJdGVtIH0gZnJvbSAnLi4vc2lkZS1tZW51JztcbmltcG9ydCB7IFVuc3Vic2NyaWJlQ29tcG9uZW50IH0gZnJvbSAnLi4vdW5zdWJzY3JpYmUuY29tcG9uZW50JztcbmltcG9ydCB7IEJyZWFkY3J1bWJDb3JlIH0gZnJvbSAnLi9icmVhZGNydW1iLm1vZGVsJztcbmltcG9ydCB7IEJyZWFkY3J1bWJTZXJ2aWNlIH0gZnJvbSAnLi9icmVhZGNydW1iLnNlcnZpY2UnO1xuXG5ARGlyZWN0aXZlKHt9KVxuZXhwb3J0IGNsYXNzIEJyZWFkY3J1bWJDb3JlQ29tcG9uZW50XG4gIGV4dGVuZHMgVW5zdWJzY3JpYmVDb21wb25lbnRcbiAgaW1wbGVtZW50cyBCcmVhZGNydW1iQ29yZSwgT25Jbml0XG57XG4gIEBJbnB1dCgpIGl0ZW1zOiBNZW51SXRlbVtdID0gW107XG4gIEBJbnB1dCgpIGhvbWVSb3V0ZSA9ICcvJztcbiAgQElucHV0KCkgdXNlSG9tZVJvdXRlID0gZmFsc2U7XG5cbiAgc3RhdGljIHJlYWRvbmx5IFJPVVRFX0RBVEFfQlJFQURDUlVNQiA9ICdicmVhZGNydW1iJztcbiAgc3RhdGljIHJlYWRvbmx5IFJPVVRFX0RBVEFfQlJFQURDUlVNQl9VUkwgPSAnYnJlYWRjcnVtYl91cmwnO1xuICBzdGF0aWMgcmVhZG9ubHkgUk9VVEVfREFUQV9OT19CUkVBRENSVU1CX1JPVVRFID0gJ2JyZWFkY3J1bWJfbm9fcm91dGUnO1xuICBzdGF0aWMgcmVhZG9ubHkgQlJFQURDUlVNQl9ISURFID0gJ2JyZWFkY3J1bWJfaGlkZSc7XG4gIHJlYWRvbmx5IGhvbWUgPSB7IGljb246ICdwaSBwaS1ob21lJywgcm91dGVyTGluazogdGhpcy5ob21lUm91dGUgfTtcblxuICByb3V0ZXIgPSBpbmplY3QoUm91dGVyKTtcbiAgYWN0aXZhdGVkUm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUpO1xuICBicmVhZGNydW1iU2VydmljZSA9IGluamVjdChCcmVhZGNydW1iU2VydmljZSk7XG4gIGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pbml0QnJlYWRjcnVtYnNDcmVhdGlvbigpO1xuICAgIHRoaXMuaW5pdFJvdXRlQ2hhbmdlTGlzdGVuKCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRCcmVhZGNydW1ic0NyZWF0aW9uKCkge1xuICAgIHRoaXMucm91dGVyLmV2ZW50c1xuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigoZXZlbnQpID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAoKSA9PiAodGhpcy5pdGVtcyA9IHRoaXMuY3JlYXRlQnJlYWRjcnVtYnModGhpcy5hY3RpdmF0ZWRSb3V0ZS5yb290KSlcbiAgICAgICk7XG4gIH1cblxuICBwcml2YXRlIGluaXRSb3V0ZUNoYW5nZUxpc3RlbigpIHtcbiAgICB0aGlzLmJyZWFkY3J1bWJTZXJ2aWNlLnJvdXRlQ2hhbmdlXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKCh4KSA9PiB4LmxhYmVsICE9PSAnVW5kZWZpbmVkJyksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCh4KSA9PiB7XG4gICAgICAgIHRoaXMuaXRlbXMgPSBbXG4gICAgICAgICAgLi4udGhpcy5pdGVtcyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogeC5sYWJlbCxcbiAgICAgICAgICAgIHJvdXRlckxpbms6IHgucm91dGVyTGluayxcbiAgICAgICAgICAgIHVybDogeC51cmwsXG4gICAgICAgICAgICBjbGFzczogJ2JyZWFkY3J1bWInLFxuICAgICAgICAgIH0sXG4gICAgICAgIF07XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVCcmVhZGNydW1icyhcbiAgICByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcm91dGVyTGluayA9ICcnLFxuICAgIGJyZWFkY3J1bWJzOiBNZW51SXRlbVtdID0gW11cbiAgKTogYW55IHtcbiAgICBjb25zdCBjaGlsZHJlbjogQWN0aXZhdGVkUm91dGVbXSA9IHJvdXRlLmNoaWxkcmVuO1xuXG4gICAgaWYgKGNoaWxkcmVuLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIGJyZWFkY3J1bWJzO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgY2hpbGQgb2YgY2hpbGRyZW4pIHtcbiAgICAgIGNvbnN0IHJvdXRlVVJMOiBzdHJpbmcgPSBjaGlsZC5zbmFwc2hvdC51cmxcbiAgICAgICAgLm1hcCgoc2VnbWVudCkgPT4gc2VnbWVudC5wYXRoKVxuICAgICAgICAuam9pbignLycpO1xuXG4gICAgICBpZiAoIWNoaWxkLnNuYXBzaG90LmRhdGFbQnJlYWRjcnVtYkNvcmVDb21wb25lbnQuQlJFQURDUlVNQl9ISURFXSkge1xuICAgICAgICBpZiAoQnJlYWRjcnVtYkNvcmVDb21wb25lbnQuUk9VVEVfREFUQV9CUkVBRENSVU1CX1VSTCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgY29uc3Qgcm91dGUgPVxuICAgICAgICAgICAgY2hpbGQuc25hcHNob3QuZGF0YVtCcmVhZGNydW1iQ29yZUNvbXBvbmVudC5ST1VURV9EQVRBX0JSRUFEQ1JVTUJfVVJMXTtcbiAgICAgICAgICByb3V0ZXJMaW5rICs9IGAvJHtyb3V0ZX1gO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFCcmVhZGNydW1iQ29yZUNvbXBvbmVudC5ST1VURV9EQVRBX0JSRUFEQ1JVTUJfVVJMICYmIHJvdXRlVVJMICE9PSAnJykge1xuICAgICAgICAgIHJvdXRlckxpbmsgKz0gYC8ke3JvdXRlVVJMfWA7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBsYWJlbCA9IGNoaWxkLnNuYXBzaG90LmRhdGFbQnJlYWRjcnVtYkNvcmVDb21wb25lbnQuUk9VVEVfREFUQV9CUkVBRENSVU1CXTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGxhYmVsICYmXG4gICAgICAgICAgQnJlYWRjcnVtYkNvcmVDb21wb25lbnQuUk9VVEVfREFUQV9OT19CUkVBRENSVU1CX1JPVVRFICYmXG4gICAgICAgICAgY2hpbGQuc25hcHNob3QuZGF0YVtcbiAgICAgICAgICAgIEJyZWFkY3J1bWJDb3JlQ29tcG9uZW50LlJPVVRFX0RBVEFfTk9fQlJFQURDUlVNQl9ST1VURVxuICAgICAgICAgIF1cbiAgICAgICAgKSB7XG4gICAgICAgICAgYnJlYWRjcnVtYnMucHVzaCh7IGxhYmVsLCByb3V0ZXJMaW5rOiB1bmRlZmluZWQgfSk7XG4gICAgICAgIH0gZWxzZSBpZiAobGFiZWwgJiYgY2hpbGQuc25hcHNob3Qucm91dGVDb25maWc/LnBhdGggIT09ICcnKSB7XG4gICAgICAgICAgYnJlYWRjcnVtYnMucHVzaCh7IGxhYmVsLCByb3V0ZXJMaW5rOiByb3V0ZXJMaW5rIH0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUJyZWFkY3J1bWJzKGNoaWxkLCByb3V0ZXJMaW5rLCBicmVhZGNydW1icyk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -1,4 +0,0 @@
1
- export * from './breadcrumb.model';
2
- export * from './breadcrumbcore.component';
3
- export * from './breadcrumb.service';
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGlicy91aS1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9icmVhZGNydW1iL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyw0QkFBNEIsQ0FBQTtBQUMxQyxjQUFjLHNCQUFzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9icmVhZGNydW1iLm1vZGVsJztcbmV4cG9ydCAqIGZyb20gJy4vYnJlYWRjcnVtYmNvcmUuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9icmVhZGNydW1iLnNlcnZpY2UnOyJdfQ==
@@ -1,3 +0,0 @@
1
- import { InjectionToken } from '@angular/core';
2
- export const BUTTON_COMPONENT_TOKEN = new InjectionToken('ButtonComponentToken');
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYnMvdWktY29yZS9zcmMvbGliL2NvbXBvbmVudHMvYnV0dG9uL2J1dHRvbi5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSS9DLE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLElBQUksY0FBYyxDQUNwRCxzQkFBc0IsQ0FDekIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQ29udHJvbFNldmVyaXR5VHlwZSwgRmllbGRTaXplVHlwZSwgSWNvblBvc2l0aW9uVHlwZSB9IGZyb20gJy4uLy4uL2NvbW1vbic7XG5cbmV4cG9ydCBjb25zdCBCVVRUT05fQ09NUE9ORU5UX1RPS0VOID0gbmV3IEluamVjdGlvblRva2VuPEJ1dHRvbkNvcmU+KFxuICAgICdCdXR0b25Db21wb25lbnRUb2tlbidcbik7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnV0dG9uQ29yZSB7XG4gICAgbGFiZWw/OiBzdHJpbmc7XG4gICAgaWNvbj86IHN0cmluZztcbiAgICBiYWRnZT86IHN0cmluZztcbiAgICBpY29uUG9zOiBJY29uUG9zaXRpb25UeXBlO1xuICAgIHJvdW5kZWQ6IGJvb2xlYW47XG4gICAgb3V0bGluZWQ6IGJvb2xlYW47XG4gICAgcmFpc2VkOiBib29sZWFuO1xuICAgIHNldmVyaXR5PzogQ29udHJvbFNldmVyaXR5VHlwZTtcbiAgICByb3V0ZXJMaW5rOiBhbnlbXTtcbiAgICBzaXplOiBGaWVsZFNpemVUeXBlIHwgdW5kZWZpbmVkO1xuICAgIHF1ZXJ5UGFyYW1zPzogUGFyYW1zO1xufVxuIl19
@@ -1,2 +0,0 @@
1
- export * from './button.model';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGlicy91aS1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9idXR0b24vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxnQkFBZ0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYnV0dG9uLm1vZGVsJzsiXX0=
@@ -1,3 +0,0 @@
1
- import { InjectionToken } from '@angular/core';
2
- export const CALENDAR_COMPONENT_TOKEN = new InjectionToken('CalendarComponentToken');
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGlicy91aS1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9jYWxlbmRhci9jYWxlbmRhci5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRy9DLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLElBQUksY0FBYyxDQUN0RCx3QkFBd0IsQ0FDM0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCYXNlRm9ybUNvcmUgfSBmcm9tICcuLi9iYXNlLWZvcm0nO1xuXG5leHBvcnQgY29uc3QgQ0FMRU5EQVJfQ09NUE9ORU5UX1RPS0VOID0gbmV3IEluamVjdGlvblRva2VuPENhbGVuZGFyQ29yZT4oXG4gICAgJ0NhbGVuZGFyQ29tcG9uZW50VG9rZW4nXG4pO1xuXG5leHBvcnQgaW50ZXJmYWNlIENhbGVuZGFyQ29yZSBleHRlbmRzIEJhc2VGb3JtQ29yZSB7XG4gICAgbWF4RGF0ZTogRGF0ZTtcbiAgICBpY29uOiBzdHJpbmc7XG4gICAgbWluRGF0ZTogRGF0ZTtcbiAgICBoZWFkZXI6IHN0cmluZztcbiAgICBmb290ZXI6IHN0cmluZztcbiAgICBmbG9hdExhYmVsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgc2VsZWN0aW9uTW9kZTogXCJzaW5nbGVcIiB8IFwibXVsdGlwbGVcIiB8IFwicmFuZ2VcIiB8IHVuZGVmaW5lZDtcbn0iXX0=
@@ -1,2 +0,0 @@
1
- export * from './calendar.model';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGlicy91aS1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9jYWxlbmRhci9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jYWxlbmRhci5tb2RlbCc7Il19
@@ -1,3 +0,0 @@
1
- import { InjectionToken } from '@angular/core';
2
- export const CHECKBOX_COMPONENT_TOKEN = new InjectionToken('CheckboxComponentToken');
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGlicy91aS1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9jaGVja2JveC9jaGVja2JveC5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRy9DLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLElBQUksY0FBYyxDQUN0RCx3QkFBd0IsQ0FDM0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCYXNlRm9ybUNvcmUgfSBmcm9tICcuLi9iYXNlLWZvcm0nO1xuXG5leHBvcnQgY29uc3QgQ0hFQ0tCT1hfQ09NUE9ORU5UX1RPS0VOID0gbmV3IEluamVjdGlvblRva2VuPENoZWNrYm94Q29yZT4oXG4gICAgJ0NoZWNrYm94Q29tcG9uZW50VG9rZW4nXG4pO1xuXG5leHBvcnQgdHlwZSBDaGVja2JveENvcmUgPSBCYXNlRm9ybUNvcmVcbiJdfQ==
@@ -1,2 +0,0 @@
1
- export * from './checkbox.model';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGlicy91aS1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9jaGVja2JveC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jaGVja2JveC5tb2RlbCc7Il19
@@ -1,3 +0,0 @@
1
- import { InjectionToken } from '@angular/core';
2
- export const CONFIRM_DIALOG_COMPONENT_TOKEN = new InjectionToken('ConfirmDialogComponentToken');
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybS1kaWFsb2cubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGlicy91aS1jb3JlL3NyYy9saWIvY29tcG9uZW50cy9jb25maXJtLWRpYWxvZy9jb25maXJtLWRpYWxvZy5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFRLE1BQU0sZUFBZSxDQUFDO0FBSXJELE1BQU0sQ0FBQyxNQUFNLDhCQUE4QixHQUFHLElBQUksY0FBYyxDQUM5RCw2QkFBNkIsQ0FDOUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuLCBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTYWZlSHRtbCB9IGZyb20gXCJAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyXCI7XG5pbXBvcnQgeyBDb250cm9sU2V2ZXJpdHlUeXBlIH0gZnJvbSAnLi4vLi4vY29tbW9uJztcblxuZXhwb3J0IGNvbnN0IENPTkZJUk1fRElBTE9HX0NPTVBPTkVOVF9UT0tFTiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxDb25maXJtRGlhbG9nQ29yZT4oXG4gICdDb25maXJtRGlhbG9nQ29tcG9uZW50VG9rZW4nXG4pO1xuXG5leHBvcnQgdHlwZSBDb25maXJtRGlhbG9nQ29yZSA9IG9iamVjdFxuXG5leHBvcnQgaW50ZXJmYWNlIERpYWxvZ0RhdGEge1xuICB0aXRsZT86IHN0cmluZztcbiAgaGVhZGVySWNvbj86IHN0cmluZztcbiAgc2V2ZXJpdHk/OiBDb250cm9sU2V2ZXJpdHlUeXBlO1xuICBzaG93Q2FuY2VsQnV0dG9uPzogYm9vbGVhbjtcbiAgYnV0dG9uT3JkZXI/OiAnY29uZmlybS1jYW5jZWwnIHwgJ2NhbmNlbC1jb25maXJtJztcbiAgY29uZmlybUJ1dHRvblRleHQ/OiBzdHJpbmc7XG4gIGNvbmZpcm1CdXR0b25Gbj86ICgpID0+IHZvaWQ7XG4gIGNhbmNlbEJ1dHRvbkZuPzogKCkgPT4gdm9pZDtcbiAgY2FuY2VsQnV0dG9uVGV4dD86IHN0cmluZztcbiAgaW5uZXJIVE1MPzogc3RyaW5nIHwgU2FmZUh0bWw7XG4gIGRhdGE/OiB1bmtub3duO1xuICBjb21wb25lbnRUeXBlPzogVHlwZTx1bmtub3duPjtcbiAgY2xvc2FibGU/OiBib29sZWFuO1xuICB3aWR0aD86IHN0cmluZztcbiAgaGVpZ2h0Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEV4dGVuZGVkRGlhbG9nRGF0YTxUSW5wdXRzID0gYW55LCBUT3V0cHV0cyA9IGFueT4gZXh0ZW5kcyBEaWFsb2dEYXRhIHtcbiAgZGF0YT86IFRJbnB1dHMgJiBUT3V0cHV0cztcbn1cbiJdfQ==