@festo-ui/angular 8.2.0-dev.617 → 8.2.0-dev.620

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 (100) hide show
  1. package/css/bundle.css +1 -1
  2. package/css/popover.css +1 -1
  3. package/fesm2022/festo-ui-angular.mjs +514 -260
  4. package/fesm2022/festo-ui-angular.mjs.map +1 -1
  5. package/lib/components/components.module.d.ts +3 -1
  6. package/lib/components/overlay/overlay-content/overlay-content.component.d.ts +5 -0
  7. package/lib/components/overlay/overlay-outlet.directive.d.ts +64 -0
  8. package/lib/components/popovers/popover.defaults.d.ts +0 -18
  9. package/lib/components/popovers/popover.models.d.ts +2 -1
  10. package/lib/components/popovers/tooltip/tooltip.directive.d.ts +7 -0
  11. package/lib/forms/value-accessor-base.d.ts +1 -1
  12. package/package.json +9 -11
  13. package/public-api.d.ts +2 -0
  14. package/scss/base/icons-svg.scss +1 -1
  15. package/scss/base/image-gallery.scss +2 -2
  16. package/scss/base/popover.scss +2 -2
  17. package/scss/base/styles.scss +4 -4
  18. package/esm2022/festo-ui-angular.mjs +0 -5
  19. package/esm2022/lib/components/accordion/accordion-header/accordion-header.component.mjs +0 -11
  20. package/esm2022/lib/components/accordion/accordion-item/accordion-item-body/accordion-item-body.component.mjs +0 -15
  21. package/esm2022/lib/components/accordion/accordion-item/accordion-item-header/accordion-item-header.component.mjs +0 -28
  22. package/esm2022/lib/components/accordion/accordion-item/accordion-item.component.mjs +0 -148
  23. package/esm2022/lib/components/accordion/accordion.component.mjs +0 -59
  24. package/esm2022/lib/components/accordion/index.mjs +0 -6
  25. package/esm2022/lib/components/bottom-sheet/bottom-sheet.component.mjs +0 -97
  26. package/esm2022/lib/components/breadcrumb/breadcrumb.component.mjs +0 -26
  27. package/esm2022/lib/components/buttons/button/button.component.mjs +0 -48
  28. package/esm2022/lib/components/buttons/link-button/link-button.component.mjs +0 -34
  29. package/esm2022/lib/components/chips/chip/chip.component.mjs +0 -38
  30. package/esm2022/lib/components/chips/chip-container/chip-container.component.mjs +0 -17
  31. package/esm2022/lib/components/components.module.mjs +0 -212
  32. package/esm2022/lib/components/loading-indicator/loading-indicator.component.mjs +0 -17
  33. package/esm2022/lib/components/mobile-flyout/mobile-flyout-item/mobile-flyout-item.component.mjs +0 -39
  34. package/esm2022/lib/components/mobile-flyout/mobile-flyout-page/mobile-flyout-page.component.mjs +0 -65
  35. package/esm2022/lib/components/mobile-flyout/mobile-flyout.component.mjs +0 -69
  36. package/esm2022/lib/components/pagination/pagination.component.mjs +0 -57
  37. package/esm2022/lib/components/popovers/legend/legend.component.mjs +0 -42
  38. package/esm2022/lib/components/popovers/legend/legend.directive.mjs +0 -31
  39. package/esm2022/lib/components/popovers/popover/popover.component.mjs +0 -31
  40. package/esm2022/lib/components/popovers/popover-content/popover-content.component.mjs +0 -80
  41. package/esm2022/lib/components/popovers/popover-content/popover-content.directive.mjs +0 -39
  42. package/esm2022/lib/components/popovers/popover-menu/popover-menu.component.mjs +0 -67
  43. package/esm2022/lib/components/popovers/popover-ref.mjs +0 -25
  44. package/esm2022/lib/components/popovers/popover.defaults.mjs +0 -59
  45. package/esm2022/lib/components/popovers/popover.models.mjs +0 -7
  46. package/esm2022/lib/components/popovers/popover.service.mjs +0 -140
  47. package/esm2022/lib/components/popovers/tooltip/tooltip.directive.mjs +0 -101
  48. package/esm2022/lib/components/progress/progress.component.mjs +0 -22
  49. package/esm2022/lib/components/scroll/index.mjs +0 -2
  50. package/esm2022/lib/components/scroll/scrollable.directive.mjs +0 -75
  51. package/esm2022/lib/components/search-input/search-input.component.mjs +0 -182
  52. package/esm2022/lib/components/sidebar-overlay/sidebar-overlay.component.mjs +0 -59
  53. package/esm2022/lib/components/snackbar/snackbar-container.component.mjs +0 -21
  54. package/esm2022/lib/components/snackbar/snackbar-container.directive.mjs +0 -80
  55. package/esm2022/lib/components/snackbar/snackbar.component.mjs +0 -81
  56. package/esm2022/lib/components/snackbar/snackbar.models.mjs +0 -2
  57. package/esm2022/lib/components/snackbar/snackbar.module.mjs +0 -24
  58. package/esm2022/lib/components/snackbar/snackbar.service.mjs +0 -23
  59. package/esm2022/lib/components/stepper-horizontal/step-horizontal/step-horizontal.component.mjs +0 -19
  60. package/esm2022/lib/components/stepper-horizontal/stepper-horizontal.component.mjs +0 -52
  61. package/esm2022/lib/components/stepper-vertical/step-vertical/step-vertical.component.mjs +0 -57
  62. package/esm2022/lib/components/stepper-vertical/stepper-vertical.component.mjs +0 -54
  63. package/esm2022/lib/components/table-header-cell/table-header-cell.directive.mjs +0 -60
  64. package/esm2022/lib/components/tabs/tab-pane/tab-pane.component.mjs +0 -34
  65. package/esm2022/lib/components/tabs/tabs.component.mjs +0 -459
  66. package/esm2022/lib/directives/click-outside.directive.mjs +0 -29
  67. package/esm2022/lib/festo-angular.module.mjs +0 -21
  68. package/esm2022/lib/forms/checkbox/checkbox.component.mjs +0 -154
  69. package/esm2022/lib/forms/color-indicator/color-indicator.component.mjs +0 -88
  70. package/esm2022/lib/forms/color-picker/color-helper.mjs +0 -129
  71. package/esm2022/lib/forms/color-picker/color-picker.component.mjs +0 -292
  72. package/esm2022/lib/forms/date-picker/date-picker.component.mjs +0 -205
  73. package/esm2022/lib/forms/date-range-picker/date-range-picker.component.mjs +0 -231
  74. package/esm2022/lib/forms/flatpickr/flatpickr.component.mjs +0 -55
  75. package/esm2022/lib/forms/forms.module.mjs +0 -132
  76. package/esm2022/lib/forms/radio/radio.component.mjs +0 -349
  77. package/esm2022/lib/forms/segment/segment-control/segment-control.component.mjs +0 -65
  78. package/esm2022/lib/forms/segment/segment.component.mjs +0 -139
  79. package/esm2022/lib/forms/select/chip-text.pipe.mjs +0 -39
  80. package/esm2022/lib/forms/select/select-option/select-option.component.mjs +0 -23
  81. package/esm2022/lib/forms/select/select.component.mjs +0 -273
  82. package/esm2022/lib/forms/slider/slider.component.mjs +0 -117
  83. package/esm2022/lib/forms/switch/switch.component.mjs +0 -121
  84. package/esm2022/lib/forms/text-area/text-area.component.mjs +0 -187
  85. package/esm2022/lib/forms/text-editor/text-editor.component.mjs +0 -307
  86. package/esm2022/lib/forms/text-input/text-input.component.mjs +0 -208
  87. package/esm2022/lib/forms/time-picker/time-picker-dropdown/time-picker-dropdown.component.mjs +0 -107
  88. package/esm2022/lib/forms/time-picker/time-picker.component.mjs +0 -204
  89. package/esm2022/lib/forms/unique-selection-dispatcher.mjs +0 -41
  90. package/esm2022/lib/forms/value-accessor-base.mjs +0 -41
  91. package/esm2022/lib/modals/alert/alert.component.mjs +0 -55
  92. package/esm2022/lib/modals/confirm/confirm.component.mjs +0 -56
  93. package/esm2022/lib/modals/custom-modal/custom-modal.component.mjs +0 -88
  94. package/esm2022/lib/modals/image-gallery/image-gallery.component.mjs +0 -80
  95. package/esm2022/lib/modals/index.mjs +0 -2
  96. package/esm2022/lib/modals/modal.service.mjs +0 -118
  97. package/esm2022/lib/modals/modals.module.mjs +0 -27
  98. package/esm2022/lib/modals/prompt/prompt.component.mjs +0 -114
  99. package/esm2022/lib/pipes/safe-html.pipe.mjs +0 -21
  100. package/esm2022/public-api.mjs +0 -66
