@festo-ui/angular 5.1.0 → 6.0.0-dev.198
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.
- package/{esm2020 → esm2022}/lib/components/accordion/accordion-header/accordion-header.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/accordion/accordion-item/accordion-item-body/accordion-item-body.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/accordion/accordion-item/accordion-item-header/accordion-item-header.component.mjs +4 -4
- package/esm2022/lib/components/accordion/accordion-item/accordion-item.component.mjs +148 -0
- package/esm2022/lib/components/accordion/accordion.component.mjs +59 -0
- package/{esm2020 → esm2022}/lib/components/breadcrumb/breadcrumb.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/buttons/button/button.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/buttons/link-button/link-button.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/chips/chip/chip.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/chips/chip-container/chip-container.component.mjs +4 -4
- package/esm2022/lib/components/components.module.mjs +207 -0
- package/{esm2020 → esm2022}/lib/components/loading-indicator/loading-indicator.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/mobile-flyout/mobile-flyout-item/mobile-flyout-item.component.mjs +6 -6
- package/{esm2020 → esm2022}/lib/components/mobile-flyout/mobile-flyout-page/mobile-flyout-page.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/mobile-flyout/mobile-flyout.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/pagination/pagination.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/popovers/legend/legend.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/components/popovers/legend/legend.directive.mjs +5 -5
- package/{esm2020 → esm2022}/lib/components/popovers/popover/popover.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/components/popovers/popover-content/popover-content.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/components/popovers/popover-content/popover-content.directive.mjs +5 -5
- package/{esm2020 → esm2022}/lib/components/popovers/popover-menu/popover-menu.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/components/popovers/popover.service.mjs +5 -5
- package/{esm2020 → esm2022}/lib/components/popovers/tooltip/tooltip.directive.mjs +5 -5
- package/{esm2020 → esm2022}/lib/components/progress/progress.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/scroll/scrollable.directive.mjs +5 -5
- package/{esm2020 → esm2022}/lib/components/search-input/search-input.component.mjs +4 -4
- package/esm2022/lib/components/sidebar-overlay/sidebar-overlay.component.mjs +59 -0
- package/{esm2020 → esm2022}/lib/components/snackbar/snackbar-container.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/snackbar/snackbar-container.directive.mjs +5 -5
- package/esm2022/lib/components/snackbar/snackbar.component.mjs +81 -0
- package/esm2022/lib/components/snackbar/snackbar.module.mjs +24 -0
- package/{esm2020 → esm2022}/lib/components/snackbar/snackbar.service.mjs +5 -5
- package/{esm2020 → esm2022}/lib/components/stepper-horizontal/step-horizontal/step-horizontal.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/stepper-horizontal/stepper-horizontal.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/stepper-vertical/step-vertical/step-vertical.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/stepper-vertical/stepper-vertical.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/components/table-header-cell/table-header-cell.directive.mjs +4 -4
- package/esm2022/lib/components/tabs/tab-pane/tab-pane.component.mjs +34 -0
- package/esm2022/lib/components/tabs/tabs.component.mjs +459 -0
- package/{esm2020 → esm2022}/lib/directives/click-outside.directive.mjs +5 -5
- package/{esm2020 → esm2022}/lib/festo-angular.module.mjs +5 -5
- package/esm2022/lib/forms/checkbox/checkbox.component.mjs +154 -0
- package/{esm2020 → esm2022}/lib/forms/color-indicator/color-indicator.component.mjs +4 -4
- package/esm2022/lib/forms/color-picker/color-picker.component.mjs +292 -0
- package/{esm2020 → esm2022}/lib/forms/date-picker/date-picker.component.mjs +12 -12
- package/{esm2020 → esm2022}/lib/forms/date-range-picker/date-range-picker.component.mjs +12 -12
- package/{esm2020 → esm2022}/lib/forms/flatpickr/flatpickr.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/forms/forms.module.mjs +62 -62
- package/esm2022/lib/forms/radio/radio.component.mjs +350 -0
- package/{esm2020 → esm2022}/lib/forms/segment/segment-control/segment-control.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/forms/segment/segment.component.mjs +11 -11
- package/{esm2020 → esm2022}/lib/forms/select/chip-text.pipe.mjs +4 -4
- package/{esm2020 → esm2022}/lib/forms/select/select-option/select-option.component.mjs +4 -4
- package/esm2022/lib/forms/select/select.component.mjs +275 -0
- package/esm2022/lib/forms/slider/slider.component.mjs +113 -0
- package/esm2022/lib/forms/switch/switch.component.mjs +121 -0
- package/esm2022/lib/forms/text-area/text-area.component.mjs +187 -0
- package/esm2022/lib/forms/text-editor/text-editor.component.mjs +308 -0
- package/esm2022/lib/forms/text-input/text-input.component.mjs +208 -0
- package/{esm2020 → esm2022}/lib/forms/time-picker/time-picker-dropdown/time-picker-dropdown.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/forms/time-picker/time-picker.component.mjs +11 -11
- package/{esm2020 → esm2022}/lib/forms/unique-selection-dispatcher.mjs +4 -4
- package/{esm2020 → esm2022}/lib/forms/value-accessor-base.mjs +4 -4
- package/{esm2020 → esm2022}/lib/modals/alert/alert.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/modals/confirm/confirm.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/modals/custom-modal/custom-modal.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/modals/image-gallery/image-gallery.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/modals/modal.service.mjs +5 -5
- package/{esm2020 → esm2022}/lib/modals/modals.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/modals/prompt/prompt.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/pipes/safe-html.pipe.mjs +5 -5
- package/{fesm2020 → fesm2022}/festo-ui-angular.mjs +512 -520
- package/{fesm2020 → fesm2022}/festo-ui-angular.mjs.map +1 -1
- package/lib/components/accordion/accordion.component.d.ts +1 -1
- package/lib/components/breadcrumb/breadcrumb.component.d.ts +1 -1
- package/lib/components/buttons/button/button.component.d.ts +1 -1
- package/lib/components/buttons/link-button/link-button.component.d.ts +1 -1
- package/lib/components/chips/chip/chip.component.d.ts +1 -1
- package/lib/components/chips/chip-container/chip-container.component.d.ts +1 -1
- package/lib/components/loading-indicator/loading-indicator.component.d.ts +1 -1
- package/lib/components/mobile-flyout/mobile-flyout-item/mobile-flyout-item.component.d.ts +1 -1
- package/lib/components/mobile-flyout/mobile-flyout-page/mobile-flyout-page.component.d.ts +1 -1
- package/lib/components/pagination/pagination.component.d.ts +1 -1
- package/lib/components/popovers/legend/legend.component.d.ts +1 -1
- package/lib/components/popovers/popover-content/popover-content.component.d.ts +1 -1
- package/lib/components/popovers/popover-menu/popover-menu.component.d.ts +1 -1
- package/lib/components/popovers/tooltip/tooltip.directive.d.ts +1 -1
- package/lib/components/progress/progress.component.d.ts +1 -1
- package/lib/components/scroll/scrollable.directive.d.ts +1 -1
- package/lib/components/search-input/search-input.component.d.ts +1 -1
- package/lib/components/sidebar-overlay/sidebar-overlay.component.d.ts +1 -1
- package/lib/components/snackbar/snackbar-container.component.d.ts +1 -1
- package/lib/components/snackbar/snackbar-container.directive.d.ts +1 -1
- package/lib/components/snackbar/snackbar.component.d.ts +1 -1
- package/lib/components/stepper-horizontal/step-horizontal/step-horizontal.component.d.ts +1 -1
- package/lib/components/stepper-horizontal/stepper-horizontal.component.d.ts +1 -1
- package/lib/components/stepper-vertical/step-vertical/step-vertical.component.d.ts +1 -1
- package/lib/components/stepper-vertical/stepper-vertical.component.d.ts +1 -1
- package/lib/components/table-header-cell/table-header-cell.directive.d.ts +1 -1
- package/lib/components/tabs/tab-pane/tab-pane.component.d.ts +1 -1
- package/lib/components/tabs/tabs.component.d.ts +1 -1
- package/lib/forms/checkbox/checkbox.component.d.ts +1 -1
- package/lib/forms/color-indicator/color-indicator.component.d.ts +1 -1
- package/lib/forms/color-picker/color-picker.component.d.ts +1 -1
- package/lib/forms/date-picker/date-picker.component.d.ts +1 -1
- package/lib/forms/date-range-picker/date-range-picker.component.d.ts +1 -1
- package/lib/forms/flatpickr/flatpickr.component.d.ts +1 -1
- package/lib/forms/radio/radio.component.d.ts +6 -6
- package/lib/forms/segment/segment-control/segment-control.component.d.ts +1 -1
- package/lib/forms/segment/segment.component.d.ts +1 -1
- package/lib/forms/select/select-option/select-option.component.d.ts +1 -1
- package/lib/forms/select/select.component.d.ts +6 -5
- package/lib/forms/slider/slider.component.d.ts +1 -1
- package/lib/forms/switch/switch.component.d.ts +1 -1
- package/lib/forms/text-area/text-area.component.d.ts +1 -1
- package/lib/forms/text-editor/text-editor.component.d.ts +1 -1
- package/lib/forms/text-input/text-input.component.d.ts +1 -1
- package/lib/forms/time-picker/time-picker-dropdown/time-picker-dropdown.component.d.ts +1 -1
- package/lib/forms/time-picker/time-picker.component.d.ts +1 -1
- package/lib/forms/value-accessor-base.d.ts +1 -1
- package/lib/modals/alert/alert.component.d.ts +1 -1
- package/lib/modals/confirm/confirm.component.d.ts +1 -1
- package/lib/modals/custom-modal/custom-modal.component.d.ts +1 -1
- package/lib/modals/image-gallery/image-gallery.component.d.ts +1 -1
- package/lib/modals/prompt/prompt.component.d.ts +1 -1
- package/package.json +17 -23
- package/esm2020/lib/components/accordion/accordion-item/accordion-item.component.mjs +0 -148
- package/esm2020/lib/components/accordion/accordion.component.mjs +0 -59
- package/esm2020/lib/components/components.module.mjs +0 -218
- package/esm2020/lib/components/sidebar-overlay/sidebar-overlay.component.mjs +0 -59
- package/esm2020/lib/components/snackbar/snackbar.component.mjs +0 -81
- package/esm2020/lib/components/snackbar/snackbar.module.mjs +0 -24
- package/esm2020/lib/components/tabs/tab-pane/tab-pane.component.mjs +0 -34
- package/esm2020/lib/components/tabs/tabs.component.mjs +0 -459
- package/esm2020/lib/forms/checkbox/checkbox.component.mjs +0 -154
- package/esm2020/lib/forms/color-picker/color-picker.component.mjs +0 -292
- package/esm2020/lib/forms/radio/radio.component.mjs +0 -350
- package/esm2020/lib/forms/select/select.component.mjs +0 -273
- package/esm2020/lib/forms/slider/slider.component.mjs +0 -113
- package/esm2020/lib/forms/switch/switch.component.mjs +0 -121
- package/esm2020/lib/forms/text-area/text-area.component.mjs +0 -187
- package/esm2020/lib/forms/text-editor/text-editor.component.mjs +0 -308
- package/esm2020/lib/forms/text-input/text-input.component.mjs +0 -208
- package/fesm2015/festo-ui-angular.mjs +0 -6504
- package/fesm2015/festo-ui-angular.mjs.map +0 -1
- /package/{esm2020 → esm2022}/festo-ui-angular.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/accordion/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/popovers/popover-ref.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/popovers/popover.defaults.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/popovers/popover.models.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/scroll/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/components/snackbar/snackbar.models.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/forms/color-picker/color-helper.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/modals/index.mjs +0 -0
- /package/{esm2020 → esm2022}/public-api.mjs +0 -0
|
@@ -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
|
-
}
|
|
112
|
-
FngCheckboxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: FngCheckboxComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
113
|
-
FngCheckboxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.1", 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: [
|
|
114
|
-
{
|
|
115
|
-
provide: NG_VALUE_ACCESSOR,
|
|
116
|
-
useExisting: forwardRef(() => FngCheckboxComponent),
|
|
117
|
-
multi: true
|
|
118
|
-
}
|
|
119
|
-
], 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:white}.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-dark)}.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-dark)}.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-darker)}.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 });
|
|
120
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", 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:white}.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-dark)}.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-dark)}.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-darker)}.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: function () { return [{ 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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V0FDUCxDQUFDLFlBQVksQ0FBQyxZQUNiLGNBQWMsbUJBR1AsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSxhQUMxQjt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxxQkFBcUIsQ0FBQzs0QkFDbkQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7d0dBR1EsSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFPRixFQUFFO3NCQURMLEtBQUs7Z0JBVUYsT0FBTztzQkFEVixLQUFLO2dCQWFGLFFBQVE7c0JBRFgsS0FBSztnQkFjRixhQUFhO3NCQURoQixLQUFLO2dCQWNHLEtBQUs7c0JBQWIsS0FBSztnQkFHRixRQUFRO3NCQURYLEtBQUs7Z0JBU2EsbUJBQW1CO3NCQUFyQyxNQUFNO2dCQUNZLE1BQU07c0JBQXhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGZvcndhcmRSZWYsXG4gIENoYW5nZURldGVjdG9yUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTkdfVkFMVUVfQUNDRVNTT1IsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5sZXQgbmV4dFVuaXF1ZUlkID0gMDtcblxuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICBzZWxlY3RvcjogJ2ZuZy1jaGVja2JveCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jaGVja2JveC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NoZWNrYm94LmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEZuZ0NoZWNrYm94Q29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIEZuZ0NoZWNrYm94Q29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICBASW5wdXQoKSBuYW1lOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgbGFyZ2UgPSBmYWxzZTtcbiAgQElucHV0KCkgdmFsaWQgPSB0cnVlO1xuICBASW5wdXQoKSBsYWJlbFBvc2l0aW9uOiAnYmVmb3JlJyB8ICdhZnRlcicgfCAnYmVsb3cnID0gJ2FmdGVyJztcblxuICBwcml2YXRlIGlubmVySWQgPSBgZm5nLWNoZWNrYm94LSR7KytuZXh0VW5pcXVlSWR9YDtcbiAgZ2V0IGlkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaW5uZXJJZDtcbiAgfVxuICBASW5wdXQoKVxuICBzZXQgaWQodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuaW5uZXJJZCA9IHZhbHVlID8gYCR7dmFsdWV9LSR7KytuZXh0VW5pcXVlSWR9YCA6IGBmbmctY2hlY2tib3gtJHsrK25leHRVbmlxdWVJZH1gO1xuICB9XG5cbiAgZ2V0IGlucHV0SWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5pbm5lcklkfS1pbnB1dGA7XG4gIH1cblxuICBASW5wdXQoKVxuICBnZXQgY2hlY2tlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc0NoZWNrZWQ7XG4gIH1cbiAgc2V0IGNoZWNrZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpZiAodmFsdWUgIT09IHRoaXMuY2hlY2tlZCkge1xuICAgICAgdGhpcy5pc0NoZWNrZWQgPSB2YWx1ZTtcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG4gIHByaXZhdGUgaXNDaGVja2VkID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgZ2V0IGRpc2FibGVkKCkge1xuICAgIHJldHVybiB0aGlzLmlzRGlzYWJsZWQ7XG4gIH1cbiAgc2V0IGRpc2FibGVkKHZhbHVlOiBhbnkpIHtcbiAgICBjb25zdCBuZXdWYWx1ZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgaWYgKG5ld1ZhbHVlICE9PSB0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLmlzRGlzYWJsZWQgPSBuZXdWYWx1ZTtcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG4gIHByaXZhdGUgaXNEaXNhYmxlZCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIGdldCBpbmRldGVybWluYXRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzSW5kZXRlcm1pbmF0ZTtcbiAgfVxuICBzZXQgaW5kZXRlcm1pbmF0ZSh2YWx1ZTogYm9vbGVhbikge1xuICAgIGNvbnN0IGNoYW5nZWQgPSB2YWx1ZSAhPT0gdGhpcy5pc0luZGV0ZXJtaW5hdGU7XG4gICAgdGhpcy5pc0luZGV0ZXJtaW5hdGUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIGlmIChjaGFuZ2VkKSB7XG4gICAgICB0aGlzLmluZGV0ZXJtaW5hdGVDaGFuZ2UuZW1pdCh0aGlzLmlzSW5kZXRlcm1pbmF0ZSk7XG4gICAgfVxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cbiAgcHJpdmF0ZSBpc0luZGV0ZXJtaW5hdGUgPSBmYWxzZTtcblxuICBASW5wdXQoKSB2YWx1ZTogc3RyaW5nID0gJ2ZhbHNlJztcblxuICBASW5wdXQoKVxuICBnZXQgcmVxdWlyZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNSZXF1aXJlZDtcbiAgfVxuICBzZXQgcmVxdWlyZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmlzUmVxdWlyZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG4gIHByaXZhdGUgaXNSZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSByZWFkb25seSBpbmRldGVybWluYXRlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIEBPdXRwdXQoKSByZWFkb25seSBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICBjb250cm9sVmFsdWVBY2Nlc3NvckNoYW5nZUZuOiAodmFsdWU6IGFueSkgPT4gdm9pZCA9ICgpID0+IG51bGw7XG5cbiAgb25Ub3VjaGVkOiAoKSA9PiBhbnkgPSAoKSA9PiBudWxsO1xuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSkge1xuICAgIHRoaXMuY2hlY2tlZCA9ICEhdmFsdWU7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IGFueSkgPT4gdm9pZCkge1xuICAgIHRoaXMuY29udHJvbFZhbHVlQWNjZXNzb3JDaGFuZ2VGbiA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSkge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIG9uSW50ZXJhY3Rpb25FdmVudChldmVudDogRXZlbnQpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIG9uSW5wdXRDbGljayhldmVudDogRXZlbnQpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgaWYgKHRoaXMuaW5kZXRlcm1pbmF0ZSkge1xuICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmlzSW5kZXRlcm1pbmF0ZSA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuaW5kZXRlcm1pbmF0ZUNoYW5nZS5lbWl0KHRoaXMuaXNJbmRldGVybWluYXRlKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAoIXRoaXMudmFsaWQpIHtcbiAgICAgICAgdGhpcy52YWxpZCA9IHRydWU7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5yZXF1aXJlZCkge1xuICAgICAgICB0aGlzLnJlcXVpcmVkID0gZmFsc2U7XG4gICAgICB9XG4gICAgICB0aGlzLmNoZWNrZWQgPSAhdGhpcy5jaGVja2VkO1xuICAgICAgaWYgKHRoaXMuY29udHJvbFZhbHVlQWNjZXNzb3JDaGFuZ2VGbiAhPSBudWxsKSB7XG4gICAgICAgIHRoaXMuY29udHJvbFZhbHVlQWNjZXNzb3JDaGFuZ2VGbih0aGlzLmNoZWNrZWQpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMub25Ub3VjaGVkICE9IG51bGwpIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuY2hhbmdlLmVtaXQodGhpcy5jaGVja2VkKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxsYWJlbFxuICBjbGFzcz1cImZ3ZS1jaGVja2JveC1jb250YWluZXJcIlxuICBbY2xhc3MuZm5nLWNoZWNrYm94LWxhcmdlXT1cImxhcmdlXCJcbiAgW2NsYXNzLmZuZy1jaGVja2JveC1pbnZhbGlkXT1cIiF2YWxpZCB8fCByZXF1aXJlZFwiXG4gIFtjbGFzcy5md2UtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICBbY2xhc3MuZm5nLWNoZWNrYm94LWluZGV0ZXJtaW5hdGVdPVwiaW5kZXRlcm1pbmF0ZVwiXG4gIFtjbGFzcy5md2UtY2hlY2tlZF09XCJjaGVja2VkXCJcbiAgW2F0dHIuZm9yXT1cImlucHV0SWRcIlxuICBbbmdDbGFzc109XCJ7XG4gICAgJ2Z3ZS1sYWJlbC1iZWxvdyc6IGxhYmVsUG9zaXRpb24gPT0gJ2JlbG93JyxcbiAgICAnZndlLWxhYmVsLWJlZm9yZSc6IGxhYmVsUG9zaXRpb24gPT0gJ2JlZm9yZSdcbiAgfVwiXG4+XG4gIDxpbnB1dFxuICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgW2lkXT1cImlucHV0SWRcIlxuICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICBbYXR0ci52YWx1ZV09XCJ2YWx1ZVwiXG4gICAgW2F0dHIubmFtZV09XCJuYW1lXCJcbiAgICBbY2hlY2tlZF09XCJjaGVja2VkXCJcbiAgICAoY2hhbmdlKT1cIm9uSW50ZXJhY3Rpb25FdmVudCgkZXZlbnQpXCJcbiAgICAoY2xpY2spPVwib25JbnB1dENsaWNrKCRldmVudClcIlxuICAvPlxuICA8ZGl2IGNsYXNzPVwiZndlLWNoZWNrYm94LWluZGljYXRvci1jb250YWluZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZndlLWNoZWNrYm94LWluZGljYXRvci1iYWNrZ3JvdW5kXCI+PC9kaXY+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpbmRldGVybWluYXRlICYmIGNoZWNrZWRcIj5cbiAgICAgIDxzdmcgKm5nSWY9XCJsYXJnZVwiIHdpZHRoPVwiMjRweFwiIGhlaWdodD1cIjI0cHhcIj5cbiAgICAgICAgPHBhdGggZD1cIk0xNy41IDdMMTAgMTQuNSA3LjUwMSAxMmwtMS41IDEuNTAxTDEwIDE3LjVsOS05elwiIGZpbGw9XCIjZmZmXCIgLz5cbiAgICAgIDwvc3ZnPlxuICAgICAgPHN2ZyAqbmdJZj1cIiFsYXJnZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIj5cbiAgICAgICAgPHBhdGggZD1cIk02IDEyTDMgOWwxLjI1LTEuMjVMNiA5LjVsNS43NS01Ljc1TDEzIDVsLTcgN3pcIiBmaWxsPVwiI2ZmZlwiIC8+XG4gICAgICA8L3N2Zz5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8ZGl2ICpuZ0lmPVwiaW5kZXRlcm1pbmF0ZSAmJiAhY2hlY2tlZFwiIGNsYXNzPVwiZndlLWluZGV0ZXJtaW5hdGUtaW5kaWNhdG9yXCI+PC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiZndlLWNoZWNrYm94LXRpdGxlXCI+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cbjwvbGFiZWw+XG4iXX0=
|
|
@@ -1,292 +0,0 @@
|
|
|
1
|
-
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
2
|
-
import { DragDropModule } from '@angular/cdk/drag-drop';
|
|
3
|
-
import { Component, forwardRef, Input, ViewEncapsulation, Output, EventEmitter } from '@angular/core';
|
|
4
|
-
import { FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
5
|
-
import { ColorHelper } from './color-helper';
|
|
6
|
-
import { CommonModule } from '@angular/common';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "@angular/common";
|
|
9
|
-
import * as i2 from "@angular/cdk/drag-drop";
|
|
10
|
-
import * as i3 from "@angular/forms";
|
|
11
|
-
export const PREDEFINED_COLORS = [
|
|
12
|
-
'#0091dc',
|
|
13
|
-
'#333333',
|
|
14
|
-
'#ffffff',
|
|
15
|
-
'#f2f3f5',
|
|
16
|
-
'#e5e8eb',
|
|
17
|
-
'#d8dce1',
|
|
18
|
-
'#b6bec6',
|
|
19
|
-
'#80ca3d',
|
|
20
|
-
'#ffd600',
|
|
21
|
-
'#ff9600',
|
|
22
|
-
'#d50000'
|
|
23
|
-
];
|
|
24
|
-
/**
|
|
25
|
-
* A custom form element to pick a color.
|
|
26
|
-
*/
|
|
27
|
-
export class FngColorPickerComponent {
|
|
28
|
-
constructor() {
|
|
29
|
-
this.baseSize = 184;
|
|
30
|
-
this.inputType = 'RGB';
|
|
31
|
-
this.isSelectOpen = false;
|
|
32
|
-
this.useAlpha = false;
|
|
33
|
-
this.alphaChange = new EventEmitter();
|
|
34
|
-
/**
|
|
35
|
-
* an array with color strings representing the palette.
|
|
36
|
-
* Example: ['#234567, '#AA00FF']
|
|
37
|
-
* Pass null to hide palette.
|
|
38
|
-
*/
|
|
39
|
-
this.palette = [];
|
|
40
|
-
/**
|
|
41
|
-
* hide the hue and gradient picker and shot the palette only.
|
|
42
|
-
*/
|
|
43
|
-
this.paletteOnly = false;
|
|
44
|
-
this.innerColor = null;
|
|
45
|
-
this.innerDisabled = true;
|
|
46
|
-
this.innerAlpha = 1;
|
|
47
|
-
// input controls
|
|
48
|
-
this.hexInputColor = '#ff0000';
|
|
49
|
-
this.redInput = 255;
|
|
50
|
-
this.greenInput = 0;
|
|
51
|
-
this.blueInput = 0;
|
|
52
|
-
this.alphaInput = 100;
|
|
53
|
-
// HSV value
|
|
54
|
-
this.hue = 0;
|
|
55
|
-
this.saturation = 0;
|
|
56
|
-
this.value = 0;
|
|
57
|
-
// poitions of the knobs in px
|
|
58
|
-
this.hueKnobOffset = 0;
|
|
59
|
-
this.alphaKnobOffset = 0;
|
|
60
|
-
this.saturationKnobOffset = 0;
|
|
61
|
-
this.valueKnobOffset = 0;
|
|
62
|
-
// callbacks for ControlValueAccessor
|
|
63
|
-
this.onTouched = () => null;
|
|
64
|
-
this.onChange = () => null;
|
|
65
|
-
}
|
|
66
|
-
get alpha() {
|
|
67
|
-
return this.innerAlpha;
|
|
68
|
-
}
|
|
69
|
-
set alpha(value) {
|
|
70
|
-
if (value <= 100 && value >= 0 && this.innerAlpha !== Math.round(value)) {
|
|
71
|
-
this.innerAlpha = Math.round(value);
|
|
72
|
-
this.alphaInput = this.innerAlpha;
|
|
73
|
-
this.updateKnobs();
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* The current color
|
|
78
|
-
*/
|
|
79
|
-
get color() {
|
|
80
|
-
return this.innerColor;
|
|
81
|
-
}
|
|
82
|
-
set color(value) {
|
|
83
|
-
if (value && this.isHexColor(value)) {
|
|
84
|
-
this.innerColor = value.toUpperCase();
|
|
85
|
-
}
|
|
86
|
-
else {
|
|
87
|
-
this.innerColor = null;
|
|
88
|
-
}
|
|
89
|
-
this.updateColorRgb(true);
|
|
90
|
-
}
|
|
91
|
-
get disabled() {
|
|
92
|
-
return this.innerDisabled;
|
|
93
|
-
}
|
|
94
|
-
set disabled(value) {
|
|
95
|
-
this.innerDisabled = coerceBooleanProperty(value);
|
|
96
|
-
}
|
|
97
|
-
ngOnChanges(changes) {
|
|
98
|
-
const paletteChanged = changes['palette'];
|
|
99
|
-
if (paletteChanged['currentValue'].length > 0 && paletteChanged['currentValue'].indexOf('FESTO_COLORS') !== -1) {
|
|
100
|
-
this.palette = PREDEFINED_COLORS;
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
// ControlValueAccessor
|
|
104
|
-
writeValue(color) {
|
|
105
|
-
if (this.isHexColor(color)) {
|
|
106
|
-
this.innerColor = color.toUpperCase();
|
|
107
|
-
}
|
|
108
|
-
else {
|
|
109
|
-
this.innerColor = null;
|
|
110
|
-
}
|
|
111
|
-
this.updateColorRgb(false);
|
|
112
|
-
}
|
|
113
|
-
registerOnChange(fn) {
|
|
114
|
-
this.onChange = fn;
|
|
115
|
-
}
|
|
116
|
-
registerOnTouched(fn) {
|
|
117
|
-
this.onTouched = fn;
|
|
118
|
-
}
|
|
119
|
-
setDisabledState(isDisabled) {
|
|
120
|
-
this.innerDisabled = isDisabled;
|
|
121
|
-
}
|
|
122
|
-
// update method for changes of the rgb value
|
|
123
|
-
updateColorRgb(emitChange) {
|
|
124
|
-
const currentColor = this.innerColor || '#FFFFFF';
|
|
125
|
-
this.updateInputs(currentColor);
|
|
126
|
-
const rgb = ColorHelper.hexToRgb(currentColor);
|
|
127
|
-
const hsv = ColorHelper.rgbToHsv(rgb);
|
|
128
|
-
this.hue = hsv.h;
|
|
129
|
-
this.saturation = hsv.s;
|
|
130
|
-
this.value = hsv.v;
|
|
131
|
-
this.updateKnobs();
|
|
132
|
-
if (emitChange) {
|
|
133
|
-
if (this.onChange != null) {
|
|
134
|
-
this.onChange(this.innerColor);
|
|
135
|
-
}
|
|
136
|
-
if (this.onTouched != null) {
|
|
137
|
-
this.onTouched();
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
// update method for changes of the hsv value
|
|
142
|
-
updateColorHsv() {
|
|
143
|
-
const rgb = ColorHelper.hsvToRgb({ h: this.hue, s: this.saturation, v: this.value });
|
|
144
|
-
this.innerColor = ColorHelper.rgbToHex(rgb);
|
|
145
|
-
this.updateInputs(this.innerColor);
|
|
146
|
-
if (this.onChange != null) {
|
|
147
|
-
this.onChange(this.innerColor);
|
|
148
|
-
}
|
|
149
|
-
if (this.onTouched != null) {
|
|
150
|
-
this.onTouched();
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
// event handler for inputs
|
|
154
|
-
onHexBlur() {
|
|
155
|
-
if (this.hexInputColor && this.isHexColor(this.hexInputColor)) {
|
|
156
|
-
this.color = this.hexInputColor.toUpperCase();
|
|
157
|
-
}
|
|
158
|
-
else {
|
|
159
|
-
this.hexInputColor = this.color;
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
onHexInput() {
|
|
163
|
-
if (this.hexInputColor && this.isHexColor(this.hexInputColor)) {
|
|
164
|
-
this.color = this.hexInputColor.toUpperCase();
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
onRgbBlur() {
|
|
168
|
-
if (this.hexInputColor && this.isHexColor(this.hexInputColor)) {
|
|
169
|
-
this.color = this.hexInputColor.toUpperCase();
|
|
170
|
-
}
|
|
171
|
-
else {
|
|
172
|
-
this.hexInputColor = this.color;
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
onRgbInput(value, channel) {
|
|
176
|
-
if (value > 255 || value < 0) {
|
|
177
|
-
this.updateInputs(this.innerColor);
|
|
178
|
-
}
|
|
179
|
-
else {
|
|
180
|
-
const rgb = ColorHelper.hexToRgb(this.innerColor);
|
|
181
|
-
rgb[channel] = value;
|
|
182
|
-
this.innerColor = ColorHelper.rgbToHex(rgb);
|
|
183
|
-
this.updateColorRgb(true);
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
onAlphaInput(value) {
|
|
187
|
-
if (value > 100 || value < 0) {
|
|
188
|
-
this.alphaInput = this.innerAlpha;
|
|
189
|
-
}
|
|
190
|
-
else {
|
|
191
|
-
this.alpha = value;
|
|
192
|
-
this.alphaChange.emit(this.alpha);
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
onGradientClick(event) {
|
|
196
|
-
this.saturation = event.offsetX / this.baseSize;
|
|
197
|
-
this.value = (this.baseSize - event.offsetY) / this.baseSize;
|
|
198
|
-
this.updateColorHsv();
|
|
199
|
-
this.updateKnobs();
|
|
200
|
-
}
|
|
201
|
-
onGradientDrag(event) {
|
|
202
|
-
const position = event.source.getFreeDragPosition();
|
|
203
|
-
this.saturation = Math.floor(position.x) / this.baseSize;
|
|
204
|
-
this.value = (this.baseSize - position.y) / this.baseSize;
|
|
205
|
-
this.updateColorHsv();
|
|
206
|
-
}
|
|
207
|
-
onHueClick(event) {
|
|
208
|
-
this.hue = event.offsetY / this.baseSize;
|
|
209
|
-
this.updateColorHsv();
|
|
210
|
-
this.updateKnobs();
|
|
211
|
-
}
|
|
212
|
-
onAlphaClick(event) {
|
|
213
|
-
this.alpha = 100 - Math.round((event.offsetY / this.baseSize) * 100);
|
|
214
|
-
this.alphaChange.emit(this.alpha);
|
|
215
|
-
}
|
|
216
|
-
onHueDrag(event) {
|
|
217
|
-
const position = event.source.getFreeDragPosition();
|
|
218
|
-
this.hue = (position.y + this.baseSize + 14) / this.baseSize;
|
|
219
|
-
this.updateColorHsv();
|
|
220
|
-
}
|
|
221
|
-
onAlphaDrag(event) {
|
|
222
|
-
const position = event.source.getFreeDragPosition();
|
|
223
|
-
this.innerAlpha = 100 - Math.round((position.y / this.baseSize) * 100);
|
|
224
|
-
this.alphaInput = this.innerAlpha;
|
|
225
|
-
this.alphaChange.emit(this.innerAlpha);
|
|
226
|
-
}
|
|
227
|
-
onRemoveColor() {
|
|
228
|
-
if (this.useAlpha) {
|
|
229
|
-
this.alpha = 0;
|
|
230
|
-
this.alphaChange.emit(this.alpha);
|
|
231
|
-
}
|
|
232
|
-
else {
|
|
233
|
-
this.color = null;
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
isHexColor(value) {
|
|
237
|
-
return /^#[0-9A-F]{6}$/i.test(value);
|
|
238
|
-
}
|
|
239
|
-
getSaturationGradient() {
|
|
240
|
-
return 'linear-gradient(to right, white, hsl(' + this.hue * 360 + ', 100%, 50%) )';
|
|
241
|
-
}
|
|
242
|
-
updateInputs(hexColor) {
|
|
243
|
-
this.hexInputColor = hexColor;
|
|
244
|
-
const rgb = ColorHelper.hexToRgb(hexColor);
|
|
245
|
-
this.redInput = rgb.r;
|
|
246
|
-
this.greenInput = rgb.g;
|
|
247
|
-
this.blueInput = rgb.b;
|
|
248
|
-
}
|
|
249
|
-
updateKnobs() {
|
|
250
|
-
this.alphaKnobOffset = ((100 - this.alpha) / 100) * this.baseSize;
|
|
251
|
-
this.hueKnobOffset = this.hue * this.baseSize - (this.baseSize + 14);
|
|
252
|
-
this.saturationKnobOffset = this.saturation * this.baseSize;
|
|
253
|
-
this.valueKnobOffset = (1 - this.value) * this.baseSize;
|
|
254
|
-
}
|
|
255
|
-
onChangeType(type) {
|
|
256
|
-
this.inputType = type;
|
|
257
|
-
this.isSelectOpen = false;
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
FngColorPickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: FngColorPickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
261
|
-
FngColorPickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.1", type: FngColorPickerComponent, isStandalone: true, selector: "fng-color-picker", inputs: { useAlpha: "useAlpha", alpha: "alpha", color: "color", disabled: "disabled", palette: "palette", paletteOnly: "paletteOnly" }, outputs: { alphaChange: "alphaChange" }, providers: [
|
|
262
|
-
{
|
|
263
|
-
provide: NG_VALUE_ACCESSOR,
|
|
264
|
-
useExisting: forwardRef(() => FngColorPickerComponent),
|
|
265
|
-
multi: true
|
|
266
|
-
}
|
|
267
|
-
], usesOnChanges: true, ngImport: i0, template: "<div class=\"fwe-color-picker\" [class.fwe-alpha-active]=\"useAlpha\">\n <div class=\"fwe-d-flex\" *ngIf=\"!paletteOnly\">\n <div class=\"fwe-gradient-picker\">\n <div class=\"fwe-saturation-gradient\" [ngStyle]=\"{ 'background-image': getSaturationGradient() }\"></div>\n <div class=\"fwe-brightness-gradient\" (click)=\"onGradientClick($event)\"></div>\n <div\n class=\"fwe-knob\"\n cdkDragBoundary=\".fwe-gradient-picker\"\n cdkDrag\n [cdkDragFreeDragPosition]=\"{ x: saturationKnobOffset, y: valueKnobOffset }\"\n (cdkDragMoved)=\"onGradientDrag($event)\"\n [style.background]=\"color\"\n ></div>\n </div>\n\n <div class=\"fwe-hue-picker\">\n <div class=\"fwe-picker-background\" (click)=\"onHueClick($event)\"></div>\n <div\n class=\"fwe-knob\"\n cdkDragBoundary=\".fwe-hue-picker\"\n cdkDragLockAxis=\"y\"\n cdkDrag\n [cdkDragFreeDragPosition]=\"{ x: 3, y: hueKnobOffset }\"\n (cdkDragMoved)=\"onHueDrag($event)\"\n [style.background]=\"'hsl(' + hue * 360 + ', 100%, 50%)'\"\n ></div>\n </div>\n\n <div class=\"fwe-alpha-picker\" *ngIf=\"useAlpha\">\n <svg\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=\"8\"\n height=\"184\"\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=\"#e5e8eb\" />\n <rect x=\"0\" y=\"2\" width=\"2\" height=\"2\" stroke=\"none\" fill=\"#e5e8eb\" />\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=\"4\" ry=\"4\" width=\"8\" height=\"184\" fill=\"url(#bwsquare2px)\" stroke-width=\"0\" />\n </svg>\n <div\n class=\"fwe-picker-background\"\n (click)=\"onAlphaClick($event)\"\n [ngStyle]=\"{ 'background-image': 'linear-gradient( ' + color + ' , transparent)' }\"\n ></div>\n\n <div\n class=\"fwe-knob\"\n cdkDragBoundary=\".fwe-alpha-picker\"\n cdkDragLockAxis=\"y\"\n cdkDrag\n [cdkDragFreeDragPosition]=\"{ x: 3, y: alphaKnobOffset }\"\n (cdkDragMoved)=\"onAlphaDrag($event)\"\n [style.background]=\"color\"\n ></div>\n </div>\n </div>\n\n <div class=\"fwe-mt-s\" *ngIf=\"!paletteOnly\">\n <div class=\"fwe-type-select\">\n <div class=\"fwe-type-indicator\" (click)=\"isSelectOpen = !isSelectOpen\">\n <span class=\"fwe-input-type\">{{ inputType }}</span>\n <i class=\"fwe-icon fwe-icon-arrows-collapse\"></i>\n </div>\n <div class=\"fwe-popover\" *ngIf=\"isSelectOpen\">\n <div class=\"fwe-type-item\" (click)=\"onChangeType('HEX')\" [class.fwe-selected]=\"inputType === 'HEX'\">\n <i class=\"fwe-icon fwe-icon-menu-check\"></i> HEX\n </div>\n <div class=\"fwe-type-item\" (click)=\"onChangeType('RGB')\" [class.fwe-selected]=\"inputType === 'RGB'\">\n <i class=\"fwe-icon fwe-icon-menu-check\"></i> RGB\n </div>\n </div>\n </div>\n\n <div class=\"fwe-d-flex\">\n <ng-container *ngIf=\"inputType === 'HEX'\">\n <label class=\"fwe-input-text fwe-hex-input\">\n <input type=\"text\" [(ngModel)]=\"hexInputColor\" (blur)=\"onHexBlur()\" (input)=\"onHexInput()\" />\n </label>\n </ng-container>\n <ng-container *ngIf=\"inputType === 'RGB'\">\n <label class=\"fwe-input-text fwe-red-input\">\n <input type=\"number\" [(ngModel)]=\"redInput\" (input)=\"onRgbInput(redInput, 'r')\" />\n </label>\n <label class=\"fwe-input-text fwe-green-input\">\n <input type=\"number\" [(ngModel)]=\"greenInput\" (input)=\"onRgbInput(greenInput, 'g')\" />\n </label>\n <label class=\"fwe-input-text fwe-blue-input\">\n <input type=\"number\" min=\"0\" max=\"255\" [(ngModel)]=\"blueInput\" (input)=\"onRgbInput(blueInput, 'b')\" />\n </label>\n </ng-container>\n\n <label class=\"fwe-input-text fwe-alpha-input fwe-ml-auto\" *ngIf=\"useAlpha\">\n <span>\n <input type=\"number\" min=\"0\" max=\"100\" [(ngModel)]=\"alphaInput\" (input)=\"onAlphaInput(alphaInput)\" />\n <span class=\"fwe-percent-char\">%</span>\n </span>\n </label>\n </div>\n </div>\n\n <div class=\"fwe-mt-xs fwe-color-grid\" *ngIf=\"palette && palette.length\">\n <div class=\"fwe-remove-color-button\" (click)=\"onRemoveColor()\">\n <svg\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=\"#e5e8eb\" />\n <rect x=\"0\" y=\"2\" width=\"2\" height=\"2\" stroke=\"none\" fill=\"#e5e8eb\" />\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 <i class=\"fwe-icon fwe-icon-menu-check\" [class.fwe-color-text]=\"!color\"></i>\n </div>\n <ng-container *ngFor=\"let colorItem of palette\">\n <div\n class=\"fwe-color-item\"\n [class.fwe-white-item]=\"colorItem.toUpperCase() === '#FFFFFF'\"\n [style.background]=\"colorItem\"\n (click)=\"color = colorItem\"\n >\n <i class=\"fwe-icon fwe-icon-menu-check\" *ngIf=\"colorItem.toUpperCase() === color\"></i>\n </div>\n </ng-container>\n </div>\n</div>\n", styles: [".fwe-triangle.fwe-triangle-right,.fwe-triangle.fwe-triangle-left,.fwe-triangle.fwe-triangle-bottom,.fwe-triangle.fwe-triangle-top{width:17px;height:17px;position:absolute;overflow:hidden}.fwe-triangle.fwe-triangle-right:after,.fwe-triangle.fwe-triangle-left:after,.fwe-triangle.fwe-triangle-bottom:after,.fwe-triangle.fwe-triangle-top:after{content:\"\";position:absolute;width:12px;height:12px;background:var(--fwe-white);transform:rotate(45deg);box-shadow:0 1px 4px #3333}.fwe-popover.fwe-popover-menu,.fwe-popover{background-color:var(--fwe-white);box-shadow:0 1px 4px #3333;border-radius:4px}.fwe-popover{padding:8px;font-size:var(--fwe-font-size-md);line-height:1rem}.fwe-popover-container{position:relative;display:inline-block}.fwe-triangle.fwe-triangle-top{left:50%;top:-17px;transform:translate(-8px)}.fwe-triangle.fwe-triangle-top:after{top:11px;left:3px}.fwe-triangle.fwe-triangle-bottom{left:50%;top:100%;transform:translate(-8px)}.fwe-triangle.fwe-triangle-bottom:after{top:-6px;left:3px}.fwe-triangle.fwe-triangle-left{left:-17px;top:50%;transform:translateY(-8px)}.fwe-triangle.fwe-triangle-left:after{top:2px;left:11px}.fwe-triangle.fwe-triangle-right{left:100%;top:50%;transform:translateY(-8px)}.fwe-triangle.fwe-triangle-right:after{top:2px;left:-6px}.fwe-popover.fwe-popover-menu{font-size:var(--fwe-font-size-base);line-height:1.5rem;padding:16px}.fwe-popover.fwe-popover-menu .fwe-list-group .fwe-list-group-item{border-bottom:none;min-height:36px;padding:0}.fwe-popover.fwe-popover-menu .fwe-list-group .fwe-list-group-item button{width:100%;margin-left:inherit;padding:0 8px 0 0;text-align:left;height:32px;max-height:32px;display:inline-flex;justify-content:unset}.fwe-popover.fwe-popover-menu .fwe-list-group .fwe-list-group-item button:hover{color:var(--fwe-black)}.fwe-popover.fwe-popover-menu .fwe-list-group .fwe-list-group-item button i{display:inline-flex;align-items:center;justify-content:center;flex-wrap:nowrap;height:24px;width:32px}.fwe-popover.fwe-popover-menu .fwe-list-group .fwe-list-group-item button i:before{display:inline-flex}.fwe-popover.fwe-popover-menu .fwe-list-group .fwe-list-group-item button span{display:inline-flex;height:24px}.fwe-popover.fwe-popover-menu .fwe-list-group .fwe-list-group-item button [class*=\" fwe-icon-\"]{margin-left:inherit}.fwe-popover.fwe-popover-menu .fwe-list-group .fwe-list-group-item:hover{color:var(--fwe-black);background-color:#3333331a}.fwe-popover.fwe-popover-menu .fwe-list-group .fwe-list-group-item:active{background-color:#3333}.fwe-popover .fwe-popover-legend{display:table;margin:16px;line-height:24px}.fwe-popover .fwe-popover-legend .fwe-popover-legend-content{display:table-row}.fwe-popover .fwe-popover-legend .fwe-popover-legend-content dt{display:table-cell;margin:0;padding-right:8px}.fwe-popover .fwe-popover-legend .fwe-popover-legend-content dd{display:table-cell;margin:0}.fwe-color-picker{width:216px}.fwe-color-picker.fwe-alpha-active{width:245px}.fwe-color-picker .fwe-gradient-picker{position:relative;width:198px;height:198px;margin:-7px}.fwe-color-picker .fwe-gradient-picker .fwe-brightness-gradient{position:absolute;inset:7px;background-image:linear-gradient(transparent,black)}.fwe-color-picker .fwe-gradient-picker .fwe-saturation-gradient{position:absolute;inset:7px}.fwe-color-picker .fwe-vertical-picker,.fwe-color-picker .fwe-alpha-picker,.fwe-color-picker .fwe-hue-picker{position:relative;height:198px;width:14px;margin:-7px -3px -7px 18px}.fwe-color-picker .fwe-vertical-picker .fwe-picker-background,.fwe-color-picker .fwe-alpha-picker .fwe-picker-background,.fwe-color-picker .fwe-hue-picker .fwe-picker-background{margin:7px 3px;height:184px;width:8px;border-radius:4px}.fwe-color-picker .fwe-vertical-picker .fwe-knob,.fwe-color-picker .fwe-alpha-picker .fwe-knob,.fwe-color-picker .fwe-hue-picker .fwe-knob{left:-3px}.fwe-color-picker .fwe-hue-picker .fwe-picker-background{background-image:linear-gradient(#ff0000,#ffff00,#00ff00,#00ffff,#0000ff,#ff00ff,#ff0000)}.fwe-color-picker .fwe-alpha-picker .fwe-no-color-pattern{margin:7px 3px;position:absolute}.fwe-color-picker .fwe-alpha-picker .fwe-picker-background{position:absolute}.fwe-color-picker .fwe-type-select{position:relative;display:flex}.fwe-color-picker .fwe-type-select .fwe-type-indicator{flex-shrink:1;cursor:pointer;display:flex}.fwe-color-picker .fwe-type-select .fwe-type-indicator .fwe-input-type{font-size:var(--fwe-font-size-small);line-height:calc(var(--fwe-font-size-small) + 5px);font-weight:var(--fwe-font-weight-bold)}.fwe-color-picker .fwe-type-select .fwe-type-indicator:hover{color:var(--fwe-hero)}.fwe-color-picker .fwe-type-select .fwe-icon-arrows-collapse{margin-left:16px;line-height:16px}.fwe-color-picker .fwe-type-select .fwe-popover{position:absolute;z-index:1;top:24px;left:0}.fwe-color-picker .fwe-type-select .fwe-popover .fwe-type-item{cursor:pointer;display:flex;padding:8px}.fwe-color-picker .fwe-type-select .fwe-popover .fwe-type-item:hover{color:var(--fwe-hero)}.fwe-color-picker .fwe-type-select .fwe-popover .fwe-type-item .fwe-icon-menu-check{opacity:0;margin-right:8px}.fwe-color-picker .fwe-type-select .fwe-popover .fwe-type-item.fwe-selected{cursor:default}.fwe-color-picker .fwe-type-select .fwe-popover .fwe-type-item.fwe-selected .fwe-icon-menu-check{opacity:1}.fwe-color-picker input::-webkit-outer-spin-button,.fwe-color-picker input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.fwe-color-picker input[type=number]{-moz-appearance:textfield}.fwe-color-picker input{padding-right:0!important;text-align:center}.fwe-color-picker .fwe-hex-input{width:75px;margin-right:16px}.fwe-color-picker .fwe-red-input,.fwe-color-picker .fwe-green-input{width:32px;margin-right:8px}.fwe-color-picker .fwe-blue-input{width:32px}.fwe-color-picker .fwe-alpha-input span input{width:48px;padding-right:16px!important}.fwe-color-picker .fwe-alpha-input .fwe-percent-char{margin-left:-16px}.fwe-color-picker .fwe-color-grid{display:flex;flex-wrap:wrap;margin-right:-8px;margin-bottom:-8px}.fwe-color-picker .fwe-color-grid .fwe-color-item{align-items:center;display:flex;justify-content:center;color:#fff;height:24px;width:24px;border-radius:4px;margin-right:8px;margin-bottom:8px}.fwe-color-picker .fwe-color-grid .fwe-color-item.fwe-white-item{border:1px solid var(--fwe-control-border);color:#000}.fwe-color-picker .fwe-color-grid .fwe-remove-color-button{align-items:center;display:flex;justify-content:center;height:24px;width:24px;border-radius:4px;border:1px solid var(--fwe-control-border);color:var(--fwe-control);margin-right:8px;margin-bottom:8px}.fwe-color-picker .fwe-color-grid .fwe-remove-color-button .fwe-no-color-pattern{margin:2px}.fwe-color-picker .fwe-color-grid .fwe-remove-color-button i{color:transparent;position:absolute}.fwe-color-picker .fwe-knob{position:absolute;z-index:1;height:14px;width:14px;border-radius:50%;border:2px solid white;box-shadow:0 0 4px #00000026}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: DragDropModule }, { kind: "directive", type: i2.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.MinValidator, selector: "input[type=number][min][formControlName],input[type=number][min][formControl],input[type=number][min][ngModel]", inputs: ["min"] }, { kind: "directive", type: i3.MaxValidator, selector: "input[type=number][max][formControlName],input[type=number][max][formControl],input[type=number][max][ngModel]", inputs: ["max"] }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
268
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.1", ngImport: i0, type: FngColorPickerComponent, decorators: [{
|
|
269
|
-
type: Component,
|
|
270
|
-
args: [{ standalone: true, imports: [CommonModule, DragDropModule, FormsModule], selector: 'fng-color-picker', providers: [
|
|
271
|
-
{
|
|
272
|
-
provide: NG_VALUE_ACCESSOR,
|
|
273
|
-
useExisting: forwardRef(() => FngColorPickerComponent),
|
|
274
|
-
multi: true
|
|
275
|
-
}
|
|
276
|
-
], encapsulation: ViewEncapsulation.None, template: "<div class=\"fwe-color-picker\" [class.fwe-alpha-active]=\"useAlpha\">\n <div class=\"fwe-d-flex\" *ngIf=\"!paletteOnly\">\n <div class=\"fwe-gradient-picker\">\n <div class=\"fwe-saturation-gradient\" [ngStyle]=\"{ 'background-image': getSaturationGradient() }\"></div>\n <div class=\"fwe-brightness-gradient\" (click)=\"onGradientClick($event)\"></div>\n <div\n class=\"fwe-knob\"\n cdkDragBoundary=\".fwe-gradient-picker\"\n cdkDrag\n [cdkDragFreeDragPosition]=\"{ x: saturationKnobOffset, y: valueKnobOffset }\"\n (cdkDragMoved)=\"onGradientDrag($event)\"\n [style.background]=\"color\"\n ></div>\n </div>\n\n <div class=\"fwe-hue-picker\">\n <div class=\"fwe-picker-background\" (click)=\"onHueClick($event)\"></div>\n <div\n class=\"fwe-knob\"\n cdkDragBoundary=\".fwe-hue-picker\"\n cdkDragLockAxis=\"y\"\n cdkDrag\n [cdkDragFreeDragPosition]=\"{ x: 3, y: hueKnobOffset }\"\n (cdkDragMoved)=\"onHueDrag($event)\"\n [style.background]=\"'hsl(' + hue * 360 + ', 100%, 50%)'\"\n ></div>\n </div>\n\n <div class=\"fwe-alpha-picker\" *ngIf=\"useAlpha\">\n <svg\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=\"8\"\n height=\"184\"\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=\"#e5e8eb\" />\n <rect x=\"0\" y=\"2\" width=\"2\" height=\"2\" stroke=\"none\" fill=\"#e5e8eb\" />\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=\"4\" ry=\"4\" width=\"8\" height=\"184\" fill=\"url(#bwsquare2px)\" stroke-width=\"0\" />\n </svg>\n <div\n class=\"fwe-picker-background\"\n (click)=\"onAlphaClick($event)\"\n [ngStyle]=\"{ 'background-image': 'linear-gradient( ' + color + ' , transparent)' }\"\n ></div>\n\n <div\n class=\"fwe-knob\"\n cdkDragBoundary=\".fwe-alpha-picker\"\n cdkDragLockAxis=\"y\"\n cdkDrag\n [cdkDragFreeDragPosition]=\"{ x: 3, y: alphaKnobOffset }\"\n (cdkDragMoved)=\"onAlphaDrag($event)\"\n [style.background]=\"color\"\n ></div>\n </div>\n </div>\n\n <div class=\"fwe-mt-s\" *ngIf=\"!paletteOnly\">\n <div class=\"fwe-type-select\">\n <div class=\"fwe-type-indicator\" (click)=\"isSelectOpen = !isSelectOpen\">\n <span class=\"fwe-input-type\">{{ inputType }}</span>\n <i class=\"fwe-icon fwe-icon-arrows-collapse\"></i>\n </div>\n <div class=\"fwe-popover\" *ngIf=\"isSelectOpen\">\n <div class=\"fwe-type-item\" (click)=\"onChangeType('HEX')\" [class.fwe-selected]=\"inputType === 'HEX'\">\n <i class=\"fwe-icon fwe-icon-menu-check\"></i> HEX\n </div>\n <div class=\"fwe-type-item\" (click)=\"onChangeType('RGB')\" [class.fwe-selected]=\"inputType === 'RGB'\">\n <i class=\"fwe-icon fwe-icon-menu-check\"></i> RGB\n </div>\n </div>\n </div>\n\n <div class=\"fwe-d-flex\">\n <ng-container *ngIf=\"inputType === 'HEX'\">\n <label class=\"fwe-input-text fwe-hex-input\">\n <input type=\"text\" [(ngModel)]=\"hexInputColor\" (blur)=\"onHexBlur()\" (input)=\"onHexInput()\" />\n </label>\n </ng-container>\n <ng-container *ngIf=\"inputType === 'RGB'\">\n <label class=\"fwe-input-text fwe-red-input\">\n <input type=\"number\" [(ngModel)]=\"redInput\" (input)=\"onRgbInput(redInput, 'r')\" />\n </label>\n <label class=\"fwe-input-text fwe-green-input\">\n <input type=\"number\" [(ngModel)]=\"greenInput\" (input)=\"onRgbInput(greenInput, 'g')\" />\n </label>\n <label class=\"fwe-input-text fwe-blue-input\">\n <input type=\"number\" min=\"0\" max=\"255\" [(ngModel)]=\"blueInput\" (input)=\"onRgbInput(blueInput, 'b')\" />\n </label>\n </ng-container>\n\n <label class=\"fwe-input-text fwe-alpha-input fwe-ml-auto\" *ngIf=\"useAlpha\">\n <span>\n <input type=\"number\" min=\"0\" max=\"100\" [(ngModel)]=\"alphaInput\" (input)=\"onAlphaInput(alphaInput)\" />\n <span class=\"fwe-percent-char\">%</span>\n </span>\n </label>\n </div>\n </div>\n\n <div class=\"fwe-mt-xs fwe-color-grid\" *ngIf=\"palette && palette.length\">\n <div class=\"fwe-remove-color-button\" (click)=\"onRemoveColor()\">\n <svg\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=\"#e5e8eb\" />\n <rect x=\"0\" y=\"2\" width=\"2\" height=\"2\" stroke=\"none\" fill=\"#e5e8eb\" />\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 <i class=\"fwe-icon fwe-icon-menu-check\" [class.fwe-color-text]=\"!color\"></i>\n </div>\n <ng-container *ngFor=\"let colorItem of palette\">\n <div\n class=\"fwe-color-item\"\n [class.fwe-white-item]=\"colorItem.toUpperCase() === '#FFFFFF'\"\n [style.background]=\"colorItem\"\n (click)=\"color = colorItem\"\n >\n <i class=\"fwe-icon fwe-icon-menu-check\" *ngIf=\"colorItem.toUpperCase() === color\"></i>\n </div>\n </ng-container>\n </div>\n</div>\n", styles: [".fwe-triangle.fwe-triangle-right,.fwe-triangle.fwe-triangle-left,.fwe-triangle.fwe-triangle-bottom,.fwe-triangle.fwe-triangle-top{width:17px;height:17px;position:absolute;overflow:hidden}.fwe-triangle.fwe-triangle-right:after,.fwe-triangle.fwe-triangle-left:after,.fwe-triangle.fwe-triangle-bottom:after,.fwe-triangle.fwe-triangle-top:after{content:\"\";position:absolute;width:12px;height:12px;background:var(--fwe-white);transform:rotate(45deg);box-shadow:0 1px 4px #3333}.fwe-popover.fwe-popover-menu,.fwe-popover{background-color:var(--fwe-white);box-shadow:0 1px 4px #3333;border-radius:4px}.fwe-popover{padding:8px;font-size:var(--fwe-font-size-md);line-height:1rem}.fwe-popover-container{position:relative;display:inline-block}.fwe-triangle.fwe-triangle-top{left:50%;top:-17px;transform:translate(-8px)}.fwe-triangle.fwe-triangle-top:after{top:11px;left:3px}.fwe-triangle.fwe-triangle-bottom{left:50%;top:100%;transform:translate(-8px)}.fwe-triangle.fwe-triangle-bottom:after{top:-6px;left:3px}.fwe-triangle.fwe-triangle-left{left:-17px;top:50%;transform:translateY(-8px)}.fwe-triangle.fwe-triangle-left:after{top:2px;left:11px}.fwe-triangle.fwe-triangle-right{left:100%;top:50%;transform:translateY(-8px)}.fwe-triangle.fwe-triangle-right:after{top:2px;left:-6px}.fwe-popover.fwe-popover-menu{font-size:var(--fwe-font-size-base);line-height:1.5rem;padding:16px}.fwe-popover.fwe-popover-menu .fwe-list-group .fwe-list-group-item{border-bottom:none;min-height:36px;padding:0}.fwe-popover.fwe-popover-menu .fwe-list-group .fwe-list-group-item button{width:100%;margin-left:inherit;padding:0 8px 0 0;text-align:left;height:32px;max-height:32px;display:inline-flex;justify-content:unset}.fwe-popover.fwe-popover-menu .fwe-list-group .fwe-list-group-item button:hover{color:var(--fwe-black)}.fwe-popover.fwe-popover-menu .fwe-list-group .fwe-list-group-item button i{display:inline-flex;align-items:center;justify-content:center;flex-wrap:nowrap;height:24px;width:32px}.fwe-popover.fwe-popover-menu .fwe-list-group .fwe-list-group-item button i:before{display:inline-flex}.fwe-popover.fwe-popover-menu .fwe-list-group .fwe-list-group-item button span{display:inline-flex;height:24px}.fwe-popover.fwe-popover-menu .fwe-list-group .fwe-list-group-item button [class*=\" fwe-icon-\"]{margin-left:inherit}.fwe-popover.fwe-popover-menu .fwe-list-group .fwe-list-group-item:hover{color:var(--fwe-black);background-color:#3333331a}.fwe-popover.fwe-popover-menu .fwe-list-group .fwe-list-group-item:active{background-color:#3333}.fwe-popover .fwe-popover-legend{display:table;margin:16px;line-height:24px}.fwe-popover .fwe-popover-legend .fwe-popover-legend-content{display:table-row}.fwe-popover .fwe-popover-legend .fwe-popover-legend-content dt{display:table-cell;margin:0;padding-right:8px}.fwe-popover .fwe-popover-legend .fwe-popover-legend-content dd{display:table-cell;margin:0}.fwe-color-picker{width:216px}.fwe-color-picker.fwe-alpha-active{width:245px}.fwe-color-picker .fwe-gradient-picker{position:relative;width:198px;height:198px;margin:-7px}.fwe-color-picker .fwe-gradient-picker .fwe-brightness-gradient{position:absolute;inset:7px;background-image:linear-gradient(transparent,black)}.fwe-color-picker .fwe-gradient-picker .fwe-saturation-gradient{position:absolute;inset:7px}.fwe-color-picker .fwe-vertical-picker,.fwe-color-picker .fwe-alpha-picker,.fwe-color-picker .fwe-hue-picker{position:relative;height:198px;width:14px;margin:-7px -3px -7px 18px}.fwe-color-picker .fwe-vertical-picker .fwe-picker-background,.fwe-color-picker .fwe-alpha-picker .fwe-picker-background,.fwe-color-picker .fwe-hue-picker .fwe-picker-background{margin:7px 3px;height:184px;width:8px;border-radius:4px}.fwe-color-picker .fwe-vertical-picker .fwe-knob,.fwe-color-picker .fwe-alpha-picker .fwe-knob,.fwe-color-picker .fwe-hue-picker .fwe-knob{left:-3px}.fwe-color-picker .fwe-hue-picker .fwe-picker-background{background-image:linear-gradient(#ff0000,#ffff00,#00ff00,#00ffff,#0000ff,#ff00ff,#ff0000)}.fwe-color-picker .fwe-alpha-picker .fwe-no-color-pattern{margin:7px 3px;position:absolute}.fwe-color-picker .fwe-alpha-picker .fwe-picker-background{position:absolute}.fwe-color-picker .fwe-type-select{position:relative;display:flex}.fwe-color-picker .fwe-type-select .fwe-type-indicator{flex-shrink:1;cursor:pointer;display:flex}.fwe-color-picker .fwe-type-select .fwe-type-indicator .fwe-input-type{font-size:var(--fwe-font-size-small);line-height:calc(var(--fwe-font-size-small) + 5px);font-weight:var(--fwe-font-weight-bold)}.fwe-color-picker .fwe-type-select .fwe-type-indicator:hover{color:var(--fwe-hero)}.fwe-color-picker .fwe-type-select .fwe-icon-arrows-collapse{margin-left:16px;line-height:16px}.fwe-color-picker .fwe-type-select .fwe-popover{position:absolute;z-index:1;top:24px;left:0}.fwe-color-picker .fwe-type-select .fwe-popover .fwe-type-item{cursor:pointer;display:flex;padding:8px}.fwe-color-picker .fwe-type-select .fwe-popover .fwe-type-item:hover{color:var(--fwe-hero)}.fwe-color-picker .fwe-type-select .fwe-popover .fwe-type-item .fwe-icon-menu-check{opacity:0;margin-right:8px}.fwe-color-picker .fwe-type-select .fwe-popover .fwe-type-item.fwe-selected{cursor:default}.fwe-color-picker .fwe-type-select .fwe-popover .fwe-type-item.fwe-selected .fwe-icon-menu-check{opacity:1}.fwe-color-picker input::-webkit-outer-spin-button,.fwe-color-picker input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.fwe-color-picker input[type=number]{-moz-appearance:textfield}.fwe-color-picker input{padding-right:0!important;text-align:center}.fwe-color-picker .fwe-hex-input{width:75px;margin-right:16px}.fwe-color-picker .fwe-red-input,.fwe-color-picker .fwe-green-input{width:32px;margin-right:8px}.fwe-color-picker .fwe-blue-input{width:32px}.fwe-color-picker .fwe-alpha-input span input{width:48px;padding-right:16px!important}.fwe-color-picker .fwe-alpha-input .fwe-percent-char{margin-left:-16px}.fwe-color-picker .fwe-color-grid{display:flex;flex-wrap:wrap;margin-right:-8px;margin-bottom:-8px}.fwe-color-picker .fwe-color-grid .fwe-color-item{align-items:center;display:flex;justify-content:center;color:#fff;height:24px;width:24px;border-radius:4px;margin-right:8px;margin-bottom:8px}.fwe-color-picker .fwe-color-grid .fwe-color-item.fwe-white-item{border:1px solid var(--fwe-control-border);color:#000}.fwe-color-picker .fwe-color-grid .fwe-remove-color-button{align-items:center;display:flex;justify-content:center;height:24px;width:24px;border-radius:4px;border:1px solid var(--fwe-control-border);color:var(--fwe-control);margin-right:8px;margin-bottom:8px}.fwe-color-picker .fwe-color-grid .fwe-remove-color-button .fwe-no-color-pattern{margin:2px}.fwe-color-picker .fwe-color-grid .fwe-remove-color-button i{color:transparent;position:absolute}.fwe-color-picker .fwe-knob{position:absolute;z-index:1;height:14px;width:14px;border-radius:50%;border:2px solid white;box-shadow:0 0 4px #00000026}\n"] }]
|
|
277
|
-
}], propDecorators: { useAlpha: [{
|
|
278
|
-
type: Input
|
|
279
|
-
}], alpha: [{
|
|
280
|
-
type: Input
|
|
281
|
-
}], alphaChange: [{
|
|
282
|
-
type: Output
|
|
283
|
-
}], color: [{
|
|
284
|
-
type: Input
|
|
285
|
-
}], disabled: [{
|
|
286
|
-
type: Input
|
|
287
|
-
}], palette: [{
|
|
288
|
-
type: Input
|
|
289
|
-
}], paletteOnly: [{
|
|
290
|
-
type: Input
|
|
291
|
-
}] } });
|
|
292
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3ItcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXIvc3JjL2xpYi9mb3Jtcy9jb2xvci1waWNrZXIvY29sb3ItcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXIvc3JjL2xpYi9mb3Jtcy9jb2xvci1waWNrZXIvY29sb3ItcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlELE9BQU8sRUFBZSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQTRCLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEksT0FBTyxFQUF3QixXQUFXLEVBQUUsaUJBQWlCLEVBQXVCLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0csT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7Ozs7QUFFL0MsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQWE7SUFDekMsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVCxTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7Q0FDVixDQUFDO0FBRUY7O0dBRUc7QUFpQkgsTUFBTSxPQUFPLHVCQUF1QjtJQWhCcEM7UUFpQkUsYUFBUSxHQUFHLEdBQUcsQ0FBQztRQUVmLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFFbEIsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFFWixhQUFRLEdBQUcsS0FB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SFksWUFBWSxvVkFBRSxjQUFjLGdlQUFFLFdBQVc7MkZBY3hDLHVCQUF1QjtrQkFoQm5DLFNBQVM7aUNBQ0ksSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGNBQWMsRUFBRSxXQUFXLENBQUMsWUFDMUMsa0JBQWtCLGFBSWpCO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHdCQUF3QixDQUFDOzRCQUN0RCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRixpQkFDYyxpQkFBaUIsQ0FBQyxJQUFJOzhCQVM1QixRQUFRO3NCQUFoQixLQUFLO2dCQUdGLEtBQUs7c0JBRFIsS0FBSztnQkFZSSxXQUFXO3NCQUFwQixNQUFNO2dCQVNILEtBQUs7c0JBRFIsS0FBSztnQkFXRixRQUFRO3NCQURYLEtBQUs7Z0JBYUcsT0FBTztzQkFBZixLQUFLO2dCQUtHLFdBQVc7c0JBQW5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgQ2RrRHJhZ01vdmUsIERyYWdEcm9wTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBDb21wb25lbnQsIGZvcndhcmRSZWYsIElucHV0LCBWaWV3RW5jYXBzdWxhdGlvbiwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1zTW9kdWxlLCBOR19WQUxVRV9BQ0NFU1NPUiwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENvbG9ySGVscGVyIH0gZnJvbSAnLi9jb2xvci1oZWxwZXInO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuZXhwb3J0IGNvbnN0IFBSRURFRklORURfQ09MT1JTOiBzdHJpbmdbXSA9IFtcbiAgJyMwMDkxZGMnLFxuICAnIzMzMzMzMycsXG4gICcjZmZmZmZmJyxcbiAgJyNmMmYzZjUnLFxuICAnI2U1ZThlYicsXG4gICcjZDhkY2UxJyxcbiAgJyNiNmJlYzYnLFxuICAnIzgwY2EzZCcsXG4gICcjZmZkNjAwJyxcbiAgJyNmZjk2MDAnLFxuICAnI2Q1MDAwMCdcbl07XG5cbi8qKlxuICogQSBjdXN0b20gZm9ybSBlbGVtZW50IHRvIHBpY2sgYSBjb2xvci5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIERyYWdEcm9wTW9kdWxlLCBGb3Jtc01vZHVsZV0sXG4gIHNlbGVjdG9yOiAnZm5nLWNvbG9yLXBpY2tlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb2xvci1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jb2xvci1waWNrZXIuY29tcG9uZW50LnNjc3MnXSxcblxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEZuZ0NvbG9yUGlja2VyQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIEZuZ0NvbG9yUGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gIGJhc2VTaXplID0gMTg0O1xuXG4gIGlucHV0VHlwZSA9ICdSR0InO1xuXG4gIGlzU2VsZWN0T3BlbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIHVzZUFscGhhID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgZ2V0IGFscGhhKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuaW5uZXJBbHBoYTtcbiAgfVxuICBzZXQgYWxwaGEodmFsdWU6IG51bWJlcikge1xuICAgIGlmICh2YWx1ZSA8PSAxMDAgJiYgdmFsdWUgPj0gMCAmJiB0aGlzLmlubmVyQWxwaGEgIT09IE1hdGgucm91bmQodmFsdWUpKSB7XG4gICAgICB0aGlzLmlubmVyQWxwaGEgPSBNYXRoLnJvdW5kKHZhbHVlKTtcbiAgICAgIHRoaXMuYWxwaGFJbnB1dCA9IHRoaXMuaW5uZXJBbHBoYTtcbiAgICAgIHRoaXMudXBkYXRlS25vYnMoKTtcbiAgICB9XG4gIH1cblxuICBAT3V0cHV0KCkgYWxwaGFDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICAvKipcbiAgICogVGhlIGN1cnJlbnQgY29sb3JcbiAgICovXG4gIGdldCBjb2xvcigpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5pbm5lckNvbG9yO1xuICB9XG4gIEBJbnB1dCgpXG4gIHNldCBjb2xvcih2YWx1ZTogc3RyaW5nIHwgbnVsbCkge1xuICAgIGlmICh2YWx1ZSAmJiB0aGlzLmlzSGV4Q29sb3IodmFsdWUpKSB7XG4gICAgICB0aGlzLmlubmVyQ29sb3IgPSB2YWx1ZS50b1VwcGVyQ2FzZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmlubmVyQ29sb3IgPSBudWxsO1xuICAgIH1cbiAgICB0aGlzLnVwZGF0ZUNvbG9yUmdiKHRydWUpO1xuICB9XG5cbiAgQElucHV0KClcbiAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlubmVyRGlzYWJsZWQ7XG4gIH1cbiAgc2V0IGRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5pbm5lckRpc2FibGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBhbiBhcnJheSB3aXRoIGNvbG9yIHN0cmluZ3MgcmVwcmVzZW50aW5nIHRoZSBwYWxldHRlLlxuICAgKiBFeGFtcGxlOiBbJyMyMzQ1NjcsICcjQUEwMEZGJ11cbiAgICogUGFzcyBudWxsIHRvIGhpZGUgcGFsZXR0ZS5cbiAgICovXG4gIEBJbnB1dCgpIHBhbGV0dGU6IHN0cmluZ1tdID0gW107XG5cbiAgLyoqXG4gICAqIGhpZGUgdGhlIGh1ZSBhbmQgZ3JhZGllbnQgcGlja2VyIGFuZCBzaG90IHRoZSBwYWxldHRlIG9ubHkuXG4gICAqL1xuICBASW5wdXQoKSBwYWxldHRlT25seSA9IGZhbHNlO1xuXG4gIHByaXZhdGUgaW5uZXJDb2xvcjogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgaW5uZXJEaXNhYmxlZDogYm9vbGVhbiA9IHRydWU7XG4gIHByaXZhdGUgaW5uZXJBbHBoYTogbnVtYmVyID0gMTtcblxuICAvLyBpbnB1dCBjb250cm9sc1xuICBoZXhJbnB1dENvbG9yOiBzdHJpbmcgfCBudWxsID0gJyNmZjAwMDAnO1xuICByZWRJbnB1dCA9IDI1NTtcbiAgZ3JlZW5JbnB1dCA9IDA7XG4gIGJsdWVJbnB1dCA9IDA7XG4gIGFscGhhSW5wdXQgPSAxMDA7XG5cbiAgLy8gSFNWIHZhbHVlXG4gIGh1ZTogbnVtYmVyID0gMDtcbiAgc2F0dXJhdGlvbjogbnVtYmVyID0gMDtcbiAgdmFsdWU6IG51bWJlciA9IDA7XG5cbiAgLy8gcG9pdGlvbnMgb2YgdGhlIGtub2JzIGluIHB4XG4gIGh1ZUtub2JPZmZzZXQgPSAwO1xuICBhbHBoYUtub2JPZmZzZXQgPSAwO1xuICBzYXR1cmF0aW9uS25vYk9mZnNldCA9IDA7XG4gIHZhbHVlS25vYk9mZnNldCA9IDA7XG5cbiAgLy8gY2FsbGJhY2tzIGZvciBDb250cm9sVmFsdWVBY2Nlc3NvclxuICBvblRvdWNoZWQ6ICgpID0+IGFueSA9ICgpID0+IG51bGw7XG4gIG9uQ2hhbmdlOiAoY29sb3I6IHN0cmluZyB8IG51bGwpID0+IGFueSA9ICgpID0+IG51bGw7XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGNvbnN0IHBhbGV0dGVDaGFuZ2VkID0gY2hhbmdlc1sncGFsZXR0ZSddO1xuICAgIGlmIChwYWxldHRlQ2hhbmdlZFsnY3VycmVudFZhbHVlJ10ubGVuZ3RoID4gMCAmJiBwYWxldHRlQ2hhbmdlZFsnY3VycmVudFZhbHVlJ10uaW5kZXhPZignRkVTVE9fQ09MT1JTJykgIT09IC0xKSB7XG4gICAgICB0aGlzLnBhbGV0dGUgPSBQUkVERUZJTkVEX0NPTE9SUztcbiAgICB9XG4gIH1cblxuICAvLyBDb250cm9sVmFsdWVBY2Nlc3NvclxuICB3cml0ZVZhbHVlKGNvbG9yOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc0hleENvbG9yKGNvbG9yKSkge1xuICAgICAgdGhpcy5pbm5lckNvbG9yID0gY29sb3IudG9VcHBlckNhc2UoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbm5lckNvbG9yID0gbnVsbDtcbiAgICB9XG4gICAgdGhpcy51cGRhdGVDb2xvclJnYihmYWxzZSk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmlubmVyRGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgLy8gdXBkYXRlIG1ldGhvZCBmb3IgY2hhbmdlcyBvZiB0aGUgcmdiIHZhbHVlXG4gIHVwZGF0ZUNvbG9yUmdiKGVtaXRDaGFuZ2U6IGJvb2xlYW4pIHtcbiAgICBjb25zdCBjdXJyZW50Q29sb3IgPSB0aGlzLmlubmVyQ29sb3IgfHwgJyNGRkZGRkYnO1xuICAgIHRoaXMudXBkYXRlSW5wdXRzKGN1cnJlbnRDb2xvcik7XG4gICAgY29uc3QgcmdiID0gQ29sb3JIZWxwZXIuaGV4VG9SZ2IoY3VycmVudENvbG9yKTtcbiAgICBjb25zdCBoc3YgPSBDb2xvckhlbHBlci5yZ2JUb0hzdihyZ2IpO1xuICAgIHRoaXMuaHVlID0gaHN2Lmg7XG4gICAgdGhpcy5zYXR1cmF0aW9uID0gaHN2LnM7XG4gICAgdGhpcy52YWx1ZSA9IGhzdi52O1xuICAgIHRoaXMudXBkYXRlS25vYnMoKTtcbiAgICBpZiAoZW1pdENoYW5nZSkge1xuICAgICAgaWYgKHRoaXMub25DaGFuZ2UgIT0gbnVsbCkge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuaW5uZXJDb2xvcik7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5vblRvdWNoZWQgIT0gbnVsbCkge1xuICAgICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIHVwZGF0ZSBtZXRob2QgZm9yIGNoYW5nZXMgb2YgdGhlIGhzdiB2YWx1ZVxuICB1cGRhdGVDb2xvckhzdigpIHtcbiAgICBjb25zdCByZ2IgPSBDb2xvckhlbHBlci5oc3ZUb1JnYih7IGg6IHRoaXMuaHVlLCBzOiB0aGlzLnNhdHVyYXRpb24sIHY6IHRoaXMudmFsdWUgfSk7XG4gICAgdGhpcy5pbm5lckNvbG9yID0gQ29sb3JIZWxwZXIucmdiVG9IZXgocmdiKTtcbiAgICB0aGlzLnVwZGF0ZUlucHV0cyh0aGlzLmlubmVyQ29sb3IpO1xuICAgIGlmICh0aGlzLm9uQ2hhbmdlICE9IG51bGwpIHtcbiAgICAgIHRoaXMub25DaGFuZ2UodGhpcy5pbm5lckNvbG9yKTtcbiAgICB9XG4gICAgaWYgKHRoaXMub25Ub3VjaGVkICE9IG51bGwpIHtcbiAgICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gZXZlbnQgaGFuZGxlciBmb3IgaW5wdXRzXG4gIG9uSGV4Qmx1cigpIHtcbiAgICBpZiAodGhpcy5oZXhJbnB1dENvbG9yICYmIHRoaXMuaXNIZXhDb2xvcih0aGlzLmhleElucHV0Q29sb3IpKSB7XG4gICAgICB0aGlzLmNvbG9yID0gdGhpcy5oZXhJbnB1dENvbG9yLnRvVXBwZXJDYXNlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaGV4SW5wdXRDb2xvciA9IHRoaXMuY29sb3I7XG4gICAgfVxuICB9XG5cbiAgb25IZXhJbnB1dCgpIHtcbiAgICBpZiAodGhpcy5oZXhJbnB1dENvbG9yICYmIHRoaXMuaXNIZXhDb2xvcih0aGlzLmhleElucHV0Q29sb3IpKSB7XG4gICAgICB0aGlzLmNvbG9yID0gdGhpcy5oZXhJbnB1dENvbG9yLnRvVXBwZXJDYXNlKCk7XG4gICAgfVxuICB9XG5cbiAgb25SZ2JCbHVyKCkge1xuICAgIGlmICh0aGlzLmhleElucHV0Q29sb3IgJiYgdGhpcy5pc0hleENvbG9yKHRoaXMuaGV4SW5wdXRDb2xvcikpIHtcbiAgICAgIHRoaXMuY29sb3IgPSB0aGlzLmhleElucHV0Q29sb3IudG9VcHBlckNhc2UoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5oZXhJbnB1dENvbG9yID0gdGhpcy5jb2xvcjtcbiAgICB9XG4gIH1cblxuICBvblJnYklucHV0KHZhbHVlOiBudW1iZXIsIGNoYW5uZWw6IHN0cmluZykge1xuICAgIGlmICh2YWx1ZSA+IDI1NSB8fCB2YWx1ZSA8IDApIHtcbiAgICAgIHRoaXMudXBkYXRlSW5wdXRzKHRoaXMuaW5uZXJDb2xvcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHJnYiA9IENvbG9ySGVscGVyLmhleFRvUmdiKHRoaXMuaW5uZXJDb2xvcik7XG4gICAgICByZ2JbY2hhbm5lbCBhcyBrZXlvZiB0eXBlb2YgcmdiXSA9IHZhbHVlO1xuICAgICAgdGhpcy5pbm5lckNvbG9yID0gQ29sb3JIZWxwZXIucmdiVG9IZXgocmdiKTtcbiAgICAgIHRoaXMudXBkYXRlQ29sb3JSZ2IodHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgb25BbHBoYUlucHV0KHZhbHVlOiBudW1iZXIpIHtcbiAgICBpZiAodmFsdWUgPiAxMDAgfHwgdmFsdWUgPCAwKSB7XG4gICAgICB0aGlzLmFscGhhSW5wdXQgPSB0aGlzLmlubmVyQWxwaGE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYWxwaGEgPSB2YWx1ZTtcbiAgICAgIHRoaXMuYWxwaGFDaGFuZ2UuZW1pdCh0aGlzLmFscGhhKTtcbiAgICB9XG4gIH1cblxuICBvbkdyYWRpZW50Q2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICB0aGlzLnNhdHVyYXRpb24gPSBldmVudC5vZmZzZXRYIC8gdGhpcy5iYXNlU2l6ZTtcbiAgICB0aGlzLnZhbHVlID0gKHRoaXMuYmFzZVNpemUgLSBldmVudC5vZmZzZXRZKSAvIHRoaXMuYmFzZVNpemU7XG4gICAgdGhpcy51cGRhdGVDb2xvckhzdigpO1xuICAgIHRoaXMudXBkYXRlS25vYnMoKTtcbiAgfVxuXG4gIG9uR3JhZGllbnREcmFnKGV2ZW50OiBDZGtEcmFnTW92ZSkge1xuICAgIGNvbnN0IHBvc2l0aW9uID0gZXZlbnQuc291cmNlLmdldEZyZWVEcmFnUG9zaXRpb24oKTtcbiAgICB0aGlzLnNhdHVyYXRpb24gPSBNYXRoLmZsb29yKHBvc2l0aW9uLngpIC8gdGhpcy5iYXNlU2l6ZTtcbiAgICB0aGlzLnZhbHVlID0gKHRoaXMuYmFzZVNpemUgLSBwb3NpdGlvbi55KSAvIHRoaXMuYmFzZVNpemU7XG4gICAgdGhpcy51cGRhdGVDb2xvckhzdigpO1xuICB9XG5cbiAgb25IdWVDbGljayhldmVudDogTW91c2VFdmVudCkge1xuICAgIHRoaXMuaHVlID0gZXZlbnQub2Zmc2V0WSAvIHRoaXMuYmFzZVNpemU7XG4gICAgdGhpcy51cGRhdGVDb2xvckhzdigpO1xuICAgIHRoaXMudXBkYXRlS25vYnMoKTtcbiAgfVxuXG4gIG9uQWxwaGFDbGljayhldmVudDogTW91c2VFdmVudCkge1xuICAgIHRoaXMuYWxwaGEgPSAxMDAgLSBNYXRoLnJvdW5kKChldmVudC5vZmZzZXRZIC8gdGhpcy5iYXNlU2l6ZSkgKiAxMDApO1xuICAgIHRoaXMuYWxwaGFDaGFuZ2UuZW1pdCh0aGlzLmFscGhhKTtcbiAgfVxuXG4gIG9uSHVlRHJhZyhldmVudDogQ2RrRHJhZ01vdmUpIHtcbiAgICBjb25zdCBwb3NpdGlvbiA9IGV2ZW50LnNvdXJjZS5nZXRGcmVlRHJhZ1Bvc2l0aW9uKCk7XG4gICAgdGhpcy5odWUgPSAocG9zaXRpb24ueSArIHRoaXMuYmFzZVNpemUgKyAxNCkgLyB0aGlzLmJhc2VTaXplO1xuICAgIHRoaXMudXBkYXRlQ29sb3JIc3YoKTtcbiAgfVxuXG4gIG9uQWxwaGFEcmFnKGV2ZW50OiBDZGtEcmFnTW92ZSkge1xuICAgIGNvbnN0IHBvc2l0aW9uID0gZXZlbnQuc291cmNlLmdldEZyZWVEcmFnUG9zaXRpb24oKTtcbiAgICB0aGlzLmlubmVyQWxwaGEgPSAxMDAgLSBNYXRoLnJvdW5kKChwb3NpdGlvbi55IC8gdGhpcy5iYXNlU2l6ZSkgKiAxMDApO1xuICAgIHRoaXMuYWxwaGFJbnB1dCA9IHRoaXMuaW5uZXJBbHBoYTtcbiAgICB0aGlzLmFscGhhQ2hhbmdlLmVtaXQodGhpcy5pbm5lckFscGhhKTtcbiAgfVxuXG4gIG9uUmVtb3ZlQ29sb3IoKSB7XG4gICAgaWYgKHRoaXMudXNlQWxwaGEpIHtcbiAgICAgIHRoaXMuYWxwaGEgPSAwO1xuICAgICAgdGhpcy5hbHBoYUNoYW5nZS5lbWl0KHRoaXMuYWxwaGEpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNvbG9yID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBpc0hleENvbG9yKHZhbHVlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gL14jWzAtOUEtRl17Nn0kL2kudGVzdCh2YWx1ZSk7XG4gIH1cblxuICBnZXRTYXR1cmF0aW9uR3JhZGllbnQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ2xpbmVhci1ncmFkaWVudCh0byByaWdodCwgd2hpdGUsICBoc2woJyArIHRoaXMuaHVlICogMzYwICsgJywgMTAwJSwgNTAlKSApJztcbiAgfVxuXG4gIHVwZGF0ZUlucHV0cyhoZXhDb2xvcjogc3RyaW5nIHwgbnVsbCkge1xuICAgIHRoaXMuaGV4SW5wdXRDb2xvciA9IGhleENvbG9yO1xuICAgIGNvbnN0IHJnYiA9IENvbG9ySGVscGVyLmhleFRvUmdiKGhleENvbG9yKTtcbiAgICB0aGlzLnJlZElucHV0ID0gcmdiLnI7XG4gICAgdGhpcy5ncmVlbklucHV0ID0gcmdiLmc7XG4gICAgdGhpcy5ibHVlSW5wdXQgPSByZ2IuYjtcbiAgfVxuXG4gIHVwZGF0ZUtub2JzKCkge1xuICAgIHRoaXMuYWxwaGFLbm9iT2Zmc2V0ID0gKCgxMDAgLSB0aGlzLmFscGhhKSAvIDEwMCkgKiB0aGlzLmJhc2VTaXplO1xuICAgIHRoaXMuaHVlS25vYk9mZnNldCA9IHRoaXMuaHVlICogdGhpcy5iYXNlU2l6ZSAtICh0aGlzLmJhc2VTaXplICsgMTQpO1xuICAgIHRoaXMuc2F0dXJhdGlvbktub2JPZmZzZXQgPSB0aGlzLnNhdHVyYXRpb24gKiB0aGlzLmJhc2VTaXplO1xuICAgIHRoaXMudmFsdWVLbm9iT2Zmc2V0ID0gKDEgLSB0aGlzLnZhbHVlKSAqIHRoaXMuYmFzZVNpemU7XG4gIH1cblxuICBvbkNoYW5nZVR5cGUodHlwZTogc3RyaW5nKSB7XG4gICAgdGhpcy5pbnB1dFR5cGUgPSB0eXBlO1xuICAgIHRoaXMuaXNTZWxlY3RPcGVuID0gZmFsc2U7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmd2UtY29sb3ItcGlja2VyXCIgW2NsYXNzLmZ3ZS1hbHBoYS1hY3RpdmVdPVwidXNlQWxwaGFcIj5cbiAgPGRpdiBjbGFzcz1cImZ3ZS1kLWZsZXhcIiAqbmdJZj1cIiFwYWxldHRlT25seVwiPlxuICAgIDxkaXYgY2xhc3M9XCJmd2UtZ3JhZGllbnQtcGlja2VyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZndlLXNhdHVyYXRpb24tZ3JhZGllbnRcIiBbbmdTdHlsZV09XCJ7ICdiYWNrZ3JvdW5kLWltYWdlJzogZ2V0U2F0dXJhdGlvbkdyYWRpZW50KCkgfVwiPjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImZ3ZS1icmlnaHRuZXNzLWdyYWRpZW50XCIgKGNsaWNrKT1cIm9uR3JhZGllbnRDbGljaygkZXZlbnQpXCI+PC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiZndlLWtub2JcIlxuICAgICAgICBjZGtEcmFnQm91bmRhcnk9XCIuZndlLWdyYWRpZW50LXBpY2tlclwiXG4gICAgICAgIGNka0RyYWdcbiAgICAgICAgW2Nka0RyYWdGcmVlRHJhZ1Bvc2l0aW9uXT1cInsgeDogc2F0dXJhdGlvbktub2JPZmZzZXQsIHk6IHZhbHVlS25vYk9mZnNldCB9XCJcbiAgICAgICAgKGNka0RyYWdNb3ZlZCk9XCJvbkdyYWRpZW50RHJhZygkZXZlbnQpXCJcbiAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwiY29sb3JcIlxuICAgICAgPjwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImZ3ZS1odWUtcGlja2VyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZndlLXBpY2tlci1iYWNrZ3JvdW5kXCIgKGNsaWNrKT1cIm9uSHVlQ2xpY2soJGV2ZW50KVwiPjwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImZ3ZS1rbm9iXCJcbiAgICAgICAgY2RrRHJhZ0JvdW5kYXJ5PVwiLmZ3ZS1odWUtcGlja2VyXCJcbiAgICAgICAgY2RrRHJhZ0xvY2tBeGlzPVwieVwiXG4gICAgICAgIGNka0RyYWdcbiAgICAgICAgW2Nka0RyYWdGcmVlRHJhZ1Bvc2l0aW9uXT1cInsgeDogMywgeTogaHVlS25vYk9mZnNldCB9XCJcbiAgICAgICAgKGNka0RyYWdNb3ZlZCk9XCJvbkh1ZURyYWcoJGV2ZW50KVwiXG4gICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cIidoc2woJyArIGh1ZSAqIDM2MCArICcsIDEwMCUsIDUwJSknXCJcbiAgICAgID48L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJmd2UtYWxwaGEtcGlja2VyXCIgKm5nSWY9XCJ1c2VBbHBoYVwiPlxuICAgICAgPHN2Z1xuICAgICAgICBjbGFzcz1cImZ3ZS1uby1jb2xvci1wYXR0ZXJuXCJcbiAgICAgICAgdmVyc2lvbj1cIjEuMVwiXG4gICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICB4bWxuczp4bGluaz1cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIlxuICAgICAgICBpZD1cImNhbnZhczFcIlxuICAgICAgICB3aWR0aD1cIjhcIlxuICAgICAgICBoZWlnaHQ9XCIxODRcIlxuICAgICAgPlxuICAgICAgICA8ZGVmcz5cbiAgICAgICAgICA8cGF0dGVybiBpZD1cImJ3c3F1YXJlMnB4XCIgd2lkdGg9XCI0XCIgaGVpZ2h0PVwiNFwiIHBhdHRlcm5Vbml0cz1cInVzZXJTcGFjZU9uVXNlXCI+XG4gICAgICAgICAgICA8cmVjdCB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCIyXCIgaGVpZ2h0PVwiMlwiIHN0cm9rZT1cIm5vbmVcIiBmaWxsPVwiI2ZmZmZmZlwiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PVwiMlwiIHk9XCIwXCIgd2lkdGg9XCIyXCIgaGVpZ2h0PVwiMlwiIHN0cm9rZT1cIm5vbmVcIiBmaWxsPVwiI2U1ZThlYlwiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PVwiMFwiIHk9XCIyXCIgd2lkdGg9XCIyXCIgaGVpZ2h0PVwiMlwiIHN0cm9rZT1cIm5vbmVcIiBmaWxsPVwiI2U1ZThlYlwiIC8+XG4gICAgICAgICAgICA8cmVjdCB4PVwiMlwiIHk9XCIyXCIgd2lkdGg9XCIyXCIgaGVpZ2h0PVwiMlwiIHN0cm9rZT1cIm5vbmVcIiBmaWxsPVwiI2ZmZmZmZlwiIC8+XG4gICAgICAgICAgPC9wYXR0ZXJuPlxuICAgICAgICA8L2RlZnM+XG4gICAgICAgIDxyZWN0IHg9XCIwXCIgeT1cIjBcIiByeD1cIjRcIiByeT1cIjRcIiB3aWR0aD1cIjhcIiBoZWlnaHQ9XCIxODRcIiBmaWxsPVwidXJsKCNid3NxdWFyZTJweClcIiBzdHJva2Utd2lkdGg9XCIwXCIgLz5cbiAgICAgIDwvc3ZnPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImZ3ZS1waWNrZXItYmFja2dyb3VuZFwiXG4gICAgICAgIChjbGljayk9XCJvbkFscGhhQ2xpY2soJGV2ZW50KVwiXG4gICAgICAgIFtuZ1N0eWxlXT1cInsgJ2JhY2tncm91bmQtaW1hZ2UnOiAnbGluZWFyLWdyYWRpZW50KCAnICsgY29sb3IgKyAnICwgdHJhbnNwYXJlbnQpJyB9XCJcbiAgICAgID48L2Rpdj5cblxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImZ3ZS1rbm9iXCJcbiAgICAgICAgY2RrRHJhZ0JvdW5kYXJ5PVwiLmZ3ZS1hbHBoYS1waWNrZXJcIlxuICAgICAgICBjZGtEcmFnTG9ja0F4aXM9XCJ5XCJcbiAgICAgICAgY2RrRHJhZ1xuICAgICAgICBbY2RrRHJhZ0ZyZWVEcmFnUG9zaXRpb25dPVwieyB4OiAzLCB5OiBhbHBoYUtub2JPZmZzZXQgfVwiXG4gICAgICAgIChjZGtEcmFnTW92ZWQpPVwib25BbHBoYURyYWcoJGV2ZW50KVwiXG4gICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cImNvbG9yXCJcbiAgICAgID48L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImZ3ZS1tdC1zXCIgKm5nSWY9XCIhcGFsZXR0ZU9ubHlcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZndlLXR5cGUtc2VsZWN0XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZndlLXR5cGUtaW5kaWNhdG9yXCIgKGNsaWNrKT1cImlzU2VsZWN0T3BlbiA9ICFpc1NlbGVjdE9wZW5cIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJmd2UtaW5wdXQtdHlwZVwiPnt7IGlucHV0VHlwZSB9fTwvc3Bhbj5cbiAgICAgICAgPGkgY2xhc3M9XCJmd2UtaWNvbiBmd2UtaWNvbi1hcnJvd3MtY29sbGFwc2VcIj48L2k+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmd2UtcG9wb3ZlclwiICpuZ0lmPVwiaXNTZWxlY3RPcGVuXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmd2UtdHlwZS1pdGVtXCIgKGNsaWNrKT1cIm9uQ2hhbmdlVHlwZSgnSEVYJylcIiBbY2xhc3MuZndlLXNlbGVjdGVkXT1cImlucHV0VHlwZSA9PT0gJ0hFWCdcIj5cbiAgICAgICAgICA8aSBjbGFzcz1cImZ3ZS1pY29uIGZ3ZS1pY29uLW1lbnUtY2hlY2tcIj48L2k+IEhFWFxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZ3ZS10eXBlLWl0ZW1cIiAoY2xpY2spPVwib25DaGFuZ2VUeXBlKCdSR0InKVwiIFtjbGFzcy5md2Utc2VsZWN0ZWRdPVwiaW5wdXRUeXBlID09PSAnUkdCJ1wiPlxuICAgICAgICAgIDxpIGNsYXNzPVwiZndlLWljb24gZndlLWljb24tbWVudS1jaGVja1wiPjwvaT4gUkdCXG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZndlLWQtZmxleFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlucHV0VHlwZSA9PT0gJ0hFWCdcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwiZndlLWlucHV0LXRleHQgZndlLWhleC1pbnB1dFwiPlxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIFsobmdNb2RlbCldPVwiaGV4SW5wdXRDb2xvclwiIChibHVyKT1cIm9uSGV4Qmx1cigpXCIgKGlucHV0KT1cIm9uSGV4SW5wdXQoKVwiIC8+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpbnB1dFR5cGUgPT09ICdSR0InXCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cImZ3ZS1pbnB1dC10ZXh0IGZ3ZS1yZWQtaW5wdXRcIj5cbiAgICAgICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIFsobmdNb2RlbCldPVwicmVkSW5wdXRcIiAoaW5wdXQpPVwib25SZ2JJbnB1dChyZWRJbnB1dCwgJ3InKVwiIC8+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cImZ3ZS1pbnB1dC10ZXh0IGZ3ZS1ncmVlbi1pbnB1dFwiPlxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgWyhuZ01vZGVsKV09XCJncmVlbklucHV0XCIgKGlucHV0KT1cIm9uUmdiSW5wdXQoZ3JlZW5JbnB1dCwgJ2cnKVwiIC8+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cImZ3ZS1pbnB1dC10ZXh0IGZ3ZS1ibHVlLWlucHV0XCI+XG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIiBtaW49XCIwXCIgbWF4PVwiMjU1XCIgWyhuZ01vZGVsKV09XCJibHVlSW5wdXRcIiAoaW5wdXQpPVwib25SZ2JJbnB1dChibHVlSW5wdXQsICdiJylcIiAvPlxuICAgICAgICA8L2xhYmVsPlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxsYWJlbCBjbGFzcz1cImZ3ZS1pbnB1dC10ZXh0IGZ3ZS1hbHBoYS1pbnB1dCBmd2UtbWwtYXV0b1wiICpuZ0lmPVwidXNlQWxwaGFcIj5cbiAgICAgICAgPHNwYW4+XG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIiBtaW49XCIwXCIgbWF4PVwiMTAwXCIgWyhuZ01vZGVsKV09XCJhbHBoYUlucHV0XCIgKGlucHV0KT1cIm9uQWxwaGFJbnB1dChhbHBoYUlucHV0KVwiIC8+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJmd2UtcGVyY2VudC1jaGFyXCI+JTwvc3Bhbj5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9sYWJlbD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImZ3ZS1tdC14cyBmd2UtY29sb3ItZ3JpZFwiICpuZ0lmPVwicGFsZXR0ZSAmJiBwYWxldHRlLmxlbmd0aFwiPlxuICAgIDxkaXYgY2xhc3M9XCJmd2UtcmVtb3ZlLWNvbG9yLWJ1dHRvblwiIChjbGljayk9XCJvblJlbW92ZUNvbG9yKClcIj5cbiAgICAgIDxzdmdcbiAgICAgICAgY2xhc3M9XCJmd2Utbm8tY29sb3ItcGF0dGVyblwiXG4gICAgICAgIHZlcnNpb249XCIxLjFcIlxuICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgeG1sbnM6eGxpbms9XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCJcbiAgICAgICAgaWQ9XCJjYW52YXMxXCJcbiAgICAgICAgd2lkdGg9XCIxOFwiXG4gICAgICAgIGhlaWdodD1cIjE4XCJcbiAgICAgID5cbiAgICAgICAgPGRlZnM+XG4gICAgICAgICAgPHBhdHRlcm4gaWQ9XCJid3NxdWFyZTJweFwiIHdpZHRoPVwiNFwiIGhlaWdodD1cIjRcIiBwYXR0ZXJuVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiPlxuICAgICAgICAgICAgPHJlY3QgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiMlwiIGhlaWdodD1cIjJcIiBzdHJva2U9XCJub25lXCIgZmlsbD1cIiNmZmZmZmZcIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD1cIjJcIiB5PVwiMFwiIHdpZHRoPVwiMlwiIGhlaWdodD1cIjJcIiBzdHJva2U9XCJub25lXCIgZmlsbD1cIiNlNWU4ZWJcIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD1cIjBcIiB5PVwiMlwiIHdpZHRoPVwiMlwiIGhlaWdodD1cIjJcIiBzdHJva2U9XCJub25lXCIgZmlsbD1cIiNlNWU4ZWJcIiAvPlxuICAgICAgICAgICAgPHJlY3QgeD1cIjJcIiB5PVwiMlwiIHdpZHRoPVwiMlwiIGhlaWdodD1cIjJcIiBzdHJva2U9XCJub25lXCIgZmlsbD1cIiNmZmZmZmZcIiAvPlxuICAgICAgICAgIDwvcGF0dGVybj5cbiAgICAgICAgPC9kZWZzPlxuICAgICAgICA8cmVjdCB4PVwiMFwiIHk9XCIwXCIgcng9XCIwXCIgcnk9XCIwXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgZmlsbD1cInVybCgjYndzcXVhcmUycHgpXCIgc3Ryb2tlLXdpZHRoPVwiMFwiIC8+XG4gICAgICA8L3N2Zz5cbiAgICAgIDxpIGNsYXNzPVwiZndlLWljb24gZndlLWljb24tbWVudS1jaGVja1wiIFtjbGFzcy5md2UtY29sb3ItdGV4dF09XCIhY29sb3JcIj48L2k+XG4gICAgPC9kaXY+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sb3JJdGVtIG9mIHBhbGV0dGVcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJmd2UtY29sb3ItaXRlbVwiXG4gICAgICAgIFtjbGFzcy5md2Utd2hpdGUtaXRlbV09XCJjb2xvckl0ZW0udG9VcHBlckNhc2UoKSA9PT0gJyNGRkZGRkYnXCJcbiAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwiY29sb3JJdGVtXCJcbiAgICAgICAgKGNsaWNrKT1cImNvbG9yID0gY29sb3JJdGVtXCJcbiAgICAgID5cbiAgICAgICAgPGkgY2xhc3M9XCJmd2UtaWNvbiBmd2UtaWNvbi1tZW51LWNoZWNrXCIgKm5nSWY9XCJjb2xvckl0ZW0udG9VcHBlckNhc2UoKSA9PT0gY29sb3JcIj48L2k+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|