@leanix/components 0.4.531 → 0.4.533

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 (157) hide show
  1. package/fesm2022/leanix-components.mjs +365 -365
  2. package/fesm2022/leanix-components.mjs.map +1 -1
  3. package/lib/core-ui/tooltip/tooltip.directive.d.ts +1 -1
  4. package/lib/forms-ui/components/keyboard-select.directive.d.ts +1 -1
  5. package/lib/forms-ui/models/base-select.directive.d.ts +1 -1
  6. package/lib/tab-ui/components/tab-group/tab-group.component.d.ts +1 -1
  7. package/package.json +10 -14
  8. package/esm2022/index.mjs +0 -145
  9. package/esm2022/leanix-components.mjs +0 -5
  10. package/esm2022/lib/core-ui/components/avatar/avatar.component.mjs +0 -40
  11. package/esm2022/lib/core-ui/components/avatar/avatar.helpers.mjs +0 -49
  12. package/esm2022/lib/core-ui/components/avatar/avatar.model.mjs +0 -33
  13. package/esm2022/lib/core-ui/components/avatar-group/avatar-group.component.mjs +0 -75
  14. package/esm2022/lib/core-ui/components/badge/badge.component.mjs +0 -58
  15. package/esm2022/lib/core-ui/components/banner/banner.component.mjs +0 -68
  16. package/esm2022/lib/core-ui/components/banner/banner.models.mjs +0 -12
  17. package/esm2022/lib/core-ui/components/button/button.component.mjs +0 -179
  18. package/esm2022/lib/core-ui/components/button-group/button-group.component.mjs +0 -28
  19. package/esm2022/lib/core-ui/components/card/card.component.mjs +0 -26
  20. package/esm2022/lib/core-ui/components/collapsible/collapsible.component.mjs +0 -52
  21. package/esm2022/lib/core-ui/components/counter/counter.component.mjs +0 -30
  22. package/esm2022/lib/core-ui/components/ellipsis/ellipsis.component.mjs +0 -143
  23. package/esm2022/lib/core-ui/components/empty-state/empty-state.component.mjs +0 -41
  24. package/esm2022/lib/core-ui/components/icon-scale/icon-scale.component.mjs +0 -36
  25. package/esm2022/lib/core-ui/components/skeleton/skeleton.component.mjs +0 -44
  26. package/esm2022/lib/core-ui/components/spinner/spinner.component.mjs +0 -26
  27. package/esm2022/lib/core-ui/components/stepper/stepper.component.mjs +0 -70
  28. package/esm2022/lib/core-ui/components/table/table-header/table-header.component.mjs +0 -128
  29. package/esm2022/lib/core-ui/components/table/table.component.mjs +0 -77
  30. package/esm2022/lib/core-ui/components/tiny-spinner/tiny-spinner.component.mjs +0 -14
  31. package/esm2022/lib/core-ui/components/tokenizer/token/token.component.mjs +0 -20
  32. package/esm2022/lib/core-ui/components/tokenizer/tokenizer-overflow-popover/tokenizer-overflow-popover.component.mjs +0 -44
  33. package/esm2022/lib/core-ui/components/tokenizer/tokenizer.component.mjs +0 -149
  34. package/esm2022/lib/core-ui/core-ui.constants.mjs +0 -240
  35. package/esm2022/lib/core-ui/core-ui.module.mjs +0 -206
  36. package/esm2022/lib/core-ui/directives/after-view-init.directive.mjs +0 -33
  37. package/esm2022/lib/core-ui/directives/autoclose-group.service.mjs +0 -39
  38. package/esm2022/lib/core-ui/directives/autoclose.directive.mjs +0 -43
  39. package/esm2022/lib/core-ui/directives/autofocus.directive.mjs +0 -36
  40. package/esm2022/lib/core-ui/functions/core-css.helpers.mjs +0 -52
  41. package/esm2022/lib/core-ui/functions/highlight-text.function.mjs +0 -80
  42. package/esm2022/lib/core-ui/linkify/linkify.pipe.mjs +0 -146
  43. package/esm2022/lib/core-ui/linkify/unlinkify.pipe.mjs +0 -51
  44. package/esm2022/lib/core-ui/pipes/br.pipe.mjs +0 -24
  45. package/esm2022/lib/core-ui/pipes/contrast-color.pipe.mjs +0 -21
  46. package/esm2022/lib/core-ui/pipes/custom-date.pipe.mjs +0 -28
  47. package/esm2022/lib/core-ui/pipes/display-avatars.pipe.mjs +0 -37
  48. package/esm2022/lib/core-ui/pipes/highlight-range.pipe.mjs +0 -29
  49. package/esm2022/lib/core-ui/pipes/highlight-term.pipe.mjs +0 -57
  50. package/esm2022/lib/core-ui/pipes/lx-is-uuid.pipe.mjs +0 -22
  51. package/esm2022/lib/core-ui/pipes/lx-time-ago.pipe.mjs +0 -29
  52. package/esm2022/lib/core-ui/pipes/lx-translate.pipe.mjs +0 -50
  53. package/esm2022/lib/core-ui/pipes/markdown.pipe.mjs +0 -32
  54. package/esm2022/lib/core-ui/pipes/nbsp.pipe.mjs +0 -17
  55. package/esm2022/lib/core-ui/pipes/sort.pipe.mjs +0 -55
  56. package/esm2022/lib/core-ui/pipes/translation-after.pipe.mjs +0 -29
  57. package/esm2022/lib/core-ui/pipes/translation-before.pipe.mjs +0 -54
  58. package/esm2022/lib/core-ui/pipes/translation-between.pipe.mjs +0 -68
  59. package/esm2022/lib/core-ui/pipes/unescape-curly-braces.pipe.mjs +0 -17
  60. package/esm2022/lib/core-ui/services/resize-observer.service.mjs +0 -112
  61. package/esm2022/lib/core-ui/tooltip/to-cdk-position.function.mjs +0 -74
  62. package/esm2022/lib/core-ui/tooltip/tooltip-position.interface.mjs +0 -7
  63. package/esm2022/lib/core-ui/tooltip/tooltip.component.mjs +0 -26
  64. package/esm2022/lib/core-ui/tooltip/tooltip.directive.mjs +0 -117
  65. package/esm2022/lib/forms-ui/components/basic-dropdown/basic-dropdown.component.mjs +0 -139
  66. package/esm2022/lib/forms-ui/components/basic-dropdown-item/basic-dropdown-item.component.mjs +0 -38
  67. package/esm2022/lib/forms-ui/components/breadcrumb/breadcrumb.component.mjs +0 -55
  68. package/esm2022/lib/forms-ui/components/cdk-options-dropdown/cdk-options-dropdown.component.mjs +0 -215
  69. package/esm2022/lib/forms-ui/components/cdk-options-sub-dropdown/cdk-options-sub-dropdown.component.mjs +0 -135
  70. package/esm2022/lib/forms-ui/components/currency/currency-input.component.mjs +0 -159
  71. package/esm2022/lib/forms-ui/components/currency/currency-symbol-map.constant.mjs +0 -105
  72. package/esm2022/lib/forms-ui/components/currency/currency-symbol.component.mjs +0 -24
  73. package/esm2022/lib/forms-ui/components/date-input/date-input.component.mjs +0 -347
  74. package/esm2022/lib/forms-ui/components/date-picker-ui/date-formatter.mjs +0 -8
  75. package/esm2022/lib/forms-ui/components/date-picker-ui/datepicker-inner.component.mjs +0 -312
  76. package/esm2022/lib/forms-ui/components/date-picker-ui/datepicker-ui.module.mjs +0 -20
  77. package/esm2022/lib/forms-ui/components/date-picker-ui/datepicker.component.mjs +0 -206
  78. package/esm2022/lib/forms-ui/components/date-picker-ui/datepicker.config.mjs +0 -29
  79. package/esm2022/lib/forms-ui/components/date-picker-ui/daypicker.component.mjs +0 -319
  80. package/esm2022/lib/forms-ui/components/date-picker-ui/isBs3.mjs +0 -2
  81. package/esm2022/lib/forms-ui/components/date-picker-ui/monthpicker.component.mjs +0 -149
  82. package/esm2022/lib/forms-ui/components/date-picker-ui/yearpicker.component.mjs +0 -151
  83. package/esm2022/lib/forms-ui/components/drag-and-drop-list/constants.mjs +0 -5
  84. package/esm2022/lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list-item/drag-and-drop-list-item.component.mjs +0 -49
  85. package/esm2022/lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list.component.mjs +0 -120
  86. package/esm2022/lib/forms-ui/components/drag-and-drop-list/drag-and-drop-list.module.mjs +0 -39
  87. package/esm2022/lib/forms-ui/components/drag-and-drop-list/keyboard-sortable-item/keyboard-sortable-item.directive.mjs +0 -137
  88. package/esm2022/lib/forms-ui/components/drag-and-drop-list/keyboard-sortable-list/keyboard-sortable-list.directive.mjs +0 -38
  89. package/esm2022/lib/forms-ui/components/error-message/error-message.component.mjs +0 -16
  90. package/esm2022/lib/forms-ui/components/expanded-dropdown/expanded-dropdown.component.mjs +0 -26
  91. package/esm2022/lib/forms-ui/components/form-error/form-error.component.mjs +0 -44
  92. package/esm2022/lib/forms-ui/components/icon/icon.component.mjs +0 -45
  93. package/esm2022/lib/forms-ui/components/input/input.component.mjs +0 -48
  94. package/esm2022/lib/forms-ui/components/keyboard-select.directive.mjs +0 -126
  95. package/esm2022/lib/forms-ui/components/multi-select/multi-select-selection/multi-select-selection.component.mjs +0 -28
  96. package/esm2022/lib/forms-ui/components/multi-select/multi-select.component.mjs +0 -318
  97. package/esm2022/lib/forms-ui/components/option/option.component.mjs +0 -99
  98. package/esm2022/lib/forms-ui/components/option-group/option-group.component.mjs +0 -29
  99. package/esm2022/lib/forms-ui/components/option-group-dropdown/option-group-dropdown.component.mjs +0 -123
  100. package/esm2022/lib/forms-ui/components/options-dropdown/options-dropdown.component.mjs +0 -297
  101. package/esm2022/lib/forms-ui/components/options-sub-dropdown/options-sub-dropdown.component.mjs +0 -94
  102. package/esm2022/lib/forms-ui/components/picker/picker-trigger.directive.mjs +0 -47
  103. package/esm2022/lib/forms-ui/components/picker/picker.component.mjs +0 -218
  104. package/esm2022/lib/forms-ui/components/picker-option/picker-option.component.mjs +0 -118
  105. package/esm2022/lib/forms-ui/components/pill-item/pill-item.component.mjs +0 -33
  106. package/esm2022/lib/forms-ui/components/pill-list/pill-list.component.mjs +0 -58
  107. package/esm2022/lib/forms-ui/components/responsive-input/responsive-input.component.mjs +0 -101
  108. package/esm2022/lib/forms-ui/components/select-list/select-list.component.mjs +0 -178
  109. package/esm2022/lib/forms-ui/components/single-select/single-select.component.mjs +0 -290
  110. package/esm2022/lib/forms-ui/components/sorting-dropdown/sorting-dropdown.component.mjs +0 -71
  111. package/esm2022/lib/forms-ui/components/sorting-dropdown-trigger/sorting-dropdown-trigger.component.mjs +0 -21
  112. package/esm2022/lib/forms-ui/components/switch/switch.component.mjs +0 -51
  113. package/esm2022/lib/forms-ui/directives/contenteditable.directive.mjs +0 -130
  114. package/esm2022/lib/forms-ui/directives/form-error.directive.mjs +0 -121
  115. package/esm2022/lib/forms-ui/directives/form-submit.directive.mjs +0 -29
  116. package/esm2022/lib/forms-ui/directives/keyboard-action-source.directive.mjs +0 -63
  117. package/esm2022/lib/forms-ui/directives/mark-invalid.directive.mjs +0 -39
  118. package/esm2022/lib/forms-ui/directives/max-length-counter.directive.mjs +0 -131
  119. package/esm2022/lib/forms-ui/directives/select-dropdown.directive.mjs +0 -32
  120. package/esm2022/lib/forms-ui/directives/selectable-item.directive.mjs +0 -34
  121. package/esm2022/lib/forms-ui/directives/selected-option.directive.mjs +0 -27
  122. package/esm2022/lib/forms-ui/forms-ui.module.mjs +0 -270
  123. package/esm2022/lib/forms-ui/helpers/key-codes.constants.mjs +0 -13
  124. package/esm2022/lib/forms-ui/helpers/keyboard-navigation.helpers.mjs +0 -38
  125. package/esm2022/lib/forms-ui/models/base-select.directive.mjs +0 -183
  126. package/esm2022/lib/forms-ui/models/dropdown-item.interface.mjs +0 -2
  127. package/esm2022/lib/forms-ui/models/single-select-padding.interface.mjs +0 -2
  128. package/esm2022/lib/forms-ui/models/sorting.interface.mjs +0 -7
  129. package/esm2022/lib/forms-ui/pipes/filter-selection.pipe.mjs +0 -33
  130. package/esm2022/lib/forms-ui/pipes/filter-term.pipe.mjs +0 -29
  131. package/esm2022/lib/forms-ui/pipes/format-number.pipe.mjs +0 -66
  132. package/esm2022/lib/forms-ui/validators/date-in-foreseeable-future.validator.mjs +0 -26
  133. package/esm2022/lib/forms-ui/validators/string-not-in-array.validator.mjs +0 -30
  134. package/esm2022/lib/modal-ui/components/modal/modal.component.mjs +0 -264
  135. package/esm2022/lib/modal-ui/components/modal-footer/modal-footer.component.mjs +0 -16
  136. package/esm2022/lib/modal-ui/components/modal-header/modal-header.component.mjs +0 -19
  137. package/esm2022/lib/modal-ui/directives/modal-content.directive.mjs +0 -14
  138. package/esm2022/lib/modal-ui/modal.constants.mjs +0 -18
  139. package/esm2022/lib/modal-ui/modal.module.mjs +0 -47
  140. package/esm2022/lib/popover-ui/components/popover/popover.component.mjs +0 -228
  141. package/esm2022/lib/popover-ui/directives/popover-click.directive.mjs +0 -52
  142. package/esm2022/lib/popover-ui/directives/popover-content.directive.mjs +0 -17
  143. package/esm2022/lib/popover-ui/directives/popover-hover.directive.mjs +0 -88
  144. package/esm2022/lib/popover-ui/popover-ui.module.mjs +0 -21
  145. package/esm2022/lib/shared/date-helpers.mjs +0 -35
  146. package/esm2022/lib/shared/html-helpers.function.mjs +0 -34
  147. package/esm2022/lib/shared/misc-helpers.mjs +0 -24
  148. package/esm2022/lib/shared/observe.mjs +0 -40
  149. package/esm2022/lib/tab-ui/components/tab/tab.component.mjs +0 -118
  150. package/esm2022/lib/tab-ui/components/tab-group/tab-group-key-codes.enum.mjs +0 -12
  151. package/esm2022/lib/tab-ui/components/tab-group/tab-group.component.mjs +0 -150
  152. package/esm2022/lib/tab-ui/tab-ui.module.mjs +0 -20
  153. package/esm2022/ui5/icons/lx-icons.json +0 -177
  154. package/esm2022/ui5/icons/register-icons.mjs +0 -14
  155. package/esm2022/ui5/index.mjs +0 -8
  156. package/esm2022/ui5/leanix-components-ui5.mjs +0 -5
  157. package/esm2022/ui5/ui5.provider.mjs +0 -29