@@ -1,139 +0,0 @@
1
- import { Component, ContentChildren, Input, ViewChild, ViewContainerRef, Output, EventEmitter, forwardRef, ViewEncapsulation, SimpleChange } from '@angular/core';
2
- import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
- import { Subject } from 'rxjs';
4
- import { takeUntil } from 'rxjs/operators';
5
- import { FngSegmentControlComponent } from './segment-control/segment-control.component';
6
- import { CommonModule } from '@angular/common';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "@angular/common";
9
- export class FngSegmentComponent {
10
- writeValue(value) {
11
- this.innerValue = value;
12
- this.updateCheckState();
13
- }
14
- updateCheckState() {
15
- if (this.controls) {
16
- this.controls.forEach(component => {
17
- component.checked = component.value === this.value;
18
- });
19
- }
20
- }
21
- registerOnChange(fn) {
22
- this.changed.push(fn);
23
- }
24
- registerOnTouched(fn) {
25
- this.touched.push(fn);
26
- }
27
- set value(value) {
28
- if (this.innerValue !== value) {
29
- this.innerValue = value;
30
- this.changed.forEach(f => {
31
- this.fngChange.emit(this.innerValue);
32
- this.change.emit(this.innerValue);
33
- return f(value);
34
- });
35
- }
36
- }
37
- get value() {
38
- return this.innerValue;
39
- }
40
- constructor(cd) {
41
- this.cd = cd;
42
- this.changed = new Array();
43
- this.touched = new Array();
44
- this.complete = new Subject();
45
- this.defaultConfig = {
46
- outline: true,
47
- iconOnly: true
48
- };
49
- this.useIcon = false;
50
- this.useIconAndText = false;
51
- this.legend = '';
52
- this.config = this.defaultConfig;
53
- this.fngChange = new EventEmitter();
54
- this.change = new EventEmitter();
55
- this.id = (Math.random() * Date.now()).toString().replace('.', '-');
56
- }
57
- ngOnChanges(changes) {
58
- if (changes['config']?.currentValue) {
59
- this.config = Object.assign({}, this.defaultConfig, changes['config'].currentValue);
60
- }
61
- }
62
- ngAfterContentInit() {
63
- if (this.controls?.length) {
64
- this.controls.forEach(component => {
65
- component.change.pipe(takeUntil(this.complete)).subscribe(val => {
66
- this.value = val;
67
- this.updateCheckState();
68
- });
69
- if (component.icon != null && this.config.iconOnly === true) {
70
- this.useIcon = true;
71
- component.ngOnChanges({
72
- iconOnly: new SimpleChange(null, true, false)
73
- });
74
- }
75
- if (component.icon != null && this.config.iconOnly !== true) {
76
- this.useIconAndText = true;
77
- component.ngOnChanges({
78
- iconOnly: new SimpleChange(null, false, false)
79
- });
80
- }
81
- });
82
- }
83
- }
84
- ngAfterViewInit() {
85
- this.html();
86
- this.cd.detectChanges();
87
- }
88
- ngOnDestroy() {
89
- this.complete.next(true);
90
- this.complete.unsubscribe();
91
- }
92
- html() {
93
- if (this.controls) {
94
- this.controls.forEach(component => {
95
- if (component.view) {
96
- if (!component.name) {
97
- component.name = this.id;
98
- }
99
- this.vc?.insert(component.view);
100
- }
101
- });
102
- }
103
- }
104
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: FngSegmentComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
105
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.2", type: FngSegmentComponent, isStandalone: true, selector: "fng-segment", inputs: { legend: "legend", config: "config", value: "value" }, outputs: { fngChange: "fngChange", change: "change" }, providers: [
106
- {
107
- provide: NG_VALUE_ACCESSOR,
108
- useExisting: forwardRef(() => FngSegmentComponent),
109
- multi: true
110
- }
111
- ], queries: [{ propertyName: "controls", predicate: FngSegmentControlComponent, descendants: true }], viewQueries: [{ propertyName: "vc", first: true, predicate: ["vc"], descendants: true, read: ViewContainerRef }], usesOnChanges: true, ngImport: i0, template: "<fieldset\n class=\"fwe-segment\"\n [ngClass]=\"{\n 'fwe-segment-outline': config.outline,\n 'fwe-segment-icon': useIcon,\n 'fwe-segment-icon-text': useIconAndText\n }\"\n>\n <legend class=\"fwe-sr-only fwe-d-inline-block\">{{ legend }}</legend>\n <div class=\"fwe-segment-group\">\n <ng-container #vc></ng-container>\n </div>\n</fieldset>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], encapsulation: i0.ViewEncapsulation.None }); }
112
- }
113
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: FngSegmentComponent, decorators: [{
114
- type: Component,
115
- args: [{ standalone: true, imports: [CommonModule], selector: 'fng-segment', encapsulation: ViewEncapsulation.None, providers: [
116
- {
117
- provide: NG_VALUE_ACCESSOR,
118
- useExisting: forwardRef(() => FngSegmentComponent),
119
- multi: true
120
- }
121
- ], template: "<fieldset\n class=\"fwe-segment\"\n [ngClass]=\"{\n 'fwe-segment-outline': config.outline,\n 'fwe-segment-icon': useIcon,\n 'fwe-segment-icon-text': useIconAndText\n }\"\n>\n <legend class=\"fwe-sr-only fwe-d-inline-block\">{{ legend }}</legend>\n <div class=\"fwe-segment-group\">\n <ng-container #vc></ng-container>\n </div>\n</fieldset>\n" }]
122
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { legend: [{
123
- type: Input
124
- }], config: [{
125
- type: Input
126
- }], controls: [{
127
- type: ContentChildren,
128
- args: [FngSegmentControlComponent, { descendants: true }]
129
- }], vc: [{
130
- type: ViewChild,
131
- args: ['vc', { read: ViewContainerRef }]
132
- }], fngChange: [{
133
- type: Output
134
- }], change: [{
135
- type: Output
136
- }], value: [{
137
- type: Input
138
- }] } });
139
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VnbWVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyL3NyYy9saWIvZm9ybXMvc2VnbWVudC9zZWdtZW50LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXIvc3JjL2xpYi9mb3Jtcy9zZWdtZW50L3NlZ21lbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxlQUFlLEVBQ2YsS0FBSyxFQUtMLFNBQVMsRUFDVCxnQkFBZ0IsRUFFaEIsTUFBTSxFQUNOLFlBQVksRUFFWixVQUFVLEVBQ1YsaUJBQWlCLEVBQ2pCLFlBQVksRUFDYixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDekYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7QUFzQi9DLE1BQU0sT0FBTyxtQkFBbUI7SUFNOUIsVUFBVSxDQUFDLEtBQWE7UUFDdEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFDeEIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELGdCQUFnQjtRQUNkLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFO2dCQUNoQyxTQUFTLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FB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QUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2xDLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDOzhHQXBIVSxtQkFBbUI7a0dBQW5CLG1CQUFtQixpTEFSbkI7WUFDVDtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG1CQUFtQixDQUFDO2dCQUNsRCxLQUFLLEVBQUUsSUFBSTthQUNaO1NBQ0YsbURBeUNnQiwwQkFBMEIscUhBQ2xCLGdCQUFnQixrREN0RjNDLHlXQWFBLHlERG9CWSxZQUFZOzsyRkFhWCxtQkFBbUI7a0JBZi9CLFNBQVM7aUNBQ0ksSUFBSSxXQUNQLENBQUMsWUFBWSxDQUFDLFlBQ2IsYUFBYSxpQkFHUixpQkFBaUIsQ0FBQyxJQUFJLGFBQzFCO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLG9CQUFvQixDQUFDOzRCQUNsRCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjtzRkF1Q1EsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDOEQsUUFBUTtzQkFBM0UsZUFBZTt1QkFBQywwQkFBMEIsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUU7Z0JBQ3JCLEVBQUU7c0JBQTlDLFNBQVM7dUJBQUMsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFO2dCQUVqQyxTQUFTO3NCQUFsQixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFHSCxLQUFLO3NCQURSLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgSW5wdXQsXG4gIEFmdGVyQ29udGVudEluaXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIE9uQ2hhbmdlcyxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgVmlld0NoaWxkLFxuICBWaWV3Q29udGFpbmVyUmVmLFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIE9uRGVzdHJveSxcbiAgZm9yd2FyZFJlZixcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIFNpbXBsZUNoYW5nZVxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB0eXBlIHsgUXVlcnlMaXN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IEZuZ1NlZ21lbnRDb250cm9sQ29tcG9uZW50IH0gZnJvbSAnLi9zZWdtZW50LWNvbnRyb2wvc2VnbWVudC1jb250cm9sLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZuZ1NlZ21lbnRDb21wb25lbnRDb25maWd1cmF0aW9uIHtcbiAgb3V0bGluZTogYm9vbGVhbjtcbiAgaWNvbk9ubHk6IGJvb2xlYW47XG59XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgc2VsZWN0b3I6ICdmbmctc2VnbWVudCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWdtZW50LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2VnbWVudC5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEZuZ1NlZ21lbnRDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRm5nU2VnbWVudENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJDb250ZW50SW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gIHByb3RlY3RlZCBjaGFuZ2VkID0gbmV3IEFycmF5PCh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkPigpO1xuICBwcm90ZWN0ZWQgdG91Y2hlZCA9IG5ldyBBcnJheTwoKSA9PiB2b2lkPigpO1xuXG4gIHByb3RlY3RlZCBpbm5lclZhbHVlOiBhbnk7XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5pbm5lclZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy51cGRhdGVDaGVja1N0YXRlKCk7XG4gIH1cblxuICB1cGRhdGVDaGVja1N0YXRlKCkge1xuICAgIGlmICh0aGlzLmNvbnRyb2xzKSB7XG4gICAgICB0aGlzLmNvbnRyb2xzLmZvckVhY2goY29tcG9uZW50ID0+IHtcbiAgICAgICAgY29tcG9uZW50LmNoZWNrZWQgPSBjb21wb25lbnQudmFsdWUgPT09IHRoaXMudmFsdWU7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IHN0cmluZykgPT4gdm9pZCkge1xuICAgIHRoaXMuY2hhbmdlZC5wdXNoKGZuKTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKSB7XG4gICAgdGhpcy50b3VjaGVkLnB1c2goZm4pO1xuICB9XG5cbiAgcHJpdmF0ZSBjb21wbGV0ZTogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgZGVmYXVsdENvbmZpZzogRm5nU2VnbWVudENvbXBvbmVudENvbmZpZ3VyYXRpb24gPSB7XG4gICAgb3V0bGluZTogdHJ1ZSxcbiAgICBpY29uT25seTogdHJ1ZVxuICB9O1xuICB1c2VJY29uID0gZmFsc2U7XG4gIHVzZUljb25BbmRUZXh0ID0gZmFsc2U7XG4gIGlkOiBzdHJpbmc7XG5cbiAgQElucHV0KCkgbGVnZW5kID0gJyc7XG4gIEBJbnB1dCgpIGNvbmZpZzogRm5nU2VnbWVudENvbXBvbmVudENvbmZpZ3VyYXRpb24gPSB0aGlzLmRlZmF1bHRDb25maWc7XG4gIEBDb250ZW50Q2hpbGRyZW4oRm5nU2VnbWVudENvbnRyb2xDb21wb25lbnQsIHsgZGVzY2VuZGFudHM6IHRydWUgfSkgY29udHJvbHM6IFF1ZXJ5TGlzdDxGbmdTZWdtZW50Q29udHJvbENvbXBvbmVudD4gfCB1bmRlZmluZWQ7XG4gIEBWaWV3Q2hpbGQoJ3ZjJywgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmIH0pIHZjOiBWaWV3Q29udGFpbmVyUmVmIHwgdW5kZWZpbmVkO1xuXG4gIEBPdXRwdXQoKSBmbmdDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIGNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIEBJbnB1dCgpXG4gIHNldCB2YWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgaWYgKHRoaXMuaW5uZXJWYWx1ZSAhPT0gdmFsdWUpIHtcbiAgICAgIHRoaXMuaW5uZXJWYWx1ZSA9IHZhbHVlO1xuICAgICAgdGhpcy5jaGFuZ2VkLmZvckVhY2goZiA9PiB7XG4gICAgICAgIHRoaXMuZm5nQ2hhbmdlLmVtaXQodGhpcy5pbm5lclZhbHVlKTtcbiAgICAgICAgdGhpcy5jaGFuZ2UuZW1pdCh0aGlzLmlubmVyVmFsdWUpO1xuICAgICAgICByZXR1cm4gZih2YWx1ZSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgZ2V0IHZhbHVlKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuaW5uZXJWYWx1ZTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgdGhpcy5pZCA9IChNYXRoLnJhbmRvbSgpICogRGF0ZS5ub3coKSkudG9TdHJpbmcoKS5yZXBsYWNlKCcuJywgJy0nKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1snY29uZmlnJ10/LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgdGhpcy5jb25maWcgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmRlZmF1bHRDb25maWcsIGNoYW5nZXNbJ2NvbmZpZyddLmN1cnJlbnRWYWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNvbnRyb2xzPy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuY29udHJvbHMuZm9yRWFjaChjb21wb25lbnQgPT4ge1xuICAgICAgICBjb21wb25lbnQuY2hhbmdlLnBpcGUodGFrZVVudGlsKHRoaXMuY29tcGxldGUpKS5zdWJzY3JpYmUodmFsID0+IHtcbiAgICAgICAgICB0aGlzLnZhbHVlID0gdmFsO1xuICAgICAgICAgIHRoaXMudXBkYXRlQ2hlY2tTdGF0ZSgpO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoY29tcG9uZW50Lmljb24gIT0gbnVsbCAmJiB0aGlzLmNvbmZpZy5pY29uT25seSA9PT0gdHJ1ZSkge1xuICAgICAgICAgIHRoaXMudXNlSWNvbiA9IHRydWU7XG4gICAgICAgICAgY29tcG9uZW50Lm5nT25DaGFuZ2VzKHtcbiAgICAgICAgICAgIGljb25Pbmx5OiBuZXcgU2ltcGxlQ2hhbmdlKG51bGwsIHRydWUsIGZhbHNlKVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvbXBvbmVudC5pY29uICE9IG51bGwgJiYgdGhpcy5jb25maWcuaWNvbk9ubHkgIT09IHRydWUpIHtcbiAgICAgICAgICB0aGlzLnVzZUljb25BbmRUZXh0ID0gdHJ1ZTtcbiAgICAgICAgICBjb21wb25lbnQubmdPbkNoYW5nZXMoe1xuICAgICAgICAgICAgaWNvbk9ubHk6IG5ldyBTaW1wbGVDaGFuZ2UobnVsbCwgZmFsc2UsIGZhbHNlKVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5odG1sKCk7XG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbXBsZXRlLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5jb21wbGV0ZS51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBodG1sKCkge1xuICAgIGlmICh0aGlzLmNvbnRyb2xzKSB7XG4gICAgICB0aGlzLmNvbnRyb2xzLmZvckVhY2goY29tcG9uZW50ID0+IHtcbiAgICAgICAgaWYgKGNvbXBvbmVudC52aWV3KSB7XG4gICAgICAgICAgaWYgKCFjb21wb25lbnQubmFtZSkge1xuICAgICAgICAgICAgY29tcG9uZW50Lm5hbWUgPSB0aGlzLmlkO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnZjPy5pbnNlcnQoY29tcG9uZW50LnZpZXcpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbiIsIjxmaWVsZHNldFxuICBjbGFzcz1cImZ3ZS1zZWdtZW50XCJcbiAgW25nQ2xhc3NdPVwie1xuICAgICdmd2Utc2VnbWVudC1vdXRsaW5lJzogY29uZmlnLm91dGxpbmUsXG4gICAgJ2Z3ZS1zZWdtZW50LWljb24nOiB1c2VJY29uLFxuICAgICdmd2Utc2VnbWVudC1pY29uLXRleHQnOiB1c2VJY29uQW5kVGV4dFxuICB9XCJcbj5cbiAgPGxlZ2VuZCBjbGFzcz1cImZ3ZS1zci1vbmx5IGZ3ZS1kLWlubGluZS1ibG9ja1wiPnt7IGxlZ2VuZCB9fTwvbGVnZW5kPlxuICA8ZGl2IGNsYXNzPVwiZndlLXNlZ21lbnQtZ3JvdXBcIj5cbiAgICA8bmctY29udGFpbmVyICN2Yz48L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L2ZpZWxkc2V0PlxuIl19
@@ -1,39 +0,0 @@
1
- import { Pipe } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- function defaultValueKey(key) {
4
- return key === undefined ? 'value' : key;
5
- }
6
- function defaultTextKey(key) {
7
- return key === undefined ? 'text' : key;
8
- }
9
- export class FngChipTextPipe {
10
- transform(value, options, optionsValueKey, optionsTextKey) {
11
- let chipText = '';
12
- optionsValueKey = defaultValueKey(optionsValueKey);
13
- optionsTextKey = defaultTextKey(optionsTextKey);
14
- options.forEach((_, index) => {
15
- if (optionsValueKey && JSON.stringify(options[index][optionsValueKey]) === JSON.stringify(value[optionsValueKey])) {
16
- if (optionsTextKey) {
17
- chipText = options[index][optionsTextKey];
18
- }
19
- }
20
- if (optionsValueKey && JSON.stringify(options[index][optionsValueKey]) === JSON.stringify(value)) {
21
- if (optionsTextKey) {
22
- chipText = options[index][optionsTextKey];
23
- }
24
- }
25
- });
26
- return chipText;
27
- }
28
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: FngChipTextPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
29
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.2", ngImport: i0, type: FngChipTextPipe, isStandalone: true, name: "fngChipText", pure: false }); }
30
- }
31
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: FngChipTextPipe, decorators: [{
32
- type: Pipe,
33
- args: [{
34
- standalone: true,
35
- name: 'fngChipText',
36
- pure: false
37
- }]
38
- }] });
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpcC10ZXh0LnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyL3NyYy9saWIvZm9ybXMvc2VsZWN0L2NoaXAtdGV4dC5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sZUFBZSxDQUFDOztBQUVwRCxTQUFTLGVBQWUsQ0FBQyxHQUF1QjtJQUM5QyxPQUFPLEdBQUcsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0FBQzNDLENBQUM7QUFFRCxTQUFTLGNBQWMsQ0FBQyxHQUF1QjtJQUM3QyxPQUFPLEdBQUcsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0FBQzFDLENBQUM7QUFPRCxNQUFNLE9BQU8sZUFBZTtJQUMxQixTQUFTLENBQUMsS0FBVSxFQUFFLE9BQWMsRUFBRSxlQUF3QixFQUFFLGNBQXVCO1FBQ3JGLElBQUksUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUVsQixlQUFlLEdBQUcsZUFBZSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ25ELGNBQWMsR0FBRyxjQUFjLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFaEQsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQU0sRUFBRSxLQUFhLEVBQUUsRUFBRTtZQUN4QyxJQUFJLGVBQWUsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDbEgsSUFBSSxjQUFjLEVBQUUsQ0FBQztvQkFDbkIsUUFBUSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQztnQkFDNUMsQ0FBQztZQUNILENBQUM7WUFFRCxJQUFJLGVBQWUsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDakcsSUFBSSxjQUFjLEVBQUUsQ0FBQztvQkFDbkIsUUFBUSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQztnQkFDNUMsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7OEdBdEJVLGVBQWU7NEdBQWYsZUFBZTs7MkZBQWYsZUFBZTtrQkFMM0IsSUFBSTttQkFBQztvQkFDSixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsSUFBSSxFQUFFLGFBQWE7b0JBQ25CLElBQUksRUFBRSxLQUFLO2lCQUNaIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5mdW5jdGlvbiBkZWZhdWx0VmFsdWVLZXkoa2V5OiBzdHJpbmcgfCB1bmRlZmluZWQpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4ga2V5ID09PSB1bmRlZmluZWQgPyAndmFsdWUnIDoga2V5O1xufVxuXG5mdW5jdGlvbiBkZWZhdWx0VGV4dEtleShrZXk6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBrZXkgPT09IHVuZGVmaW5lZCA/ICd0ZXh0JyA6IGtleTtcbn1cblxuQFBpcGUoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBuYW1lOiAnZm5nQ2hpcFRleHQnLFxuICBwdXJlOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBGbmdDaGlwVGV4dFBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgdHJhbnNmb3JtKHZhbHVlOiBhbnksIG9wdGlvbnM6IGFueVtdLCBvcHRpb25zVmFsdWVLZXk/OiBzdHJpbmcsIG9wdGlvbnNUZXh0S2V5Pzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBsZXQgY2hpcFRleHQgPSAnJztcblxuICAgIG9wdGlvbnNWYWx1ZUtleSA9IGRlZmF1bHRWYWx1ZUtleShvcHRpb25zVmFsdWVLZXkpO1xuICAgIG9wdGlvbnNUZXh0S2V5ID0gZGVmYXVsdFRleHRLZXkob3B0aW9uc1RleHRLZXkpO1xuXG4gICAgb3B0aW9ucy5mb3JFYWNoKChfOiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgIGlmIChvcHRpb25zVmFsdWVLZXkgJiYgSlNPTi5zdHJpbmdpZnkob3B0aW9uc1tpbmRleF1bb3B0aW9uc1ZhbHVlS2V5XSkgPT09IEpTT04uc3RyaW5naWZ5KHZhbHVlW29wdGlvbnNWYWx1ZUtleV0pKSB7XG4gICAgICAgIGlmIChvcHRpb25zVGV4dEtleSkge1xuICAgICAgICAgIGNoaXBUZXh0ID0gb3B0aW9uc1tpbmRleF1bb3B0aW9uc1RleHRLZXldO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zVmFsdWVLZXkgJiYgSlNPTi5zdHJpbmdpZnkob3B0aW9uc1tpbmRleF1bb3B0aW9uc1ZhbHVlS2V5XSkgPT09IEpTT04uc3RyaW5naWZ5KHZhbHVlKSkge1xuICAgICAgICBpZiAob3B0aW9uc1RleHRLZXkpIHtcbiAgICAgICAgICBjaGlwVGV4dCA9IG9wdGlvbnNbaW5kZXhdW29wdGlvbnNUZXh0S2V5XTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGNoaXBUZXh0O1xuICB9XG59XG4iXX0=
@@ -1,23 +0,0 @@
1
- import { CommonModule } from '@angular/common';
2
- import { Component, Input, ViewChild, ViewEncapsulation } from '@angular/core';
3
- import * as i0 from "@angular/core";
4
- export class FngSelectOptionComponent {
5
- ngAfterViewInit() {
6
- this.el = this.elementRef.nativeElement;
7
- }
8
- async update() {
9
- return await Promise.resolve(this.el);
10
- }
11
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: FngSelectOptionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
12
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.2", type: FngSelectOptionComponent, isStandalone: true, selector: "fng-select-option", inputs: { value: "value" }, viewQueries: [{ propertyName: "elementRef", first: true, predicate: ["root"], descendants: true }], ngImport: i0, template: "<span #root>\n <ng-content></ng-content>\n</span>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }], encapsulation: i0.ViewEncapsulation.None }); }
13
- }
14
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: FngSelectOptionComponent, decorators: [{
15
- type: Component,
16
- args: [{ standalone: true, imports: [CommonModule], selector: 'fng-select-option', encapsulation: ViewEncapsulation.None, template: "<span #root>\n <ng-content></ng-content>\n</span>\n" }]
17
- }], propDecorators: { value: [{
18
- type: Input
19
- }], elementRef: [{
20
- type: ViewChild,
21
- args: ['root']
22
- }] } });
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LW9wdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyL3NyYy9saWIvZm9ybXMvc2VsZWN0L3NlbGVjdC1vcHRpb24vc2VsZWN0LW9wdGlvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyL3NyYy9saWIvZm9ybXMvc2VsZWN0L3NlbGVjdC1vcHRpb24vc2VsZWN0LW9wdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUE2QixpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFVMUcsTUFBTSxPQUFPLHdCQUF3QjtJQU1uQyxlQUFlO1FBQ2IsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQztJQUMxQyxDQUFDO0lBRUQsS0FBSyxDQUFDLE1BQU07UUFDVixPQUFPLE1BQU0sT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDeEMsQ0FBQzs4R0FaVSx3QkFBd0I7a0dBQXhCLHdCQUF3Qiw2TUNYckMsc0RBR0EseURERVksWUFBWTs7MkZBTVgsd0JBQXdCO2tCQVJwQyxTQUFTO2lDQUNJLElBQUksV0FDUCxDQUFDLFlBQVksQ0FBQyxZQUNiLG1CQUFtQixpQkFHZCxpQkFBaUIsQ0FBQyxJQUFJOzhCQUc1QixLQUFLO3NCQUFiLEtBQUs7Z0JBQ2EsVUFBVTtzQkFBNUIsU0FBUzt1QkFBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIFZpZXdDaGlsZCwgRWxlbWVudFJlZiwgQWZ0ZXJWaWV3SW5pdCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICBzZWxlY3RvcjogJ2ZuZy1zZWxlY3Qtb3B0aW9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlbGVjdC1vcHRpb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zZWxlY3Qtb3B0aW9uLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgRm5nU2VsZWN0T3B0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBJbnB1dCgpIHZhbHVlOiBhbnk7XG4gIEBWaWV3Q2hpbGQoJ3Jvb3QnKSBlbGVtZW50UmVmITogRWxlbWVudFJlZjtcblxuICBlbDogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQ7XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZWwgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZSgpOiBQcm9taXNlPEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIGF3YWl0IFByb21pc2UucmVzb2x2ZSh0aGlzLmVsKTtcbiAgfVxufVxuIiwiPHNwYW4gI3Jvb3Q+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvc3Bhbj5cbiJdfQ==
@@ -1,273 +0,0 @@
1
- import { Component, ContentChildren, EventEmitter, forwardRef, HostBinding, HostListener, Inject, Input, Output, ViewChild, ViewEncapsulation } from '@angular/core';
2
- import { CommonModule, DOCUMENT } from '@angular/common';
3
- import { NG_VALUE_ACCESSOR } from '@angular/forms';
4
- import { coerceBooleanProperty } from '@angular/cdk/coercion';
5
- import { FngSelectOptionComponent } from './select-option/select-option.component';
6
- import { FngChipTextPipe } from './chip-text.pipe';
7
- import { OverlayModule } from '@angular/cdk/overlay';
8
- import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
9
- import * as i0 from "@angular/core";
10
- import * as i1 from "@angular/common";
11
- import * as i2 from "@angular/cdk/overlay";
12
- export class FngSelectComponent {
13
- static { this.nextId = 0; }
14
- get disabled() {
15
- return this._disabled;
16
- }
17
- set disabled(value) {
18
- this._disabled = coerceBooleanProperty(value);
19
- }
20
- get required() {
21
- return this._required;
22
- }
23
- set required(value) {
24
- this._required = coerceBooleanProperty(value);
25
- }
26
- get value() {
27
- return this._value;
28
- }
29
- set value(value) {
30
- if (this.multiple === true) {
31
- const index = this._value.indexOf(value);
32
- if (index === -1) {
33
- this._value.push(value);
34
- this.checked.set(value, 'checked');
35
- }
36
- else {
37
- this._value.splice(index, 1);
38
- this.checked.set(value, null);
39
- }
40
- }
41
- else {
42
- this._value = value;
43
- }
44
- if (this.onChange != null) {
45
- this.onChange(this.value);
46
- }
47
- this.fngChange.emit(this.value);
48
- }
49
- constructor(cd, document, renderer, destroy) {
50
- this.cd = cd;
51
- this.document = document;
52
- this.renderer = renderer;
53
- this.destroy = destroy;
54
- this._disabled = false;
55
- this._required = false;
56
- this.onChange = () => { };
57
- this.onTouched = () => { };
58
- this.id = `input-control-${++FngSelectComponent.nextId}`;
59
- this.multiple = false;
60
- this.size = 0;
61
- this.options = [];
62
- this.label = '';
63
- this.hideLabel = false;
64
- this.hint = '';
65
- this.fngChange = new EventEmitter();
66
- this.selectPanelClasses = ['fng-select-panel'];
67
- this.showOptions = false;
68
- this.empty = false;
69
- this.checked = new Map();
70
- this.hasProjectedOptions = false;
71
- this.projectedHtml = [];
72
- this.body = this.document.body;
73
- }
74
- ngAfterContentInit() {
75
- if (!this.fngSelectOptions) {
76
- return;
77
- }
78
- // observe if any of the projected content (fng-select-option) changes
79
- this.fngSelectOptions.changes.pipe(takeUntilDestroyed(this.destroy)).subscribe(_ => {
80
- // if content changes init again
81
- this.options = [];
82
- this.projectedHtml = [];
83
- this.initProjectedOptions();
84
- });
85
- }
86
- ngOnInit() {
87
- if (this.size != null) {
88
- this.selectPanelClasses.push('fng-select-panel-options-' + this.size);
89
- }
90
- if (this.multiple === true) {
91
- this._value = [];
92
- this.selectPanelClasses.push('fng-select-panel-multiple');
93
- }
94
- }
95
- ngAfterViewInit() {
96
- this.triggerWidth = this.elementRef?.nativeElement?.getBoundingClientRect()?.width;
97
- this.initProjectedOptions();
98
- }
99
- registerOnChange(fn) {
100
- this.onChange = fn;
101
- }
102
- registerOnTouched(fn) {
103
- this.onTouched = fn;
104
- }
105
- setDisabledState(shouldDisable) {
106
- this.disabled = shouldDisable;
107
- }
108
- writeValue(value) {
109
- if (value === undefined) {
110
- return;
111
- }
112
- if (this.multiple === true) {
113
- this._value = value;
114
- // clear any previous state of overlay panel
115
- this.checked.clear();
116
- // set checkmarks in overlay panel, so that it is displayed correctly when user opens it
117
- value?.forEach((v) => {
118
- this.checked.set(v, 'checked');
119
- });
120
- }
121
- else {
122
- this._value = value;
123
- }
124
- }
125
- getOptionText(index) {
126
- if (this.options[index] && this.optionsTextKey && this.options[index][this.optionsTextKey] != null) {
127
- return this.options[index][this.optionsTextKey];
128
- }
129
- return undefined;
130
- }
131
- getOptionValue(index) {
132
- // if set to true the complete option object is returned as value
133
- if (this.optionObjectAsValue === true) {
134
- return this.options[index];
135
- }
136
- // try to access standard property 'value'
137
- const v = this.options[index]['value'];
138
- if (v !== undefined) {
139
- return v;
140
- }
141
- // try to map the value to a property of the option by given key
142
- if (this.options[index] && this.optionsValueKey && this.options[index][this.optionsValueKey] != null) {
143
- return this.options[index][this.optionsValueKey];
144
- }
145
- return undefined;
146
- }
147
- removeChip(event, chip) {
148
- event.stopPropagation();
149
- if (!this._disabled) {
150
- this.value = chip;
151
- }
152
- }
153
- onOpenedChange(isOpen) {
154
- if (isOpen) {
155
- this.renderer.addClass(this.body, 'fng-select-panel-open');
156
- }
157
- else {
158
- this.renderer.removeClass(this.body, 'fng-select-panel-open');
159
- }
160
- }
161
- close() {
162
- this.showOptions = false;
163
- this.isEmpty();
164
- this.cd.markForCheck();
165
- }
166
- toggle() {
167
- if (this.disabled) {
168
- return;
169
- }
170
- this.triggerWidth = this.elementRef?.nativeElement?.getBoundingClientRect()?.width;
171
- this.showOptions = !this.showOptions;
172
- this.onOpenedChange(this.showOptions);
173
- this.isEmpty();
174
- this.cd.markForCheck();
175
- }
176
- select(value, event) {
177
- if (this.disabled) {
178
- return;
179
- }
180
- event.stopPropagation();
181
- this.value = value;
182
- if (this.multiple !== true) {
183
- // closes overlay panel
184
- this.toggle();
185
- }
186
- }
187
- markAsTouched() {
188
- if (this.disabled) {
189
- return;
190
- }
191
- this.onTouched();
192
- this.cd.markForCheck();
193
- }
194
- initProjectedOptions() {
195
- if (this.fngSelectOptions?.length) {
196
- this.hasProjectedOptions = true;
197
- this.fngSelectOptions.forEach(component => {
198
- component.update().then(el => {
199
- if (el) {
200
- this.options.push({ value: component.value, text: el.textContent?.trim() });
201
- this.projectedHtml.push(el.innerHTML);
202
- this.cd.detectChanges();
203
- }
204
- });
205
- });
206
- }
207
- this.cd.detectChanges();
208
- }
209
- isEmpty() {
210
- this.empty = !this.showOptions && (!this._value || '' === this._value);
211
- }
212
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: FngSelectComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: DOCUMENT }, { token: i0.Renderer2 }, { token: i0.DestroyRef }], target: i0.ɵɵFactoryTarget.Component }); }
213
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.2", type: FngSelectComponent, isStandalone: true, selector: "fng-select", inputs: { disabled: "disabled", required: "required", multiple: "multiple", size: "size", options: "options", optionsValueKey: "optionsValueKey", optionsTextKey: "optionsTextKey", optionObjectAsValue: "optionObjectAsValue", error: "error", label: "label", hideLabel: "hideLabel", hint: "hint", resetOption: "resetOption" }, outputs: { fngChange: "fngChange" }, host: { listeners: { "blur": "markAsTouched()" }, properties: { "id": "this.id" } }, providers: [
214
- {
215
- provide: NG_VALUE_ACCESSOR,
216
- useExisting: forwardRef(() => FngSelectComponent),
217
- multi: true
218
- }
219
- ], queries: [{ propertyName: "fngSelectOptions", predicate: FngSelectOptionComponent }], viewQueries: [{ propertyName: "elementRef", first: true, predicate: ["div"], descendants: true }], ngImport: i0, template: "<div #div class=\"fwe-select-wrapper\" [class.fwe-disabled]=\"disabled\" [class.fng-hide-label]=\"hideLabel\">\n <div\n class=\"fwe-select\"\n (click)=\"toggle()\"\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n [class.fwe-focus]=\"showOptions\"\n [class.fwe-required]=\"required\"\n [class.fwe-disabled]=\"disabled\"\n [class.fwe-pty]=\"empty\"\n >\n <div class=\"fwe-select-content\">\n <ng-container *ngIf=\"!multiple; else chips\">\n {{ value != null && value | fngChipText: options:optionsValueKey:optionsTextKey }}\n </ng-container>\n <ng-template #chips>\n <div class=\"fwe-chip-container\">\n <div\n *ngFor=\"let v of value\"\n class=\"fwe-chip chip-text-truncate fwe-pr-4\"\n [style.max-width.px]=\"triggerWidth\"\n [title]=\"v | fngChipText: options:optionsValueKey:optionsTextKey\"\n >\n {{ v | fngChipText: options:optionsValueKey:optionsTextKey }}\n <span class=\"chip-removable\" (click)=\"removeChip($event, v)\"></span>\n </div>\n </div>\n </ng-template>\n </div>\n </div>\n <ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayMinWidth]=\"triggerWidth\"\n [cdkConnectedOverlayOpen]=\"showOptions\"\n [cdkConnectedOverlayPanelClass]=\"selectPanelClasses\"\n (backdropClick)=\"close()\"\n (detach)=\"close()\"\n >\n <div class=\"fng-select-panel-wrap\">\n <ul class=\"fwe-select-options-container\">\n <li class=\"fwe-select-option\" *ngIf=\"resetOption != null && !multiple\" (click)=\"select(null, $event)\">{{ resetOption }}</li>\n <li\n class=\"fwe-select-option\"\n *ngFor=\"let option of options; let i = index\"\n (click)=\"select(getOptionValue(i), $event)\"\n [title]=\"getOptionText(i) || option?.text\"\n >\n <span class=\"fwe-select-option-content\">\n <span\n *ngIf=\"multiple\"\n class=\"fng-select-pseudo-checkbox\"\n [ngClass]=\"{ 'fng-select-pseudo-checkbox-checked': checked.get(getOptionValue(i)) === 'checked' }\"\n ></span>\n <span *ngIf=\"hasProjectedOptions; else defaultTemplate\" [innerHTML]=\"projectedHtml[i]\"></span>\n <ng-template #defaultTemplate>{{ getOptionText(i) || option?.text }}</ng-template>\n </span>\n </li>\n </ul>\n </div>\n </ng-template>\n <label class=\"fwe-select-label\" [for]=\"id\" [class.fwe-sr-only]=\"hideLabel\">{{ label }}</label>\n <div class=\"fwe-select-description\" *ngIf=\"hint\">\n {{ hint }}\n </div>\n <div class=\"fwe-select-invalid\" *ngIf=\"error\">\n {{ error }}\n </div>\n</div>\n<div class=\"fwe-d-none\">\n <ng-content></ng-content>\n</div>\n", styles: [".fng-select-panel-open .fng-select-panel{opacity:1!important}fng-select{width:auto}fng-select.ng-invalid:not(.ng-pristine) .fwe-select:hover{border-color:var(--fwe-red)}fng-select.ng-invalid:not(.ng-pristine) .fwe-select.fwe-required~.fwe-select-invalid{display:block}fng-select.ng-invalid:not(.ng-pristine) .fwe-select.fwe-required~.fwe-select-description{display:none}.fng-select-panel{opacity:0!important}.fng-select-panel.fng-select-panel-options-3 .fwe-select-options-container{max-height:162px}.fng-select-panel.fng-select-panel-options-4 .fwe-select-options-container{max-height:210px}.fng-select-panel.fng-select-panel-options-5 .fwe-select-options-container{max-height:258px}.fng-select-panel.fng-select-panel-options-6 .fwe-select-options-container{max-height:306px}.fng-select-panel.fng-select-panel-options-7 .fwe-select-options-container{max-height:354px}.fng-select-panel.fng-select-panel-options-8 .fwe-select-options-container{max-height:402px}.fng-select-panel.fng-select-panel-options-9 .fwe-select-options-container{max-height:450px}.fng-select-panel.fng-select-panel-options-10 .fwe-select-options-container{max-height:498px}@-moz-document url-prefix(){.fng-select-panel .fwe-select-options-container{scrollbar-width:thin;scrollbar-color:var(--fwe-control-scrollbar) transparent}}@media (pointer: fine){.fng-select-panel .fwe-select-options-container::-webkit-scrollbar{width:14px}.fng-select-panel .fwe-select-options-container::-webkit-scrollbar-track{background:transparent}.fng-select-panel .fwe-select-options-container::-webkit-scrollbar-thumb{overflow:visible;background-color:var(--fwe-control-scrollbar);border:3px solid rgba(242,243,245,0);-webkit-background-clip:padding-box;background-clip:padding-box;border-radius:8px}}.fng-select-panel-wrap{flex-basis:100%}.fwe-select-options-container{position:relative;top:4px;left:0;max-height:258px;min-width:calc(100% + 0px)!important;max-width:280px;overflow:auto;font-size:var(--fwe-font-size-base);background-color:var(--fwe-white);border-radius:4px;padding:8px;margin:0;border:1px solid var(--fwe-gray-200);box-shadow:0 1px 4px #00000029;list-style:none;outline:0}.fwe-select-options-container .fwe-select-option{position:relative;line-height:24px;padding:12px 8px;min-height:24px;cursor:pointer}.fwe-select-options-container .fwe-select-option:hover{background-color:var(--fwe-gray-100)}.fwe-select-options-container .fwe-select-option:last-child{border-bottom:none}.fwe-select-options-container .fwe-select-option .fwe-select-option-content{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:100%;line-height:24px;min-height:24px}.fng-select-pseudo-checkbox{width:16px;height:16px;border-radius:2px;cursor:pointer;display:inline-block;vertical-align:middle;box-sizing:border-box;position:relative;flex-shrink:0;color:var(--fwe-control-border);border:1px solid;transition:none;margin-right:12px;top:-1px}.fng-select-pseudo-checkbox:after{color:var(--fwe-white);position:absolute;display:block;opacity:0;content:\"\";border-bottom:2px solid currentColor;transition:opacity 90ms cubic-bezier(0,0,.2,.1)}.fng-select-pseudo-checkbox.fng-select-pseudo-checkbox-checked{background:var(--fwe-caerul);border:1px solid var(--fwe-caerul)}.fng-select-pseudo-checkbox.fng-select-pseudo-checkbox-checked:after{top:3px;left:2px;width:8px;height:3px;border-left:2px solid currentColor;transform:rotate(-45deg);opacity:1;box-sizing:content-box}.chip-text-truncate{display:inline-block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chip-removable:after{position:absolute;right:5px;top:4px;color:var(--fwe-text);font-family:var(--fwe-font-family-icons-16);font-size:var(--fwe-font-size-base);content:\"\\ea1c\";line-height:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fwe-select-wrapper{display:flex;width:inherit;min-width:48px}.fwe-select-wrapper:before{bottom:unset;top:24px}.fwe-select-wrapper.fng-hide-label{margin-top:18px}.fwe-select-wrapper.fng-hide-label:before{top:6px}.fwe-select-wrapper.fwe-disabled:before{color:var(--fwe-text-disabled);background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMiAxMikiPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xMiAtMTIpIj48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDApIj48cmVjdCB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIGZpbGw9Im5vbmUiLz48L2c+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNS41OTggOC41MTMpIj48cGF0aCBkPSJNNS42MzYsOS4xOTRsNi4yNzgsNi41NjQsNi4yNzgtNi41NjQtLjctLjczTDExLjkxNCwxNC4zLDYuMzMzLDguNDY0WiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTUuNjM2IC04LjQ2NCkiIGZpbGw9IiNiOWJhYmIiLz48L2c+PC9nPjwvZz48L3N2Zz4=)}.fwe-select-wrapper .fwe-select{cursor:pointer;height:unset;min-height:33px}.fwe-select-wrapper .fwe-select .fwe-select-content{padding-right:24px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.5rem}.fwe-select-wrapper .fwe-select.fwe-required:not(.fwe-disabled)~.fwe-select-label:after{position:relative;left:3px;display:inline-block;content:\"*\"}.fwe-select-wrapper .fwe-select.fwe-disabled{cursor:default;border-color:var(--fwe-control-disabled)!important}.fwe-select-wrapper .fwe-select.fwe-disabled~.fwe-select-label{color:var(--fwe-text-disabled)}.fwe-select-wrapper .fwe-select.fwe-disabled .fwe-select-content{color:var(--fwe-text-disabled)}.fwe-select-wrapper .fwe-select.fwe-disabled .fwe-chip{color:var(--fwe-text-disabled);border:1px solid var(--fwe-control-disabled);pointer-events:none}.fwe-select-wrapper .fwe-select.fwe-disabled .fwe-chip .chip-removable:after{color:var(--fwe-text-disabled)}.fwe-select-wrapper .fwe-select-label:empty~.fwe-select-options-container,.fwe-select-wrapper .fwe-select-label.fwe-sr-only~.fwe-select-options-container{top:38px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: FngChipTextPipe, name: "fngChipText" }, { kind: "ngmodule", type: OverlayModule }, { kind: "directive", type: i2.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i2.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }], encapsulation: i0.ViewEncapsulation.None }); }
220
- }
221
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: FngSelectComponent, decorators: [{
222
- type: Component,
223
- args: [{ standalone: true, imports: [CommonModule, FngChipTextPipe, FngSelectOptionComponent, OverlayModule], selector: 'fng-select', encapsulation: ViewEncapsulation.None, providers: [
224
- {
225
- provide: NG_VALUE_ACCESSOR,
226
- useExisting: forwardRef(() => FngSelectComponent),
227
- multi: true
228
- }
229
- ], template: "<div #div class=\"fwe-select-wrapper\" [class.fwe-disabled]=\"disabled\" [class.fng-hide-label]=\"hideLabel\">\n <div\n class=\"fwe-select\"\n (click)=\"toggle()\"\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n [class.fwe-focus]=\"showOptions\"\n [class.fwe-required]=\"required\"\n [class.fwe-disabled]=\"disabled\"\n [class.fwe-pty]=\"empty\"\n >\n <div class=\"fwe-select-content\">\n <ng-container *ngIf=\"!multiple; else chips\">\n {{ value != null && value | fngChipText: options:optionsValueKey:optionsTextKey }}\n </ng-container>\n <ng-template #chips>\n <div class=\"fwe-chip-container\">\n <div\n *ngFor=\"let v of value\"\n class=\"fwe-chip chip-text-truncate fwe-pr-4\"\n [style.max-width.px]=\"triggerWidth\"\n [title]=\"v | fngChipText: options:optionsValueKey:optionsTextKey\"\n >\n {{ v | fngChipText: options:optionsValueKey:optionsTextKey }}\n <span class=\"chip-removable\" (click)=\"removeChip($event, v)\"></span>\n </div>\n </div>\n </ng-template>\n </div>\n </div>\n <ng-template\n cdkConnectedOverlay\n cdkConnectedOverlayHasBackdrop\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayMinWidth]=\"triggerWidth\"\n [cdkConnectedOverlayOpen]=\"showOptions\"\n [cdkConnectedOverlayPanelClass]=\"selectPanelClasses\"\n (backdropClick)=\"close()\"\n (detach)=\"close()\"\n >\n <div class=\"fng-select-panel-wrap\">\n <ul class=\"fwe-select-options-container\">\n <li class=\"fwe-select-option\" *ngIf=\"resetOption != null && !multiple\" (click)=\"select(null, $event)\">{{ resetOption }}</li>\n <li\n class=\"fwe-select-option\"\n *ngFor=\"let option of options; let i = index\"\n (click)=\"select(getOptionValue(i), $event)\"\n [title]=\"getOptionText(i) || option?.text\"\n >\n <span class=\"fwe-select-option-content\">\n <span\n *ngIf=\"multiple\"\n class=\"fng-select-pseudo-checkbox\"\n [ngClass]=\"{ 'fng-select-pseudo-checkbox-checked': checked.get(getOptionValue(i)) === 'checked' }\"\n ></span>\n <span *ngIf=\"hasProjectedOptions; else defaultTemplate\" [innerHTML]=\"projectedHtml[i]\"></span>\n <ng-template #defaultTemplate>{{ getOptionText(i) || option?.text }}</ng-template>\n </span>\n </li>\n </ul>\n </div>\n </ng-template>\n <label class=\"fwe-select-label\" [for]=\"id\" [class.fwe-sr-only]=\"hideLabel\">{{ label }}</label>\n <div class=\"fwe-select-description\" *ngIf=\"hint\">\n {{ hint }}\n </div>\n <div class=\"fwe-select-invalid\" *ngIf=\"error\">\n {{ error }}\n </div>\n</div>\n<div class=\"fwe-d-none\">\n <ng-content></ng-content>\n</div>\n", styles: [".fng-select-panel-open .fng-select-panel{opacity:1!important}fng-select{width:auto}fng-select.ng-invalid:not(.ng-pristine) .fwe-select:hover{border-color:var(--fwe-red)}fng-select.ng-invalid:not(.ng-pristine) .fwe-select.fwe-required~.fwe-select-invalid{display:block}fng-select.ng-invalid:not(.ng-pristine) .fwe-select.fwe-required~.fwe-select-description{display:none}.fng-select-panel{opacity:0!important}.fng-select-panel.fng-select-panel-options-3 .fwe-select-options-container{max-height:162px}.fng-select-panel.fng-select-panel-options-4 .fwe-select-options-container{max-height:210px}.fng-select-panel.fng-select-panel-options-5 .fwe-select-options-container{max-height:258px}.fng-select-panel.fng-select-panel-options-6 .fwe-select-options-container{max-height:306px}.fng-select-panel.fng-select-panel-options-7 .fwe-select-options-container{max-height:354px}.fng-select-panel.fng-select-panel-options-8 .fwe-select-options-container{max-height:402px}.fng-select-panel.fng-select-panel-options-9 .fwe-select-options-container{max-height:450px}.fng-select-panel.fng-select-panel-options-10 .fwe-select-options-container{max-height:498px}@-moz-document url-prefix(){.fng-select-panel .fwe-select-options-container{scrollbar-width:thin;scrollbar-color:var(--fwe-control-scrollbar) transparent}}@media (pointer: fine){.fng-select-panel .fwe-select-options-container::-webkit-scrollbar{width:14px}.fng-select-panel .fwe-select-options-container::-webkit-scrollbar-track{background:transparent}.fng-select-panel .fwe-select-options-container::-webkit-scrollbar-thumb{overflow:visible;background-color:var(--fwe-control-scrollbar);border:3px solid rgba(242,243,245,0);-webkit-background-clip:padding-box;background-clip:padding-box;border-radius:8px}}.fng-select-panel-wrap{flex-basis:100%}.fwe-select-options-container{position:relative;top:4px;left:0;max-height:258px;min-width:calc(100% + 0px)!important;max-width:280px;overflow:auto;font-size:var(--fwe-font-size-base);background-color:var(--fwe-white);border-radius:4px;padding:8px;margin:0;border:1px solid var(--fwe-gray-200);box-shadow:0 1px 4px #00000029;list-style:none;outline:0}.fwe-select-options-container .fwe-select-option{position:relative;line-height:24px;padding:12px 8px;min-height:24px;cursor:pointer}.fwe-select-options-container .fwe-select-option:hover{background-color:var(--fwe-gray-100)}.fwe-select-options-container .fwe-select-option:last-child{border-bottom:none}.fwe-select-options-container .fwe-select-option .fwe-select-option-content{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:100%;line-height:24px;min-height:24px}.fng-select-pseudo-checkbox{width:16px;height:16px;border-radius:2px;cursor:pointer;display:inline-block;vertical-align:middle;box-sizing:border-box;position:relative;flex-shrink:0;color:var(--fwe-control-border);border:1px solid;transition:none;margin-right:12px;top:-1px}.fng-select-pseudo-checkbox:after{color:var(--fwe-white);position:absolute;display:block;opacity:0;content:\"\";border-bottom:2px solid currentColor;transition:opacity 90ms cubic-bezier(0,0,.2,.1)}.fng-select-pseudo-checkbox.fng-select-pseudo-checkbox-checked{background:var(--fwe-caerul);border:1px solid var(--fwe-caerul)}.fng-select-pseudo-checkbox.fng-select-pseudo-checkbox-checked:after{top:3px;left:2px;width:8px;height:3px;border-left:2px solid currentColor;transform:rotate(-45deg);opacity:1;box-sizing:content-box}.chip-text-truncate{display:inline-block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chip-removable:after{position:absolute;right:5px;top:4px;color:var(--fwe-text);font-family:var(--fwe-font-family-icons-16);font-size:var(--fwe-font-size-base);content:\"\\ea1c\";line-height:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fwe-select-wrapper{display:flex;width:inherit;min-width:48px}.fwe-select-wrapper:before{bottom:unset;top:24px}.fwe-select-wrapper.fng-hide-label{margin-top:18px}.fwe-select-wrapper.fng-hide-label:before{top:6px}.fwe-select-wrapper.fwe-disabled:before{color:var(--fwe-text-disabled);background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMiAxMikiPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xMiAtMTIpIj48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDApIj48cmVjdCB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIGZpbGw9Im5vbmUiLz48L2c+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNS41OTggOC41MTMpIj48cGF0aCBkPSJNNS42MzYsOS4xOTRsNi4yNzgsNi41NjQsNi4yNzgtNi41NjQtLjctLjczTDExLjkxNCwxNC4zLDYuMzMzLDguNDY0WiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTUuNjM2IC04LjQ2NCkiIGZpbGw9IiNiOWJhYmIiLz48L2c+PC9nPjwvZz48L3N2Zz4=)}.fwe-select-wrapper .fwe-select{cursor:pointer;height:unset;min-height:33px}.fwe-select-wrapper .fwe-select .fwe-select-content{padding-right:24px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.5rem}.fwe-select-wrapper .fwe-select.fwe-required:not(.fwe-disabled)~.fwe-select-label:after{position:relative;left:3px;display:inline-block;content:\"*\"}.fwe-select-wrapper .fwe-select.fwe-disabled{cursor:default;border-color:var(--fwe-control-disabled)!important}.fwe-select-wrapper .fwe-select.fwe-disabled~.fwe-select-label{color:var(--fwe-text-disabled)}.fwe-select-wrapper .fwe-select.fwe-disabled .fwe-select-content{color:var(--fwe-text-disabled)}.fwe-select-wrapper .fwe-select.fwe-disabled .fwe-chip{color:var(--fwe-text-disabled);border:1px solid var(--fwe-control-disabled);pointer-events:none}.fwe-select-wrapper .fwe-select.fwe-disabled .fwe-chip .chip-removable:after{color:var(--fwe-text-disabled)}.fwe-select-wrapper .fwe-select-label:empty~.fwe-select-options-container,.fwe-select-wrapper .fwe-select-label.fwe-sr-only~.fwe-select-options-container{top:38px}\n"] }]
230
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: Document, decorators: [{
231
- type: Inject,
232
- args: [DOCUMENT]
233
- }] }, { type: i0.Renderer2 }, { type: i0.DestroyRef }], propDecorators: { disabled: [{
234
- type: Input
235
- }], required: [{
236
- type: Input
237
- }], id: [{
238
- type: HostBinding
239
- }], multiple: [{
240
- type: Input
241
- }], size: [{
242
- type: Input
243
- }], options: [{
244
- type: Input
245
- }], optionsValueKey: [{
246
- type: Input
247
- }], optionsTextKey: [{
248
- type: Input
249
- }], optionObjectAsValue: [{
250
- type: Input
251
- }], error: [{
252
- type: Input
253
- }], label: [{
254
- type: Input
255
- }], hideLabel: [{
256
- type: Input
257
- }], hint: [{
258
- type: Input
259
- }], resetOption: [{
260
- type: Input
261
- }], fngSelectOptions: [{
262
- type: ContentChildren,
263
- args: [FngSelectOptionComponent]
264
- }], elementRef: [{
265
- type: ViewChild,
266
- args: ['div']
267
- }], fngChange: [{
268
- type: Output
269
- }], markAsTouched: [{
270
- type: HostListener,
271
- args: ['blur']
272
- }] } });
273
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXIvc3JjL2xpYi9mb3Jtcy9zZWxlY3Qvc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXIvc3JjL2xpYi9mb3Jtcy9zZWxlY3Qvc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFJTCxTQUFTLEVBQ1QsZUFBZSxFQUdmLFlBQVksRUFDWixVQUFVLEVBQ1YsV0FBVyxFQUNYLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUVMLE1BQU0sRUFHTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDckQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7QUFzQmhFLE1BQU0sT0FBTyxrQkFBa0I7YUFDdEIsV0FBTSxHQUFHLENBQUMsQUFBSixDQUFLO0lBT2xCLElBQ0ksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBQ0QsSUFBSSxRQUFRLENBQUMsS0FBYztRQUN6QixJQUFJLENBQUMsU0FBUyxHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FB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LE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLG1CQUFtQixDQUFDOzRCQUNqRCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjs7MEJBaUZFLE1BQU07MkJBQUMsUUFBUTswRkF0RWQsUUFBUTtzQkFEWCxLQUFLO2dCQVNGLFFBQVE7c0JBRFgsS0FBSztnQkFvQ04sRUFBRTtzQkFERCxXQUFXO2dCQUdILFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDcUMsZ0JBQWdCO3NCQUExRCxlQUFlO3VCQUFDLHdCQUF3QjtnQkFDdkIsVUFBVTtzQkFBM0IsU0FBUzt1QkFBQyxLQUFLO2dCQUNOLFNBQVM7c0JBQWxCLE1BQU07Z0JBMEpQLGFBQWE7c0JBRFosWUFBWTt1QkFBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBEZXN0cm95UmVmLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBIb3N0TGlzdGVuZXIsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIFJlbmRlcmVyMixcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSwgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IEZuZ1NlbGVjdE9wdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vc2VsZWN0LW9wdGlvbi9zZWxlY3Qtb3B0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGbmdDaGlwVGV4dFBpcGUgfSBmcm9tICcuL2NoaXAtdGV4dC5waXBlJztcbmltcG9ydCB7IE92ZXJsYXlNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRm5nU2VsZWN0T3B0aW9uIHtcbiAgdmFsdWU6IGFueTtcbiAgdGV4dDogc3RyaW5nO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm5nQ2hpcFRleHRQaXBlLCBGbmdTZWxlY3RPcHRpb25Db21wb25lbnQsIE92ZXJsYXlNb2R1bGVdLFxuICBzZWxlY3RvcjogJ2ZuZy1zZWxlY3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2VsZWN0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRm5nU2VsZWN0Q29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEZuZ1NlbGVjdENvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkluaXQsIEFmdGVyVmlld0luaXQsIEFmdGVyQ29udGVudEluaXQge1xuICBzdGF0aWMgbmV4dElkID0gMDtcblxuICBwcm90ZWN0ZWQgX2Rpc2FibGVkID0gZmFsc2U7XG4gIHByb3RlY3RlZCBfcmVxdWlyZWQgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIF92YWx1ZTogYW55O1xuICBwcm90ZWN0ZWQgYm9keTogSFRNTEVsZW1lbnQ7XG5cbiAgQElucHV0KClcbiAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcbiAgfVxuICBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9kaXNhYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cblxuICBASW5wdXQoKVxuICBnZXQgcmVxdWlyZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlcXVpcmVkO1xuICB9XG4gIHNldCByZXF1aXJlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX3JlcXVpcmVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgfVxuXG4gIGdldCB2YWx1ZSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuXG4gIHNldCB2YWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgaWYgKHRoaXMubXVsdGlwbGUgPT09IHRydWUpIHtcbiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5fdmFsdWUuaW5kZXhPZih2YWx1ZSk7XG4gICAgICBpZiAoaW5kZXggPT09IC0xKSB7XG4gICAgICAgIHRoaXMuX3ZhbHVlLnB1c2godmFsdWUpO1xuICAgICAgICB0aGlzLmNoZWNrZWQuc2V0KHZhbHVlLCAnY2hlY2tlZCcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fdmFsdWUuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgdGhpcy5jaGVja2VkLnNldCh2YWx1ZSwgbnVsbCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub25DaGFuZ2UgIT0gbnVsbCkge1xuICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLnZhbHVlKTtcbiAgICB9XG4gICAgdGhpcy5mbmdDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlKTtcbiAgfVxuXG4gIG9uQ2hhbmdlOiAodmFsdWU6IGFueSkgPT4gdm9pZCA9ICgpOiB2b2lkID0+IHt9O1xuICBvblRvdWNoZWQ6ICgpID0+IHZvaWQgPSAoKTogdm9pZCA9PiB7fTtcblxuICBASG9zdEJpbmRpbmcoKVxuICBpZCA9IGBpbnB1dC1jb250cm9sLSR7KytGbmdTZWxlY3RDb21wb25lbnQubmV4dElkfWA7XG5cbiAgQElucHV0KCkgbXVsdGlwbGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgc2l6ZTogbnVtYmVyID0gMDtcbiAgQElucHV0KCkgb3B0aW9uczogYW55W10gPSBbXTtcbiAgQElucHV0KCkgb3B0aW9uc1ZhbHVlS2V5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIG9wdGlvbnNUZXh0S2V5OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIG9wdGlvbk9iamVjdEFzVmFsdWU6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIGVycm9yOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIGxhYmVsID0gJyc7XG4gIEBJbnB1dCgpIGhpZGVMYWJlbCA9IGZhbHNlO1xuICBASW5wdXQoKSBoaW50ID0gJyc7XG4gIEBJbnB1dCgpIHJlc2V0T3B0aW9uOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIEBDb250ZW50Q2hpbGRyZW4oRm5nU2VsZWN0T3B0aW9uQ29tcG9uZW50KSBmbmdTZWxlY3RPcHRpb25zOiBRdWVyeUxpc3Q8Rm5nU2VsZWN0T3B0aW9uQ29tcG9uZW50PiB8IHVuZGVmaW5lZDtcbiAgQFZpZXdDaGlsZCgnZGl2JykgZWxlbWVudFJlZjogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcbiAgQE91dHB1dCgpIGZuZ0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIHNlbGVjdFBhbmVsQ2xhc3Nlczogc3RyaW5nW10gPSBbJ2ZuZy1zZWxlY3QtcGFuZWwnXTtcbiAgc2hvd09wdGlvbnMgPSBmYWxzZTtcbiAgZW1wdHk6IGJvb2xlYW4gPSBmYWxzZTtcbiAgdHJpZ2dlcldpZHRoOiBhbnk7XG4gIGNoZWNrZWQgPSBuZXcgTWFwKCk7XG4gIGhhc1Byb2plY3RlZE9wdGlvbnMgPSBmYWxzZTtcbiAgcHJvamVjdGVkSHRtbDogYW55W10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIEBJbmplY3QoRE9DVU1FTlQpIHByb3RlY3RlZCBkb2N1bWVudDogRG9jdW1lbnQsXG4gICAgcHJvdGVjdGVkIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHJvdGVjdGVkIGRlc3Ryb3k6IERlc3Ryb3lSZWZcbiAgKSB7XG4gICAgdGhpcy5ib2R5ID0gdGhpcy5kb2N1bWVudC5ib2R5O1xuICB9XG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZm5nU2VsZWN0T3B0aW9ucykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBvYnNlcnZlIGlmIGFueSBvZiB0aGUgcHJvamVjdGVkIGNvbnRlbnQgKGZuZy1zZWxlY3Qtb3B0aW9uKSBjaGFuZ2VzXG4gICAgdGhpcy5mbmdTZWxlY3RPcHRpb25zLmNoYW5nZXMucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95KSkuc3Vic2NyaWJlKF8gPT4ge1xuICAgICAgLy8gaWYgY29udGVudCBjaGFuZ2VzIGluaXQgYWdhaW5cbiAgICAgIHRoaXMub3B0aW9ucyA9IFtdO1xuICAgICAgdGhpcy5wcm9qZWN0ZWRIdG1sID0gW107XG4gICAgICB0aGlzLmluaXRQcm9qZWN0ZWRPcHRpb25zKCk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zaXplICE9IG51bGwpIHtcbiAgICAgIHRoaXMuc2VsZWN0UGFuZWxDbGFzc2VzLnB1c2goJ2ZuZy1zZWxlY3QtcGFuZWwtb3B0aW9ucy0nICsgdGhpcy5zaXplKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5tdWx0aXBsZSA9PT0gdHJ1ZSkge1xuICAgICAgdGhpcy5fdmFsdWUgPSBbXTtcbiAgICAgIHRoaXMuc2VsZWN0UGFuZWxDbGFzc2VzLnB1c2goJ2ZuZy1zZWxlY3QtcGFuZWwtbXVsdGlwbGUnKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy50cmlnZ2VyV2lkdGggPSB0aGlzLmVsZW1lbnRSZWY/Lm5hdGl2ZUVsZW1lbnQ/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpPy53aWR0aDtcbiAgICB0aGlzLmluaXRQcm9qZWN0ZWRPcHRpb25zKCk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGUoc2hvdWxkRGlzYWJsZTogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBzaG91bGREaXNhYmxlO1xuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55IHwgbnVsbCk6IHZvaWQge1xuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubXVsdGlwbGUgPT09IHRydWUpIHtcbiAgICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG5cbiAgICAgIC8vIGNsZWFyIGFueSBwcmV2aW91cyBzdGF0ZSBvZiBvdmVybGF5IHBhbmVsXG4gICAgICB0aGlzLmNoZWNrZWQuY2xlYXIoKTtcblxuICAgICAgLy8gc2V0IGNoZWNrbWFya3MgaW4gb3ZlcmxheSBwYW5lbCwgc28gdGhhdCBpdCBpcyBkaXNwbGF5ZWQgY29ycmVjdGx5IHdoZW4gdXNlciBvcGVucyBpdFxuICAgICAgdmFsdWU/LmZvckVhY2goKHY6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmNoZWNrZWQuc2V0KHYsICdjaGVja2VkJyk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgICB9XG4gIH1cblxuICBnZXRPcHRpb25UZXh0KGluZGV4OiBudW1iZXIpIHtcbiAgICBpZiAodGhpcy5vcHRpb25zW2luZGV4XSAmJiB0aGlzLm9wdGlvbnNUZXh0S2V5ICYmIHRoaXMub3B0aW9uc1tpbmRleF1bdGhpcy5vcHRpb25zVGV4dEtleV0gIT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHRoaXMub3B0aW9uc1tpbmRleF1bdGhpcy5vcHRpb25zVGV4dEtleV07XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXRPcHRpb25WYWx1ZShpbmRleDogbnVtYmVyKSB7XG4gICAgLy8gaWYgc2V0IHRvIHRydWUgdGhlIGNvbXBsZXRlIG9wdGlvbiBvYmplY3QgaXMgcmV0dXJuZWQgYXMgdmFsdWVcbiAgICBpZiAodGhpcy5vcHRpb25PYmplY3RBc1ZhbHVlID09PSB0cnVlKSB7XG4gICAgICByZXR1cm4gdGhpcy5vcHRpb25zW2luZGV4XTtcbiAgICB9XG5cbiAgICAvLyB0cnkgdG8gYWNjZXNzIHN0YW5kYXJkIHByb3BlcnR5ICd2YWx1ZSdcbiAgICBjb25zdCB2ID0gdGhpcy5vcHRpb25zW2luZGV4XVsndmFsdWUnXTtcblxuICAgIGlmICh2ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB2O1xuICAgIH1cblxuICAgIC8vIHRyeSB0byBtYXAgdGhlIHZhbHVlIHRvIGEgcHJvcGVydHkgb2YgdGhlIG9wdGlvbiBieSBnaXZlbiBrZXlcbiAgICBpZiAodGhpcy5vcHRpb25zW2luZGV4XSAmJiB0aGlzLm9wdGlvbnNWYWx1ZUtleSAmJiB0aGlzLm9wdGlvbnNbaW5kZXhdW3RoaXMub3B0aW9uc1ZhbHVlS2V5XSAhPSBudWxsKSB7XG4gICAgICByZXR1cm4gdGhpcy5vcHRpb25zW2luZGV4XVt0aGlzLm9wdGlvbnNWYWx1ZUtleV07XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICByZW1vdmVDaGlwKGV2ZW50OiBhbnksIGNoaXA6IHN0cmluZykge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGlmICghdGhpcy5fZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMudmFsdWUgPSBjaGlwO1xuICAgIH1cbiAgfVxuXG4gIG9uT3BlbmVkQ2hhbmdlKGlzT3BlbjogYm9vbGVhbikge1xuICAgIGlmIChpc09wZW4pIHtcbiAgICAgIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5ib2R5LCAnZm5nLXNlbGVjdC1wYW5lbC1vcGVuJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3ModGhpcy5ib2R5LCAnZm5nLXNlbGVjdC1wYW5lbC1vcGVuJyk7XG4gICAgfVxuICB9XG5cbiAgY2xvc2UoKSB7XG4gICAgdGhpcy5zaG93T3B0aW9ucyA9IGZhbHNlO1xuICAgIHRoaXMuaXNFbXB0eSgpO1xuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICB0b2dnbGUoKSB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnRyaWdnZXJXaWR0aCA9IHRoaXMuZWxlbWVudFJlZj8ubmF0aXZlRWxlbWVudD8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk/LndpZHRoO1xuICAgIHRoaXMuc2hvd09wdGlvbnMgPSAhdGhpcy5zaG93T3B0aW9ucztcbiAgICB0aGlzLm9uT3BlbmVkQ2hhbmdlKHRoaXMuc2hvd09wdGlvbnMpO1xuICAgIHRoaXMuaXNFbXB0eSgpO1xuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBzZWxlY3QodmFsdWU6IGFueSwgZXZlbnQ6IEV2ZW50KSB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG5cbiAgICBpZiAodGhpcy5tdWx0aXBsZSAhPT0gdHJ1ZSkge1xuICAgICAgLy8gY2xvc2VzIG92ZXJsYXkgcGFuZWxcbiAgICAgIHRoaXMudG9nZ2xlKCk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignYmx1cicpXG4gIG1hcmtBc1RvdWNoZWQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBpbml0UHJvamVjdGVkT3B0aW9ucygpIHtcbiAgICBpZiAodGhpcy5mbmdTZWxlY3RPcHRpb25zPy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuaGFzUHJvamVjdGVkT3B0aW9ucyA9IHRydWU7XG4gICAgICB0aGlzLmZuZ1NlbGVjdE9wdGlvbnMuZm9yRWFjaChjb21wb25lbnQgPT4ge1xuICAgICAgICBjb21wb25lbnQudXBkYXRlKCkudGhlbihlbCA9PiB7XG4gICAgICAgICAgaWYgKGVsKSB7XG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMucHVzaCh7IHZhbHVlOiBjb21wb25lbnQudmFsdWUsIHRleHQ6IGVsLnRleHRDb250ZW50Py50cmltKCkgfSk7XG4gICAgICAgICAgICB0aGlzLnByb2plY3RlZEh0bWwucHVzaChlbC5pbm5lckhUTUwpO1xuICAgICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIGlzRW1wdHkoKSB7XG4gICAgdGhpcy5lbXB0eSA9ICF0aGlzLnNob3dPcHRpb25zICYmICghdGhpcy5fdmFsdWUgfHwgJycgPT09IHRoaXMuX3ZhbHVlKTtcbiAgfVxufVxuIiwiPGRpdiAjZGl2IGNsYXNzPVwiZndlLXNlbGVjdC13cmFwcGVyXCIgW2NsYXNzLmZ3ZS1kaXNhYmxlZF09XCJkaXNhYmxlZFwiIFtjbGFzcy5mbmctaGlkZS1sYWJlbF09XCJoaWRlTGFiZWxcIj5cbiAgPGRpdlxuICAgIGNsYXNzPVwiZndlLXNlbGVjdFwiXG4gICAgKGNsaWNrKT1cInRvZ2dsZSgpXCJcbiAgICBjZGtPdmVybGF5T3JpZ2luXG4gICAgI3RyaWdnZXI9XCJjZGtPdmVybGF5T3JpZ2luXCJcbiAgICBbY2xhc3MuZndlLWZvY3VzXT1cInNob3dPcHRpb25zXCJcbiAgICBbY2xhc3MuZndlLXJlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICBbY2xhc3MuZndlLWRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICBbY2xhc3MuZndlLXB0eV09XCJlbXB0eVwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwiZndlLXNlbGVjdC1jb250ZW50XCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIW11bHRpcGxlOyBlbHNlIGNoaXBzXCI+XG4gICAgICAgIHt7IHZhbHVlICE9IG51bGwgJiYgdmFsdWUgfCBmbmdDaGlwVGV4dDogb3B0aW9uczpvcHRpb25zVmFsdWVLZXk6b3B0aW9uc1RleHRLZXkgfX1cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLXRlbXBsYXRlICNjaGlwcz5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZ3ZS1jaGlwLWNvbnRhaW5lclwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCB2IG9mIHZhbHVlXCJcbiAgICAgICAgICAgIGNsYXNzPVwiZndlLWNoaXAgY2hpcC10ZXh0LXRydW5jYXRlIGZ3ZS1wci00XCJcbiAgICAgICAgICAgIFtzdHlsZS5tYXgtd2lkdGgucHhdPVwidHJpZ2dlcldpZHRoXCJcbiAgICAgICAgICAgIFt0aXRsZV09XCJ2IHwgZm5nQ2hpcFRleHQ6IG9wdGlvbnM6b3B0aW9uc1ZhbHVlS2V5Om9wdGlvbnNUZXh0S2V5XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyB2IHwgZm5nQ2hpcFRleHQ6IG9wdGlvbnM6b3B0aW9uc1ZhbHVlS2V5Om9wdGlvbnNUZXh0S2V5IH19XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXAtcmVtb3ZhYmxlXCIgKGNsaWNrKT1cInJlbW92ZUNoaXAoJGV2ZW50LCB2KVwiPjwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPG5nLXRlbXBsYXRlXG4gICAgY2RrQ29ubmVjdGVkT3ZlcmxheVxuICAgIGNka0Nvbm5lY3RlZE92ZXJsYXlIYXNCYWNrZHJvcFxuICAgIGNka0Nvbm5lY3RlZE92ZXJsYXlCYWNrZHJvcENsYXNzPVwiY2RrLW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3BcIlxuICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5T3JpZ2luXT1cInRyaWdnZXJcIlxuICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5TWluV2lkdGhdPVwidHJpZ2dlcldpZHRoXCJcbiAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheU9wZW5dPVwic2hvd09wdGlvbnNcIlxuICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5UGFuZWxDbGFzc109XCJzZWxlY3RQYW5lbENsYXNzZXNcIlxuICAgIChiYWNrZHJvcENsaWNrKT1cImNsb3NlKClcIlxuICAgIChkZXRhY2gpPVwiY2xvc2UoKVwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwiZm5nLXNlbGVjdC1wYW5lbC13cmFwXCI+XG4gICAgICA8dWwgY2xhc3M9XCJmd2Utc2VsZWN0LW9wdGlvbnMtY29udGFpbmVyXCI+XG4gICAgICAgIDxsaSBjbGFzcz1cImZ3ZS1zZWxlY3Qtb3B0aW9uXCIgKm5nSWY9XCJyZXNldE9wdGlvbiAhPSBudWxsICYmICFtdWx0aXBsZVwiIChjbGljayk9XCJzZWxlY3QobnVsbCwgJGV2ZW50KVwiPnt7IHJlc2V0T3B0aW9uIH19PC9saT5cbiAgICAgICAgPGxpXG4gICAgICAgICAgY2xhc3M9XCJmd2Utc2VsZWN0LW9wdGlvblwiXG4gICAgICAgICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBvcHRpb25zOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAoY2xpY2spPVwic2VsZWN0KGdldE9wdGlvblZhbHVlKGkpLCAkZXZlbnQpXCJcbiAgICAgICAgICBbdGl0bGVdPVwiZ2V0T3B0aW9uVGV4dChpKSB8fCBvcHRpb24/LnRleHRcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJmd2Utc2VsZWN0LW9wdGlvbi1jb250ZW50XCI+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAqbmdJZj1cIm11bHRpcGxlXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJmbmctc2VsZWN0LXBzZXVkby1jaGVja2JveFwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2ZuZy1zZWxlY3QtcHNldWRvLWNoZWNrYm94LWNoZWNrZWQnOiBjaGVja2VkLmdldChnZXRPcHRpb25WYWx1ZShpKSkgPT09ICdjaGVja2VkJyB9XCJcbiAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImhhc1Byb2plY3RlZE9wdGlvbnM7IGVsc2UgZGVmYXVsdFRlbXBsYXRlXCIgW2lubmVySFRNTF09XCJwcm9qZWN0ZWRIdG1sW2ldXCI+PC9zcGFuPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0VGVtcGxhdGU+e3sgZ2V0T3B0aW9uVGV4dChpKSB8fCBvcHRpb24/LnRleHQgfX08L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9saT5cbiAgICAgIDwvdWw+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG4gIDxsYWJlbCBjbGFzcz1cImZ3ZS1zZWxlY3QtbGFiZWxcIiBbZm9yXT1cImlkXCIgW2NsYXNzLmZ3ZS1zci1vbmx5XT1cImhpZGVMYWJlbFwiPnt7IGxhYmVsIH19PC9sYWJlbD5cbiAgPGRpdiBjbGFzcz1cImZ3ZS1zZWxlY3QtZGVzY3JpcHRpb25cIiAqbmdJZj1cImhpbnRcIj5cbiAgICB7eyBoaW50IH19XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiZndlLXNlbGVjdC1pbnZhbGlkXCIgKm5nSWY9XCJlcnJvclwiPlxuICAgIHt7IGVycm9yIH19XG4gIDwvZGl2PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwiZndlLWQtbm9uZVwiPlxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L2Rpdj5cbiJdfQ==