@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,21 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { FestoAngularComponentsModule } from './components/components.module';
3
- import { FestoAngularFormsModule } from './forms/forms.module';
4
- import { FngSafeHtmlPipe } from './pipes/safe-html.pipe';
5
- import { FestoAngularModalsModule } from './modals/modals.module';
6
- import { FestoAngularSnackbarModule } from './components/snackbar/snackbar.module';
7
- import * as i0 from "@angular/core";
8
- export class FestoAngularModule {
9
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: FestoAngularModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
10
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.2", ngImport: i0, type: FestoAngularModule, imports: [FngSafeHtmlPipe, FestoAngularComponentsModule, FestoAngularFormsModule, FestoAngularModalsModule, FestoAngularSnackbarModule], exports: [FngSafeHtmlPipe, FestoAngularComponentsModule, FestoAngularFormsModule, FestoAngularModalsModule, FestoAngularSnackbarModule] }); }
11
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: FestoAngularModule, imports: [FestoAngularComponentsModule, FestoAngularFormsModule, FestoAngularModalsModule, FestoAngularSnackbarModule, FestoAngularComponentsModule, FestoAngularFormsModule, FestoAngularModalsModule, FestoAngularSnackbarModule] }); }
12
- }
13
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: FestoAngularModule, decorators: [{
14
- type: NgModule,
15
- args: [{
16
- declarations: [],
17
- imports: [FngSafeHtmlPipe, FestoAngularComponentsModule, FestoAngularFormsModule, FestoAngularModalsModule, FestoAngularSnackbarModule],
18
- exports: [FngSafeHtmlPipe, FestoAngularComponentsModule, FestoAngularFormsModule, FestoAngularModalsModule, FestoAngularSnackbarModule]
19
- }]
20
- }] });
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVzdG8tYW5ndWxhci5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyL3NyYy9saWIvZmVzdG8tYW5ndWxhci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM5RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDekQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7O0FBT25GLE1BQU0sT0FBTyxrQkFBa0I7OEdBQWxCLGtCQUFrQjsrR0FBbEIsa0JBQWtCLFlBSG5CLGVBQWUsRUFBRSw0QkFBNEIsRUFBRSx1QkFBdUIsRUFBRSx3QkFBd0IsRUFBRSwwQkFBMEIsYUFDNUgsZUFBZSxFQUFFLDRCQUE0QixFQUFFLHVCQUF1QixFQUFFLHdCQUF3QixFQUFFLDBCQUEwQjsrR0FFM0gsa0JBQWtCLFlBSEYsNEJBQTRCLEVBQUUsdUJBQXVCLEVBQUUsd0JBQXdCLEVBQUUsMEJBQTBCLEVBQzNHLDRCQUE0QixFQUFFLHVCQUF1QixFQUFFLHdCQUF3QixFQUFFLDBCQUEwQjs7MkZBRTNILGtCQUFrQjtrQkFMOUIsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsRUFBRTtvQkFDaEIsT0FBTyxFQUFFLENBQUMsZUFBZSxFQUFFLDRCQUE0QixFQUFFLHVCQUF1QixFQUFFLHdCQUF3QixFQUFFLDBCQUEwQixDQUFDO29CQUN2SSxPQUFPLEVBQUUsQ0FBQyxlQUFlLEVBQUUsNEJBQTRCLEVBQUUsdUJBQXVCLEVBQUUsd0JBQXdCLEVBQUUsMEJBQTBCLENBQUM7aUJBQ3hJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZlc3RvQW5ndWxhckNvbXBvbmVudHNNb2R1bGUgfSBmcm9tICcuL2NvbXBvbmVudHMvY29tcG9uZW50cy5tb2R1bGUnO1xuaW1wb3J0IHsgRmVzdG9Bbmd1bGFyRm9ybXNNb2R1bGUgfSBmcm9tICcuL2Zvcm1zL2Zvcm1zLm1vZHVsZSc7XG5pbXBvcnQgeyBGbmdTYWZlSHRtbFBpcGUgfSBmcm9tICcuL3BpcGVzL3NhZmUtaHRtbC5waXBlJztcbmltcG9ydCB7IEZlc3RvQW5ndWxhck1vZGFsc01vZHVsZSB9IGZyb20gJy4vbW9kYWxzL21vZGFscy5tb2R1bGUnO1xuaW1wb3J0IHsgRmVzdG9Bbmd1bGFyU25hY2tiYXJNb2R1bGUgfSBmcm9tICcuL2NvbXBvbmVudHMvc25hY2tiYXIvc25hY2tiYXIubW9kdWxlJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXSxcbiAgaW1wb3J0czogW0ZuZ1NhZmVIdG1sUGlwZSwgRmVzdG9Bbmd1bGFyQ29tcG9uZW50c01vZHVsZSwgRmVzdG9Bbmd1bGFyRm9ybXNNb2R1bGUsIEZlc3RvQW5ndWxhck1vZGFsc01vZHVsZSwgRmVzdG9Bbmd1bGFyU25hY2tiYXJNb2R1bGVdLFxuICBleHBvcnRzOiBbRm5nU2FmZUh0bWxQaXBlLCBGZXN0b0FuZ3VsYXJDb21wb25lbnRzTW9kdWxlLCBGZXN0b0FuZ3VsYXJGb3Jtc01vZHVsZSwgRmVzdG9Bbmd1bGFyTW9kYWxzTW9kdWxlLCBGZXN0b0FuZ3VsYXJTbmFja2Jhck1vZHVsZV1cbn0pXG5leHBvcnQgY2xhc3MgRmVzdG9Bbmd1bGFyTW9kdWxlIHt9XG4iXX0=
@@ -1,154 +0,0 @@
1
- import { coerceBooleanProperty } from '@angular/cdk/coercion';
2
- import { CommonModule } from '@angular/common';
3
- import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy, ViewEncapsulation, forwardRef } from '@angular/core';
4
- import { NG_VALUE_ACCESSOR } from '@angular/forms';
5
- import * as i0 from "@angular/core";
6
- import * as i1 from "@angular/common";
7
- let nextUniqueId = 0;
8
- export class FngCheckboxComponent {
9
- get id() {
10
- return this.innerId;
11
- }
12
- set id(value) {
13
- this.innerId = value ? `${value}-${++nextUniqueId}` : `fng-checkbox-${++nextUniqueId}`;
14
- }
15
- get inputId() {
16
- return `${this.innerId}-input`;
17
- }
18
- get checked() {
19
- return this.isChecked;
20
- }
21
- set checked(value) {
22
- if (value !== this.checked) {
23
- this.isChecked = value;
24
- this.changeDetector.markForCheck();
25
- }
26
- }
27
- get disabled() {
28
- return this.isDisabled;
29
- }
30
- set disabled(value) {
31
- const newValue = coerceBooleanProperty(value);
32
- if (newValue !== this.disabled) {
33
- this.isDisabled = newValue;
34
- this.changeDetector.markForCheck();
35
- }
36
- }
37
- get indeterminate() {
38
- return this.isIndeterminate;
39
- }
40
- set indeterminate(value) {
41
- const changed = value !== this.isIndeterminate;
42
- this.isIndeterminate = coerceBooleanProperty(value);
43
- if (changed) {
44
- this.indeterminateChange.emit(this.isIndeterminate);
45
- }
46
- this.changeDetector.markForCheck();
47
- }
48
- get required() {
49
- return this.isRequired;
50
- }
51
- set required(value) {
52
- this.isRequired = coerceBooleanProperty(value);
53
- }
54
- constructor(changeDetector) {
55
- this.changeDetector = changeDetector;
56
- this.name = '';
57
- this.large = false;
58
- this.valid = true;
59
- this.labelPosition = 'after';
60
- this.innerId = `fng-checkbox-${++nextUniqueId}`;
61
- this.isChecked = false;
62
- this.isDisabled = false;
63
- this.isIndeterminate = false;
64
- this.value = 'false';
65
- this.isRequired = false;
66
- this.indeterminateChange = new EventEmitter();
67
- this.change = new EventEmitter();
68
- this.controlValueAccessorChangeFn = () => null;
69
- this.onTouched = () => null;
70
- }
71
- writeValue(value) {
72
- this.checked = !!value;
73
- }
74
- registerOnChange(fn) {
75
- this.controlValueAccessorChangeFn = fn;
76
- }
77
- registerOnTouched(fn) {
78
- this.onTouched = fn;
79
- }
80
- setDisabledState(isDisabled) {
81
- this.disabled = isDisabled;
82
- }
83
- onInteractionEvent(event) {
84
- event.stopPropagation();
85
- }
86
- onInputClick(event) {
87
- event.stopPropagation();
88
- if (!this.disabled) {
89
- if (this.indeterminate) {
90
- Promise.resolve().then(() => {
91
- this.isIndeterminate = false;
92
- this.indeterminateChange.emit(this.isIndeterminate);
93
- });
94
- }
95
- if (!this.valid) {
96
- this.valid = true;
97
- }
98
- if (this.required) {
99
- this.required = false;
100
- }
101
- this.checked = !this.checked;
102
- if (this.controlValueAccessorChangeFn != null) {
103
- this.controlValueAccessorChangeFn(this.checked);
104
- }
105
- if (this.onTouched != null) {
106
- this.onTouched();
107
- }
108
- this.change.emit(this.checked);
109
- }
110
- }
111
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: FngCheckboxComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
112
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.2", type: FngCheckboxComponent, isStandalone: true, selector: "fng-checkbox", inputs: { name: "name", large: "large", valid: "valid", labelPosition: "labelPosition", id: "id", checked: "checked", disabled: "disabled", indeterminate: "indeterminate", value: "value", required: "required" }, outputs: { indeterminateChange: "indeterminateChange", change: "change" }, providers: [
113
- {
114
- provide: NG_VALUE_ACCESSOR,
115
- useExisting: forwardRef(() => FngCheckboxComponent),
116
- multi: true
117
- }
118
- ], ngImport: i0, template: "<label\n class=\"fwe-checkbox-container\"\n [class.fng-checkbox-large]=\"large\"\n [class.fng-checkbox-invalid]=\"!valid || required\"\n [class.fwe-disabled]=\"disabled\"\n [class.fng-checkbox-indeterminate]=\"indeterminate\"\n [class.fwe-checked]=\"checked\"\n [attr.for]=\"inputId\"\n [ngClass]=\"{\n 'fwe-label-below': labelPosition == 'below',\n 'fwe-label-before': labelPosition == 'before'\n }\"\n>\n <input\n type=\"checkbox\"\n [id]=\"inputId\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [attr.value]=\"value\"\n [attr.name]=\"name\"\n [checked]=\"checked\"\n (change)=\"onInteractionEvent($event)\"\n (click)=\"onInputClick($event)\"\n />\n <div class=\"fwe-checkbox-indicator-container\">\n <div class=\"fwe-checkbox-indicator-background\"></div>\n <ng-container *ngIf=\"!indeterminate && checked\">\n <svg *ngIf=\"large\" width=\"24px\" height=\"24px\">\n <path d=\"M17.5 7L10 14.5 7.501 12l-1.5 1.501L10 17.5l9-9z\" fill=\"#fff\" />\n </svg>\n <svg *ngIf=\"!large\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\">\n <path d=\"M6 12L3 9l1.25-1.25L6 9.5l5.75-5.75L13 5l-7 7z\" fill=\"#fff\" />\n </svg>\n </ng-container>\n <div *ngIf=\"indeterminate && !checked\" class=\"fwe-indeterminate-indicator\"></div>\n </div>\n <div class=\"fwe-checkbox-title\">\n <ng-content></ng-content>\n </div>\n</label>\n", styles: [".fwe-checkbox-container{font-family:var(--fwe-font-family-sans-serif);-webkit-user-select:none;user-select:none;cursor:pointer;display:flex;flex-direction:row;align-items:flex-start}.fwe-checkbox-container.fwe-label-below{align-items:center;flex-direction:column}.fwe-checkbox-container.fwe-label-below .fwe-checkbox-title{text-align:center;margin:8px 0 0}.fwe-checkbox-container.fwe-label-before{flex-direction:row-reverse;justify-content:flex-end}.fwe-checkbox-container.fwe-label-before .fwe-checkbox-title{margin:0 8px 0 0}.fwe-checkbox-container .fwe-checkbox-indicator-container{margin-top:4px;position:relative}.fwe-checkbox-container input{opacity:0;cursor:pointer;height:0;width:0}.fwe-checkbox-container .fwe-checkbox-title{margin-left:8px;line-height:24px;color:var(--fwe-text);-webkit-user-select:none;user-select:none}.fwe-checkbox-container .fwe-checkbox-indicator-background{box-sizing:border-box;background:var(--fwe-white);border:1px solid var(--fwe-text-light);border-radius:2px;height:16px;width:16px;transition:border-width .2s ease-out}.fwe-checkbox-container .fwe-indeterminate-indicator{position:absolute;height:2px;width:10px;top:7px;left:3px;background:#fff}.fwe-checkbox-container svg{display:block;position:absolute;top:0;left:0}.fwe-checkbox-container.fng-checkbox-large .fwe-checkbox-indicator-container{margin-top:0}.fwe-checkbox-container.fng-checkbox-large .fwe-checkbox-indicator-background{height:24px;width:24px;border-radius:4px}.fwe-checkbox-container.fng-checkbox-large .fwe-indeterminate-indicator{top:11px;width:14px;left:5px}.fwe-checkbox-container.fng-checkbox-large.fwe-checked .fwe-checkbox-indicator-background,.fwe-checkbox-container.fng-checkbox-large.fng-checkbox-indeterminate .fwe-checkbox-indicator-background{border:12px solid var(--fwe-hero)}.fwe-checkbox-container:hover .fwe-checkbox-indicator-background{background-color:var(--fwe-control)}.fwe-checkbox-container:active .fwe-checkbox-indicator-background{background-color:var(--fwe-control-hover)}.fwe-checkbox-container.fwe-checked .fwe-checkbox-indicator-background,.fwe-checkbox-container.fng-checkbox-indeterminate .fwe-checkbox-indicator-background{border:8px solid var(--fwe-hero)}.fwe-checkbox-container.fwe-checked:hover .fwe-checkbox-indicator-background,.fwe-checkbox-container.fng-checkbox-indeterminate:hover .fwe-checkbox-indicator-background{border-color:var(--fwe-hero-hover)}.fwe-checkbox-container.fwe-checked:active .fwe-checkbox-indicator-background,.fwe-checkbox-container.fng-checkbox-indeterminate:active .fwe-checkbox-indicator-background{border-color:var(--fwe-hero-active)}.fwe-checkbox-container.fng-checkbox-invalid .fwe-checkbox-indicator-background{border:1px solid var(--fwe-red);background:var(--fwe-white)}.fwe-checkbox-container.fwe-disabled{cursor:default}.fwe-checkbox-container.fwe-disabled .fwe-checkbox-indicator-background{background-color:var(--fwe-white);border:1px solid var(--fwe-control)}.fwe-checkbox-container.fwe-disabled.fwe-checked .fwe-checkbox-indicator-background,.fwe-checkbox-container.fwe-disabled.fng-checkbox-indeterminate .fwe-checkbox-indicator-background{background-color:var(--fwe-control);border:1px solid var(--fwe-control)}.fwe-checkbox-container.fwe-disabled.fng-checkbox-invalid .fwe-checkbox-indicator-background{background-color:var(--fwe-white);border:1px solid var(--fwe-control)}.fwe-checkbox-container.fwe-disabled .fwe-checkbox-title{color:var(--fwe-text-disabled)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
119
- }
120
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: FngCheckboxComponent, decorators: [{
121
- type: Component,
122
- args: [{ standalone: true, imports: [CommonModule], selector: 'fng-checkbox', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [
123
- {
124
- provide: NG_VALUE_ACCESSOR,
125
- useExisting: forwardRef(() => FngCheckboxComponent),
126
- multi: true
127
- }
128
- ], template: "<label\n class=\"fwe-checkbox-container\"\n [class.fng-checkbox-large]=\"large\"\n [class.fng-checkbox-invalid]=\"!valid || required\"\n [class.fwe-disabled]=\"disabled\"\n [class.fng-checkbox-indeterminate]=\"indeterminate\"\n [class.fwe-checked]=\"checked\"\n [attr.for]=\"inputId\"\n [ngClass]=\"{\n 'fwe-label-below': labelPosition == 'below',\n 'fwe-label-before': labelPosition == 'before'\n }\"\n>\n <input\n type=\"checkbox\"\n [id]=\"inputId\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [attr.value]=\"value\"\n [attr.name]=\"name\"\n [checked]=\"checked\"\n (change)=\"onInteractionEvent($event)\"\n (click)=\"onInputClick($event)\"\n />\n <div class=\"fwe-checkbox-indicator-container\">\n <div class=\"fwe-checkbox-indicator-background\"></div>\n <ng-container *ngIf=\"!indeterminate && checked\">\n <svg *ngIf=\"large\" width=\"24px\" height=\"24px\">\n <path d=\"M17.5 7L10 14.5 7.501 12l-1.5 1.501L10 17.5l9-9z\" fill=\"#fff\" />\n </svg>\n <svg *ngIf=\"!large\" xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\">\n <path d=\"M6 12L3 9l1.25-1.25L6 9.5l5.75-5.75L13 5l-7 7z\" fill=\"#fff\" />\n </svg>\n </ng-container>\n <div *ngIf=\"indeterminate && !checked\" class=\"fwe-indeterminate-indicator\"></div>\n </div>\n <div class=\"fwe-checkbox-title\">\n <ng-content></ng-content>\n </div>\n</label>\n", styles: [".fwe-checkbox-container{font-family:var(--fwe-font-family-sans-serif);-webkit-user-select:none;user-select:none;cursor:pointer;display:flex;flex-direction:row;align-items:flex-start}.fwe-checkbox-container.fwe-label-below{align-items:center;flex-direction:column}.fwe-checkbox-container.fwe-label-below .fwe-checkbox-title{text-align:center;margin:8px 0 0}.fwe-checkbox-container.fwe-label-before{flex-direction:row-reverse;justify-content:flex-end}.fwe-checkbox-container.fwe-label-before .fwe-checkbox-title{margin:0 8px 0 0}.fwe-checkbox-container .fwe-checkbox-indicator-container{margin-top:4px;position:relative}.fwe-checkbox-container input{opacity:0;cursor:pointer;height:0;width:0}.fwe-checkbox-container .fwe-checkbox-title{margin-left:8px;line-height:24px;color:var(--fwe-text);-webkit-user-select:none;user-select:none}.fwe-checkbox-container .fwe-checkbox-indicator-background{box-sizing:border-box;background:var(--fwe-white);border:1px solid var(--fwe-text-light);border-radius:2px;height:16px;width:16px;transition:border-width .2s ease-out}.fwe-checkbox-container .fwe-indeterminate-indicator{position:absolute;height:2px;width:10px;top:7px;left:3px;background:#fff}.fwe-checkbox-container svg{display:block;position:absolute;top:0;left:0}.fwe-checkbox-container.fng-checkbox-large .fwe-checkbox-indicator-container{margin-top:0}.fwe-checkbox-container.fng-checkbox-large .fwe-checkbox-indicator-background{height:24px;width:24px;border-radius:4px}.fwe-checkbox-container.fng-checkbox-large .fwe-indeterminate-indicator{top:11px;width:14px;left:5px}.fwe-checkbox-container.fng-checkbox-large.fwe-checked .fwe-checkbox-indicator-background,.fwe-checkbox-container.fng-checkbox-large.fng-checkbox-indeterminate .fwe-checkbox-indicator-background{border:12px solid var(--fwe-hero)}.fwe-checkbox-container:hover .fwe-checkbox-indicator-background{background-color:var(--fwe-control)}.fwe-checkbox-container:active .fwe-checkbox-indicator-background{background-color:var(--fwe-control-hover)}.fwe-checkbox-container.fwe-checked .fwe-checkbox-indicator-background,.fwe-checkbox-container.fng-checkbox-indeterminate .fwe-checkbox-indicator-background{border:8px solid var(--fwe-hero)}.fwe-checkbox-container.fwe-checked:hover .fwe-checkbox-indicator-background,.fwe-checkbox-container.fng-checkbox-indeterminate:hover .fwe-checkbox-indicator-background{border-color:var(--fwe-hero-hover)}.fwe-checkbox-container.fwe-checked:active .fwe-checkbox-indicator-background,.fwe-checkbox-container.fng-checkbox-indeterminate:active .fwe-checkbox-indicator-background{border-color:var(--fwe-hero-active)}.fwe-checkbox-container.fng-checkbox-invalid .fwe-checkbox-indicator-background{border:1px solid var(--fwe-red);background:var(--fwe-white)}.fwe-checkbox-container.fwe-disabled{cursor:default}.fwe-checkbox-container.fwe-disabled .fwe-checkbox-indicator-background{background-color:var(--fwe-white);border:1px solid var(--fwe-control)}.fwe-checkbox-container.fwe-disabled.fwe-checked .fwe-checkbox-indicator-background,.fwe-checkbox-container.fwe-disabled.fng-checkbox-indeterminate .fwe-checkbox-indicator-background{background-color:var(--fwe-control);border:1px solid var(--fwe-control)}.fwe-checkbox-container.fwe-disabled.fng-checkbox-invalid .fwe-checkbox-indicator-background{background-color:var(--fwe-white);border:1px solid var(--fwe-control)}.fwe-checkbox-container.fwe-disabled .fwe-checkbox-title{color:var(--fwe-text-disabled)}\n"] }]
129
- }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { name: [{
130
- type: Input
131
- }], large: [{
132
- type: Input
133
- }], valid: [{
134
- type: Input
135
- }], labelPosition: [{
136
- type: Input
137
- }], id: [{
138
- type: Input
139
- }], checked: [{
140
- type: Input
141
- }], disabled: [{
142
- type: Input
143
- }], indeterminate: [{
144
- type: Input
145
- }], value: [{
146
- type: Input
147
- }], required: [{
148
- type: Input
149
- }], indeterminateChange: [{
150
- type: Output
151
- }], change: [{
152
- type: Output
153
- }] } });
154
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvbGliL2Zvcm1zL2NoZWNrYm94L2NoZWNrYm94LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXIvc3JjL2xpYi9mb3Jtcy9jaGVja2JveC9jaGVja2JveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWix1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFVBQVUsRUFFWCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsaUJBQWlCLEVBQXdCLE1BQU0sZ0JBQWdCLENBQUM7OztBQUV6RSxJQUFJLFlBQVksR0FBRyxDQUFDLENBQUM7QUFrQnJCLE1BQU0sT0FBTyxvQkFBb0I7SUFPL0IsSUFBSSxFQUFFO1FBQ0osT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFDRCxJQUNJLEVBQUUsQ0FBQyxLQUFhO1FBQ2xCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssSUFBSSxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsQ0FBQztJQUN6RixDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1QsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLFFBQVEsQ0FBQztJQUNqQyxDQUFDO0lBRUQsSUFDSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFDRCxJQUFJ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bkQsS0FBSyxFQUFFLElBQUk7YUFDWjtTQUNGLDBCQzlCSCxnNkNBd0NBLGc3R0R0QlksWUFBWTs7MkZBY1gsb0JBQW9CO2tCQWhCaEMsU0FBUztpQ0FDSSxJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUMsWUFDYixjQUFjLG1CQUdQLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksYUFDMUI7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUscUJBQXFCLENBQUM7NEJBQ25ELEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO3NGQUdRLElBQUk7c0JBQVosS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBT0YsRUFBRTtzQkFETCxLQUFLO2dCQVVGLE9BQU87c0JBRFYsS0FBSztnQkFhRixRQUFRO3NCQURYLEtBQUs7Z0JBY0YsYUFBYTtzQkFEaEIsS0FBSztnQkFjRyxLQUFLO3NCQUFiLEtBQUs7Z0JBR0YsUUFBUTtzQkFEWCxLQUFLO2dCQVNhLG1CQUFtQjtzQkFBckMsTUFBTTtnQkFDWSxNQUFNO3NCQUF4QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBmb3J3YXJkUmVmLFxuICBDaGFuZ2VEZXRlY3RvclJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SLCBDb250cm9sVmFsdWVBY2Nlc3NvciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxubGV0IG5leHRVbmlxdWVJZCA9IDA7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgc2VsZWN0b3I6ICdmbmctY2hlY2tib3gnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2hlY2tib3guY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jaGVja2JveC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBGbmdDaGVja2JveENvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBGbmdDaGVja2JveENvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgQElucHV0KCkgbmFtZTogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGxhcmdlID0gZmFsc2U7XG4gIEBJbnB1dCgpIHZhbGlkID0gdHJ1ZTtcbiAgQElucHV0KCkgbGFiZWxQb3NpdGlvbjogJ2JlZm9yZScgfCAnYWZ0ZXInIHwgJ2JlbG93JyA9ICdhZnRlcic7XG5cbiAgcHJpdmF0ZSBpbm5lcklkID0gYGZuZy1jaGVja2JveC0keysrbmV4dFVuaXF1ZUlkfWA7XG4gIGdldCBpZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmlubmVySWQ7XG4gIH1cbiAgQElucHV0KClcbiAgc2V0IGlkKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmlubmVySWQgPSB2YWx1ZSA/IGAke3ZhbHVlfS0keysrbmV4dFVuaXF1ZUlkfWAgOiBgZm5nLWNoZWNrYm94LSR7KytuZXh0VW5pcXVlSWR9YDtcbiAgfVxuXG4gIGdldCBpbnB1dElkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuaW5uZXJJZH0taW5wdXRgO1xuICB9XG5cbiAgQElucHV0KClcbiAgZ2V0IGNoZWNrZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNDaGVja2VkO1xuICB9XG4gIHNldCBjaGVja2VkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgaWYgKHZhbHVlICE9PSB0aGlzLmNoZWNrZWQpIHtcbiAgICAgIHRoaXMuaXNDaGVja2VkID0gdmFsdWU7XG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuICBwcml2YXRlIGlzQ2hlY2tlZCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIGdldCBkaXNhYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5pc0Rpc2FibGVkO1xuICB9XG4gIHNldCBkaXNhYmxlZCh2YWx1ZTogYW55KSB7XG4gICAgY29uc3QgbmV3VmFsdWUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIGlmIChuZXdWYWx1ZSAhPT0gdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5pc0Rpc2FibGVkID0gbmV3VmFsdWU7XG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuICBwcml2YXRlIGlzRGlzYWJsZWQgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBnZXQgaW5kZXRlcm1pbmF0ZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc0luZGV0ZXJtaW5hdGU7XG4gIH1cbiAgc2V0IGluZGV0ZXJtaW5hdGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBjb25zdCBjaGFuZ2VkID0gdmFsdWUgIT09IHRoaXMuaXNJbmRldGVybWluYXRlO1xuICAgIHRoaXMuaXNJbmRldGVybWluYXRlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICBpZiAoY2hhbmdlZCkge1xuICAgICAgdGhpcy5pbmRldGVybWluYXRlQ2hhbmdlLmVtaXQodGhpcy5pc0luZGV0ZXJtaW5hdGUpO1xuICAgIH1cbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG4gIHByaXZhdGUgaXNJbmRldGVybWluYXRlID0gZmFsc2U7XG5cbiAgQElucHV0KCkgdmFsdWU6IHN0cmluZyA9ICdmYWxzZSc7XG5cbiAgQElucHV0KClcbiAgZ2V0IHJlcXVpcmVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzUmVxdWlyZWQ7XG4gIH1cbiAgc2V0IHJlcXVpcmVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5pc1JlcXVpcmVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgfVxuICBwcml2YXRlIGlzUmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgcmVhZG9ubHkgaW5kZXRlcm1pbmF0ZUNoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgY2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgY29udHJvbFZhbHVlQWNjZXNzb3JDaGFuZ2VGbjogKHZhbHVlOiBhbnkpID0+IHZvaWQgPSAoKSA9PiBudWxsO1xuXG4gIG9uVG91Y2hlZDogKCkgPT4gYW55ID0gKCkgPT4gbnVsbDtcblxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmNoZWNrZWQgPSAhIXZhbHVlO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBhbnkpID0+IHZvaWQpIHtcbiAgICB0aGlzLmNvbnRyb2xWYWx1ZUFjY2Vzc29yQ2hhbmdlRm4gPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cblxuICBvbkludGVyYWN0aW9uRXZlbnQoZXZlbnQ6IEV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cblxuICBvbklucHV0Q2xpY2soZXZlbnQ6IEV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIGlmICh0aGlzLmluZGV0ZXJtaW5hdGUpIHtcbiAgICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgdGhpcy5pc0luZGV0ZXJtaW5hdGUgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmluZGV0ZXJtaW5hdGVDaGFuZ2UuZW1pdCh0aGlzLmlzSW5kZXRlcm1pbmF0ZSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgaWYgKCF0aGlzLnZhbGlkKSB7XG4gICAgICAgIHRoaXMudmFsaWQgPSB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMucmVxdWlyZWQpIHtcbiAgICAgICAgdGhpcy5yZXF1aXJlZCA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgdGhpcy5jaGVja2VkID0gIXRoaXMuY2hlY2tlZDtcbiAgICAgIGlmICh0aGlzLmNvbnRyb2xWYWx1ZUFjY2Vzc29yQ2hhbmdlRm4gIT0gbnVsbCkge1xuICAgICAgICB0aGlzLmNvbnRyb2xWYWx1ZUFjY2Vzc29yQ2hhbmdlRm4odGhpcy5jaGVja2VkKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm9uVG91Y2hlZCAhPSBudWxsKSB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgICB9XG4gICAgICB0aGlzLmNoYW5nZS5lbWl0KHRoaXMuY2hlY2tlZCk7XG4gICAgfVxuICB9XG59XG4iLCI8bGFiZWxcbiAgY2xhc3M9XCJmd2UtY2hlY2tib3gtY29udGFpbmVyXCJcbiAgW2NsYXNzLmZuZy1jaGVja2JveC1sYXJnZV09XCJsYXJnZVwiXG4gIFtjbGFzcy5mbmctY2hlY2tib3gtaW52YWxpZF09XCIhdmFsaWQgfHwgcmVxdWlyZWRcIlxuICBbY2xhc3MuZndlLWRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgW2NsYXNzLmZuZy1jaGVja2JveC1pbmRldGVybWluYXRlXT1cImluZGV0ZXJtaW5hdGVcIlxuICBbY2xhc3MuZndlLWNoZWNrZWRdPVwiY2hlY2tlZFwiXG4gIFthdHRyLmZvcl09XCJpbnB1dElkXCJcbiAgW25nQ2xhc3NdPVwie1xuICAgICdmd2UtbGFiZWwtYmVsb3cnOiBsYWJlbFBvc2l0aW9uID09ICdiZWxvdycsXG4gICAgJ2Z3ZS1sYWJlbC1iZWZvcmUnOiBsYWJlbFBvc2l0aW9uID09ICdiZWZvcmUnXG4gIH1cIlxuPlxuICA8aW5wdXRcbiAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgIFtpZF09XCJpbnB1dElkXCJcbiAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgW2F0dHIudmFsdWVdPVwidmFsdWVcIlxuICAgIFthdHRyLm5hbWVdPVwibmFtZVwiXG4gICAgW2NoZWNrZWRdPVwiY2hlY2tlZFwiXG4gICAgKGNoYW5nZSk9XCJvbkludGVyYWN0aW9uRXZlbnQoJGV2ZW50KVwiXG4gICAgKGNsaWNrKT1cIm9uSW5wdXRDbGljaygkZXZlbnQpXCJcbiAgLz5cbiAgPGRpdiBjbGFzcz1cImZ3ZS1jaGVja2JveC1pbmRpY2F0b3ItY29udGFpbmVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImZ3ZS1jaGVja2JveC1pbmRpY2F0b3ItYmFja2dyb3VuZFwiPjwvZGl2PlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaW5kZXRlcm1pbmF0ZSAmJiBjaGVja2VkXCI+XG4gICAgICA8c3ZnICpuZ0lmPVwibGFyZ2VcIiB3aWR0aD1cIjI0cHhcIiBoZWlnaHQ9XCIyNHB4XCI+XG4gICAgICAgIDxwYXRoIGQ9XCJNMTcuNSA3TDEwIDE0LjUgNy41MDEgMTJsLTEuNSAxLjUwMUwxMCAxNy41bDktOXpcIiBmaWxsPVwiI2ZmZlwiIC8+XG4gICAgICA8L3N2Zz5cbiAgICAgIDxzdmcgKm5nSWY9XCIhbGFyZ2VcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCI+XG4gICAgICAgIDxwYXRoIGQ9XCJNNiAxMkwzIDlsMS4yNS0xLjI1TDYgOS41bDUuNzUtNS43NUwxMyA1bC03IDd6XCIgZmlsbD1cIiNmZmZcIiAvPlxuICAgICAgPC9zdmc+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPGRpdiAqbmdJZj1cImluZGV0ZXJtaW5hdGUgJiYgIWNoZWNrZWRcIiBjbGFzcz1cImZ3ZS1pbmRldGVybWluYXRlLWluZGljYXRvclwiPjwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImZ3ZS1jaGVja2JveC10aXRsZVwiPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgPC9kaXY+XG48L2xhYmVsPlxuIl19
@@ -1,88 +0,0 @@
1
- import { ConnectionPositionPair, OverlayModule } from '@angular/cdk/overlay';
2
- import { CommonModule } from '@angular/common';
3
- import { Component, Input, ViewEncapsulation } from '@angular/core';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/cdk/overlay";
6
- import * as i2 from "@angular/common";
7
- /**
8
- * A control to display a color.
9
- */
10
- export class FngColorIndicatorComponent {
11
- constructor() {
12
- /**
13
- * The label above the color.
14
- */
15
- this.label = '';
16
- /**
17
- * A text next to the color.
18
- */
19
- this.text = '';
20
- /**
21
- * The current color as a string.
22
- * Examples: '#ffffff', 'red', 'rgba(1,2,3,0.5)'
23
- */
24
- this.color = '#ffffff';
25
- /**
26
- * enable an overlay to edit the color.
27
- * The editor must be passed as the content of the indicator.
28
- */
29
- this.showPopOver = false;
30
- this.disabled = false;
31
- this.isEditorOpen = false;
32
- this.positions = [
33
- new ConnectionPositionPair({
34
- originX: 'center',
35
- originY: 'top'
36
- }, {
37
- overlayX: 'center',
38
- overlayY: 'bottom'
39
- }, 0, -20, ['fng-color-indicator-top']),
40
- new ConnectionPositionPair({
41
- originX: 'center',
42
- originY: 'bottom'
43
- }, {
44
- overlayX: 'center',
45
- overlayY: 'top'
46
- }, 0, 20, ['fng-color-indicator-bottom']),
47
- new ConnectionPositionPair({
48
- originX: 'start',
49
- originY: 'center'
50
- }, {
51
- overlayX: 'end',
52
- overlayY: 'center'
53
- }, -20, 0, ['fng-color-indicator-left']),
54
- new ConnectionPositionPair({
55
- originX: 'end',
56
- originY: 'center'
57
- }, {
58
- overlayX: 'start',
59
- overlayY: 'center'
60
- }, 20, 0, ['fng-color-indicator-right'])
61
- ];
62
- }
63
- getBorderColor() {
64
- if (!this.color || this.color.toUpperCase() === '#FFFFFF' || this.color.toUpperCase() === '#F0F2F3') {
65
- return '#b6bec6'; // = $control-border
66
- }
67
- else {
68
- return this.color;
69
- }
70
- }
71
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: FngColorIndicatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
72
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.2", type: FngColorIndicatorComponent, isStandalone: true, selector: "fng-color-indicator", inputs: { label: "label", text: "text", color: "color", showPopOver: "showPopOver", disabled: "disabled" }, ngImport: i0, template: "<div class=\"fwe-color-indicator\" (click)=\"isEditorOpen = showPopOver ? !isEditorOpen : false\" [class.fwe-color-indicator--disabled]=\"disabled\">\n <div class=\"fwe-color-label\" [style.opacity]=\"isEditorOpen ? 0 : 1\">\n {{ label }}\n </div>\n <div class=\"fwe-color-container\">\n <div\n class=\"fwe-color-box\"\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n [style.background]=\"color\"\n [style.border-color]=\"getBorderColor()\"\n >\n <svg\n *ngIf=\"!color\"\n class=\"fwe-no-color-pattern\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n id=\"canvas1\"\n width=\"18\"\n height=\"18\"\n >\n <defs>\n <pattern id=\"bwsquare2px\" width=\"4\" height=\"4\" patternUnits=\"userSpaceOnUse\">\n <rect x=\"0\" y=\"0\" width=\"2\" height=\"2\" stroke=\"none\" fill=\"#ffffff\" />\n <rect x=\"2\" y=\"0\" width=\"2\" height=\"2\" stroke=\"none\" fill=\"#e2e5e8\" />\n <rect x=\"0\" y=\"2\" width=\"2\" height=\"2\" stroke=\"none\" fill=\"#e2e5e8\" />\n <rect x=\"2\" y=\"2\" width=\"2\" height=\"2\" stroke=\"none\" fill=\"#ffffff\" />\n </pattern>\n </defs>\n <rect x=\"0\" y=\"0\" rx=\"0\" ry=\"0\" width=\"18\" height=\"18\" fill=\"url(#bwsquare2px)\" stroke-width=\"0\" />\n </svg>\n </div>\n <div class=\"fwe-color-indicator-text\" *ngIf=\"text\">\n {{ text }}\n </div>\n </div>\n\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isEditorOpen\"\n [cdkConnectedOverlayPositions]=\"positions\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n [cdkConnectedOverlayBackdropClass]=\"'backdrop'\"\n [cdkConnectedOverlayViewportMargin]=\"32\"\n (backdropClick)=\"isEditorOpen = false\"\n >\n <div class=\"fwe-popover-container\">\n <div class=\"fwe-triangle\"></div>\n <div class=\"fwe-popover\" #popoverContent>\n <div class=\"fwe-color-label fwe-mb-s\">\n {{ label }}\n </div>\n <ng-content></ng-content>\n </div>\n </div>\n </ng-template>\n</div>\n", styles: [".fwe-color-indicator .fwe-popover-container{position:relative}.fwe-color-indicator .fwe-popover-container .fwe-popover{background-color:var(--fwe-white);padding:8px 16px 16px;font-size:var(--fwe-font-size-md);line-height:1rem;box-shadow:0 1px 4px #3333;border-radius:4px}.fwe-color-indicator .fwe-backdrop{background:transparent}.fwe-color-indicator .fwe-color-label{height:18px;font-size:var(--fwe-font-size-small);font-weight:var(--fwe-font-weight-bold);margin-bottom:4px}.fwe-color-indicator .fwe-color-container{display:flex}.fwe-color-indicator .fwe-color-container .fwe-color-box{height:24px;width:24px;border-radius:4px;border:1px solid var(--fwe-control-border);background:var(--fwe-white)}.fwe-color-indicator .fwe-color-container .fwe-color-box .fwe-no-color-pattern{margin:2px}.fwe-color-indicator .fwe-color-container .fwe-color-indicator-text{margin-left:8px}.fwe-color-indicator--disabled{pointer-events:none}.fwe-color-indicator--disabled .fwe-color-label{color:var(--fwe-text-disabled)}.fwe-color-indicator--disabled .fwe-color-container .fwe-color-box{opacity:.5}.fwe-color-indicator--disabled .fwe-color-container .fwe-color-indicator-text{color:var(--fwe-text-disabled)}\n"], dependencies: [{ kind: "ngmodule", type: OverlayModule }, { kind: "directive", type: i1.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: i1.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], encapsulation: i0.ViewEncapsulation.None }); }
73
- }
74
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: FngColorIndicatorComponent, decorators: [{
75
- type: Component,
76
- args: [{ standalone: true, imports: [OverlayModule, CommonModule], selector: 'fng-color-indicator', encapsulation: ViewEncapsulation.None, template: "<div class=\"fwe-color-indicator\" (click)=\"isEditorOpen = showPopOver ? !isEditorOpen : false\" [class.fwe-color-indicator--disabled]=\"disabled\">\n <div class=\"fwe-color-label\" [style.opacity]=\"isEditorOpen ? 0 : 1\">\n {{ label }}\n </div>\n <div class=\"fwe-color-container\">\n <div\n class=\"fwe-color-box\"\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n [style.background]=\"color\"\n [style.border-color]=\"getBorderColor()\"\n >\n <svg\n *ngIf=\"!color\"\n class=\"fwe-no-color-pattern\"\n version=\"1.1\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n id=\"canvas1\"\n width=\"18\"\n height=\"18\"\n >\n <defs>\n <pattern id=\"bwsquare2px\" width=\"4\" height=\"4\" patternUnits=\"userSpaceOnUse\">\n <rect x=\"0\" y=\"0\" width=\"2\" height=\"2\" stroke=\"none\" fill=\"#ffffff\" />\n <rect x=\"2\" y=\"0\" width=\"2\" height=\"2\" stroke=\"none\" fill=\"#e2e5e8\" />\n <rect x=\"0\" y=\"2\" width=\"2\" height=\"2\" stroke=\"none\" fill=\"#e2e5e8\" />\n <rect x=\"2\" y=\"2\" width=\"2\" height=\"2\" stroke=\"none\" fill=\"#ffffff\" />\n </pattern>\n </defs>\n <rect x=\"0\" y=\"0\" rx=\"0\" ry=\"0\" width=\"18\" height=\"18\" fill=\"url(#bwsquare2px)\" stroke-width=\"0\" />\n </svg>\n </div>\n <div class=\"fwe-color-indicator-text\" *ngIf=\"text\">\n {{ text }}\n </div>\n </div>\n\n <ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isEditorOpen\"\n [cdkConnectedOverlayPositions]=\"positions\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n [cdkConnectedOverlayBackdropClass]=\"'backdrop'\"\n [cdkConnectedOverlayViewportMargin]=\"32\"\n (backdropClick)=\"isEditorOpen = false\"\n >\n <div class=\"fwe-popover-container\">\n <div class=\"fwe-triangle\"></div>\n <div class=\"fwe-popover\" #popoverContent>\n <div class=\"fwe-color-label fwe-mb-s\">\n {{ label }}\n </div>\n <ng-content></ng-content>\n </div>\n </div>\n </ng-template>\n</div>\n", styles: [".fwe-color-indicator .fwe-popover-container{position:relative}.fwe-color-indicator .fwe-popover-container .fwe-popover{background-color:var(--fwe-white);padding:8px 16px 16px;font-size:var(--fwe-font-size-md);line-height:1rem;box-shadow:0 1px 4px #3333;border-radius:4px}.fwe-color-indicator .fwe-backdrop{background:transparent}.fwe-color-indicator .fwe-color-label{height:18px;font-size:var(--fwe-font-size-small);font-weight:var(--fwe-font-weight-bold);margin-bottom:4px}.fwe-color-indicator .fwe-color-container{display:flex}.fwe-color-indicator .fwe-color-container .fwe-color-box{height:24px;width:24px;border-radius:4px;border:1px solid var(--fwe-control-border);background:var(--fwe-white)}.fwe-color-indicator .fwe-color-container .fwe-color-box .fwe-no-color-pattern{margin:2px}.fwe-color-indicator .fwe-color-container .fwe-color-indicator-text{margin-left:8px}.fwe-color-indicator--disabled{pointer-events:none}.fwe-color-indicator--disabled .fwe-color-label{color:var(--fwe-text-disabled)}.fwe-color-indicator--disabled .fwe-color-container .fwe-color-box{opacity:.5}.fwe-color-indicator--disabled .fwe-color-container .fwe-color-indicator-text{color:var(--fwe-text-disabled)}\n"] }]
77
- }], propDecorators: { label: [{
78
- type: Input
79
- }], text: [{
80
- type: Input
81
- }], color: [{
82
- type: Input
83
- }], showPopOver: [{
84
- type: Input
85
- }], disabled: [{
86
- type: Input
87
- }] } });
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3ItaW5kaWNhdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXIvc3JjL2xpYi9mb3Jtcy9jb2xvci1pbmRpY2F0b3IvY29sb3ItaW5kaWNhdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXIvc3JjL2xpYi9mb3Jtcy9jb2xvci1pbmRpY2F0b3IvY29sb3ItaW5kaWNhdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7QUFFcEU7O0dBRUc7QUFTSCxNQUFNLE9BQU8sMEJBQTBCO0lBUnZDO1FBU0U7O1dBRUc7UUFDTSxVQUFLLEdBQVcsRUFBRSxDQUFDO1FBRTVCOztXQUVHO1FBQ00sU0FBSSxHQUFXLEVBQUUsQ0FBQztRQUUzQjs7O1dBR0c7UUFDTSxVQUFLLEdBQVcsU0FBUyxDQUFDO1FBRW5DOzs7V0FHRztRQUNNLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBRTdCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFFNUIsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFFckIsY0FBUyxHQUFHO1lBQ2pCLElBQUksc0JBQXNCLENBQ3hCO2dCQUNFLE9BQU8sRUFBRSxRQUFRO2dCQUNqQixPQUFPLEVBQUUsS0FBSzthQUNmLEVBQ0Q7Z0JBQ0UsUUFBUSxFQUFFLFFBQVE7Z0JBQ2xCLFFBQVEsRUFBRSxRQUFRO2FBQ25CLEVBQ0QsQ0FBQyxFQUNELENBQUMsRUFBRSxFQUNILENBQUMseUJBQXlCLENBQUMsQ0FDNUI7WUFDRCxJQUFJLHNCQUFzQixDQUN4QjtnQkFDRSxPQUFPLEVBQUUsUUFBUTtnQkFDakIsT0FBTyxFQUFFLFFBQVE7YUFDbEIsRUFDRDtnQkFDRSxRQUFRLEVBQUUsUUFBUTtnQkFDbEIsUUFBUSxFQUFFLEtBQUs7YUFDaEIsRUFDRCxDQUFDLEVBQ0QsRUFBRSxFQUNGLENBQUMsNEJBQTRCLENBQUMsQ0FDL0I7WUFDRCxJQUFJLHNCQUFzQixDQUN4QjtnQkFDRSxPQUFPLEVBQUUsT0FBTztnQkFDaEIsT0FBTyxFQUFFLFFBQVE7YUFDbEIsRUFDRDtnQkFDRSxRQUFRLEVBQUUsS0FBSztnQkFDZixRQUFRLEVBQUUsUUFBUTthQUNuQixFQUNELENBQUMsRUFBRSxFQUNILENBQUMsRUFDRCxDQUFDLDBCQUEwQixDQUFDLENBQzdCO1lBQ0QsSUFBSSxzQkFBc0IsQ0FDeEI7Z0JBQ0UsT0FBTyxFQUFFLEtBQUs7Z0JBQ2QsT0FBTyxFQUFFLFFBQVE7YUFDbEIsRUFDRDtnQkFDRSxRQUFRLEVBQUUsT0FBTztnQkFDakIsUUFBUSxFQUFFLFFBQVE7YUFDbkIsRUFDRCxFQUFFLEVBQ0YsQ0FBQyxFQUNELENBQUMsMkJBQTJCLENBQUMsQ0FDOUI7U0FDRixDQUFDO0tBU0g7SUFQQyxjQUFjO1FBQ1osSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNwRyxPQUFPLFNBQVMsQ0FBQyxDQUFDLG9CQUFvQjtRQUN4QyxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztRQUNwQixDQUFDO0lBQ0gsQ0FBQzs4R0F4RlUsMEJBQTBCO2tHQUExQiwwQkFBMEIsMkxDZnZDLGl0RUEyREEsZ3VDRGxEWSxhQUFhLDByQ0FBRSxZQUFZOzsyRkFNMUIsMEJBQTBCO2tCQVJ0QyxTQUFTO2lDQUNJLElBQUksV0FDUCxDQUFDLGFBQWEsRUFBRSxZQUFZLENBQUMsWUFDNUIscUJBQXFCLGlCQUdoQixpQkFBaUIsQ0FBQyxJQUFJOzhCQU01QixLQUFLO3NCQUFiLEtBQUs7Z0JBS0csSUFBSTtzQkFBWixLQUFLO2dCQU1HLEtBQUs7c0JBQWIsS0FBSztnQkFNRyxXQUFXO3NCQUFuQixLQUFLO2dCQUVHLFFBQVE7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25uZWN0aW9uUG9zaXRpb25QYWlyLCBPdmVybGF5TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbi8qKlxuICogQSBjb250cm9sIHRvIGRpc3BsYXkgYSBjb2xvci5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtPdmVybGF5TW9kdWxlLCBDb21tb25Nb2R1bGVdLFxuICBzZWxlY3RvcjogJ2ZuZy1jb2xvci1pbmRpY2F0b3InLFxuICB0ZW1wbGF0ZVVybDogJy4vY29sb3ItaW5kaWNhdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY29sb3ItaW5kaWNhdG9yLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgRm5nQ29sb3JJbmRpY2F0b3JDb21wb25lbnQge1xuICAvKipcbiAgICogVGhlIGxhYmVsIGFib3ZlIHRoZSBjb2xvci5cbiAgICovXG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmcgPSAnJztcblxuICAvKipcbiAgICogQSB0ZXh0IG5leHQgdG8gdGhlIGNvbG9yLlxuICAgKi9cbiAgQElucHV0KCkgdGV4dDogc3RyaW5nID0gJyc7XG5cbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50IGNvbG9yIGFzIGEgc3RyaW5nLlxuICAgKiBFeGFtcGxlczogJyNmZmZmZmYnLCAncmVkJywgJ3JnYmEoMSwyLDMsMC41KSdcbiAgICovXG4gIEBJbnB1dCgpIGNvbG9yOiBzdHJpbmcgPSAnI2ZmZmZmZic7XG5cbiAgLyoqXG4gICAqIGVuYWJsZSBhbiBvdmVybGF5IHRvIGVkaXQgdGhlIGNvbG9yLlxuICAgKiBUaGUgZWRpdG9yIG11c3QgYmUgcGFzc2VkIGFzIHRoZSBjb250ZW50IG9mIHRoZSBpbmRpY2F0b3IuXG4gICAqL1xuICBASW5wdXQoKSBzaG93UG9wT3ZlcjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHVibGljIGlzRWRpdG9yT3BlbiA9IGZhbHNlO1xuXG4gIHB1YmxpYyBwb3NpdGlvbnMgPSBbXG4gICAgbmV3IENvbm5lY3Rpb25Qb3NpdGlvblBhaXIoXG4gICAgICB7XG4gICAgICAgIG9yaWdpblg6ICdjZW50ZXInLFxuICAgICAgICBvcmlnaW5ZOiAndG9wJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgb3ZlcmxheVg6ICdjZW50ZXInLFxuICAgICAgICBvdmVybGF5WTogJ2JvdHRvbSdcbiAgICAgIH0sXG4gICAgICAwLFxuICAgICAgLTIwLFxuICAgICAgWydmbmctY29sb3ItaW5kaWNhdG9yLXRvcCddXG4gICAgKSxcbiAgICBuZXcgQ29ubmVjdGlvblBvc2l0aW9uUGFpcihcbiAgICAgIHtcbiAgICAgICAgb3JpZ2luWDogJ2NlbnRlcicsXG4gICAgICAgIG9yaWdpblk6ICdib3R0b20nXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBvdmVybGF5WDogJ2NlbnRlcicsXG4gICAgICAgIG92ZXJsYXlZOiAndG9wJ1xuICAgICAgfSxcbiAgICAgIDAsXG4gICAgICAyMCxcbiAgICAgIFsnZm5nLWNvbG9yLWluZGljYXRvci1ib3R0b20nXVxuICAgICksXG4gICAgbmV3IENvbm5lY3Rpb25Qb3NpdGlvblBhaXIoXG4gICAgICB7XG4gICAgICAgIG9yaWdpblg6ICdzdGFydCcsXG4gICAgICAgIG9yaWdpblk6ICdjZW50ZXInXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBvdmVybGF5WDogJ2VuZCcsXG4gICAgICAgIG92ZXJsYXlZOiAnY2VudGVyJ1xuICAgICAgfSxcbiAgICAgIC0yMCxcbiAgICAgIDAsXG4gICAgICBbJ2ZuZy1jb2xvci1pbmRpY2F0b3ItbGVmdCddXG4gICAgKSxcbiAgICBuZXcgQ29ubmVjdGlvblBvc2l0aW9uUGFpcihcbiAgICAgIHtcbiAgICAgICAgb3JpZ2luWDogJ2VuZCcsXG4gICAgICAgIG9yaWdpblk6ICdjZW50ZXInXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBvdmVybGF5WDogJ3N0YXJ0JyxcbiAgICAgICAgb3ZlcmxheVk6ICdjZW50ZXInXG4gICAgICB9LFxuICAgICAgMjAsXG4gICAgICAwLFxuICAgICAgWydmbmctY29sb3ItaW5kaWNhdG9yLXJpZ2h0J11cbiAgICApXG4gIF07XG5cbiAgZ2V0Qm9yZGVyQ29sb3IoKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuY29sb3IgfHwgdGhpcy5jb2xvci50b1VwcGVyQ2FzZSgpID09PSAnI0ZGRkZGRicgfHwgdGhpcy5jb2xvci50b1VwcGVyQ2FzZSgpID09PSAnI0YwRjJGMycpIHtcbiAgICAgIHJldHVybiAnI2I2YmVjNic7IC8vID0gJGNvbnRyb2wtYm9yZGVyXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbG9yO1xuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZ3ZS1jb2xvci1pbmRpY2F0b3JcIiAoY2xpY2spPVwiaXNFZGl0b3JPcGVuID0gc2hvd1BvcE92ZXIgPyAhaXNFZGl0b3JPcGVuIDogZmFsc2VcIiBbY2xhc3MuZndlLWNvbG9yLWluZGljYXRvci0tZGlzYWJsZWRdPVwiZGlzYWJsZWRcIj5cbiAgPGRpdiBjbGFzcz1cImZ3ZS1jb2xvci1sYWJlbFwiIFtzdHlsZS5vcGFjaXR5XT1cImlzRWRpdG9yT3BlbiA/IDAgOiAxXCI+XG4gICAge3sgbGFiZWwgfX1cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJmd2UtY29sb3ItY29udGFpbmVyXCI+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJmd2UtY29sb3ItYm94XCJcbiAgICAgIGNka092ZXJsYXlPcmlnaW5cbiAgICAgICN0cmlnZ2VyPVwiY2RrT3ZlcmxheU9yaWdpblwiXG4gICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJjb2xvclwiXG4gICAgICBbc3R5bGUuYm9yZGVyLWNvbG9yXT1cImdldEJvcmRlckNvbG9yKClcIlxuICAgID5cbiAgICAgIDxzdmdcbiAgICAgICAgKm5nSWY9XCIhY29sb3JcIlxuICAgICAgICBjbGFzcz1cImZ3ZS1uby1jb2xvci1wYXR0ZXJuXCJcbiAgICAgICAgdmVyc2lvbj1cIjEuMVwiXG4gICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICB4bWxuczp4bGluaz1cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIlxuICAgICAgICBpZD1cImNhbnZhczFcIlxuICAgICAgICB3aWR0aD1cIjE4XCJcbiAgICAgICAgaGVpZ2h0PVwiMThcIlxuICAgICAgPlxuICAgICAgICA8ZGVmcz5cbiAgICAgICAgICA8cGF0dGVybiBpZD1cImJ3c3F1YXJlMnB4XCIgd2lkdGg9XCI0XCIgaGVpZ2h0PVwiNFwiIHBhdHRlcm5Vbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+XG4gICAgICAgICAgICA8cmVjdCB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCIyXCIgaGVpZ2h0PVwiMlwiIHN0cm9rZT1cIm5vbmVcIiBmaWxsPVwiI2ZmZmZmZlwiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PVwiMlwiIHk9XCIwXCIgd2lkdGg9XCIyXCIgaGVpZ2h0PVwiMlwiIHN0cm9rZT1cIm5vbmVcIiBmaWxsPVwiI2UyZTVlOFwiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PVwiMFwiIHk9XCIyXCIgd2lkdGg9XCIyXCIgaGVpZ2h0PVwiMlwiIHN0cm9rZT1cIm5vbmVcIiBmaWxsPVwiI2UyZTVlOFwiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PVwiMlwiIHk9XCIyXCIgd2lkdGg9XCIyXCIgaGVpZ2h0PVwiMlwiIHN0cm9rZT1cIm5vbmVcIiBmaWxsPVwiI2ZmZmZmZlwiIC8+XG4gICAgICAgICAgPC9wYXR0ZXJuPlxuICAgICAgICA8L2RlZnM+XG4gICAgICAgIDxyZWN0IHg9XCIwXCIgeT1cIjBcIiByeD1cIjBcIiByeT1cIjBcIiB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIiBmaWxsPVwidXJsKCNid3NxdWFyZTJweClcIiBzdHJva2Utd2lkdGg9XCIwXCIgLz5cbiAgICAgIDwvc3ZnPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJmd2UtY29sb3ItaW5kaWNhdG9yLXRleHRcIiAqbmdJZj1cInRleHRcIj5cbiAgICAgIHt7IHRleHQgfX1cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPG5nLXRlbXBsYXRlXG4gICAgY2RrQ29ubmVjdGVkT3ZlcmxheVxuICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5T3JpZ2luXT1cInRyaWdnZXJcIlxuICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5T3Blbl09XCJpc0VkaXRvck9wZW5cIlxuICAgIFtjZGtDb25uZWN0ZWRPdmVybGF5UG9zaXRpb25zXT1cInBvc2l0aW9uc1wiXG4gICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlIYXNCYWNrZHJvcF09XCJ0cnVlXCJcbiAgICBbY2RrQ29ubmVjdGVkT3ZlcmxheUJhY2tkcm9wQ2xhc3NdPVwiJ2JhY2tkcm9wJ1wiXG4gICAgW2Nka0Nvbm5lY3RlZE92ZXJsYXlWaWV3cG9ydE1hcmdpbl09XCIzMlwiXG4gICAgKGJhY2tkcm9wQ2xpY2spPVwiaXNFZGl0b3JPcGVuID0gZmFsc2VcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cImZ3ZS1wb3BvdmVyLWNvbnRhaW5lclwiPlxuICAgICAgPGRpdiBjbGFzcz1cImZ3ZS10cmlhbmdsZVwiPjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImZ3ZS1wb3BvdmVyXCIgI3BvcG92ZXJDb250ZW50PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZndlLWNvbG9yLWxhYmVsIGZ3ZS1tYi1zXCI+XG4gICAgICAgICAge3sgbGFiZWwgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG4iXX0=
@@ -1,129 +0,0 @@
1
- export class ColorHelper {
2
- // based on: https://gist.github.com/mjackson/5311256
3
- static rgbToHsv(rgb) {
4
- if (!rgb) {
5
- return { h: 0, s: 0, v: 0 };
6
- }
7
- const r = this.limitToByte(rgb.r) / 255;
8
- const g = this.limitToByte(rgb.g) / 255;
9
- const b = this.limitToByte(rgb.b) / 255;
10
- const max = Math.max(r, g, b);
11
- const min = Math.min(r, g, b);
12
- let h = max;
13
- let s = max;
14
- const v = max;
15
- const d = max - min;
16
- s = max === 0 ? 0 : d / max;
17
- if (max === min) {
18
- h = 0; // achromatic
19
- }
20
- else {
21
- switch (max) {
22
- case r:
23
- h = (g - b) / d + (g < b ? 6 : 0);
24
- break;
25
- case g:
26
- h = (b - r) / d + 2;
27
- break;
28
- case b:
29
- h = (r - g) / d + 4;
30
- break;
31
- }
32
- h /= 6;
33
- }
34
- return { h, s, v };
35
- }
36
- // based on: https://gist.github.com/mjackson/5311256
37
- static hsvToRgb(hsv) {
38
- if (!hsv) {
39
- return { r: 0, g: 0, b: 0 };
40
- }
41
- hsv.h = this.limitToOne(hsv.h);
42
- hsv.s = this.limitToOne(hsv.s);
43
- hsv.v = this.limitToOne(hsv.v);
44
- let r = 0;
45
- let g = 0;
46
- let b = 0;
47
- const i = Math.floor(hsv.h * 6);
48
- const f = hsv.h * 6 - i;
49
- const p = hsv.v * (1 - hsv.s);
50
- const q = hsv.v * (1 - f * hsv.s);
51
- const t = hsv.v * (1 - (1 - f) * hsv.s);
52
- switch (i % 6) {
53
- case 0:
54
- r = hsv.v;
55
- g = t;
56
- b = p;
57
- break;
58
- case 1:
59
- r = q;
60
- g = hsv.v;
61
- b = p;
62
- break;
63
- case 2:
64
- r = p;
65
- g = hsv.v;
66
- b = t;
67
- break;
68
- case 3:
69
- r = p;
70
- g = q;
71
- b = hsv.v;
72
- break;
73
- case 4:
74
- r = t;
75
- g = p;
76
- b = hsv.v;
77
- break;
78
- case 5:
79
- r = hsv.v;
80
- g = p;
81
- b = q;
82
- break;
83
- }
84
- return {
85
- r: this.limitToByte(r * 255),
86
- g: this.limitToByte(g * 255),
87
- b: this.limitToByte(b * 255)
88
- };
89
- }
90
- static limitToByte(num) {
91
- return Math.round(num <= 0 ? 0 : num >= 255 ? 255 : num);
92
- }
93
- static limitToOne(num) {
94
- return num <= 0 ? 0 : num >= 1 ? 1 : num;
95
- }
96
- static numberToHex(rgb) {
97
- let hex = Math.round(rgb).toString(16);
98
- if (hex.length < 2) {
99
- hex = '0' + hex;
100
- }
101
- return hex.toUpperCase();
102
- }
103
- static rgbToHex(rgb) {
104
- if (!rgb) {
105
- return '#FFFFFF';
106
- }
107
- rgb.r = this.limitToByte(rgb.r);
108
- rgb.g = this.limitToByte(rgb.g);
109
- rgb.b = this.limitToByte(rgb.b);
110
- const red = this.numberToHex(rgb.r);
111
- const green = this.numberToHex(rgb.g);
112
- const blue = this.numberToHex(rgb.b);
113
- return '#' + red + green + blue;
114
- }
115
- static hexToRgb(hexString) {
116
- if (!hexString) {
117
- return { r: 0, g: 0, b: 0 };
118
- }
119
- const numbersOnly = hexString.substring(1);
120
- const aRgbHex = numbersOnly.match(/.{1,2}/g);
121
- if (aRgbHex?.length === 3) {
122
- return { r: parseInt(aRgbHex[0], 16), g: parseInt(aRgbHex[1], 16), b: parseInt(aRgbHex[2], 16) };
123
- }
124
- else {
125
- return { r: 0, g: 0, b: 0 };
126
- }
127
- }
128
- }
129
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3ItaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci9zcmMvbGliL2Zvcm1zL2NvbG9yLXBpY2tlci9jb2xvci1oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFnQixXQUFXO0lBQy9CLHFEQUFxRDtJQUM5QyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQXVEO1FBQzVFLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNULE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQzlCLENBQUM7UUFFRCxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7UUFDeEMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO1FBQ3hDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUV4QyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDOUIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBRTlCLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUNaLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUNaLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUVkLE1BQU0sQ0FBQyxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDcEIsQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLENB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QztJQUVNLE1BQU0sQ0FBQyxRQUFRLENBQUMsU0FBd0I7UUFDN0MsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2YsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDOUIsQ0FBQztRQUNELE1BQU0sV0FBVyxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0MsTUFBTSxPQUFPLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM3QyxJQUFJLE9BQU8sRUFBRSxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDMUIsT0FBTyxFQUFFLENBQUMsRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFDbkcsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUM5QixDQUFDO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGFic3RyYWN0IGNsYXNzIENvbG9ySGVscGVyIHtcbiAgLy8gYmFzZWQgb246IGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL21qYWNrc29uLzUzMTEyNTZcbiAgcHVibGljIHN0YXRpYyByZ2JUb0hzdihyZ2I6IFJlY29yZDwncicgfCAnZycgfCAnYicsIG51bWJlcj4gfCB1bmRlZmluZWQgfCBudWxsKTogUmVjb3JkPCdoJyB8ICdzJyB8ICd2JywgbnVtYmVyPiB7XG4gICAgaWYgKCFyZ2IpIHtcbiAgICAgIHJldHVybiB7IGg6IDAsIHM6IDAsIHY6IDAgfTtcbiAgICB9XG5cbiAgICBjb25zdCByID0gdGhpcy5saW1pdFRvQnl0ZShyZ2IucikgLyAyNTU7XG4gICAgY29uc3QgZyA9IHRoaXMubGltaXRUb0J5dGUocmdiLmcpIC8gMjU1O1xuICAgIGNvbnN0IGIgPSB0aGlzLmxpbWl0VG9CeXRlKHJnYi5iKSAvIDI1NTtcblxuICAgIGNvbnN0IG1heCA9IE1hdGgubWF4KHIsIGcsIGIpO1xuICAgIGNvbnN0IG1pbiA9IE1hdGgubWluKHIsIGcsIGIpO1xuXG4gICAgbGV0IGggPSBtYXg7XG4gICAgbGV0IHMgPSBtYXg7XG4gICAgY29uc3QgdiA9IG1heDtcblxuICAgIGNvbnN0IGQgPSBtYXggLSBtaW47XG4gICAgcyA9IG1heCA9PT0gMCA/IDAgOiBkIC8gbWF4O1xuXG4gICAgaWYgKG1heCA9PT0gbWluKSB7XG4gICAgICBoID0gMDsgLy8gYWNocm9tYXRpY1xuICAgIH0gZWxzZSB7XG4gICAgICBzd2l0Y2ggKG1heCkge1xuICAgICAgICBjYXNlIHI6XG4gICAgICAgICAgaCA9IChnIC0gYikgLyBkICsgKGcgPCBiID8gNiA6IDApO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIGc6XG4gICAgICAgICAgaCA9IChiIC0gcikgLyBkICsgMjtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBiOlxuICAgICAgICAgIGggPSAociAtIGcpIC8gZCArIDQ7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGggLz0gNjtcbiAgICB9XG5cbiAgICByZXR1cm4geyBoLCBzLCB2IH07XG4gIH1cblxuICAvLyBiYXNlZCBvbjogaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vbWphY2tzb24vNTMxMTI1NlxuICBwdWJsaWMgc3RhdGljIGhzdlRvUmdiKGhzdjogUmVjb3JkPCdoJyB8ICdzJyB8ICd2JywgbnVtYmVyPiB8IHVuZGVmaW5lZCB8IG51bGwpOiBSZWNvcmQ8J3InIHwgJ2cnIHwgJ2InLCBudW1iZXI+IHtcbiAgICBpZiAoIWhzdikge1xuICAgICAgcmV0dXJuIHsgcjogMCwgZzogMCwgYjogMCB9O1xuICAgIH1cblxuICAgIGhzdi5oID0gdGhpcy5saW1pdFRvT25lKGhzdi5oKTtcbiAgICBoc3YucyA9IHRoaXMubGltaXRUb09uZShoc3Yucyk7XG4gICAgaHN2LnYgPSB0aGlzLmxpbWl0VG9PbmUoaHN2LnYpO1xuXG4gICAgbGV0IHI6IG51bWJlciA9IDA7XG4gICAgbGV0IGc6IG51bWJlciA9IDA7XG4gICAgbGV0IGI6IG51bWJlciA9IDA7XG5cbiAgICBjb25zdCBpID0gTWF0aC5mbG9vcihoc3YuaCAqIDYpO1xuICAgIGNvbnN0IGYgPSBoc3YuaCAqIDYgLSBpO1xuICAgIGNvbnN0IHAgPSBoc3YudiAqICgxIC0gaHN2LnMpO1xuICAgIGNvbnN0IHEgPSBoc3YudiAqICgxIC0gZiAqIGhzdi5zKTtcbiAgICBjb25zdCB0ID0gaHN2LnYgKiAoMSAtICgxIC0gZikgKiBoc3Yucyk7XG5cbiAgICBzd2l0Y2ggKGkgJSA2KSB7XG4gICAgICBjYXNlIDA6XG4gICAgICAgIHIgPSBoc3YudjtcbiAgICAgICAgZyA9IHQ7XG4gICAgICAgIGIgPSBwO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTpcbiAgICAgICAgciA9IHE7XG4gICAgICAgIGcgPSBoc3YudjtcbiAgICAgICAgYiA9IHA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyOlxuICAgICAgICByID0gcDtcbiAgICAgICAgZyA9IGhzdi52O1xuICAgICAgICBiID0gdDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDM6XG4gICAgICAgIHIgPSBwO1xuICAgICAgICBnID0gcTtcbiAgICAgICAgYiA9IGhzdi52O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgNDpcbiAgICAgICAgciA9IHQ7XG4gICAgICAgIGcgPSBwO1xuICAgICAgICBiID0gaHN2LnY7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSA1OlxuICAgICAgICByID0gaHN2LnY7XG4gICAgICAgIGcgPSBwO1xuICAgICAgICBiID0gcTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHI6IHRoaXMubGltaXRUb0J5dGUociAqIDI1NSksXG4gICAgICBnOiB0aGlzLmxpbWl0VG9CeXRlKGcgKiAyNTUpLFxuICAgICAgYjogdGhpcy5saW1pdFRvQnl0ZShiICogMjU1KVxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBsaW1pdFRvQnl0ZShudW06IG51bWJlcikge1xuICAgIHJldHVybiBNYXRoLnJvdW5kKG51bSA8PSAwID8gMCA6IG51bSA+PSAyNTUgPyAyNTUgOiBudW0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgbGltaXRUb09uZShudW06IG51bWJlcikge1xuICAgIHJldHVybiBudW0gPD0gMCA/IDAgOiBudW0gPj0gMSA/IDEgOiBudW07XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBudW1iZXJUb0hleChyZ2I6IG51bWJlcik6IHN0cmluZyB7XG4gICAgbGV0IGhleCA9IE1hdGgucm91bmQocmdiKS50b1N0cmluZygxNik7XG4gICAgaWYgKGhleC5sZW5ndGggPCAyKSB7XG4gICAgICBoZXggPSAnMCcgKyBoZXg7XG4gICAgfVxuICAgIHJldHVybiBoZXgudG9VcHBlckNhc2UoKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgcmdiVG9IZXgocmdiOiBSZWNvcmQ8J3InIHwgJ2cnIHwgJ2InLCBudW1iZXI+IHwgdW5kZWZpbmVkIHwgbnVsbCkge1xuICAgIGlmICghcmdiKSB7XG4gICAgICByZXR1cm4gJyNGRkZGRkYnO1xuICAgIH1cblxuICAgIHJnYi5yID0gdGhpcy5saW1pdFRvQnl0ZShyZ2Iucik7XG4gICAgcmdiLmcgPSB0aGlzLmxpbWl0VG9CeXRlKHJnYi5nKTtcbiAgICByZ2IuYiA9IHRoaXMubGltaXRUb0J5dGUocmdiLmIpO1xuXG4gICAgY29uc3QgcmVkID0gdGhpcy5udW1iZXJUb0hleChyZ2Iucik7XG4gICAgY29uc3QgZ3JlZW4gPSB0aGlzLm51bWJlclRvSGV4KHJnYi5nKTtcbiAgICBjb25zdCBibHVlID0gdGhpcy5udW1iZXJUb0hleChyZ2IuYik7XG4gICAgcmV0dXJuICcjJyArIHJlZCArIGdyZWVuICsgYmx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgaGV4VG9SZ2IoaGV4U3RyaW5nOiBzdHJpbmcgfCBudWxsKTogUmVjb3JkPCdyJyB8ICdnJyB8ICdiJywgbnVtYmVyPiB7XG4gICAgaWYgKCFoZXhTdHJpbmcpIHtcbiAgICAgIHJldHVybiB7IHI6IDAsIGc6IDAsIGI6IDAgfTtcbiAgICB9XG4gICAgY29uc3QgbnVtYmVyc09ubHkgPSBoZXhTdHJpbmcuc3Vic3RyaW5nKDEpO1xuICAgIGNvbnN0IGFSZ2JIZXggPSBudW1iZXJzT25seS5tYXRjaCgvLnsxLDJ9L2cpO1xuICAgIGlmIChhUmdiSGV4Py5sZW5ndGggPT09IDMpIHtcbiAgICAgIHJldHVybiB7IHI6IHBhcnNlSW50KGFSZ2JIZXhbMF0sIDE2KSwgZzogcGFyc2VJbnQoYVJnYkhleFsxXSwgMTYpLCBiOiBwYXJzZUludChhUmdiSGV4WzJdLCAxNikgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHsgcjogMCwgZzogMCwgYjogMCB9O1xuICAgIH1cbiAgfVxufVxuIl19