@@ -1,183 +0,0 @@
1
- import { ContentChild, Directive, EventEmitter, Input, Output, ViewChild } from '@angular/core';
2
- import { UntypedFormControl } from '@angular/forms';
3
- import { BehaviorSubject, Subject } from 'rxjs';
4
- import { distinctUntilChanged, filter, takeUntil } from 'rxjs/operators';
5
- import { KeyboardSelectAction, KeyboardSelectDirective } from '../components/keyboard-select.directive';
6
- import * as i0 from "@angular/core";
7
- export class BaseSelectDirective {
8
- constructor() {
9
- this.disabled = false;
10
- this.focusOnInit = false;
11
- this.dropdownMaxHeight = 250;
12
- this.allowQuery = true;
13
- this.query = new EventEmitter();
14
- this.close = new EventEmitter();
15
- this.open = new EventEmitter();
16
- /** @internal */
17
- this.query$ = this.query.asObservable();
18
- /** @internal */
19
- this.dropdownDirection$ = new BehaviorSubject('BOTTOM');
20
- /** @internal */
21
- this.dropdownOpen = false;
22
- // an axis, where the negative range represents the selected item in the selection
23
- /** @internal */
24
- this.selectionKeyboardSelectAction$ = new Subject();
25
- /** @internal */
26
- this.optionsKeyboardSelectAction$ = new Subject();
27
- /** @internal */
28
- this.virtualCursorPosition = 0;
29
- /** @internal */
30
- this.inputWasFocused = false;
31
- /** @internal */
32
- this.queryControl = new UntypedFormControl('');
33
- /** @internal */
34
- this.isInputFocused = false;
35
- /** @internal */
36
- this.destroyed$ = new Subject();
37
- }
38
- ngAfterViewInit() {
39
- this.queryControl.valueChanges
40
- .pipe(filter(() => this.allowQuery), takeUntil(this.destroyed$))
41
- .subscribe((value) => {
42
- if (value && value.length > 0) {
43
- this.open.next(true);
44
- }
45
- this.query.emit(value);
46
- this.selectFirstOption();
47
- });
48
- this.open
49
- .pipe(filter(() => !this.disabled), distinctUntilChanged(), takeUntil(this.destroyed$))
50
- .subscribe((isOpen) => {
51
- this.dropdownOpen = isOpen;
52
- if (isOpen) {
53
- this.setOpenDirection();
54
- }
55
- else {
56
- this.resetSelectState();
57
- this.close.emit();
58
- }
59
- if (this.dropdownBase) {
60
- this.notifyDropdownBase(isOpen);
61
- }
62
- else {
63
- // dropdown may be hidden with *ngIf, so we might need to wait for it to be rendered
64
- setTimeout(() => this.notifyDropdownBase(isOpen));
65
- }
66
- });
67
- if (this.focusOnInit) {
68
- setTimeout(() => this.focus());
69
- }
70
- }
71
- ngOnChanges(changes) {
72
- if ('disabled' in changes) {
73
- if (this.disabled) {
74
- this.queryControl.disable();
75
- }
76
- else {
77
- this.queryControl.enable();
78
- }
79
- }
80
- }
81
- ngOnDestroy() {
82
- this.destroyed$.next();
83
- }
84
- /**
85
- * @param toggle is true when the caret to the right in a select component was clicked
86
- * @internal
87
- */
88
- handleClick(toggle) {
89
- if (toggle || !this.dropdownOpen || !this.allowQuery) {
90
- this.open.next(!this.dropdownOpen);
91
- }
92
- this.focus();
93
- }
94
- /** @internal */
95
- handleBackdropClick(event) {
96
- event.stopPropagation();
97
- this.closeInput();
98
- }
99
- /** @internal */
100
- closeInput() {
101
- this.open.next(false);
102
- this.resetInput();
103
- this.query.emit('');
104
- }
105
- /** @internal */
106
- openInput() {
107
- this.open.next(true);
108
- }
109
- setOpenDirection() {
110
- const dropdownRect = this.optionsContainer.nativeElement.getBoundingClientRect();
111
- const spaceAtTheBottom = document.documentElement.clientHeight - dropdownRect.top - dropdownRect.height - this.dropdownMaxHeight;
112
- const spaceAtTheTop = dropdownRect.top - this.dropdownMaxHeight;
113
- const isTop = spaceAtTheBottom < 0 && spaceAtTheTop > spaceAtTheBottom;
114
- this.dropdownDirection$.next(isTop ? 'TOP' : 'BOTTOM');
115
- }
116
- resetSelectState() {
117
- this.virtualCursorPosition = 0;
118
- this.selectionKeyboardSelectAction$.next(KeyboardSelectAction.UNSELECT);
119
- this.optionsKeyboardSelectAction$.next(KeyboardSelectAction.UNSELECT);
120
- this.resetInput();
121
- this.query.emit('');
122
- }
123
- mapToEventSet(event, input, virtualCursorPosition, selectionLength) {
124
- return {
125
- event,
126
- inputCursorPosition: this.doGetCaretPosition(input),
127
- virtualCursorPosition,
128
- selectionLength
129
- };
130
- }
131
- /*
132
- * Returns the caret (cursor) position of the specified text field.
133
- * Return value range is 0-oField.value.length.
134
- * https://stackoverflow.com/questions/2897155/get-cursor-position-in-characters-within-a-text-input-field
135
- */
136
- doGetCaretPosition(oField) {
137
- let iCaretPos = 0;
138
- if (oField.selectionStart || parseInt(oField.selectionStart, 10) === 0) {
139
- // Check when range selection using null we prevent deleting on
140
- iCaretPos = oField.selectionStart === oField.selectionEnd ? oField.selectionStart : null;
141
- }
142
- return iCaretPos;
143
- }
144
- selectFirstOption() {
145
- this.optionsKeyboardSelectAction$.next(KeyboardSelectAction.FIRST);
146
- }
147
- /*
148
- * Sets the dropdown open/closed state, used for overlay dropdowns
149
- * */
150
- notifyDropdownBase(isOpen) {
151
- if (this.dropdownBase && this.dropdownBase.overlayPositioning && this.dropdownBase.cdkOverlayOpenState) {
152
- this.dropdownBase.cdkOverlayOpenState.next(isOpen);
153
- }
154
- }
155
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: BaseSelectDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
156
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.8", type: BaseSelectDirective, inputs: { placeholder: "placeholder", disabled: "disabled", focusOnInit: "focusOnInit", dropdownMaxHeight: "dropdownMaxHeight", allowQuery: "allowQuery" }, outputs: { query: "query", close: "close", open: "open" }, queries: [{ propertyName: "dropdownBase", first: true, predicate: KeyboardSelectDirective, descendants: true }], viewQueries: [{ propertyName: "optionsContainer", first: true, predicate: ["optionsContainer"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0 }); }
157
- }
158
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: BaseSelectDirective, decorators: [{
159
- type: Directive
160
- }], propDecorators: { placeholder: [{
161
- type: Input
162
- }], disabled: [{
163
- type: Input
164
- }], focusOnInit: [{
165
- type: Input
166
- }], dropdownMaxHeight: [{
167
- type: Input
168
- }], allowQuery: [{
169
- type: Input
170
- }], query: [{
171
- type: Output
172
- }], close: [{
173
- type: Output
174
- }], open: [{
175
- type: Output
176
- }], optionsContainer: [{
177
- type: ViewChild,
178
- args: ['optionsContainer', { static: true }]
179
- }], dropdownBase: [{
180
- type: ContentChild,
181
- args: [KeyboardSelectDirective, { static: false, descendants: true }]
182
- }] } });
183
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1zZWxlY3QuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3NyYy9saWIvZm9ybXMtdWkvbW9kZWxzL2Jhc2Utc2VsZWN0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsWUFBWSxFQUNaLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFFTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQzs7QUFVeEcsTUFBTSxPQUFnQixtQkFBbUI7SUFEekM7UUFHVyxhQUFRLEdBQVksS0FBSyxDQUFDO1FBQzFCLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBQzdCLHNCQUFpQixHQUFXLEdBQUcsQ0FBQztRQUNoQyxlQUFVLEdBQVksSUFBSSxDQUFDO1FBRTFCLFVBQUssR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQ25DLFVBQUssR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ2pDLFNBQUksR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBVTdDLGdCQUFnQjtRQUNBLFdBQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ25ELGdCQUFnQjtRQUNBLHVCQUFrQixHQUFHLElBQUksZUFBZSxDQUFtQixRQUFRLENBQUMsQ0FBQztRQUNyRixnQkFBZ0I7UUFDVCxpQkFBWSxHQUFHLEtBQUssQ0FB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QUFLLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQ7O1NBRUs7SUFDRyxrQkFBa0IsQ0FBQyxNQUFlO1FBQ3hDLElBQUksSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLGtCQUFrQixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztZQUN2RyxJQUFJLENBQUMsWUFBWSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyRCxDQUFDO0lBQ0gsQ0FBQzs4R0FuTW1CLG1CQUFtQjtrR0FBbkIsbUJBQW1CLDJSQWN6Qix1QkFBdUI7OzJGQWRqQixtQkFBbUI7a0JBRHhDLFNBQVM7OEJBRUMsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUksS0FBSztzQkFBZCxNQUFNO2dCQUNHLEtBQUs7c0JBQWQsTUFBTTtnQkFDRyxJQUFJO3NCQUFiLE1BQU07Z0JBRzBDLGdCQUFnQjtzQkFBaEUsU0FBUzt1QkFBQyxrQkFBa0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBRThCLFlBQVk7c0JBQXhGLFlBQVk7dUJBQUMsdUJBQXVCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb250ZW50Q2hpbGQsXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVW50eXBlZEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBLZXlib2FyZFNlbGVjdEFjdGlvbiwgS2V5Ym9hcmRTZWxlY3REaXJlY3RpdmUgfSBmcm9tICcuLi9jb21wb25lbnRzL2tleWJvYXJkLXNlbGVjdC5kaXJlY3RpdmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50U2V0IHtcbiAgZXZlbnQ6IEtleWJvYXJkRXZlbnQ7XG4gIGlucHV0Q3Vyc29yUG9zaXRpb246IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgdmlydHVhbEN1cnNvclBvc2l0aW9uOiBudW1iZXI7XG4gIHNlbGVjdGlvbkxlbmd0aD86IG51bWJlcjtcbn1cblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZVNlbGVjdERpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGZvY3VzT25Jbml0OiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGRyb3Bkb3duTWF4SGVpZ2h0OiBudW1iZXIgPSAyNTA7XG4gIEBJbnB1dCgpIGFsbG93UXVlcnk6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIEBPdXRwdXQoKSBxdWVyeSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgY2xvc2UgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBvcGVuID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgQFZpZXdDaGlsZCgnb3B0aW9uc0NvbnRhaW5lcicsIHsgc3RhdGljOiB0cnVlIH0pIG9wdGlvbnNDb250YWluZXIhOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBAQ29udGVudENoaWxkKEtleWJvYXJkU2VsZWN0RGlyZWN0aXZlLCB7IHN0YXRpYzogZmFsc2UsIGRlc2NlbmRhbnRzOiB0cnVlIH0pIGRyb3Bkb3duQmFzZSE6IEtleWJvYXJkU2VsZWN0RGlyZWN0aXZlO1xuXG4gIGFic3RyYWN0IHNlbGVjdGlvbj86IGFueTtcbiAgYWJzdHJhY3Qgc2VsZWN0aW9uQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PjtcblxuICAvKiogQGludGVybmFsICovXG4gIHB1YmxpYyByZWFkb25seSBxdWVyeSQgPSB0aGlzLnF1ZXJ5LmFzT2JzZXJ2YWJsZSgpO1xuICAvKiogQGludGVybmFsICovXG4gIHB1YmxpYyByZWFkb25seSBkcm9wZG93bkRpcmVjdGlvbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PCdUT1AnIHwgJ0JPVFRPTSc+KCdCT1RUT00nKTtcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBwdWJsaWMgZHJvcGRvd25PcGVuID0gZmFsc2U7XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBwdWJsaWMgYWN0aXZlRWxlbWVudCE6IEVsZW1lbnQ7XG4gIC8vIGFuIGF4aXMsIHdoZXJlIHRoZSBuZWdhdGl2ZSByYW5nZSByZXByZXNlbnRzIHRoZSBzZWxlY3RlZCBpdGVtIGluIHRoZSBzZWxlY3Rpb25cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0aW9uS2V5Ym9hcmRTZWxlY3RBY3Rpb24kID0gbmV3IFN1YmplY3Q8S2V5Ym9hcmRTZWxlY3RBY3Rpb24gfCBudWxsPigpO1xuICAvKiogQGludGVybmFsICovXG4gIHB1YmxpYyByZWFkb25seSBvcHRpb25zS2V5Ym9hcmRTZWxlY3RBY3Rpb24kID0gbmV3IFN1YmplY3Q8S2V5Ym9hcmRTZWxlY3RBY3Rpb24gfCBudWxsPigpO1xuICAvKiogQGludGVybmFsICovXG4gIHB1YmxpYyB2aXJ0dWFsQ3Vyc29yUG9zaXRpb246IG51bWJlciA9IDA7XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBwdWJsaWMgaW5wdXRXYXNGb2N1c2VkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcXVlcnlDb250cm9sID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbCgnJyk7XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBwdWJsaWMgaXNJbnB1dEZvY3VzZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogQGludGVybmFsICovXG4gIHJlYWRvbmx5IGRlc3Ryb3llZCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgYWJzdHJhY3QgcmVzZXRJbnB1dCgpOiB2b2lkO1xuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgYWJzdHJhY3QgZm9jdXMoKTogdm9pZDtcblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5xdWVyeUNvbnRyb2wudmFsdWVDaGFuZ2VzXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKCgpID0+IHRoaXMuYWxsb3dRdWVyeSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCQpXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgICBpZiAodmFsdWUgJiYgdmFsdWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHRoaXMub3Blbi5uZXh0KHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucXVlcnkuZW1pdCh2YWx1ZSk7XG4gICAgICAgIHRoaXMuc2VsZWN0Rmlyc3RPcHRpb24oKTtcbiAgICAgIH0pO1xuXG4gICAgdGhpcy5vcGVuXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKCgpID0+ICF0aGlzLmRpc2FibGVkKSxcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveWVkJClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKGlzT3BlbikgPT4ge1xuICAgICAgICB0aGlzLmRyb3Bkb3duT3BlbiA9IGlzT3BlbjtcbiAgICAgICAgaWYgKGlzT3Blbikge1xuICAgICAgICAgIHRoaXMuc2V0T3BlbkRpcmVjdGlvbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMucmVzZXRTZWxlY3RTdGF0ZSgpO1xuICAgICAgICAgIHRoaXMuY2xvc2UuZW1pdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZHJvcGRvd25CYXNlKSB7XG4gICAgICAgICAgdGhpcy5ub3RpZnlEcm9wZG93bkJhc2UoaXNPcGVuKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBkcm9wZG93biBtYXkgYmUgaGlkZGVuIHdpdGggKm5nSWYsIHNvIHdlIG1pZ2h0IG5lZWQgdG8gd2FpdCBmb3IgaXQgdG8gYmUgcmVuZGVyZWRcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMubm90aWZ5RHJvcGRvd25CYXNlKGlzT3BlbikpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIGlmICh0aGlzLmZvY3VzT25Jbml0KSB7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuZm9jdXMoKSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmICgnZGlzYWJsZWQnIGluIGNoYW5nZXMpIHtcbiAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgIHRoaXMucXVlcnlDb250cm9sLmRpc2FibGUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMucXVlcnlDb250cm9sLmVuYWJsZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZGVzdHJveWVkJC5uZXh0KCk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHRvZ2dsZSBpcyB0cnVlIHdoZW4gdGhlIGNhcmV0IHRvIHRoZSByaWdodCBpbiBhIHNlbGVjdCBjb21wb25lbnQgd2FzIGNsaWNrZWRcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgaGFuZGxlQ2xpY2sodG9nZ2xlOiBib29sZWFuKSB7XG4gICAgaWYgKHRvZ2dsZSB8fCAhdGhpcy5kcm9wZG93bk9wZW4gfHwgIXRoaXMuYWxsb3dRdWVyeSkge1xuICAgICAgdGhpcy5vcGVuLm5leHQoIXRoaXMuZHJvcGRvd25PcGVuKTtcbiAgICB9XG4gICAgdGhpcy5mb2N1cygpO1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBwdWJsaWMgaGFuZGxlQmFja2Ryb3BDbGljayhldmVudDogTW91c2VFdmVudCkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuY2xvc2VJbnB1dCgpO1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBwdWJsaWMgY2xvc2VJbnB1dCgpIHtcbiAgICB0aGlzLm9wZW4ubmV4dChmYWxzZSk7XG4gICAgdGhpcy5yZXNldElucHV0KCk7XG4gICAgdGhpcy5xdWVyeS5lbWl0KCcnKTtcbiAgfVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgcHVibGljIG9wZW5JbnB1dCgpIHtcbiAgICB0aGlzLm9wZW4ubmV4dCh0cnVlKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBzZXRPcGVuRGlyZWN0aW9uKCkge1xuICAgIGNvbnN0IGRyb3Bkb3duUmVjdCA9IHRoaXMub3B0aW9uc0NvbnRhaW5lci5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IHNwYWNlQXRUaGVCb3R0b20gPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0IC0gZHJvcGRvd25SZWN0LnRvcCAtIGRyb3Bkb3duUmVjdC5oZWlnaHQgLSB0aGlzLmRyb3Bkb3duTWF4SGVpZ2h0O1xuICAgIGNvbnN0IHNwYWNlQXRUaGVUb3AgPSBkcm9wZG93blJlY3QudG9wIC0gdGhpcy5kcm9wZG93bk1heEhlaWdodDtcbiAgICBjb25zdCBpc1RvcCA9IHNwYWNlQXRUaGVCb3R0b20gPCAwICYmIHNwYWNlQXRUaGVUb3AgPiBzcGFjZUF0VGhlQm90dG9tO1xuXG4gICAgdGhpcy5kcm9wZG93bkRpcmVjdGlvbiQubmV4dChpc1RvcCA/ICdUT1AnIDogJ0JPVFRPTScpO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJlc2V0U2VsZWN0U3RhdGUoKSB7XG4gICAgdGhpcy52aXJ0dWFsQ3Vyc29yUG9zaXRpb24gPSAwO1xuICAgIHRoaXMuc2VsZWN0aW9uS2V5Ym9hcmRTZWxlY3RBY3Rpb24kLm5leHQoS2V5Ym9hcmRTZWxlY3RBY3Rpb24uVU5TRUxFQ1QpO1xuICAgIHRoaXMub3B0aW9uc0tleWJvYXJkU2VsZWN0QWN0aW9uJC5uZXh0KEtleWJvYXJkU2VsZWN0QWN0aW9uLlVOU0VMRUNUKTtcbiAgICB0aGlzLnJlc2V0SW5wdXQoKTtcbiAgICB0aGlzLnF1ZXJ5LmVtaXQoJycpO1xuICB9XG5cbiAgcHJvdGVjdGVkIG1hcFRvRXZlbnRTZXQoXG4gICAgZXZlbnQ6IEtleWJvYXJkRXZlbnQsXG4gICAgaW5wdXQ6IEhUTUxJbnB1dEVsZW1lbnQsXG4gICAgdmlydHVhbEN1cnNvclBvc2l0aW9uOiBudW1iZXIsXG4gICAgc2VsZWN0aW9uTGVuZ3RoPzogbnVtYmVyXG4gICk6IEV2ZW50U2V0IHtcbiAgICByZXR1cm4ge1xuICAgICAgZXZlbnQsXG4gICAgICBpbnB1dEN1cnNvclBvc2l0aW9uOiB0aGlzLmRvR2V0Q2FyZXRQb3NpdGlvbihpbnB1dCksXG4gICAgICB2aXJ0dWFsQ3Vyc29yUG9zaXRpb24sXG4gICAgICBzZWxlY3Rpb25MZW5ndGhcbiAgICB9O1xuICB9XG5cbiAgLypcbiAgICogUmV0dXJucyB0aGUgY2FyZXQgKGN1cnNvcikgcG9zaXRpb24gb2YgdGhlIHNwZWNpZmllZCB0ZXh0IGZpZWxkLlxuICAgKiBSZXR1cm4gdmFsdWUgcmFuZ2UgaXMgMC1vRmllbGQudmFsdWUubGVuZ3RoLlxuICAgKiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8yODk3MTU1L2dldC1jdXJzb3ItcG9zaXRpb24taW4tY2hhcmFjdGVycy13aXRoaW4tYS10ZXh0LWlucHV0LWZpZWxkXG4gICAqL1xuICBwcm90ZWN0ZWQgZG9HZXRDYXJldFBvc2l0aW9uKG9GaWVsZDogYW55KSB7XG4gICAgbGV0IGlDYXJldFBvcyA9IDA7XG4gICAgaWYgKG9GaWVsZC5zZWxlY3Rpb25TdGFydCB8fCBwYXJzZUludChvRmllbGQuc2VsZWN0aW9uU3RhcnQsIDEwKSA9PT0gMCkge1xuICAgICAgLy8gQ2hlY2sgd2hlbiByYW5nZSBzZWxlY3Rpb24gdXNpbmcgbnVsbCB3ZSBwcmV2ZW50IGRlbGV0aW5nIG9uXG4gICAgICBpQ2FyZXRQb3MgPSBvRmllbGQuc2VsZWN0aW9uU3RhcnQgPT09IG9GaWVsZC5zZWxlY3Rpb25FbmQgPyBvRmllbGQuc2VsZWN0aW9uU3RhcnQgOiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gaUNhcmV0UG9zO1xuICB9XG5cbiAgcHJvdGVjdGVkIHNlbGVjdEZpcnN0T3B0aW9uKCkge1xuICAgIHRoaXMub3B0aW9uc0tleWJvYXJkU2VsZWN0QWN0aW9uJC5uZXh0KEtleWJvYXJkU2VsZWN0QWN0aW9uLkZJUlNUKTtcbiAgfVxuXG4gIC8qXG4gICAqIFNldHMgdGhlIGRyb3Bkb3duIG9wZW4vY2xvc2VkIHN0YXRlLCB1c2VkIGZvciBvdmVybGF5IGRyb3Bkb3duc1xuICAgKiAqL1xuICBwcml2YXRlIG5vdGlmeURyb3Bkb3duQmFzZShpc09wZW46IGJvb2xlYW4pIHtcbiAgICBpZiAodGhpcy5kcm9wZG93bkJhc2UgJiYgdGhpcy5kcm9wZG93bkJhc2Uub3ZlcmxheVBvc2l0aW9uaW5nICYmIHRoaXMuZHJvcGRvd25CYXNlLmNka092ZXJsYXlPcGVuU3RhdGUpIHtcbiAgICAgIHRoaXMuZHJvcGRvd25CYXNlLmNka092ZXJsYXlPcGVuU3RhdGUubmV4dChpc09wZW4pO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcGRvd24taXRlbS5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvc3JjL2xpYi9mb3Jtcy11aS9tb2RlbHMvZHJvcGRvd24taXRlbS5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIERyb3Bkb3duSXRlbSB7XG4gIHNlbGVjdD86IEV2ZW50RW1pdHRlcjxhbnk+O1xuICBzY3JvbGxUb0l0ZW0oKTogdm9pZDtcbn1cbiJdfQ==
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2luZ2xlLXNlbGVjdC1wYWRkaW5nLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9zcmMvbGliL2Zvcm1zLXVpL21vZGVscy9zaW5nbGUtc2VsZWN0LXBhZGRpbmcuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBTaW5nbGVTZWxlY3RQYWRkaW5nID0gJ2RlZmF1bHQnIHwgJ25hcnJvdyc7XG4iXX0=
@@ -1,7 +0,0 @@
1
- export class Sorting {
2
- constructor() {
3
- this.key = '';
4
- this.order = 'asc';
5
- }
6
- }
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydGluZy5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvc3JjL2xpYi9mb3Jtcy11aS9tb2RlbHMvc29ydGluZy5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsTUFBTSxPQUFPLE9BQU87SUFBcEI7UUFDRSxRQUFHLEdBQVcsRUFBRSxDQUFDO1FBQ2pCLFVBQUssR0FBaUIsS0FBSyxDQUFDO0lBQzlCLENBQUM7Q0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIFNvcnRpbmdPcmRlciA9ICdhc2MnIHwgJ2Rlc2MnO1xuZXhwb3J0IGNsYXNzIFNvcnRpbmcge1xuICBrZXk6IHN0cmluZyA9ICcnO1xuICBvcmRlcjogU29ydGluZ09yZGVyID0gJ2FzYyc7XG59XG4iXX0=
@@ -1,33 +0,0 @@
1
- import { Pipe } from '@angular/core';
2
- import { filter, find, includes, isEqual, isObject } from 'lodash/fp';
3
- import * as i0 from "@angular/core";
4
- export class FilterSelectionPipe {
5
- transform(items, selection, itemKey) {
6
- const isArray = Array.isArray(selection);
7
- return filter((item) => {
8
- if (isArray) {
9
- if (isObject(item)) {
10
- return itemKey
11
- ? !find((selectedItem) => selectedItem?.[itemKey] === item?.[itemKey], selection)
12
- : !find(item, selection);
13
- }
14
- else {
15
- return !includes(item, selection);
16
- }
17
- }
18
- else {
19
- return !isEqual(item, selection);
20
- }
21
- }, items);
22
- }
23
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: FilterSelectionPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
24
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.8", ngImport: i0, type: FilterSelectionPipe, isStandalone: true, name: "lxFilterBySelection" }); }
25
- }
26
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: FilterSelectionPipe, decorators: [{
27
- type: Pipe,
28
- args: [{
29
- name: 'lxFilterBySelection',
30
- standalone: true
31
- }]
32
- }] });
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLXNlbGVjdGlvbi5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3NyYy9saWIvZm9ybXMtdWkvcGlwZXMvZmlsdGVyLXNlbGVjdGlvbi5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDOztBQU10RSxNQUFNLE9BQU8sbUJBQW1CO0lBQzlCLFNBQVMsQ0FBQyxLQUErQixFQUFFLFNBQWMsRUFBRSxPQUFnQjtRQUN6RSxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3pDLE9BQU8sTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDckIsSUFBSSxPQUFPLEVBQUUsQ0FBQztnQkFDWixJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO29CQUNuQixPQUFPLE9BQU87d0JBQ1osQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBTSxJQUFZLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxTQUFTLENBQUM7d0JBQzFGLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7Z0JBQzdCLENBQUM7cUJBQU0sQ0FBQztvQkFDTixPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztnQkFDcEMsQ0FBQztZQUNILENBQUM7aUJBQU0sQ0FBQztnQkFDTixPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztZQUNuQyxDQUFDO1FBQ0gsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ1osQ0FBQzs4R0FoQlUsbUJBQW1COzRHQUFuQixtQkFBbUI7OzJGQUFuQixtQkFBbUI7a0JBSi9CLElBQUk7bUJBQUM7b0JBQ0osSUFBSSxFQUFFLHFCQUFxQjtvQkFDM0IsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZmlsdGVyLCBmaW5kLCBpbmNsdWRlcywgaXNFcXVhbCwgaXNPYmplY3QgfSBmcm9tICdsb2Rhc2gvZnAnO1xuXG5AUGlwZSh7XG4gIG5hbWU6ICdseEZpbHRlckJ5U2VsZWN0aW9uJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBGaWx0ZXJTZWxlY3Rpb25QaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gIHRyYW5zZm9ybShpdGVtczogYW55W10gfCBudWxsIHwgdW5kZWZpbmVkLCBzZWxlY3Rpb246IGFueSwgaXRlbUtleT86IHN0cmluZyk6IGFueVtdIHtcbiAgICBjb25zdCBpc0FycmF5ID0gQXJyYXkuaXNBcnJheShzZWxlY3Rpb24pO1xuICAgIHJldHVybiBmaWx0ZXIoKGl0ZW0pID0+IHtcbiAgICAgIGlmIChpc0FycmF5KSB7XG4gICAgICAgIGlmIChpc09iamVjdChpdGVtKSkge1xuICAgICAgICAgIHJldHVybiBpdGVtS2V5XG4gICAgICAgICAgICA/ICFmaW5kKChzZWxlY3RlZEl0ZW0pID0+IHNlbGVjdGVkSXRlbT8uW2l0ZW1LZXldID09PSAoaXRlbSBhcyBhbnkpPy5baXRlbUtleV0sIHNlbGVjdGlvbilcbiAgICAgICAgICAgIDogIWZpbmQoaXRlbSwgc2VsZWN0aW9uKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gIWluY2x1ZGVzKGl0ZW0sIHNlbGVjdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiAhaXNFcXVhbChpdGVtLCBzZWxlY3Rpb24pO1xuICAgICAgfVxuICAgIH0sIGl0ZW1zKTtcbiAgfVxufVxuIl19
@@ -1,29 +0,0 @@
1
- import { Pipe } from '@angular/core';
2
- import { filter, toLower } from 'lodash/fp';
3
- import * as i0 from "@angular/core";
4
- export class FilterTermPipe {
5
- transform(items, options) {
6
- if (items === null) {
7
- return [];
8
- }
9
- if (options.term) {
10
- return filter((item) => {
11
- const value = options.key ? item[options.key] : item;
12
- return toLower(value).indexOf(toLower(options.term)) > -1;
13
- }, items);
14
- }
15
- else {
16
- return items;
17
- }
18
- }
19
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: FilterTermPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
20
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.8", ngImport: i0, type: FilterTermPipe, isStandalone: true, name: "lxFilterByTerm" }); }
21
- }
22
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: FilterTermPipe, decorators: [{
23
- type: Pipe,
24
- args: [{
25
- name: 'lxFilterByTerm',
26
- standalone: true
27
- }]
28
- }] });
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLXRlcm0ucGlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9zcmMvbGliL2Zvcm1zLXVpL3BpcGVzL2ZpbHRlci10ZXJtLnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7QUFDcEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7O0FBTTVDLE1BQU0sT0FBTyxjQUFjO0lBQ3pCLFNBQVMsQ0FBQyxLQUFtQixFQUFFLE9BQStDO1FBQzVFLElBQUksS0FBSyxLQUFLLElBQUksRUFBRSxDQUFDO1lBQ25CLE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQztRQUNELElBQUksT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2pCLE9BQU8sTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7Z0JBQ3JCLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFDckQsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUM3RCxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDWixDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztJQUNILENBQUM7OEdBYlUsY0FBYzs0R0FBZCxjQUFjOzsyRkFBZCxjQUFjO2tCQUoxQixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxnQkFBZ0I7b0JBQ3RCLFVBQVUsRUFBRSxJQUFJO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBpcGUsIFBpcGVUcmFuc2Zvcm0gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZpbHRlciwgdG9Mb3dlciB9IGZyb20gJ2xvZGFzaC9mcCc7XG5cbkBQaXBlKHtcbiAgbmFtZTogJ2x4RmlsdGVyQnlUZXJtJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBGaWx0ZXJUZXJtUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICB0cmFuc2Zvcm0oaXRlbXM6IGFueVtdIHwgbnVsbCwgb3B0aW9uczogeyB0ZXJtPzogc3RyaW5nIHwgbnVsbDsga2V5Pzogc3RyaW5nIH0pOiBhbnlbXSB7XG4gICAgaWYgKGl0ZW1zID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIGlmIChvcHRpb25zLnRlcm0pIHtcbiAgICAgIHJldHVybiBmaWx0ZXIoKGl0ZW0pID0+IHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBvcHRpb25zLmtleSA/IGl0ZW1bb3B0aW9ucy5rZXldIDogaXRlbTtcbiAgICAgICAgcmV0dXJuIHRvTG93ZXIodmFsdWUpLmluZGV4T2YodG9Mb3dlcihvcHRpb25zLnRlcm0hKSkgPiAtMTtcbiAgICAgIH0sIGl0ZW1zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGl0ZW1zO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -1,66 +0,0 @@
1
- import { Inject, Pipe } from '@angular/core';
2
- import { map } from 'rxjs/operators';
3
- import { LOCALE_FN } from '../../core-ui/core-ui.constants';
4
- import { CURRENCY_SYMBOL_MAP } from '../components/currency/currency-symbol-map.constant';
5
- import * as i0 from "@angular/core";
6
- /**
7
- * Reformats numbers into a short format.
8
- * @example {{ 1000 | lxFormatNumber | async }} prints 1K
9
- *
10
- * If the parameter currency is set, a currency sign is inserted based on the value and the current locale.
11
- * In this case, the pipe must be used with an innerHtml attribute.
12
- * @example [innerHtml]="1000 | lxFormatNumber: 'USD' | async" prints $1K
13
- */
14
- export class FormatNumberPipe {
15
- constructor(getLocale) {
16
- this.getLocale = getLocale;
17
- }
18
- transform(number, currency) {
19
- const locale$ = this.getLocale();
20
- return locale$.pipe(map((locale) => {
21
- if (number === null || number === undefined) {
22
- return null;
23
- }
24
- const options = {
25
- notation: 'compact',
26
- compactDisplay: 'short'
27
- };
28
- if (currency) {
29
- try {
30
- const currencyOptions = { ...options, currency, style: 'currency' };
31
- const formatedNumberWithCurrency = new Intl.NumberFormat(locale, currencyOptions).format(number);
32
- return this.getFormatedCurrency(formatedNumberWithCurrency, currency);
33
- }
34
- catch (_error) {
35
- console.warn(`FormatNumberPipe: Invalid currency code: ${currency}`);
36
- return new Intl.NumberFormat(locale, options).format(number);
37
- }
38
- }
39
- return new Intl.NumberFormat(locale, options).format(number);
40
- }));
41
- }
42
- /**
43
- * Use custom currency symbol, when the currency in the formated number doesn't match the
44
- * symbol in the CURRENCY_SYMBOL_MAP.
45
- */
46
- getFormatedCurrency(formatedNumberWitCurrency, currency) {
47
- const currencyMapping = CURRENCY_SYMBOL_MAP[currency];
48
- if (currencyMapping && currencyMapping !== currency && !formatedNumberWitCurrency.includes(currencyMapping)) {
49
- return formatedNumberWitCurrency.replace(currency, currencyMapping);
50
- }
51
- return formatedNumberWitCurrency;
52
- }
53
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: FormatNumberPipe, deps: [{ token: LOCALE_FN }], target: i0.ɵɵFactoryTarget.Pipe }); }
54
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.8", ngImport: i0, type: FormatNumberPipe, isStandalone: true, name: "lxFormatNumber" }); }
55
- }
56
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.8", ngImport: i0, type: FormatNumberPipe, decorators: [{
57
- type: Pipe,
58
- args: [{
59
- name: 'lxFormatNumber',
60
- standalone: true
61
- }]
62
- }], ctorParameters: () => [{ type: Function, decorators: [{
63
- type: Inject,
64
- args: [LOCALE_FN]
65
- }] }] });
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0LW51bWJlci5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3NyYy9saWIvZm9ybXMtdWkvcGlwZXMvZm9ybWF0LW51bWJlci5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUU1RCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzVELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDOztBQUUxRjs7Ozs7OztHQU9HO0FBS0gsTUFBTSxPQUFPLGdCQUFnQjtJQUMzQixZQUF1QyxTQUFtQjtRQUFuQixjQUFTLEdBQVQsU0FBUyxDQUFVO0lBQUcsQ0FBQztJQUU5RCxTQUFTLENBQUMsTUFBaUMsRUFBRSxRQUFpQjtRQUM1RCxNQUFNLE9BQU8sR0FBdUIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3JELE9BQU8sT0FBTyxDQUFDLElBQUksQ0FDakIsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDYixJQUFJLE1BQU0sS0FBSyxJQUFJLElBQUksTUFBTSxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUM1QyxPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7WUFDRCxNQUFNLE9BQU8sR0FBUTtnQkFDbkIsUUFBUSxFQUFFLFNBQVM7Z0JBQ25CLGNBQWMsRUFBRSxPQUFPO2FBQ3hCLENBQUM7WUFDRixJQUFJLFFBQVEsRUFBRSxDQUFDO2dCQUNiLElBQUksQ0FBQztvQkFDSCxNQUFNLGVBQWUsR0FBRyxFQUFFLEdBQUcsT0FBTyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLENBQUM7b0JBQ3BFLE1BQU0sMEJBQTBCLEdBQUcsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxlQUFlLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQ2pHLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLDBCQUEwQixFQUFFLFFBQVEsQ0FBQyxDQUFDO2dCQUN4RSxDQUFDO2dCQUFDLE9BQU8sTUFBTSxFQUFFLENBQUM7b0JBQ2hCLE9BQU8sQ0FBQyxJQUFJLENBQUMsNENBQTRDLFFBQVEsRUFBRSxDQUFDLENBQUM7b0JBQ3JFLE9BQU8sSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQy9ELENBQUM7WUFDSCxDQUFDO1lBQ0QsT0FBTyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMvRCxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7T0FHRztJQUNLLG1CQUFtQixDQUFDLHlCQUFpQyxFQUFFLFFBQWdCO1FBQzdFLE1BQU0sZUFBZSxHQUFHLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3RELElBQUksZUFBZSxJQUFJLGVBQWUsS0FBSyxRQUFRLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQztZQUM1RyxPQUFPLHlCQUF5QixDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFDdEUsQ0FBQztRQUNELE9BQU8seUJBQXlCLENBQUM7SUFDbkMsQ0FBQzs4R0F2Q1UsZ0JBQWdCLGtCQUNQLFNBQVM7NEdBRGxCLGdCQUFnQjs7MkZBQWhCLGdCQUFnQjtrQkFKNUIsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsZ0JBQWdCO29CQUN0QixVQUFVLEVBQUUsSUFBSTtpQkFDakI7OzBCQUVjLE1BQU07MkJBQUMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgTE9DQUxFX0ZOIH0gZnJvbSAnLi4vLi4vY29yZS11aS9jb3JlLXVpLmNvbnN0YW50cyc7XG5pbXBvcnQgeyBDVVJSRU5DWV9TWU1CT0xfTUFQIH0gZnJvbSAnLi4vY29tcG9uZW50cy9jdXJyZW5jeS9jdXJyZW5jeS1zeW1ib2wtbWFwLmNvbnN0YW50JztcblxuLyoqXG4gKiBSZWZvcm1hdHMgbnVtYmVycyBpbnRvIGEgc2hvcnQgZm9ybWF0LlxuICogQGV4YW1wbGUge3sgMTAwMCB8IGx4Rm9ybWF0TnVtYmVyIHwgYXN5bmMgfX0gcHJpbnRzIDFLXG4gKlxuICogSWYgdGhlIHBhcmFtZXRlciBjdXJyZW5jeSBpcyBzZXQsIGEgY3VycmVuY3kgc2lnbiBpcyBpbnNlcnRlZCBiYXNlZCBvbiB0aGUgdmFsdWUgYW5kIHRoZSBjdXJyZW50IGxvY2FsZS5cbiAqIEluIHRoaXMgY2FzZSwgdGhlIHBpcGUgbXVzdCBiZSB1c2VkIHdpdGggYW4gaW5uZXJIdG1sIGF0dHJpYnV0ZS5cbiAqIEBleGFtcGxlIFtpbm5lckh0bWxdPVwiMTAwMCB8IGx4Rm9ybWF0TnVtYmVyOiAnVVNEJyB8IGFzeW5jXCIgcHJpbnRzICQxS1xuICovXG5AUGlwZSh7XG4gIG5hbWU6ICdseEZvcm1hdE51bWJlcicsXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgRm9ybWF0TnVtYmVyUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICBjb25zdHJ1Y3RvcihASW5qZWN0KExPQ0FMRV9GTikgcHJpdmF0ZSBnZXRMb2NhbGU6IEZ1bmN0aW9uKSB7fVxuXG4gIHRyYW5zZm9ybShudW1iZXI6IG51bWJlciB8IHVuZGVmaW5lZCB8IG51bGwsIGN1cnJlbmN5Pzogc3RyaW5nKTogT2JzZXJ2YWJsZTxzdHJpbmcgfCBudWxsPiB7XG4gICAgY29uc3QgbG9jYWxlJDogT2JzZXJ2YWJsZTxzdHJpbmc+ID0gdGhpcy5nZXRMb2NhbGUoKTtcbiAgICByZXR1cm4gbG9jYWxlJC5waXBlKFxuICAgICAgbWFwKChsb2NhbGUpID0+IHtcbiAgICAgICAgaWYgKG51bWJlciA9PT0gbnVsbCB8fCBudW1iZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG9wdGlvbnM6IGFueSA9IHtcbiAgICAgICAgICBub3RhdGlvbjogJ2NvbXBhY3QnLFxuICAgICAgICAgIGNvbXBhY3REaXNwbGF5OiAnc2hvcnQnXG4gICAgICAgIH07XG4gICAgICAgIGlmIChjdXJyZW5jeSkge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW5jeU9wdGlvbnMgPSB7IC4uLm9wdGlvbnMsIGN1cnJlbmN5LCBzdHlsZTogJ2N1cnJlbmN5JyB9O1xuICAgICAgICAgICAgY29uc3QgZm9ybWF0ZWROdW1iZXJXaXRoQ3VycmVuY3kgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQobG9jYWxlLCBjdXJyZW5jeU9wdGlvbnMpLmZvcm1hdChudW1iZXIpO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Rm9ybWF0ZWRDdXJyZW5jeShmb3JtYXRlZE51bWJlcldpdGhDdXJyZW5jeSwgY3VycmVuY3kpO1xuICAgICAgICAgIH0gY2F0Y2ggKF9lcnJvcikge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKGBGb3JtYXROdW1iZXJQaXBlOiBJbnZhbGlkIGN1cnJlbmN5IGNvZGU6ICR7Y3VycmVuY3l9YCk7XG4gICAgICAgICAgICByZXR1cm4gbmV3IEludGwuTnVtYmVyRm9ybWF0KGxvY2FsZSwgb3B0aW9ucykuZm9ybWF0KG51bWJlcik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgSW50bC5OdW1iZXJGb3JtYXQobG9jYWxlLCBvcHRpb25zKS5mb3JtYXQobnVtYmVyKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2UgY3VzdG9tIGN1cnJlbmN5IHN5bWJvbCwgd2hlbiB0aGUgY3VycmVuY3kgaW4gdGhlIGZvcm1hdGVkIG51bWJlciBkb2Vzbid0IG1hdGNoIHRoZVxuICAgKiBzeW1ib2wgaW4gdGhlIENVUlJFTkNZX1NZTUJPTF9NQVAuXG4gICAqL1xuICBwcml2YXRlIGdldEZvcm1hdGVkQ3VycmVuY3koZm9ybWF0ZWROdW1iZXJXaXRDdXJyZW5jeTogc3RyaW5nLCBjdXJyZW5jeTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBjdXJyZW5jeU1hcHBpbmcgPSBDVVJSRU5DWV9TWU1CT0xfTUFQW2N1cnJlbmN5XTtcbiAgICBpZiAoY3VycmVuY3lNYXBwaW5nICYmIGN1cnJlbmN5TWFwcGluZyAhPT0gY3VycmVuY3kgJiYgIWZvcm1hdGVkTnVtYmVyV2l0Q3VycmVuY3kuaW5jbHVkZXMoY3VycmVuY3lNYXBwaW5nKSkge1xuICAgICAgcmV0dXJuIGZvcm1hdGVkTnVtYmVyV2l0Q3VycmVuY3kucmVwbGFjZShjdXJyZW5jeSwgY3VycmVuY3lNYXBwaW5nKTtcbiAgICB9XG4gICAgcmV0dXJuIGZvcm1hdGVkTnVtYmVyV2l0Q3VycmVuY3k7XG4gIH1cbn1cbiJdfQ==
@@ -1,26 +0,0 @@
1
- import { formatDate } from '@angular/common';
2
- /**
3
- * Due to limitations of the native html datepicker this validator is needed:
4
- * In the datepicker the min and max values only apply if the date is altered e.g. via scrolling.
5
- * It is still possible to manually input a value lower or higher than min and max value.
6
- */
7
- export function ValidateDateInForeseeableFuture(control) {
8
- // matches yyyy-mm-dd
9
- const dateRegex = /^\d{4}\-(0[1-9]|1[012])\-(0[1-9]|[12][0-9]|3[01])$/;
10
- if (control.value && dateRegex.test(control.value)) {
11
- const today = formatDate(new Date(), 'yyyy-MM-dd', 'en');
12
- const maxDate = '2999-12-31';
13
- if (control.value < today || control.value > maxDate) {
14
- return {
15
- dateInForseeableFuture: {
16
- valid: false
17
- }
18
- };
19
- }
20
- else {
21
- return null;
22
- }
23
- }
24
- return null;
25
- }
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1pbi1mb3Jlc2VlYWJsZS1mdXR1cmUudmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3NyYy9saWIvZm9ybXMtdWkvdmFsaWRhdG9ycy9kYXRlLWluLWZvcmVzZWVhYmxlLWZ1dHVyZS52YWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRzdDOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsK0JBQStCLENBQUMsT0FBd0I7SUFDdEUscUJBQXFCO0lBQ3JCLE1BQU0sU0FBUyxHQUFHLG9EQUFvRCxDQUFDO0lBRXZFLElBQUksT0FBTyxDQUFDLEtBQUssSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ25ELE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyxJQUFJLElBQUksRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUV6RCxNQUFNLE9BQU8sR0FBRyxZQUFZLENBQUM7UUFDN0IsSUFBSSxPQUFPLENBQUMsS0FBSyxHQUFHLEtBQUssSUFBSSxPQUFPLENBQUMsS0FBSyxHQUFHLE9BQU8sRUFBRSxDQUFDO1lBQ3JELE9BQU87Z0JBQ0wsc0JBQXNCLEVBQUU7b0JBQ3RCLEtBQUssRUFBRSxLQUFLO2lCQUNiO2FBQ0YsQ0FBQztRQUNKLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZvcm1hdERhdGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG4vKipcbiAqIER1ZSB0byBsaW1pdGF0aW9ucyBvZiB0aGUgbmF0aXZlIGh0bWwgZGF0ZXBpY2tlciB0aGlzIHZhbGlkYXRvciBpcyBuZWVkZWQ6XG4gKiBJbiB0aGUgZGF0ZXBpY2tlciB0aGUgbWluIGFuZCBtYXggdmFsdWVzIG9ubHkgYXBwbHkgaWYgdGhlIGRhdGUgaXMgYWx0ZXJlZCBlLmcuIHZpYSBzY3JvbGxpbmcuXG4gKiBJdCBpcyBzdGlsbCBwb3NzaWJsZSB0byBtYW51YWxseSBpbnB1dCBhIHZhbHVlIGxvd2VyIG9yIGhpZ2hlciB0aGFuIG1pbiBhbmQgbWF4IHZhbHVlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gVmFsaWRhdGVEYXRlSW5Gb3Jlc2VlYWJsZUZ1dHVyZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpIHtcbiAgLy8gbWF0Y2hlcyB5eXl5LW1tLWRkXG4gIGNvbnN0IGRhdGVSZWdleCA9IC9eXFxkezR9XFwtKDBbMS05XXwxWzAxMl0pXFwtKDBbMS05XXxbMTJdWzAtOV18M1swMV0pJC87XG5cbiAgaWYgKGNvbnRyb2wudmFsdWUgJiYgZGF0ZVJlZ2V4LnRlc3QoY29udHJvbC52YWx1ZSkpIHtcbiAgICBjb25zdCB0b2RheSA9IGZvcm1hdERhdGUobmV3IERhdGUoKSwgJ3l5eXktTU0tZGQnLCAnZW4nKTtcblxuICAgIGNvbnN0IG1heERhdGUgPSAnMjk5OS0xMi0zMSc7XG4gICAgaWYgKGNvbnRyb2wudmFsdWUgPCB0b2RheSB8fCBjb250cm9sLnZhbHVlID4gbWF4RGF0ZSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGF0ZUluRm9yc2VlYWJsZUZ1dHVyZToge1xuICAgICAgICAgIHZhbGlkOiBmYWxzZVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG4iXX0=
@@ -1,30 +0,0 @@
1
- import { map, of } from 'rxjs';
2
- function stringIsInArray(array, stringToFind, valueMapFunction) {
3
- const valueToFind = valueMapFunction ? valueMapFunction(stringToFind).toLocaleLowerCase() : stringToFind.toLowerCase();
4
- return array.map((item) => item.toLocaleLowerCase()).indexOf(valueToFind) > -1;
5
- }
6
- /**
7
- * Validates that a string is not inside an array of strings
8
- */
9
- export function ValidateStringNotInArray(array, valueMapFunction, validatorName = 'stringNotInArray') {
10
- return function (control) {
11
- if (!control.value) {
12
- return null;
13
- }
14
- if (stringIsInArray(array, control.value, valueMapFunction)) {
15
- return {
16
- [validatorName]: true
17
- };
18
- }
19
- return null;
20
- };
21
- }
22
- export function ValidateStringNotInArrayAsync(array$, valueMapFunction, validatorName = 'stringNotInArrayAsync') {
23
- return function (control) {
24
- if (!control.value) {
25
- return of(null);
26
- }
27
- return array$.pipe(map((array) => ValidateStringNotInArray(array, valueMapFunction, validatorName)(control)));
28
- };
29
- }
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nLW5vdC1pbi1hcnJheS52YWxpZGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvc3JjL2xpYi9mb3Jtcy11aS92YWxpZGF0b3JzL3N0cmluZy1ub3QtaW4tYXJyYXkudmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBYyxHQUFHLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTNDLFNBQVMsZUFBZSxDQUFDLEtBQWUsRUFBRSxZQUFvQixFQUFFLGdCQUE0QztJQUMxRyxNQUFNLFdBQVcsR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3ZILE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDakYsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLHdCQUF3QixDQUN0QyxLQUFlLEVBQ2YsZ0JBQTRDLEVBQzVDLGdCQUF3QixrQkFBa0I7SUFFMUMsT0FBTyxVQUFVLE9BQXdCO1FBQ3ZDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDbkIsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQ0QsSUFBSSxlQUFlLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLENBQUMsRUFBRSxDQUFDO1lBQzVELE9BQU87Z0JBQ0wsQ0FBQyxhQUFhLENBQUMsRUFBRSxJQUFJO2FBQ3RCLENBQUM7UUFDSixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxVQUFVLDZCQUE2QixDQUMzQyxNQUE0QixFQUM1QixnQkFBNEMsRUFDNUMsZ0JBQXdCLHVCQUF1QjtJQUUvQyxPQUFPLFVBQVUsT0FBd0I7UUFDdkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNuQixPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQixDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsd0JBQXdCLENBQUMsS0FBSyxFQUFFLGdCQUFnQixFQUFFLGFBQWEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoSCxDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBBc3luY1ZhbGlkYXRvckZuLCBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE9ic2VydmFibGUsIG1hcCwgb2YgfSBmcm9tICdyeGpzJztcblxuZnVuY3Rpb24gc3RyaW5nSXNJbkFycmF5KGFycmF5OiBzdHJpbmdbXSwgc3RyaW5nVG9GaW5kOiBzdHJpbmcsIHZhbHVlTWFwRnVuY3Rpb24/OiAodmFsdWU6IHN0cmluZykgPT4gc3RyaW5nKSB7XG4gIGNvbnN0IHZhbHVlVG9GaW5kID0gdmFsdWVNYXBGdW5jdGlvbiA/IHZhbHVlTWFwRnVuY3Rpb24oc3RyaW5nVG9GaW5kKS50b0xvY2FsZUxvd2VyQ2FzZSgpIDogc3RyaW5nVG9GaW5kLnRvTG93ZXJDYXNlKCk7XG4gIHJldHVybiBhcnJheS5tYXAoKGl0ZW0pID0+IGl0ZW0udG9Mb2NhbGVMb3dlckNhc2UoKSkuaW5kZXhPZih2YWx1ZVRvRmluZCkgPiAtMTtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZXMgdGhhdCBhIHN0cmluZyBpcyBub3QgaW5zaWRlIGFuIGFycmF5IG9mIHN0cmluZ3NcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFZhbGlkYXRlU3RyaW5nTm90SW5BcnJheShcbiAgYXJyYXk6IHN0cmluZ1tdLFxuICB2YWx1ZU1hcEZ1bmN0aW9uPzogKHZhbHVlOiBzdHJpbmcpID0+IHN0cmluZyxcbiAgdmFsaWRhdG9yTmFtZTogc3RyaW5nID0gJ3N0cmluZ05vdEluQXJyYXknXG4pOiBWYWxpZGF0b3JGbiB7XG4gIHJldHVybiBmdW5jdGlvbiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKSB7XG4gICAgaWYgKCFjb250cm9sLnZhbHVlKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgaWYgKHN0cmluZ0lzSW5BcnJheShhcnJheSwgY29udHJvbC52YWx1ZSwgdmFsdWVNYXBGdW5jdGlvbikpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIFt2YWxpZGF0b3JOYW1lXTogdHJ1ZVxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBWYWxpZGF0ZVN0cmluZ05vdEluQXJyYXlBc3luYyhcbiAgYXJyYXkkOiBPYnNlcnZhYmxlPHN0cmluZ1tdPixcbiAgdmFsdWVNYXBGdW5jdGlvbj86ICh2YWx1ZTogc3RyaW5nKSA9PiBzdHJpbmcsXG4gIHZhbGlkYXRvck5hbWU6IHN0cmluZyA9ICdzdHJpbmdOb3RJbkFycmF5QXN5bmMnXG4pOiBBc3luY1ZhbGlkYXRvckZuIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpIHtcbiAgICBpZiAoIWNvbnRyb2wudmFsdWUpIHtcbiAgICAgIHJldHVybiBvZihudWxsKTtcbiAgICB9XG4gICAgcmV0dXJuIGFycmF5JC5waXBlKG1hcCgoYXJyYXkpID0+IFZhbGlkYXRlU3RyaW5nTm90SW5BcnJheShhcnJheSwgdmFsdWVNYXBGdW5jdGlvbiwgdmFsaWRhdG9yTmFtZSkoY29udHJvbCkpKTtcbiAgfTtcbn1cbiJdfQ==