@taiga-ui/legacy 4.3.0 → 4.4.1-canary.ce69ccc
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/classes/abstract-native-select.d.ts +1 -1
- package/components/color-selector/color-edit/color-edit.component.d.ts +1 -1
- package/components/input-date-range/input-date-range.component.d.ts +1 -4
- package/components/input-time/native-time/native-time.component.d.ts +1 -1
- package/components/primitive-textfield/textfield/textfield.component.d.ts +1 -1
- package/components/sheet/components/sheet-heading/sheet-heading.component.d.ts +1 -1
- package/esm2022/classes/abstract-native-select.mjs +4 -4
- package/esm2022/components/color-selector/color-edit/color-edit.component.mjs +2 -2
- package/esm2022/components/color-selector/color-picker/color-picker.component.mjs +2 -2
- package/esm2022/components/color-selector/color-selector.component.mjs +6 -6
- package/esm2022/components/color-selector/flat-picker/flat-picker.component.mjs +2 -2
- package/esm2022/components/color-selector/linear-multi-picker/linear-multi-picker.component.mjs +2 -2
- package/esm2022/components/color-selector/linear-picker/linear-picker.component.mjs +2 -2
- package/esm2022/components/color-selector/palette/palette.component.mjs +2 -2
- package/esm2022/components/combo-box/combo-box.component.mjs +4 -4
- package/esm2022/components/input/input.component.mjs +3 -3
- package/esm2022/components/input-color/input-color.component.mjs +3 -3
- package/esm2022/components/input-copy/input-copy.component.mjs +2 -2
- package/esm2022/components/input-date/input-date.component.mjs +3 -3
- package/esm2022/components/input-date-multi/input-date-multi.component.mjs +2 -2
- package/esm2022/components/input-date-range/input-date-range.component.mjs +5 -19
- package/esm2022/components/input-date-time/input-date-time.component.mjs +4 -4
- package/esm2022/components/input-month/input-month.component.mjs +4 -4
- package/esm2022/components/input-month-range/input-month-range.component.mjs +2 -2
- package/esm2022/components/input-number/input-number.component.mjs +2 -2
- package/esm2022/components/input-password/input-password.component.mjs +2 -2
- package/esm2022/components/input-phone/input-phone.component.mjs +3 -3
- package/esm2022/components/input-phone-international/input-phone-international.component.mjs +3 -3
- package/esm2022/components/input-range/input-range.component.mjs +2 -2
- package/esm2022/components/input-slider/input-slider.component.mjs +2 -2
- package/esm2022/components/input-tag/input-tag.component.mjs +5 -5
- package/esm2022/components/input-time/input-time.component.mjs +3 -3
- package/esm2022/components/input-time/native-time/native-time.component.mjs +9 -9
- package/esm2022/components/input-year/input-year.component.mjs +2 -2
- package/esm2022/components/multi-select/multi-select-group/multi-select-group.component.mjs +1 -1
- package/esm2022/components/multi-select/multi-select.component.mjs +2 -2
- package/esm2022/components/multi-select/native-multi-select/native-multi-select-group.component.mjs +2 -2
- package/esm2022/components/multi-select/native-multi-select/native-multi-select.component.mjs +2 -2
- package/esm2022/components/primitive-textfield/primitive-textfield.component.mjs +2 -2
- package/esm2022/components/primitive-textfield/textfield/textfield.component.mjs +6 -6
- package/esm2022/components/primitive-textfield/value-decoration/value-decoration.component.mjs +2 -2
- package/esm2022/components/select/native-select/native-select-group.component.mjs +2 -2
- package/esm2022/components/select/native-select/native-select.component.mjs +2 -2
- package/esm2022/components/select/select.component.mjs +3 -3
- package/esm2022/components/select-option/select-option.component.mjs +2 -2
- package/esm2022/components/sheet/components/sheet/sheet.component.mjs +5 -4
- package/esm2022/components/sheet/components/sheet/sheet.providers.mjs +3 -3
- package/esm2022/components/sheet/components/sheet-bar/sheet-bar.component.mjs +2 -2
- package/esm2022/components/sheet/components/sheet-heading/sheet-heading.component.mjs +6 -6
- package/esm2022/components/sheet/components/sheets-host/sheets-host.component.mjs +3 -3
- package/esm2022/components/svg/svg.component.mjs +3 -3
- package/esm2022/components/svg/svg.service.mjs +2 -2
- package/esm2022/components/table-bar/table-bar.component.mjs +3 -3
- package/esm2022/components/tag/tag.component.mjs +2 -2
- package/esm2022/components/textarea/textarea.component.mjs +2 -2
- package/esm2022/components/tooltip/tooltip.component.mjs +2 -2
- package/fesm2022/taiga-ui-legacy-classes.mjs +3 -3
- package/fesm2022/taiga-ui-legacy-classes.mjs.map +1 -1
- package/fesm2022/taiga-ui-legacy-components-color-selector.mjs +17 -17
- package/fesm2022/taiga-ui-legacy-components-color-selector.mjs.map +1 -1
- package/fesm2022/taiga-ui-legacy-components-combo-box.mjs +3 -3
- package/fesm2022/taiga-ui-legacy-components-combo-box.mjs.map +1 -1
- package/fesm2022/taiga-ui-legacy-components-input-color.mjs +2 -2
- package/fesm2022/taiga-ui-legacy-components-input-color.mjs.map +1 -1
- package/fesm2022/taiga-ui-legacy-components-input-copy.mjs +2 -2
- package/fesm2022/taiga-ui-legacy-components-input-copy.mjs.map +1 -1
- package/fesm2022/taiga-ui-legacy-components-input-date-multi.mjs +2 -2
- package/fesm2022/taiga-ui-legacy-components-input-date-multi.mjs.map +1 -1
- package/fesm2022/taiga-ui-legacy-components-input-date-range.mjs +3 -17
- package/fesm2022/taiga-ui-legacy-components-input-date-range.mjs.map +1 -1
- package/fesm2022/taiga-ui-legacy-components-input-date-time.mjs +3 -3
- package/fesm2022/taiga-ui-legacy-components-input-date-time.mjs.map +1 -1
- package/fesm2022/taiga-ui-legacy-components-input-date.mjs +2 -2
- package/fesm2022/taiga-ui-legacy-components-input-date.mjs.map +1 -1
- package/fesm2022/taiga-ui-legacy-components-input-month-range.mjs +2 -2
- package/fesm2022/taiga-ui-legacy-components-input-month-range.mjs.map +1 -1
- package/fesm2022/taiga-ui-legacy-components-input-month.mjs +3 -3
- package/fesm2022/taiga-ui-legacy-components-input-month.mjs.map +1 -1
- package/fesm2022/taiga-ui-legacy-components-input-number.mjs +2 -2
- package/fesm2022/taiga-ui-legacy-components-input-number.mjs.map +1 -1
- package/fesm2022/taiga-ui-legacy-components-input-password.mjs +2 -2
- package/fesm2022/taiga-ui-legacy-components-input-password.mjs.map +1 -1
- package/fesm2022/taiga-ui-legacy-components-input-phone-international.mjs +2 -2
- package/fesm2022/taiga-ui-legacy-components-input-phone-international.mjs.map +1 -1
- package/fesm2022/taiga-ui-legacy-components-input-phone.mjs +2 -2
- package/fesm2022/taiga-ui-legacy-components-input-phone.mjs.map +1 -1
- package/fesm2022/taiga-ui-legacy-components-input-range.mjs +2 -2
- package/fesm2022/taiga-ui-legacy-components-input-range.mjs.map +1 -1
- package/fesm2022/taiga-ui-legacy-components-input-slider.mjs +2 -2
- package/fesm2022/taiga-ui-legacy-components-input-slider.mjs.map +1 -1
- package/fesm2022/taiga-ui-legacy-components-input-tag.mjs +4 -4
- package/fesm2022/taiga-ui-legacy-components-input-tag.mjs.map +1 -1
- package/fesm2022/taiga-ui-legacy-components-input-time.mjs +10 -10
- package/fesm2022/taiga-ui-legacy-components-input-time.mjs.map +1 -1
- package/fesm2022/taiga-ui-legacy-components-input-year.mjs +2 -2
- package/fesm2022/taiga-ui-legacy-components-input-year.mjs.map +1 -1
- package/fesm2022/taiga-ui-legacy-components-input.mjs +2 -2
- package/fesm2022/taiga-ui-legacy-components-input.mjs.map +1 -1
- package/fesm2022/taiga-ui-legacy-components-multi-select.mjs +5 -5
- package/fesm2022/taiga-ui-legacy-components-multi-select.mjs.map +1 -1
- package/fesm2022/taiga-ui-legacy-components-primitive-textfield.mjs +9 -9
- package/fesm2022/taiga-ui-legacy-components-primitive-textfield.mjs.map +1 -1
- package/fesm2022/taiga-ui-legacy-components-select-option.mjs +2 -2
- package/fesm2022/taiga-ui-legacy-components-select-option.mjs.map +1 -1
- package/fesm2022/taiga-ui-legacy-components-select.mjs +6 -6
- package/fesm2022/taiga-ui-legacy-components-select.mjs.map +1 -1
- package/fesm2022/taiga-ui-legacy-components-sheet.mjs +15 -14
- package/fesm2022/taiga-ui-legacy-components-sheet.mjs.map +1 -1
- package/fesm2022/taiga-ui-legacy-components-svg.mjs +3 -3
- package/fesm2022/taiga-ui-legacy-components-svg.mjs.map +1 -1
- package/fesm2022/taiga-ui-legacy-components-table-bar.mjs +2 -2
- package/fesm2022/taiga-ui-legacy-components-table-bar.mjs.map +1 -1
- package/fesm2022/taiga-ui-legacy-components-tag.mjs +2 -2
- package/fesm2022/taiga-ui-legacy-components-tag.mjs.map +1 -1
- package/fesm2022/taiga-ui-legacy-components-textarea.mjs +2 -2
- package/fesm2022/taiga-ui-legacy-components-textarea.mjs.map +1 -1
- package/fesm2022/taiga-ui-legacy-components-tooltip.mjs +2 -2
- package/fesm2022/taiga-ui-legacy-components-tooltip.mjs.map +1 -1
- package/package.json +318 -318
- package/styles/mixins/mixins.less +6 -6
- package/styles/mixins/textfield.less +10 -10
- package/styles/mixins/textfield.scss +1 -1
- package/utils/icons-path-factory.d.ts +1 -1
|
@@ -7,8 +7,8 @@ import * as i0 from "@angular/core";
|
|
|
7
7
|
* @deprecated: drop in v5.0
|
|
8
8
|
*/
|
|
9
9
|
export declare abstract class AbstractTuiNativeSelect<H = TuiTextfieldHost, T = string> {
|
|
10
|
-
private readonly idService;
|
|
11
10
|
protected readonly datalist: TemplateRef<any> | null;
|
|
11
|
+
protected readonly autoId: string;
|
|
12
12
|
protected readonly el: HTMLSelectElement;
|
|
13
13
|
protected readonly host: H;
|
|
14
14
|
protected readonly control: AbstractTuiControl<any>;
|
|
@@ -6,7 +6,7 @@ export declare class TuiColorEditComponent {
|
|
|
6
6
|
readonly colorChange: EventEmitter<[number, number, number, number]>;
|
|
7
7
|
readonly hexMask: MaskitoOptions;
|
|
8
8
|
readonly modes: string[];
|
|
9
|
-
mode: string;
|
|
9
|
+
mode: string | undefined;
|
|
10
10
|
get isHex(): boolean;
|
|
11
11
|
get hex(): string;
|
|
12
12
|
get opacity(): number;
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import type { AfterViewChecked } from '@angular/core';
|
|
2
1
|
import type { MaskitoOptions } from '@maskito/core';
|
|
3
2
|
import type { TuiDateMode, TuiDay, TuiDayLike } from '@taiga-ui/cdk/date-time';
|
|
4
3
|
import { TuiDayRange, TuiMonth } from '@taiga-ui/cdk/date-time';
|
|
@@ -11,9 +10,8 @@ import { AbstractTuiNullableControl } from '@taiga-ui/legacy/classes';
|
|
|
11
10
|
import type { TuiFocusableElementAccessor } from '@taiga-ui/legacy/tokens';
|
|
12
11
|
import type { PolymorpheusContent } from '@taiga-ui/polymorpheus';
|
|
13
12
|
import * as i0 from "@angular/core";
|
|
14
|
-
export declare class TuiInputDateRangeComponent extends AbstractTuiNullableControl<TuiDayRange> implements TuiFocusableElementAccessor
|
|
13
|
+
export declare class TuiInputDateRangeComponent extends AbstractTuiNullableControl<TuiDayRange> implements TuiFocusableElementAccessor {
|
|
15
14
|
private readonly textfield?;
|
|
16
|
-
private readonly calendarRange?;
|
|
17
15
|
private readonly isMobile;
|
|
18
16
|
private readonly mobileCalendar;
|
|
19
17
|
private readonly options;
|
|
@@ -38,7 +36,6 @@ export declare class TuiInputDateRangeComponent extends AbstractTuiNullableContr
|
|
|
38
36
|
get computedExampleText(): string;
|
|
39
37
|
get computedValue(): string;
|
|
40
38
|
onClick(): void;
|
|
41
|
-
ngAfterViewChecked(): void;
|
|
42
39
|
onValueChange(value: string): void;
|
|
43
40
|
onRangeChange(range: TuiDayRange | null): void;
|
|
44
41
|
writeValue(value: TuiDayRange | null): void;
|
|
@@ -2,7 +2,7 @@ import type { TuiInputTimeDirective } from '../input-time.directive';
|
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
export declare class TuiNativeTimeComponent {
|
|
4
4
|
protected readonly host: TuiInputTimeDirective;
|
|
5
|
-
protected readonly
|
|
5
|
+
protected readonly autoId: string;
|
|
6
6
|
protected get items(): string[];
|
|
7
7
|
protected get value(): string;
|
|
8
8
|
protected get step(): number;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { TuiTextfieldHost } from '@taiga-ui/legacy/tokens';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
3
|
export declare class TuiTextfieldComponent {
|
|
4
|
+
private readonly autoId;
|
|
4
5
|
private readonly el;
|
|
5
|
-
private readonly idService;
|
|
6
6
|
protected readonly controller: import("@taiga-ui/legacy/directives").TuiTextfieldController;
|
|
7
7
|
protected readonly host: TuiTextfieldHost;
|
|
8
8
|
constructor();
|
|
@@ -6,7 +6,7 @@ export declare class TuiSheetHeadingComponent implements AfterViewInit {
|
|
|
6
6
|
private readonly el;
|
|
7
7
|
protected readonly closeWord$: import("rxjs").Observable<string>;
|
|
8
8
|
protected readonly icons: import("@taiga-ui/core/tokens").TuiCommonIcons;
|
|
9
|
-
protected readonly
|
|
9
|
+
protected readonly autoId: string;
|
|
10
10
|
ngAfterViewInit(): void;
|
|
11
11
|
protected onClick(): void;
|
|
12
12
|
static ɵfac: i0.ɵɵFactoryDeclaration<TuiSheetHeadingComponent, never>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Directive, inject, Input, TemplateRef, ViewChild } from '@angular/core';
|
|
2
|
-
import {
|
|
2
|
+
import { tuiInjectId } from '@taiga-ui/cdk/services';
|
|
3
3
|
import { tuiInjectElement } from '@taiga-ui/cdk/utils/dom';
|
|
4
4
|
import { TuiDataListDirective } from '@taiga-ui/core/components/data-list';
|
|
5
5
|
import { TUI_ITEMS_HANDLERS } from '@taiga-ui/kit/tokens';
|
|
@@ -11,8 +11,8 @@ import * as i0 from "@angular/core";
|
|
|
11
11
|
*/
|
|
12
12
|
class AbstractTuiNativeSelect {
|
|
13
13
|
constructor() {
|
|
14
|
-
this.idService = inject(TuiIdService);
|
|
15
14
|
this.datalist = null;
|
|
15
|
+
this.autoId = tuiInjectId();
|
|
16
16
|
this.el = tuiInjectElement();
|
|
17
17
|
this.host = inject(TUI_TEXTFIELD_HOST);
|
|
18
18
|
this.control = inject(AbstractTuiControl);
|
|
@@ -21,7 +21,7 @@ class AbstractTuiNativeSelect {
|
|
|
21
21
|
this.placeholder = '';
|
|
22
22
|
}
|
|
23
23
|
get id() {
|
|
24
|
-
return this.el.id || this.
|
|
24
|
+
return this.el.id || this.autoId;
|
|
25
25
|
}
|
|
26
26
|
get emptyOption() {
|
|
27
27
|
return !!this.placeholder && !this.control.value;
|
|
@@ -45,4 +45,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
45
45
|
}], placeholder: [{
|
|
46
46
|
type: Input
|
|
47
47
|
}] } });
|
|
48
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3QtbmF0aXZlLXNlbGVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2xlZ2FjeS9jbGFzc2VzL2Fic3RyYWN0LW5hdGl2ZS1zZWxlY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBRW5ELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBRXhELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBRTNELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLFdBQVcsQ0FBQzs7QUFFN0M7O0dBRUc7QUFDSCxNQUtzQix1QkFBdUI7SUFMN0M7UUFPdUIsYUFBUSxHQUE0QixJQUFJLENBQUM7UUFFekMsV0FBTSxHQUFHLFdBQVcsRUFBRSxDQUFDO1FBQ3ZCLE9BQUUsR0FBRyxnQkFBZ0IsRUFBcUIsQ0FBQztRQUMzQyxTQUFJLEdBQUcsTUFBTSxDQUFJLGtCQUFrQixDQUFDLENBQUM7UUFDckMsWUFBTyxHQUFHLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3JDLGtCQUFhLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFHdkQsd0JBQW1CLEdBQWdDLElBQUksQ0FBQztRQUd4RCxnQkFBVyxHQUFHLEVBQUUsQ0FBQztLQVMzQjtJQVBHLElBQWMsRUFBRTtRQUNaLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQyxDQUFDO0lBRUQsSUFBYyxXQUFXO1FBQ3JCLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztJQUNyRCxDQUFDOytHQXRCaUIsdUJBQXVCO21HQUF2Qix1QkFBdUIsOExBQzlCLG9CQUFvQiwyQkFBUyxXQUFXOztTQURqQyx1QkFBdUI7NEZBQXZCLHVCQUF1QjtrQkFMNUMsU0FBUzttQkFBQztvQkFDUCxJQUFJLEVBQUU7d0JBQ0YsTUFBTSxFQUFFLElBQUk7cUJBQ2Y7aUJBQ0o7OEJBR3NCLFFBQVE7c0JBRDFCLFNBQVM7dUJBQUMsb0JBQW9CLEVBQUUsRUFBQyxJQUFJLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUM7Z0JBVTNELG1CQUFtQjtzQkFEekIsS0FBSztnQkFJQyxXQUFXO3NCQURqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaXJlY3RpdmUsIGluamVjdCwgSW5wdXQsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHt0dWlJbmplY3RJZH0gZnJvbSAnQHRhaWdhLXVpL2Nkay9zZXJ2aWNlcyc7XG5pbXBvcnQgdHlwZSB7VHVpQm9vbGVhbkhhbmRsZXJ9IGZyb20gJ0B0YWlnYS11aS9jZGsvdHlwZXMnO1xuaW1wb3J0IHt0dWlJbmplY3RFbGVtZW50fSBmcm9tICdAdGFpZ2EtdWkvY2RrL3V0aWxzL2RvbSc7XG5pbXBvcnQge1R1aURhdGFMaXN0RGlyZWN0aXZlfSBmcm9tICdAdGFpZ2EtdWkvY29yZS9jb21wb25lbnRzL2RhdGEtbGlzdCc7XG5pbXBvcnQge1RVSV9JVEVNU19IQU5ETEVSU30gZnJvbSAnQHRhaWdhLXVpL2tpdC90b2tlbnMnO1xuaW1wb3J0IHR5cGUge1R1aVRleHRmaWVsZEhvc3R9IGZyb20gJ0B0YWlnYS11aS9sZWdhY3kvdG9rZW5zJztcbmltcG9ydCB7VFVJX1RFWFRGSUVMRF9IT1NUfSBmcm9tICdAdGFpZ2EtdWkvbGVnYWN5L3Rva2Vucyc7XG5cbmltcG9ydCB7QWJzdHJhY3RUdWlDb250cm9sfSBmcm9tICcuL2NvbnRyb2wnO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkOiBkcm9wIGluIHY1LjBcbiAqL1xuQERpcmVjdGl2ZSh7XG4gICAgaG9zdDoge1xuICAgICAgICAnW2lkXSc6ICdpZCcsXG4gICAgfSxcbn0pXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RUdWlOYXRpdmVTZWxlY3Q8SCA9IFR1aVRleHRmaWVsZEhvc3QsIFQgPSBzdHJpbmc+IHtcbiAgICBAVmlld0NoaWxkKFR1aURhdGFMaXN0RGlyZWN0aXZlLCB7cmVhZDogVGVtcGxhdGVSZWYsIHN0YXRpYzogdHJ1ZX0pXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGRhdGFsaXN0OiBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCA9IG51bGw7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgYXV0b0lkID0gdHVpSW5qZWN0SWQoKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZWwgPSB0dWlJbmplY3RFbGVtZW50PEhUTUxTZWxlY3RFbGVtZW50PigpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBob3N0ID0gaW5qZWN0PEg+KFRVSV9URVhURklFTERfSE9TVCk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbnRyb2wgPSBpbmplY3QoQWJzdHJhY3RUdWlDb250cm9sKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaXRlbXNIYW5kbGVycyA9IGluamVjdChUVUlfSVRFTVNfSEFORExFUlMpO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZGlzYWJsZWRJdGVtSGFuZGxlcjogVHVpQm9vbGVhbkhhbmRsZXI8VD4gfCBudWxsID0gbnVsbDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHBsYWNlaG9sZGVyID0gJyc7XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IGlkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmVsLmlkIHx8IHRoaXMuYXV0b0lkO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgZW1wdHlPcHRpb24oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMucGxhY2Vob2xkZXIgJiYgIXRoaXMuY29udHJvbC52YWx1ZTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -45,12 +45,12 @@ class TuiColorEditComponent {
|
|
|
45
45
|
this.colorChange.emit(color);
|
|
46
46
|
}
|
|
47
47
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiColorEditComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
48
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiColorEditComponent, selector: "tui-color-edit", inputs: { color: "color" }, outputs: { colorChange: "colorChange" }, ngImport: i0, template: "<tui-select\n tuiDropdownAlign=\"left\"\n tuiDropdownLimitWidth=\"min\"\n tuiTextfieldSize=\"m\"\n class=\"t-select\"\n [ngModelOptions]=\"{standalone: true}\"\n [style.flex]=\"'0 0 auto'\"\n [tuiTextfieldLabelOutside]=\"true\"\n [(ngModel)]=\"mode\"\n>\n <tui-data-list\n *tuiDataList\n size=\"s\"\n >\n <button\n *ngFor=\"let item of modes\"\n tuiOption\n [value]=\"item\"\n >\n {{ item }}\n </button>\n </tui-data-list>\n</tui-select>\n<tui-primitive-textfield\n *ngIf=\"isHex; else rgb\"\n tuiTextfieldSize=\"m\"\n [maskito]=\"hexMask\"\n [tuiTextfieldLabelOutside]=\"true\"\n [value]=\"hex\"\n (valueChange)=\"onHexChange($event)\"\n/>\n<ng-template #rgb>\n <tui-input-number\n tuiTextfieldSize=\"m\"\n class=\"t-rgb\"\n [max]=\"255\"\n [min]=\"0\"\n [ngModel]=\"color[0]\"\n [ngModelOptions]=\"{standalone: true}\"\n [tuiTextfieldLabelOutside]=\"true\"\n (ngModelChange)=\"onRgbChange($event, color[1], color[2], color[3])\"\n />\n <tui-input-number\n tuiTextfieldSize=\"m\"\n class=\"t-rgb\"\n [max]=\"255\"\n [min]=\"0\"\n [ngModel]=\"color[1]\"\n [ngModelOptions]=\"{standalone: true}\"\n [tuiTextfieldLabelOutside]=\"true\"\n (ngModelChange)=\"onRgbChange(color[0], $event, color[2], color[3])\"\n />\n <tui-input-number\n tuiTextfieldSize=\"m\"\n class=\"t-rgb\"\n [max]=\"255\"\n [min]=\"0\"\n [ngModel]=\"color[2]\"\n [ngModelOptions]=\"{standalone: true}\"\n [tuiTextfieldLabelOutside]=\"true\"\n (ngModelChange)=\"onRgbChange(color[0], color[1], $event, color[3])\"\n />\n</ng-template>\n<tui-input-number\n tuiTextfieldPostfix=\"%\"\n tuiTextfieldSize=\"m\"\n class=\"t-opacity\"\n [max]=\"100\"\n [min]=\"0\"\n [ngModel]=\"opacity\"\n [ngModelOptions]=\"{standalone: true}\"\n [style.flex]=\"'0 0 auto'\"\n [tuiTextfieldLabelOutside]=\"true\"\n (ngModelChange)=\"onRgbChange(color[0], color[1], color[2], $event / 100)\"\n/>\n", styles: [":host{display:flex}.t-select{
|
|
48
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiColorEditComponent, selector: "tui-color-edit", inputs: { color: "color" }, outputs: { colorChange: "colorChange" }, ngImport: i0, template: "<tui-select\n tuiDropdownAlign=\"left\"\n tuiDropdownLimitWidth=\"min\"\n tuiTextfieldSize=\"m\"\n class=\"t-select\"\n [ngModelOptions]=\"{standalone: true}\"\n [style.flex]=\"'0 0 auto'\"\n [tuiTextfieldLabelOutside]=\"true\"\n [(ngModel)]=\"mode\"\n>\n <tui-data-list\n *tuiDataList\n size=\"s\"\n >\n <button\n *ngFor=\"let item of modes\"\n tuiOption\n [value]=\"item\"\n >\n {{ item }}\n </button>\n </tui-data-list>\n</tui-select>\n<tui-primitive-textfield\n *ngIf=\"isHex; else rgb\"\n tuiTextfieldSize=\"m\"\n [maskito]=\"hexMask\"\n [tuiTextfieldLabelOutside]=\"true\"\n [value]=\"hex\"\n (valueChange)=\"onHexChange($event)\"\n/>\n<ng-template #rgb>\n <tui-input-number\n tuiTextfieldSize=\"m\"\n class=\"t-rgb\"\n [max]=\"255\"\n [min]=\"0\"\n [ngModel]=\"color[0]\"\n [ngModelOptions]=\"{standalone: true}\"\n [tuiTextfieldLabelOutside]=\"true\"\n (ngModelChange)=\"onRgbChange($event, color[1], color[2], color[3])\"\n />\n <tui-input-number\n tuiTextfieldSize=\"m\"\n class=\"t-rgb\"\n [max]=\"255\"\n [min]=\"0\"\n [ngModel]=\"color[1]\"\n [ngModelOptions]=\"{standalone: true}\"\n [tuiTextfieldLabelOutside]=\"true\"\n (ngModelChange)=\"onRgbChange(color[0], $event, color[2], color[3])\"\n />\n <tui-input-number\n tuiTextfieldSize=\"m\"\n class=\"t-rgb\"\n [max]=\"255\"\n [min]=\"0\"\n [ngModel]=\"color[2]\"\n [ngModelOptions]=\"{standalone: true}\"\n [tuiTextfieldLabelOutside]=\"true\"\n (ngModelChange)=\"onRgbChange(color[0], color[1], $event, color[3])\"\n />\n</ng-template>\n<tui-input-number\n tuiTextfieldPostfix=\"%\"\n tuiTextfieldSize=\"m\"\n class=\"t-opacity\"\n [max]=\"100\"\n [min]=\"0\"\n [ngModel]=\"opacity\"\n [ngModelOptions]=\"{standalone: true}\"\n [style.flex]=\"'0 0 auto'\"\n [tuiTextfieldLabelOutside]=\"true\"\n (ngModelChange)=\"onRgbChange(color[0], color[1], color[2], $event / 100)\"\n/>\n", styles: [":host{display:flex}.t-select{inline-size:5.875rem}.t-opacity{inline-size:4.275rem}.t-rgb,.t-opacity{text-align:center}\n"], dependencies: [{ 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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i3.MaskitoDirective, selector: "[maskito]", inputs: ["maskito", "maskitoElement"] }, { kind: "component", type: i4.TuiPrimitiveTextfieldComponent, selector: "tui-primitive-textfield", inputs: ["editable", "iconCleaner", "readOnly", "invalid", "disabled", "value"], outputs: ["valueChange"] }, { kind: "directive", type: i4.TuiPrimitiveTextfieldDirective, selector: "tui-primitive-textfield" }, { kind: "directive", type: i5.TuiTextfieldLabelOutsideDirective, selector: "[tuiTextfieldLabelOutside]", inputs: ["tuiTextfieldLabelOutside"] }, { kind: "directive", type: i5.TuiTextfieldSizeDirective, selector: "[tuiTextfieldSize]", inputs: ["tuiTextfieldSize"] }, { kind: "directive", type: i5.TuiTextfieldPostfixDirective, selector: "[tuiTextfieldPostfix]", inputs: ["tuiTextfieldPostfix"] }, { kind: "component", type: i6.TuiInputNumberComponent, selector: "tui-input-number", inputs: ["min", "max", "step"] }, { kind: "directive", type: i6.TuiInputNumberDirective, selector: "tui-input-number" }, { kind: "component", type: i7.TuiSelectComponent, selector: "tui-select", inputs: ["stringify", "identityMatcher", "valueContent"] }, { kind: "directive", type: i7.TuiSelectDirective, selector: "tui-select" }, { kind: "directive", type: i8.TuiDropdownOptionsDirective, selector: "[tuiDropdownAlign], [tuiDropdownAppearance], [tuiDropdownDirection], [tuiDropdownLimitWidth], [tuiDropdownMinHeight], [tuiDropdownMaxHeight], [tuiDropdownOffset]", inputs: ["tuiDropdownAlign", "tuiDropdownAppearance", "tuiDropdownDirection", "tuiDropdownLimitWidth", "tuiDropdownMinHeight", "tuiDropdownMaxHeight", "tuiDropdownOffset"] }, { kind: "component", type: i9.TuiDataListComponent, selector: "tui-data-list", inputs: ["emptyContent", "size"] }, { kind: "directive", type: i9.TuiDataListDirective, selector: "ng-template[tuiDataList]" }, { kind: "component", type: i9.TuiOption, selector: "button[tuiOption], a[tuiOption], label[tuiOption]", inputs: ["disabled", "value"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
49
49
|
}
|
|
50
50
|
export { TuiColorEditComponent };
|
|
51
51
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiColorEditComponent, decorators: [{
|
|
52
52
|
type: Component,
|
|
53
|
-
args: [{ selector: 'tui-color-edit', changeDetection: ChangeDetectionStrategy.OnPush, template: "<tui-select\n tuiDropdownAlign=\"left\"\n tuiDropdownLimitWidth=\"min\"\n tuiTextfieldSize=\"m\"\n class=\"t-select\"\n [ngModelOptions]=\"{standalone: true}\"\n [style.flex]=\"'0 0 auto'\"\n [tuiTextfieldLabelOutside]=\"true\"\n [(ngModel)]=\"mode\"\n>\n <tui-data-list\n *tuiDataList\n size=\"s\"\n >\n <button\n *ngFor=\"let item of modes\"\n tuiOption\n [value]=\"item\"\n >\n {{ item }}\n </button>\n </tui-data-list>\n</tui-select>\n<tui-primitive-textfield\n *ngIf=\"isHex; else rgb\"\n tuiTextfieldSize=\"m\"\n [maskito]=\"hexMask\"\n [tuiTextfieldLabelOutside]=\"true\"\n [value]=\"hex\"\n (valueChange)=\"onHexChange($event)\"\n/>\n<ng-template #rgb>\n <tui-input-number\n tuiTextfieldSize=\"m\"\n class=\"t-rgb\"\n [max]=\"255\"\n [min]=\"0\"\n [ngModel]=\"color[0]\"\n [ngModelOptions]=\"{standalone: true}\"\n [tuiTextfieldLabelOutside]=\"true\"\n (ngModelChange)=\"onRgbChange($event, color[1], color[2], color[3])\"\n />\n <tui-input-number\n tuiTextfieldSize=\"m\"\n class=\"t-rgb\"\n [max]=\"255\"\n [min]=\"0\"\n [ngModel]=\"color[1]\"\n [ngModelOptions]=\"{standalone: true}\"\n [tuiTextfieldLabelOutside]=\"true\"\n (ngModelChange)=\"onRgbChange(color[0], $event, color[2], color[3])\"\n />\n <tui-input-number\n tuiTextfieldSize=\"m\"\n class=\"t-rgb\"\n [max]=\"255\"\n [min]=\"0\"\n [ngModel]=\"color[2]\"\n [ngModelOptions]=\"{standalone: true}\"\n [tuiTextfieldLabelOutside]=\"true\"\n (ngModelChange)=\"onRgbChange(color[0], color[1], $event, color[3])\"\n />\n</ng-template>\n<tui-input-number\n tuiTextfieldPostfix=\"%\"\n tuiTextfieldSize=\"m\"\n class=\"t-opacity\"\n [max]=\"100\"\n [min]=\"0\"\n [ngModel]=\"opacity\"\n [ngModelOptions]=\"{standalone: true}\"\n [style.flex]=\"'0 0 auto'\"\n [tuiTextfieldLabelOutside]=\"true\"\n (ngModelChange)=\"onRgbChange(color[0], color[1], color[2], $event / 100)\"\n/>\n", styles: [":host{display:flex}.t-select{
|
|
53
|
+
args: [{ selector: 'tui-color-edit', changeDetection: ChangeDetectionStrategy.OnPush, template: "<tui-select\n tuiDropdownAlign=\"left\"\n tuiDropdownLimitWidth=\"min\"\n tuiTextfieldSize=\"m\"\n class=\"t-select\"\n [ngModelOptions]=\"{standalone: true}\"\n [style.flex]=\"'0 0 auto'\"\n [tuiTextfieldLabelOutside]=\"true\"\n [(ngModel)]=\"mode\"\n>\n <tui-data-list\n *tuiDataList\n size=\"s\"\n >\n <button\n *ngFor=\"let item of modes\"\n tuiOption\n [value]=\"item\"\n >\n {{ item }}\n </button>\n </tui-data-list>\n</tui-select>\n<tui-primitive-textfield\n *ngIf=\"isHex; else rgb\"\n tuiTextfieldSize=\"m\"\n [maskito]=\"hexMask\"\n [tuiTextfieldLabelOutside]=\"true\"\n [value]=\"hex\"\n (valueChange)=\"onHexChange($event)\"\n/>\n<ng-template #rgb>\n <tui-input-number\n tuiTextfieldSize=\"m\"\n class=\"t-rgb\"\n [max]=\"255\"\n [min]=\"0\"\n [ngModel]=\"color[0]\"\n [ngModelOptions]=\"{standalone: true}\"\n [tuiTextfieldLabelOutside]=\"true\"\n (ngModelChange)=\"onRgbChange($event, color[1], color[2], color[3])\"\n />\n <tui-input-number\n tuiTextfieldSize=\"m\"\n class=\"t-rgb\"\n [max]=\"255\"\n [min]=\"0\"\n [ngModel]=\"color[1]\"\n [ngModelOptions]=\"{standalone: true}\"\n [tuiTextfieldLabelOutside]=\"true\"\n (ngModelChange)=\"onRgbChange(color[0], $event, color[2], color[3])\"\n />\n <tui-input-number\n tuiTextfieldSize=\"m\"\n class=\"t-rgb\"\n [max]=\"255\"\n [min]=\"0\"\n [ngModel]=\"color[2]\"\n [ngModelOptions]=\"{standalone: true}\"\n [tuiTextfieldLabelOutside]=\"true\"\n (ngModelChange)=\"onRgbChange(color[0], color[1], $event, color[3])\"\n />\n</ng-template>\n<tui-input-number\n tuiTextfieldPostfix=\"%\"\n tuiTextfieldSize=\"m\"\n class=\"t-opacity\"\n [max]=\"100\"\n [min]=\"0\"\n [ngModel]=\"opacity\"\n [ngModelOptions]=\"{standalone: true}\"\n [style.flex]=\"'0 0 auto'\"\n [tuiTextfieldLabelOutside]=\"true\"\n (ngModelChange)=\"onRgbChange(color[0], color[1], color[2], $event / 100)\"\n/>\n", styles: [":host{display:flex}.t-select{inline-size:5.875rem}.t-opacity{inline-size:4.275rem}.t-rgb,.t-opacity{text-align:center}\n"] }]
|
|
54
54
|
}], propDecorators: { color: [{
|
|
55
55
|
type: Input
|
|
56
56
|
}], colorChange: [{
|
|
@@ -53,7 +53,7 @@ class TuiColorPickerComponent {
|
|
|
53
53
|
this.colorChange.emit([...this.currentColor, this.opacity]);
|
|
54
54
|
}
|
|
55
55
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiColorPickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
56
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiColorPickerComponent, selector: "tui-color-picker", inputs: { color: "color" }, outputs: { colorChange: "colorChange" }, ngImport: i0, template: "<tui-flat-picker\n class=\"t-flat\"\n [style.backgroundColor]=\"base\"\n [value]=\"point\"\n (valueChange)=\"onPointChange($event)\"\n/>\n<div class=\"t-wrapper t-wrapper_hue\">\n <tui-linear-picker\n class=\"t-hue\"\n [value]=\"hue\"\n (valueChange)=\"onHueChange($event)\"\n />\n</div>\n<div\n class=\"t-wrapper t-wrapper_opacity\"\n [style.background]=\"gradient\"\n>\n <tui-linear-picker\n class=\"t-opacity\"\n [value]=\"opacity\"\n (valueChange)=\"onOpacityChange($event)\"\n />\n</div>\n", styles: [":host{position:relative;display:block;isolation:isolate}.t-flat{
|
|
56
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiColorPickerComponent, selector: "tui-color-picker", inputs: { color: "color" }, outputs: { colorChange: "colorChange" }, ngImport: i0, template: "<tui-flat-picker\n class=\"t-flat\"\n [style.backgroundColor]=\"base\"\n [value]=\"point\"\n (valueChange)=\"onPointChange($event)\"\n/>\n<div class=\"t-wrapper t-wrapper_hue\">\n <tui-linear-picker\n class=\"t-hue\"\n [value]=\"hue\"\n (valueChange)=\"onHueChange($event)\"\n />\n</div>\n<div\n class=\"t-wrapper t-wrapper_opacity\"\n [style.background]=\"gradient\"\n>\n <tui-linear-picker\n class=\"t-opacity\"\n [value]=\"opacity\"\n (valueChange)=\"onOpacityChange($event)\"\n />\n</div>\n", styles: [":host{position:relative;display:block;isolation:isolate}.t-flat{block-size:14rem;background:linear-gradient(#0000,#000),linear-gradient(to right,#fff,#fff0);margin-bottom:.25rem;overflow:hidden}.t-wrapper{position:relative;margin:1rem 1.25rem;border-radius:.5rem}.t-wrapper:after{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;content:\"\";box-shadow:inset 0 0 0 1px #00000014;pointer-events:none;border-radius:inherit}.t-wrapper_hue{background:red}.t-wrapper_opacity:before{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;content:\"\";z-index:-1;background-image:linear-gradient(45deg,var(--tui-base-03) 25%,transparent 25%,transparent 75%,var(--tui-base-03) 75%,var(--tui-base-03)),linear-gradient(45deg,var(--tui-base-03) 25%,transparent 25%,transparent 75%,var(--tui-base-03) 75%,var(--tui-base-03));background-size:.375rem .375rem;background-position:0 0,.1875rem .1875rem;border-radius:inherit}.t-hue{background:linear-gradient(to right,red,#ff0,#0f0,#0ff,#00f,#f0f,red);border-radius:inherit;margin:0 .5rem}.t-opacity{border-radius:inherit;margin:0 .5rem}\n"], dependencies: [{ kind: "component", type: i1.TuiFlatPickerComponent, selector: "tui-flat-picker", inputs: ["value"], outputs: ["valueChange"] }, { kind: "component", type: i2.TuiLinearPickerComponent, selector: "tui-linear-picker", inputs: ["value"], outputs: ["valueChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
57
57
|
}
|
|
58
58
|
__decorate([
|
|
59
59
|
tuiPure
|
|
@@ -61,7 +61,7 @@ __decorate([
|
|
|
61
61
|
export { TuiColorPickerComponent };
|
|
62
62
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiColorPickerComponent, decorators: [{
|
|
63
63
|
type: Component,
|
|
64
|
-
args: [{ selector: 'tui-color-picker', changeDetection: ChangeDetectionStrategy.OnPush, template: "<tui-flat-picker\n class=\"t-flat\"\n [style.backgroundColor]=\"base\"\n [value]=\"point\"\n (valueChange)=\"onPointChange($event)\"\n/>\n<div class=\"t-wrapper t-wrapper_hue\">\n <tui-linear-picker\n class=\"t-hue\"\n [value]=\"hue\"\n (valueChange)=\"onHueChange($event)\"\n />\n</div>\n<div\n class=\"t-wrapper t-wrapper_opacity\"\n [style.background]=\"gradient\"\n>\n <tui-linear-picker\n class=\"t-opacity\"\n [value]=\"opacity\"\n (valueChange)=\"onOpacityChange($event)\"\n />\n</div>\n", styles: [":host{position:relative;display:block;isolation:isolate}.t-flat{
|
|
64
|
+
args: [{ selector: 'tui-color-picker', changeDetection: ChangeDetectionStrategy.OnPush, template: "<tui-flat-picker\n class=\"t-flat\"\n [style.backgroundColor]=\"base\"\n [value]=\"point\"\n (valueChange)=\"onPointChange($event)\"\n/>\n<div class=\"t-wrapper t-wrapper_hue\">\n <tui-linear-picker\n class=\"t-hue\"\n [value]=\"hue\"\n (valueChange)=\"onHueChange($event)\"\n />\n</div>\n<div\n class=\"t-wrapper t-wrapper_opacity\"\n [style.background]=\"gradient\"\n>\n <tui-linear-picker\n class=\"t-opacity\"\n [value]=\"opacity\"\n (valueChange)=\"onOpacityChange($event)\"\n />\n</div>\n", styles: [":host{position:relative;display:block;isolation:isolate}.t-flat{block-size:14rem;background:linear-gradient(#0000,#000),linear-gradient(to right,#fff,#fff0);margin-bottom:.25rem;overflow:hidden}.t-wrapper{position:relative;margin:1rem 1.25rem;border-radius:.5rem}.t-wrapper:after{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;content:\"\";box-shadow:inset 0 0 0 1px #00000014;pointer-events:none;border-radius:inherit}.t-wrapper_hue{background:red}.t-wrapper_opacity:before{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;content:\"\";z-index:-1;background-image:linear-gradient(45deg,var(--tui-base-03) 25%,transparent 25%,transparent 75%,var(--tui-base-03) 75%,var(--tui-base-03)),linear-gradient(45deg,var(--tui-base-03) 25%,transparent 25%,transparent 75%,var(--tui-base-03) 75%,var(--tui-base-03));background-size:.375rem .375rem;background-position:0 0,.1875rem .1875rem;border-radius:inherit}.t-hue{background:linear-gradient(to right,red,#ff0,#0f0,#0ff,#00f,#f0f,red);border-radius:inherit;margin:0 .5rem}.t-opacity{border-radius:inherit;margin:0 .5rem}\n"] }]
|
|
65
65
|
}], propDecorators: { colorChange: [{
|
|
66
66
|
type: Output
|
|
67
67
|
}], color: [{
|
|
@@ -82,7 +82,7 @@ class TuiColorSelectorComponent {
|
|
|
82
82
|
: this.getGradient(this.direction));
|
|
83
83
|
}
|
|
84
84
|
onIndexChange(index) {
|
|
85
|
-
this.currentStop = this.stopsKeys[index];
|
|
85
|
+
this.currentStop = this.stopsKeys[index] ?? 0;
|
|
86
86
|
}
|
|
87
87
|
onColorChange(color) {
|
|
88
88
|
if (!this.isGradient) {
|
|
@@ -132,7 +132,7 @@ class TuiColorSelectorComponent {
|
|
|
132
132
|
return this.stops.get(stop) || this.selectorOptions.gradient.emptyStop;
|
|
133
133
|
}
|
|
134
134
|
addStop(stop) {
|
|
135
|
-
const closest = this.stopsKeys.reduce((prev, curr) => (Math.abs(curr - stop) < Math.abs(prev - stop) ? curr : prev), this.stopsKeys[0]);
|
|
135
|
+
const closest = this.stopsKeys.reduce((prev, curr) => (Math.abs(curr - stop) < Math.abs(prev - stop) ? curr : prev), this.stopsKeys[0] ?? 0);
|
|
136
136
|
this.stops.set(stop, this.getStop(closest));
|
|
137
137
|
this.stops = new Map(this.stops);
|
|
138
138
|
this.currentStop = stop;
|
|
@@ -140,7 +140,7 @@ class TuiColorSelectorComponent {
|
|
|
140
140
|
removeStop(stop) {
|
|
141
141
|
this.stops.delete(stop);
|
|
142
142
|
this.stops = new Map(this.stops);
|
|
143
|
-
this.currentStop = this.stopsKeys[0];
|
|
143
|
+
this.currentStop = this.stopsKeys[0] ?? 0;
|
|
144
144
|
}
|
|
145
145
|
replaceStop(removed, added) {
|
|
146
146
|
const value = this.getStop(removed);
|
|
@@ -166,7 +166,7 @@ class TuiColorSelectorComponent {
|
|
|
166
166
|
this.color = tuiParseColor(color);
|
|
167
167
|
}
|
|
168
168
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiColorSelectorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
169
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiColorSelectorComponent, selector: "tui-color-selector", inputs: { colors: "colors", colorSetter: ["color", "colorSetter"] }, outputs: { colorChange: "colorChange" }, ngImport: i0, template: "<ng-container *ngIf=\"selectorMode\">\n <div\n class=\"t-select\"\n [tuiDropdown]=\"menu\"\n [(tuiDropdownOpen)]=\"open\"\n >\n <button\n appearance=\"\"\n size=\"s\"\n tuiButton\n tuiChevron\n type=\"button\"\n >\n {{ currentMode }}\n </button>\n\n <ng-template #menu>\n <tui-data-list\n role=\"menu\"\n size=\"s\"\n class=\"t-menu\"\n >\n <button\n *ngFor=\"let mode of modes\"\n role=\"menuitemradio\"\n tuiOption\n [attr.aria-checked]=\"isModeActive(mode)\"\n (click)=\"onModeSelect(mode)\"\n (keydown.enter.prevent)=\"onModeSelect(mode)\"\n (keydown.space.prevent)=\"onModeSelect(mode)\"\n >\n {{ mode }}\n <tui-icon\n *ngIf=\"isModeActive(mode)\"\n icon=\"@tui.check\"\n class=\"t-checkmark\"\n />\n </button>\n </tui-data-list>\n </ng-template>\n </div>\n <hr class=\"t-hr\" />\n</ng-container>\n\n<ng-container *ngIf=\"isGradient\">\n <div\n class=\"t-wrapper\"\n [style.background]=\"gradient\"\n >\n <tui-linear-multi-picker\n class=\"t-gradient\"\n [value]=\"stopsKeys\"\n (indexChange)=\"onIndexChange($event)\"\n (valueChange)=\"onStopsChange($event)\"\n />\n </div>\n <div class=\"t-buttons\">\n <!-- TODO: Change to `tuiHintDescribe` when figure tuiDriver order issue -->\n <button\n *ngFor=\"let button of buttons\"\n appearance=\"\"\n size=\"xs\"\n tuiHintDescribe\n tuiIconButton\n type=\"button\"\n class=\"t-direction\"\n [class.t-direction_active]=\"isDirectionActive(button)\"\n [iconStart]=\"getIcon(button)\"\n [tuiHint]=\"button\"\n (click)=\"onDirectionChange(button)\"\n ></button>\n </div>\n</ng-container>\n<tui-color-picker\n [color]=\"currentColor\"\n (colorChange)=\"onColorChange($event)\"\n/>\n<tui-color-edit\n *ngIf=\"!isGradient\"\n tuiGroup\n class=\"t-edit\"\n [color]=\"color\"\n (colorChange)=\"onColorChange($event)\"\n/>\n<tui-palette\n *ngIf=\"palette.size\"\n class=\"t-palette\"\n [colors]=\"palette\"\n (selectedColor)=\"onPalettePick($event)\"\n/>\n", styles: [":host{position:relative;display:block;isolation:isolate;
|
|
169
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiColorSelectorComponent, selector: "tui-color-selector", inputs: { colors: "colors", colorSetter: ["color", "colorSetter"] }, outputs: { colorChange: "colorChange" }, ngImport: i0, template: "<ng-container *ngIf=\"selectorMode\">\n <div\n class=\"t-select\"\n [tuiDropdown]=\"menu\"\n [(tuiDropdownOpen)]=\"open\"\n >\n <button\n appearance=\"\"\n size=\"s\"\n tuiButton\n tuiChevron\n type=\"button\"\n >\n {{ currentMode }}\n </button>\n\n <ng-template #menu>\n <tui-data-list\n role=\"menu\"\n size=\"s\"\n class=\"t-menu\"\n >\n <button\n *ngFor=\"let mode of modes\"\n role=\"menuitemradio\"\n tuiOption\n [attr.aria-checked]=\"isModeActive(mode)\"\n (click)=\"onModeSelect(mode)\"\n (keydown.enter.prevent)=\"onModeSelect(mode)\"\n (keydown.space.prevent)=\"onModeSelect(mode)\"\n >\n {{ mode }}\n <tui-icon\n *ngIf=\"isModeActive(mode)\"\n icon=\"@tui.check\"\n class=\"t-checkmark\"\n />\n </button>\n </tui-data-list>\n </ng-template>\n </div>\n <hr class=\"t-hr\" />\n</ng-container>\n\n<ng-container *ngIf=\"isGradient\">\n <div\n class=\"t-wrapper\"\n [style.background]=\"gradient\"\n >\n <tui-linear-multi-picker\n class=\"t-gradient\"\n [value]=\"stopsKeys\"\n (indexChange)=\"onIndexChange($event)\"\n (valueChange)=\"onStopsChange($event)\"\n />\n </div>\n <div class=\"t-buttons\">\n <!-- TODO: Change to `tuiHintDescribe` when figure tuiDriver order issue -->\n <button\n *ngFor=\"let button of buttons\"\n appearance=\"\"\n size=\"xs\"\n tuiHintDescribe\n tuiIconButton\n type=\"button\"\n class=\"t-direction\"\n [class.t-direction_active]=\"isDirectionActive(button)\"\n [iconStart]=\"getIcon(button)\"\n [tuiHint]=\"button\"\n (click)=\"onDirectionChange(button)\"\n ></button>\n </div>\n</ng-container>\n<tui-color-picker\n [color]=\"currentColor\"\n (colorChange)=\"onColorChange($event)\"\n/>\n<tui-color-edit\n *ngIf=\"!isGradient\"\n tuiGroup\n class=\"t-edit\"\n [color]=\"color\"\n (colorChange)=\"onColorChange($event)\"\n/>\n<tui-palette\n *ngIf=\"palette.size\"\n class=\"t-palette\"\n [colors]=\"palette\"\n (selectedColor)=\"onPalettePick($event)\"\n/>\n", styles: [":host{position:relative;display:block;isolation:isolate;inline-size:22.6rem}.t-wrapper{position:relative;margin:1.25rem;border-radius:.5rem}.t-wrapper:after{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;content:\"\";box-shadow:inset 0 0 0 1px #00000014;pointer-events:none;border-radius:inherit}.t-wrapper:before{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;content:\"\";z-index:-1;background-image:linear-gradient(45deg,var(--tui-base-03) 25%,transparent 25%,transparent 75%,var(--tui-base-03) 75%,var(--tui-base-03)),linear-gradient(45deg,var(--tui-base-03) 25%,transparent 25%,transparent 75%,var(--tui-base-03) 75%,var(--tui-base-03));background-size:.375rem .375rem;background-position:0 0,.1875rem .1875rem;border-radius:inherit}.t-hr{block-size:1px;margin:0 0 0 -1px;border:none;background:var(--tui-base-03)}.t-gradient{margin:0 .5rem;border-radius:inherit}.t-select{margin:.75rem .5rem 0}.t-arrow{transition-property:transform;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out}.t-arrow_rotated{transform:rotate(180deg)}.t-menu{inline-size:11.25rem}.t-checkmark{margin-left:auto;inline-size:1rem;block-size:1rem}.t-buttons{display:flex;padding:0 .75rem 1.25rem;justify-content:space-between}.t-direction{color:var(--tui-text-02);margin:0 .375rem}.t-direction:hover,.t-direction_active{color:var(--tui-text-01);background:var(--tui-secondary-hover)}.t-edit{margin:1.25rem}.t-palette{box-sizing:border-box;box-shadow:inset 0 1px var(--tui-base-03)}\n"], dependencies: [{ 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: i2.TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "component", type: i3.TuiColorPickerComponent, selector: "tui-color-picker", inputs: ["color"], outputs: ["colorChange"] }, { kind: "component", type: i4.TuiLinearMultiPickerComponent, selector: "tui-linear-multi-picker", inputs: ["value"], outputs: ["valueChange", "indexChange"] }, { kind: "component", type: i5.TuiColorEditComponent, selector: "tui-color-edit", inputs: ["color"], outputs: ["colorChange"] }, { kind: "directive", type: i6.TuiDropdownDirective, selector: "[tuiDropdown]:not(ng-container):not(ng-template)", inputs: ["tuiDropdown"], exportAs: ["tuiDropdown"] }, { kind: "directive", type: i6.TuiDropdownOpen, selector: "[tuiDropdown][tuiDropdownOpen],[tuiDropdown][tuiDropdownOpenChange]", inputs: ["tuiDropdownEnabled", "tuiDropdownOpen"], outputs: ["tuiDropdownOpenChange"] }, { kind: "component", type: i7.TuiDataListComponent, selector: "tui-data-list", inputs: ["emptyContent", "size"] }, { kind: "component", type: i7.TuiOption, selector: "button[tuiOption], a[tuiOption], label[tuiOption]", inputs: ["disabled", "value"] }, { kind: "directive", type: i8.TuiGroup, selector: "[tuiGroup]:not(ng-container)", inputs: ["orientation", "collapsed", "rounded", "size"] }, { kind: "component", type: i9.TuiPaletteComponent, selector: "tui-palette", inputs: ["colors"], outputs: ["selectedColor"] }, { kind: "directive", type: i10.TuiHintDirective, selector: "[tuiHint]:not(ng-container):not(ng-template)", inputs: ["tuiHintContext", "tuiHintAppearance", "tuiHint"] }, { kind: "directive", type: i10.TuiHintDescribe, selector: "[tuiHintDescribe]", inputs: ["tuiHintDescribe"] }, { kind: "directive", type: i11.TuiChevron, selector: "[tuiChevron]", inputs: ["tuiChevron"] }, { kind: "component", type: i12.TuiIcon, selector: "tui-icon", inputs: ["icon", "background"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
170
170
|
}
|
|
171
171
|
__decorate([
|
|
172
172
|
tuiPure
|
|
@@ -177,7 +177,7 @@ __decorate([
|
|
|
177
177
|
export { TuiColorSelectorComponent };
|
|
178
178
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiColorSelectorComponent, decorators: [{
|
|
179
179
|
type: Component,
|
|
180
|
-
args: [{ selector: 'tui-color-selector', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"selectorMode\">\n <div\n class=\"t-select\"\n [tuiDropdown]=\"menu\"\n [(tuiDropdownOpen)]=\"open\"\n >\n <button\n appearance=\"\"\n size=\"s\"\n tuiButton\n tuiChevron\n type=\"button\"\n >\n {{ currentMode }}\n </button>\n\n <ng-template #menu>\n <tui-data-list\n role=\"menu\"\n size=\"s\"\n class=\"t-menu\"\n >\n <button\n *ngFor=\"let mode of modes\"\n role=\"menuitemradio\"\n tuiOption\n [attr.aria-checked]=\"isModeActive(mode)\"\n (click)=\"onModeSelect(mode)\"\n (keydown.enter.prevent)=\"onModeSelect(mode)\"\n (keydown.space.prevent)=\"onModeSelect(mode)\"\n >\n {{ mode }}\n <tui-icon\n *ngIf=\"isModeActive(mode)\"\n icon=\"@tui.check\"\n class=\"t-checkmark\"\n />\n </button>\n </tui-data-list>\n </ng-template>\n </div>\n <hr class=\"t-hr\" />\n</ng-container>\n\n<ng-container *ngIf=\"isGradient\">\n <div\n class=\"t-wrapper\"\n [style.background]=\"gradient\"\n >\n <tui-linear-multi-picker\n class=\"t-gradient\"\n [value]=\"stopsKeys\"\n (indexChange)=\"onIndexChange($event)\"\n (valueChange)=\"onStopsChange($event)\"\n />\n </div>\n <div class=\"t-buttons\">\n <!-- TODO: Change to `tuiHintDescribe` when figure tuiDriver order issue -->\n <button\n *ngFor=\"let button of buttons\"\n appearance=\"\"\n size=\"xs\"\n tuiHintDescribe\n tuiIconButton\n type=\"button\"\n class=\"t-direction\"\n [class.t-direction_active]=\"isDirectionActive(button)\"\n [iconStart]=\"getIcon(button)\"\n [tuiHint]=\"button\"\n (click)=\"onDirectionChange(button)\"\n ></button>\n </div>\n</ng-container>\n<tui-color-picker\n [color]=\"currentColor\"\n (colorChange)=\"onColorChange($event)\"\n/>\n<tui-color-edit\n *ngIf=\"!isGradient\"\n tuiGroup\n class=\"t-edit\"\n [color]=\"color\"\n (colorChange)=\"onColorChange($event)\"\n/>\n<tui-palette\n *ngIf=\"palette.size\"\n class=\"t-palette\"\n [colors]=\"palette\"\n (selectedColor)=\"onPalettePick($event)\"\n/>\n", styles: [":host{position:relative;display:block;isolation:isolate;
|
|
180
|
+
args: [{ selector: 'tui-color-selector', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"selectorMode\">\n <div\n class=\"t-select\"\n [tuiDropdown]=\"menu\"\n [(tuiDropdownOpen)]=\"open\"\n >\n <button\n appearance=\"\"\n size=\"s\"\n tuiButton\n tuiChevron\n type=\"button\"\n >\n {{ currentMode }}\n </button>\n\n <ng-template #menu>\n <tui-data-list\n role=\"menu\"\n size=\"s\"\n class=\"t-menu\"\n >\n <button\n *ngFor=\"let mode of modes\"\n role=\"menuitemradio\"\n tuiOption\n [attr.aria-checked]=\"isModeActive(mode)\"\n (click)=\"onModeSelect(mode)\"\n (keydown.enter.prevent)=\"onModeSelect(mode)\"\n (keydown.space.prevent)=\"onModeSelect(mode)\"\n >\n {{ mode }}\n <tui-icon\n *ngIf=\"isModeActive(mode)\"\n icon=\"@tui.check\"\n class=\"t-checkmark\"\n />\n </button>\n </tui-data-list>\n </ng-template>\n </div>\n <hr class=\"t-hr\" />\n</ng-container>\n\n<ng-container *ngIf=\"isGradient\">\n <div\n class=\"t-wrapper\"\n [style.background]=\"gradient\"\n >\n <tui-linear-multi-picker\n class=\"t-gradient\"\n [value]=\"stopsKeys\"\n (indexChange)=\"onIndexChange($event)\"\n (valueChange)=\"onStopsChange($event)\"\n />\n </div>\n <div class=\"t-buttons\">\n <!-- TODO: Change to `tuiHintDescribe` when figure tuiDriver order issue -->\n <button\n *ngFor=\"let button of buttons\"\n appearance=\"\"\n size=\"xs\"\n tuiHintDescribe\n tuiIconButton\n type=\"button\"\n class=\"t-direction\"\n [class.t-direction_active]=\"isDirectionActive(button)\"\n [iconStart]=\"getIcon(button)\"\n [tuiHint]=\"button\"\n (click)=\"onDirectionChange(button)\"\n ></button>\n </div>\n</ng-container>\n<tui-color-picker\n [color]=\"currentColor\"\n (colorChange)=\"onColorChange($event)\"\n/>\n<tui-color-edit\n *ngIf=\"!isGradient\"\n tuiGroup\n class=\"t-edit\"\n [color]=\"color\"\n (colorChange)=\"onColorChange($event)\"\n/>\n<tui-palette\n *ngIf=\"palette.size\"\n class=\"t-palette\"\n [colors]=\"palette\"\n (selectedColor)=\"onPalettePick($event)\"\n/>\n", styles: [":host{position:relative;display:block;isolation:isolate;inline-size:22.6rem}.t-wrapper{position:relative;margin:1.25rem;border-radius:.5rem}.t-wrapper:after{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;content:\"\";box-shadow:inset 0 0 0 1px #00000014;pointer-events:none;border-radius:inherit}.t-wrapper:before{position:absolute;top:0;left:0;inline-size:100%;block-size:100%;content:\"\";z-index:-1;background-image:linear-gradient(45deg,var(--tui-base-03) 25%,transparent 25%,transparent 75%,var(--tui-base-03) 75%,var(--tui-base-03)),linear-gradient(45deg,var(--tui-base-03) 25%,transparent 25%,transparent 75%,var(--tui-base-03) 75%,var(--tui-base-03));background-size:.375rem .375rem;background-position:0 0,.1875rem .1875rem;border-radius:inherit}.t-hr{block-size:1px;margin:0 0 0 -1px;border:none;background:var(--tui-base-03)}.t-gradient{margin:0 .5rem;border-radius:inherit}.t-select{margin:.75rem .5rem 0}.t-arrow{transition-property:transform;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out}.t-arrow_rotated{transform:rotate(180deg)}.t-menu{inline-size:11.25rem}.t-checkmark{margin-left:auto;inline-size:1rem;block-size:1rem}.t-buttons{display:flex;padding:0 .75rem 1.25rem;justify-content:space-between}.t-direction{color:var(--tui-text-02);margin:0 .375rem}.t-direction:hover,.t-direction_active{color:var(--tui-text-01);background:var(--tui-secondary-hover)}.t-edit{margin:1.25rem}.t-palette{box-sizing:border-box;box-shadow:inset 0 1px var(--tui-base-03)}\n"] }]
|
|
181
181
|
}], propDecorators: { colors: [{
|
|
182
182
|
type: Input
|
|
183
183
|
}], colorChange: [{
|
|
@@ -186,4 +186,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
186
186
|
type: Input,
|
|
187
187
|
args: ['color']
|
|
188
188
|
}], getStopsKeys: [], filterPalette: [] } });
|
|
189
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3Itc2VsZWN0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbGVnYWN5L2NvbXBvbmVudHMvY29sb3Itc2VsZWN0b3IvY29sb3Itc2VsZWN0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbGVnYWN5L2NvbXBvbmVudHMvY29sb3Itc2VsZWN0b3IvY29sb3Itc2VsZWN0b3IudGVtcGxhdGUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxHQUNULE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUV2RCxPQUFPLEVBQ0gsa0JBQWtCLEVBQ2xCLGFBQWEsRUFDYixnQkFBZ0IsR0FDbkIsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQUMsY0FBYyxFQUFFLE9BQU8sRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBRTFFLE9BQU8sRUFDSCw2QkFBNkIsRUFDN0IsMEJBQTBCLEVBQzFCLG9CQUFvQixHQUN2QixNQUFNLDBCQUEwQixDQUFDOzs7Ozs7Ozs7Ozs7OztBQUVsQyxNQU1hLHlCQUF5QjtJQU50QztRQU9xQixvQkFBZSxHQUFHLE1BQU0sQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBQzlELFVBQUssR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyRCxnQkFBVyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztRQUNqRCxjQUFTLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDO1FBRTNDLGNBQVMsR0FBRyxNQUFNLENB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RSxFQUFFLENBQUM7Z0JBQ25CLFVBQVUsQ0FBQyxRQUFRLENBQUMsR0FBRyxHQUFHO2dCQUMxQixhQUFhLENBQUMsS0FBSyxDQUFDO2FBQ3ZCLENBQ0o7WUFDSCxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUM1QyxDQUFDO0lBQ04sQ0FBQztJQUVPLFVBQVUsQ0FBQyxLQUFhO1FBQzVCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQ3RELElBQUksQ0FBQyxLQUFLLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLENBQUM7K0dBck5RLHlCQUF5QjttR0FBekIseUJBQXlCLHdLQzlCdEMscW5GQTBGQTs7QUQrRFk7SUFEUCxPQUFPOzZEQUdQO0FBR087SUFEUCxPQUFPOzhEQWlCUDtTQWhKUSx5QkFBeUI7NEZBQXpCLHlCQUF5QjtrQkFOckMsU0FBUzsrQkFDSSxvQkFBb0IsbUJBR2IsdUJBQXVCLENBQUMsTUFBTTs4QkFZeEMsTUFBTTtzQkFEWixLQUFLO2dCQUlVLFdBQVc7c0JBRDFCLE1BQU07Z0JBWUksV0FBVztzQkFEckIsS0FBSzt1QkFBQyxPQUFPO2dCQW9HTixZQUFZLE1BS1osYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBpbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB0eXBlIHtTYWZlU3R5bGV9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHtEb21TYW5pdGl6ZXJ9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHR5cGUge1R1aUdyYWRpZW50RGlyZWN0aW9ufSBmcm9tICdAdGFpZ2EtdWkvY2RrL3V0aWxzL2NvbG9yJztcbmltcG9ydCB7XG4gICAgdHVpR2V0R3JhZGllbnREYXRhLFxuICAgIHR1aVBhcnNlQ29sb3IsXG4gICAgdHVpUGFyc2VHcmFkaWVudCxcbn0gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9jb2xvcic7XG5pbXBvcnQge3R1aURlZmF1bHRTb3J0LCB0dWlQdXJlfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3V0aWxzL21pc2NlbGxhbmVvdXMnO1xuXG5pbXBvcnQge1xuICAgIFRVSV9DT0xPUl9TRUxFQ1RPUl9NT0RFX05BTUVTLFxuICAgIFRVSV9DT0xPUl9TRUxFQ1RPUl9PUFRJT05TLFxuICAgIFR1aUNvbG9yU2VsZWN0b3JNb2RlLFxufSBmcm9tICcuL2NvbG9yLXNlbGVjdG9yLm9wdGlvbnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3R1aS1jb2xvci1zZWxlY3RvcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NvbG9yLXNlbGVjdG9yLnRlbXBsYXRlLmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2NvbG9yLXNlbGVjdG9yLnN0eWxlLmxlc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgVHVpQ29sb3JTZWxlY3RvckNvbXBvbmVudCB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBzZWxlY3Rvck9wdGlvbnMgPSBpbmplY3QoVFVJX0NPTE9SX1NFTEVDVE9SX09QVElPTlMpO1xuICAgIHByaXZhdGUgc3RvcHMgPSBuZXcgTWFwKHRoaXMuc2VsZWN0b3JPcHRpb25zLmdyYWRpZW50LnN0ZXBzKTtcbiAgICBwcml2YXRlIGN1cnJlbnRTdG9wID0gdGhpcy5zZWxlY3Rvck9wdGlvbnMuZ3JhZGllbnQuc3RvcDtcbiAgICBwcml2YXRlIGRpcmVjdGlvbiA9IHRoaXMuc2VsZWN0b3JPcHRpb25zLmdyYWRpZW50LmRpcmVjdGlvbjtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgc2FuaXRpemVyID0gaW5qZWN0KERvbVNhbml0aXplcik7XG4gICAgcHJvdGVjdGVkIG9wZW4gPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGNvbG9ycyA9IHRoaXMuc2VsZWN0b3JPcHRpb25zLmNvbG9ycztcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyByZWFkb25seSBjb2xvckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gICAgcHVibGljIGNvbG9yID0gdGhpcy5zZWxlY3Rvck9wdGlvbnMuY29sb3I7XG5cbiAgICBwdWJsaWMgcmVhZG9ubHkgbW9kZXMgPSBpbmplY3QoVFVJX0NPTE9SX1NFTEVDVE9SX01PREVfTkFNRVMpO1xuXG4gICAgcHVibGljIGN1cnJlbnRNb2RlID0gdGhpcy5tb2Rlc1t0aGlzLnNlbGVjdG9yT3B0aW9ucy5tb2RlXTtcblxuICAgIHB1YmxpYyByZWFkb25seSBidXR0b25zID0gdGhpcy5zZWxlY3Rvck9wdGlvbnMuZ3JhZGllbnQuYnV0dG9ucztcblxuICAgIEBJbnB1dCgnY29sb3InKVxuICAgIHB1YmxpYyBzZXQgY29sb3JTZXR0ZXIoY29sb3I6IHN0cmluZykge1xuICAgICAgICBpZiAoY29sb3Iuc3RhcnRzV2l0aCgnbGluZWFyLWdyYWRpZW50JykpIHtcbiAgICAgICAgICAgIHRoaXMucGFyc2VHcmFkaWVudChjb2xvcik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnBhcnNlQ29sb3IoY29sb3IpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBzZWxlY3Rvck1vZGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdG9yT3B0aW9ucy5zZWxlY3Rvck1vZGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBwYWxldHRlKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5maWx0ZXJQYWxldHRlKHRoaXMuY29sb3JzLCB0aGlzLmlzR3JhZGllbnQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgc3RvcHNLZXlzKCk6IG51bWJlcltdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U3RvcHNLZXlzKHRoaXMuc3RvcHMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgY3VycmVudENvbG9yKCk6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNHcmFkaWVudCA/IHRoaXMuZ2V0U3RvcCh0aGlzLmN1cnJlbnRTdG9wKSA6IHRoaXMuY29sb3I7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBncmFkaWVudCgpOiBTYWZlU3R5bGUge1xuICAgICAgICByZXR1cm4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFN0eWxlKHRoaXMuZ2V0R3JhZGllbnQoJ3RvIHJpZ2h0JykpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaXNHcmFkaWVudCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudE1vZGUgPT09IHRoaXMubW9kZXNbVHVpQ29sb3JTZWxlY3Rvck1vZGUuR3JhZGllbnRdO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRJY29uKGRpcmVjdGlvbjogVHVpR3JhZGllbnREaXJlY3Rpb24pOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3Rvck9wdGlvbnMuZ3JhZGllbnQuaWNvbnNbZGlyZWN0aW9uXTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNNb2RlQWN0aXZlKG1vZGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50TW9kZSA9PT0gbW9kZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNEaXJlY3Rpb25BY3RpdmUoZGlyZWN0aW9uOiBUdWlHcmFkaWVudERpcmVjdGlvbik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5kaXJlY3Rpb24gPT09IGRpcmVjdGlvbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25QYWxldHRlUGljayhjb2xvcjogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXBkYXRlQ29sb3IoY29sb3IpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkRpcmVjdGlvbkNoYW5nZShkaXJlY3Rpb246IFR1aUdyYWRpZW50RGlyZWN0aW9uKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlyZWN0aW9uID0gZGlyZWN0aW9uO1xuICAgICAgICB0aGlzLnVwZGF0ZUNvbG9yKHRoaXMuZ2V0R3JhZGllbnQoZGlyZWN0aW9uKSk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uTW9kZVNlbGVjdChtb2RlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jdXJyZW50TW9kZSA9IG1vZGU7XG4gICAgICAgIHRoaXMub3BlbiA9IGZhbHNlO1xuXG4gICAgICAgIHRoaXMudXBkYXRlQ29sb3IoXG4gICAgICAgICAgICBtb2RlID09PSB0aGlzLm1vZGVzW1R1aUNvbG9yU2VsZWN0b3JNb2RlLlNvbGlkQ29sb3JdXG4gICAgICAgICAgICAgICAgPyBgcmdiYSgke3RoaXMuY29sb3Iuam9pbignLCAnKX0pYFxuICAgICAgICAgICAgICAgIDogdGhpcy5nZXRHcmFkaWVudCh0aGlzLmRpcmVjdGlvbiksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uSW5kZXhDaGFuZ2UoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLmN1cnJlbnRTdG9wID0gdGhpcy5zdG9wc0tleXNbaW5kZXhdO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkNvbG9yQ2hhbmdlKGNvbG9yOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXSk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuaXNHcmFkaWVudCkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVDb2xvcihgcmdiYSgke2NvbG9yLmpvaW4oJywgJyl9KWApO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnN0b3BzLnNldCh0aGlzLmN1cnJlbnRTdG9wLCBjb2xvcik7XG4gICAgICAgIHRoaXMudXBkYXRlQ29sb3IodGhpcy5nZXRHcmFkaWVudCh0aGlzLmRpcmVjdGlvbikpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblN0b3BzQ2hhbmdlKHN0b3BzS2V5czogcmVhZG9ubHkgbnVtYmVyW10pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcmVtb3ZlZCA9IHRoaXMuc3RvcHNLZXlzLmZpbmQoKGl0ZW0pID0+ICFzdG9wc0tleXMuaW5jbHVkZXMoaXRlbSkpO1xuICAgICAgICBjb25zdCBhZGRlZCA9IHN0b3BzS2V5cy5maW5kKChpdGVtKSA9PiAhdGhpcy5zdG9wc0tleXMuaW5jbHVkZXMoaXRlbSkpO1xuXG4gICAgICAgIGlmIChyZW1vdmVkID09PSB1bmRlZmluZWQgJiYgYWRkZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy5hZGRTdG9wKGFkZGVkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZW1vdmVkICE9PSB1bmRlZmluZWQgJiYgYWRkZWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhpcy5yZW1vdmVTdG9wKHJlbW92ZWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJlbW92ZWQgIT09IHVuZGVmaW5lZCAmJiBhZGRlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aGlzLnJlcGxhY2VTdG9wKHJlbW92ZWQsIGFkZGVkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudXBkYXRlQ29sb3IodGhpcy5nZXRHcmFkaWVudCh0aGlzLmRpcmVjdGlvbikpO1xuICAgIH1cblxuICAgIEB0dWlQdXJlXG4gICAgcHJpdmF0ZSBnZXRTdG9wc0tleXMoc3RvcHM6IE1hcDxudW1iZXIsIHVua25vd24+KTogbnVtYmVyW10ge1xuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbShzdG9wcy5rZXlzKCkpO1xuICAgIH1cblxuICAgIEB0dWlQdXJlXG4gICAgcHJpdmF0ZSBmaWx0ZXJQYWxldHRlKFxuICAgICAgICBjb2xvcnM6IFJlYWRvbmx5TWFwPHN0cmluZywgc3RyaW5nPixcbiAgICAgICAgaXNHcmFkaWVudDogYm9vbGVhbixcbiAgICApOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICAgICAgY29uc3QgbWFwID0gbmV3IE1hcChjb2xvcnMpO1xuXG4gICAgICAgIG1hcC5mb3JFYWNoKCh2YWx1ZSwga2V5KSA9PiB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgKHZhbHVlLnN0YXJ0c1dpdGgoJ2xpbmVhci1ncmFkaWVudCcpICYmICFpc0dyYWRpZW50KSB8fFxuICAgICAgICAgICAgICAgICghdmFsdWUuc3RhcnRzV2l0aCgnbGluZWFyLWdyYWRpZW50JykgJiYgaXNHcmFkaWVudClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIG1hcC5kZWxldGUoa2V5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIG1hcDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZUNvbG9yKGNvbG9yOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jb2xvckNoYW5nZS5lbWl0KGNvbG9yKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEdyYWRpZW50KGRpcmVjdGlvbjogVHVpR3JhZGllbnREaXJlY3Rpb24pOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYGxpbmVhci1ncmFkaWVudCgke2RpcmVjdGlvbn0sICR7Wy4uLnRoaXMuc3RvcHNLZXlzXVxuICAgICAgICAgICAgLnNvcnQodHVpRGVmYXVsdFNvcnQpXG4gICAgICAgICAgICAubWFwKChrZXkpID0+IGByZ2JhKCR7dGhpcy5nZXRTdG9wKGtleSkuam9pbignLCAnKX0pICR7a2V5ICogMTAwfSVgKVxuICAgICAgICAgICAgLmpvaW4oJywgJyl9KWA7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTdG9wKHN0b3A6IG51bWJlcik6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RvcHMuZ2V0KHN0b3ApIHx8IHRoaXMuc2VsZWN0b3JPcHRpb25zLmdyYWRpZW50LmVtcHR5U3RvcDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFkZFN0b3Aoc3RvcDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGNsb3Nlc3QgPSB0aGlzLnN0b3BzS2V5cy5yZWR1Y2UoXG4gICAgICAgICAgICAocHJldiwgY3VycikgPT4gKE1hdGguYWJzKGN1cnIgLSBzdG9wKSA8IE1hdGguYWJzKHByZXYgLSBzdG9wKSA/IGN1cnIgOiBwcmV2KSxcbiAgICAgICAgICAgIHRoaXMuc3RvcHNLZXlzWzBdLFxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuc3RvcHMuc2V0KHN0b3AsIHRoaXMuZ2V0U3RvcChjbG9zZXN0KSk7XG4gICAgICAgIHRoaXMuc3RvcHMgPSBuZXcgTWFwKHRoaXMuc3RvcHMpO1xuICAgICAgICB0aGlzLmN1cnJlbnRTdG9wID0gc3RvcDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlbW92ZVN0b3Aoc3RvcDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3RvcHMuZGVsZXRlKHN0b3ApO1xuICAgICAgICB0aGlzLnN0b3BzID0gbmV3IE1hcCh0aGlzLnN0b3BzKTtcbiAgICAgICAgdGhpcy5jdXJyZW50U3RvcCA9IHRoaXMuc3RvcHNLZXlzWzBdO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVwbGFjZVN0b3AocmVtb3ZlZDogbnVtYmVyLCBhZGRlZDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5nZXRTdG9wKHJlbW92ZWQpO1xuXG4gICAgICAgIHRoaXMuY3VycmVudFN0b3AgPSBhZGRlZDtcbiAgICAgICAgdGhpcy5zdG9wcyA9IG5ldyBNYXAoXG4gICAgICAgICAgICB0aGlzLnN0b3BzS2V5cy5tYXA8W251bWJlciwgW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl1dPigoa2V5KSA9PlxuICAgICAgICAgICAgICAgIGtleSA9PT0gcmVtb3ZlZCA/IFthZGRlZCwgdmFsdWVdIDogW2tleSwgdGhpcy5nZXRTdG9wKGtleSldLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHBhcnNlR3JhZGllbnQoY29sb3I6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAoY29sb3IgPT09IHRoaXMuZ2V0R3JhZGllbnQodGhpcy5kaXJlY3Rpb24pKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBncmFkaWVudCA9IHR1aVBhcnNlR3JhZGllbnQodHVpR2V0R3JhZGllbnREYXRhKGNvbG9yKSk7XG5cbiAgICAgICAgdGhpcy5kaXJlY3Rpb24gPSBncmFkaWVudC5zaWRlO1xuICAgICAgICB0aGlzLmN1cnJlbnRTdG9wID0gdGhpcy5zZWxlY3Rvck9wdGlvbnMuZ3JhZGllbnQuc3RvcDtcbiAgICAgICAgdGhpcy5zdG9wcyA9IG5ldyBNYXAoXG4gICAgICAgICAgICBncmFkaWVudC5zdG9wcy5sZW5ndGhcbiAgICAgICAgICAgICAgICA/IGdyYWRpZW50LnN0b3BzLm1hcDxbbnVtYmVyLCBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXV0+KFxuICAgICAgICAgICAgICAgICAgICAgICh7Y29sb3IsIHBvc2l0aW9ufSkgPT4gW1xuICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZUZsb2F0KHBvc2l0aW9uKSAvIDEwMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHVpUGFyc2VDb2xvcihjb2xvciksXG4gICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICA6IHRoaXMuc2VsZWN0b3JPcHRpb25zLmdyYWRpZW50LnN0ZXBzLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgcGFyc2VDb2xvcihjb2xvcjogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY3VycmVudFN0b3AgPSB0aGlzLnNlbGVjdG9yT3B0aW9ucy5ncmFkaWVudC5zdG9wO1xuICAgICAgICB0aGlzLmNvbG9yID0gdHVpUGFyc2VDb2xvcihjb2xvcik7XG4gICAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdG9yTW9kZVwiPlxuICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJ0LXNlbGVjdFwiXG4gICAgICAgIFt0dWlEcm9wZG93bl09XCJtZW51XCJcbiAgICAgICAgWyh0dWlEcm9wZG93bk9wZW4pXT1cIm9wZW5cIlxuICAgID5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgYXBwZWFyYW5jZT1cIlwiXG4gICAgICAgICAgICBzaXplPVwic1wiXG4gICAgICAgICAgICB0dWlCdXR0b25cbiAgICAgICAgICAgIHR1aUNoZXZyb25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICA+XG4gICAgICAgICAgICB7eyBjdXJyZW50TW9kZSB9fVxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICA8bmctdGVtcGxhdGUgI21lbnU+XG4gICAgICAgICAgICA8dHVpLWRhdGEtbGlzdFxuICAgICAgICAgICAgICAgIHJvbGU9XCJtZW51XCJcbiAgICAgICAgICAgICAgICBzaXplPVwic1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0LW1lbnVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IG1vZGUgb2YgbW9kZXNcIlxuICAgICAgICAgICAgICAgICAgICByb2xlPVwibWVudWl0ZW1yYWRpb1wiXG4gICAgICAgICAgICAgICAgICAgIHR1aU9wdGlvblxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWNoZWNrZWRdPVwiaXNNb2RlQWN0aXZlKG1vZGUpXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uTW9kZVNlbGVjdChtb2RlKVwiXG4gICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmVudGVyLnByZXZlbnQpPVwib25Nb2RlU2VsZWN0KG1vZGUpXCJcbiAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uc3BhY2UucHJldmVudCk9XCJvbk1vZGVTZWxlY3QobW9kZSlcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgbW9kZSB9fVxuICAgICAgICAgICAgICAgICAgICA8dHVpLWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXNNb2RlQWN0aXZlKG1vZGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJAdHVpLmNoZWNrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidC1jaGVja21hcmtcIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC90dWktZGF0YS1saXN0PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuICAgIDxociBjbGFzcz1cInQtaHJcIiAvPlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJpc0dyYWRpZW50XCI+XG4gICAgPGRpdlxuICAgICAgICBjbGFzcz1cInQtd3JhcHBlclwiXG4gICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cImdyYWRpZW50XCJcbiAgICA+XG4gICAgICAgIDx0dWktbGluZWFyLW11bHRpLXBpY2tlclxuICAgICAgICAgICAgY2xhc3M9XCJ0LWdyYWRpZW50XCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJzdG9wc0tleXNcIlxuICAgICAgICAgICAgKGluZGV4Q2hhbmdlKT1cIm9uSW5kZXhDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwib25TdG9wc0NoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwidC1idXR0b25zXCI+XG4gICAgICAgIDwhLS0gVE9ETzogQ2hhbmdlIHRvIGB0dWlIaW50RGVzY3JpYmVgIHdoZW4gZmlndXJlIHR1aURyaXZlciBvcmRlciBpc3N1ZSAtLT5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGJ1dHRvbiBvZiBidXR0b25zXCJcbiAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJcIlxuICAgICAgICAgICAgc2l6ZT1cInhzXCJcbiAgICAgICAgICAgIHR1aUhpbnREZXNjcmliZVxuICAgICAgICAgICAgdHVpSWNvbkJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cInQtZGlyZWN0aW9uXCJcbiAgICAgICAgICAgIFtjbGFzcy50LWRpcmVjdGlvbl9hY3RpdmVdPVwiaXNEaXJlY3Rpb25BY3RpdmUoYnV0dG9uKVwiXG4gICAgICAgICAgICBbaWNvblN0YXJ0XT1cImdldEljb24oYnV0dG9uKVwiXG4gICAgICAgICAgICBbdHVpSGludF09XCJidXR0b25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uRGlyZWN0aW9uQ2hhbmdlKGJ1dHRvbilcIlxuICAgICAgICA+PC9idXR0b24+XG4gICAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cbjx0dWktY29sb3ItcGlja2VyXG4gICAgW2NvbG9yXT1cImN1cnJlbnRDb2xvclwiXG4gICAgKGNvbG9yQ2hhbmdlKT1cIm9uQ29sb3JDaGFuZ2UoJGV2ZW50KVwiXG4vPlxuPHR1aS1jb2xvci1lZGl0XG4gICAgKm5nSWY9XCIhaXNHcmFkaWVudFwiXG4gICAgdHVpR3JvdXBcbiAgICBjbGFzcz1cInQtZWRpdFwiXG4gICAgW2NvbG9yXT1cImNvbG9yXCJcbiAgICAoY29sb3JDaGFuZ2UpPVwib25Db2xvckNoYW5nZSgkZXZlbnQpXCJcbi8+XG48dHVpLXBhbGV0dGVcbiAgICAqbmdJZj1cInBhbGV0dGUuc2l6ZVwiXG4gICAgY2xhc3M9XCJ0LXBhbGV0dGVcIlxuICAgIFtjb2xvcnNdPVwicGFsZXR0ZVwiXG4gICAgKHNlbGVjdGVkQ29sb3IpPVwib25QYWxldHRlUGljaygkZXZlbnQpXCJcbi8+XG4iXX0=
|
|
189
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3Itc2VsZWN0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbGVnYWN5L2NvbXBvbmVudHMvY29sb3Itc2VsZWN0b3IvY29sb3Itc2VsZWN0b3IuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbGVnYWN5L2NvbXBvbmVudHMvY29sb3Itc2VsZWN0b3IvY29sb3Itc2VsZWN0b3IudGVtcGxhdGUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxHQUNULE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUV2RCxPQUFPLEVBQ0gsa0JBQWtCLEVBQ2xCLGFBQWEsRUFDYixnQkFBZ0IsR0FDbkIsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQUMsY0FBYyxFQUFFLE9BQU8sRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBRTFFLE9BQU8sRUFDSCw2QkFBNkIsRUFDN0IsMEJBQTBCLEVBQzFCLG9CQUFvQixHQUN2QixNQUFNLDBCQUEwQixDQUFDOzs7Ozs7Ozs7Ozs7OztBQUVsQyxNQU1hLHlCQUF5QjtJQU50QztRQU9xQixvQkFBZSxHQUFHLE1BQU0sQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBQzlELFVBQUssR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyRCxnQkFBVyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztRQUNqRCxjQUFTLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDO1FBRTNDLGNBQVMsR0FBRyxNQUFNLENB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QyxFQUFDLEtBQUssRUFBRSxRQUFRLEVBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQ25CLFVBQVUsQ0FBQyxRQUFRLENBQUMsR0FBRyxHQUFHO2dCQUMxQixhQUFhLENBQUMsS0FBSyxDQUFDO2FBQ3ZCLENBQ0o7WUFDSCxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUM1QyxDQUFDO0lBQ04sQ0FBQztJQUVPLFVBQVUsQ0FBQyxLQUFhO1FBQzVCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQ3RELElBQUksQ0FBQyxLQUFLLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RDLENBQUM7K0dBck5RLHlCQUF5QjttR0FBekIseUJBQXlCLHdLQzlCdEMscW5GQTBGQTs7QUQrRFk7SUFEUCxPQUFPOzZEQUdQO0FBR087SUFEUCxPQUFPOzhEQWlCUDtTQWhKUSx5QkFBeUI7NEZBQXpCLHlCQUF5QjtrQkFOckMsU0FBUzsrQkFDSSxvQkFBb0IsbUJBR2IsdUJBQXVCLENBQUMsTUFBTTs4QkFZeEMsTUFBTTtzQkFEWixLQUFLO2dCQUlVLFdBQVc7c0JBRDFCLE1BQU07Z0JBWUksV0FBVztzQkFEckIsS0FBSzt1QkFBQyxPQUFPO2dCQW9HTixZQUFZLE1BS1osYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ29tcG9uZW50LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBpbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB0eXBlIHtTYWZlU3R5bGV9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHtEb21TYW5pdGl6ZXJ9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHR5cGUge1R1aUdyYWRpZW50RGlyZWN0aW9ufSBmcm9tICdAdGFpZ2EtdWkvY2RrL3V0aWxzL2NvbG9yJztcbmltcG9ydCB7XG4gICAgdHVpR2V0R3JhZGllbnREYXRhLFxuICAgIHR1aVBhcnNlQ29sb3IsXG4gICAgdHVpUGFyc2VHcmFkaWVudCxcbn0gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9jb2xvcic7XG5pbXBvcnQge3R1aURlZmF1bHRTb3J0LCB0dWlQdXJlfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3V0aWxzL21pc2NlbGxhbmVvdXMnO1xuXG5pbXBvcnQge1xuICAgIFRVSV9DT0xPUl9TRUxFQ1RPUl9NT0RFX05BTUVTLFxuICAgIFRVSV9DT0xPUl9TRUxFQ1RPUl9PUFRJT05TLFxuICAgIFR1aUNvbG9yU2VsZWN0b3JNb2RlLFxufSBmcm9tICcuL2NvbG9yLXNlbGVjdG9yLm9wdGlvbnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3R1aS1jb2xvci1zZWxlY3RvcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NvbG9yLXNlbGVjdG9yLnRlbXBsYXRlLmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2NvbG9yLXNlbGVjdG9yLnN0eWxlLmxlc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgVHVpQ29sb3JTZWxlY3RvckNvbXBvbmVudCB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBzZWxlY3Rvck9wdGlvbnMgPSBpbmplY3QoVFVJX0NPTE9SX1NFTEVDVE9SX09QVElPTlMpO1xuICAgIHByaXZhdGUgc3RvcHMgPSBuZXcgTWFwKHRoaXMuc2VsZWN0b3JPcHRpb25zLmdyYWRpZW50LnN0ZXBzKTtcbiAgICBwcml2YXRlIGN1cnJlbnRTdG9wID0gdGhpcy5zZWxlY3Rvck9wdGlvbnMuZ3JhZGllbnQuc3RvcDtcbiAgICBwcml2YXRlIGRpcmVjdGlvbiA9IHRoaXMuc2VsZWN0b3JPcHRpb25zLmdyYWRpZW50LmRpcmVjdGlvbjtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgc2FuaXRpemVyID0gaW5qZWN0KERvbVNhbml0aXplcik7XG4gICAgcHJvdGVjdGVkIG9wZW4gPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGNvbG9ycyA9IHRoaXMuc2VsZWN0b3JPcHRpb25zLmNvbG9ycztcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyByZWFkb25seSBjb2xvckNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gICAgcHVibGljIGNvbG9yID0gdGhpcy5zZWxlY3Rvck9wdGlvbnMuY29sb3I7XG5cbiAgICBwdWJsaWMgcmVhZG9ubHkgbW9kZXMgPSBpbmplY3QoVFVJX0NPTE9SX1NFTEVDVE9SX01PREVfTkFNRVMpO1xuXG4gICAgcHVibGljIGN1cnJlbnRNb2RlID0gdGhpcy5tb2Rlc1t0aGlzLnNlbGVjdG9yT3B0aW9ucy5tb2RlXTtcblxuICAgIHB1YmxpYyByZWFkb25seSBidXR0b25zID0gdGhpcy5zZWxlY3Rvck9wdGlvbnMuZ3JhZGllbnQuYnV0dG9ucztcblxuICAgIEBJbnB1dCgnY29sb3InKVxuICAgIHB1YmxpYyBzZXQgY29sb3JTZXR0ZXIoY29sb3I6IHN0cmluZykge1xuICAgICAgICBpZiAoY29sb3Iuc3RhcnRzV2l0aCgnbGluZWFyLWdyYWRpZW50JykpIHtcbiAgICAgICAgICAgIHRoaXMucGFyc2VHcmFkaWVudChjb2xvcik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnBhcnNlQ29sb3IoY29sb3IpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBzZWxlY3Rvck1vZGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdG9yT3B0aW9ucy5zZWxlY3Rvck1vZGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBwYWxldHRlKCk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xuICAgICAgICByZXR1cm4gdGhpcy5maWx0ZXJQYWxldHRlKHRoaXMuY29sb3JzLCB0aGlzLmlzR3JhZGllbnQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgc3RvcHNLZXlzKCk6IG51bWJlcltdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U3RvcHNLZXlzKHRoaXMuc3RvcHMpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgY3VycmVudENvbG9yKCk6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNHcmFkaWVudCA/IHRoaXMuZ2V0U3RvcCh0aGlzLmN1cnJlbnRTdG9wKSA6IHRoaXMuY29sb3I7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBncmFkaWVudCgpOiBTYWZlU3R5bGUge1xuICAgICAgICByZXR1cm4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFN0eWxlKHRoaXMuZ2V0R3JhZGllbnQoJ3RvIHJpZ2h0JykpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaXNHcmFkaWVudCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudE1vZGUgPT09IHRoaXMubW9kZXNbVHVpQ29sb3JTZWxlY3Rvck1vZGUuR3JhZGllbnRdO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRJY29uKGRpcmVjdGlvbjogVHVpR3JhZGllbnREaXJlY3Rpb24pOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3Rvck9wdGlvbnMuZ3JhZGllbnQuaWNvbnNbZGlyZWN0aW9uXTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNNb2RlQWN0aXZlKG1vZGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50TW9kZSA9PT0gbW9kZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaXNEaXJlY3Rpb25BY3RpdmUoZGlyZWN0aW9uOiBUdWlHcmFkaWVudERpcmVjdGlvbik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5kaXJlY3Rpb24gPT09IGRpcmVjdGlvbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25QYWxldHRlUGljayhjb2xvcjogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXBkYXRlQ29sb3IoY29sb3IpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkRpcmVjdGlvbkNoYW5nZShkaXJlY3Rpb246IFR1aUdyYWRpZW50RGlyZWN0aW9uKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlyZWN0aW9uID0gZGlyZWN0aW9uO1xuICAgICAgICB0aGlzLnVwZGF0ZUNvbG9yKHRoaXMuZ2V0R3JhZGllbnQoZGlyZWN0aW9uKSk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uTW9kZVNlbGVjdChtb2RlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jdXJyZW50TW9kZSA9IG1vZGU7XG4gICAgICAgIHRoaXMub3BlbiA9IGZhbHNlO1xuXG4gICAgICAgIHRoaXMudXBkYXRlQ29sb3IoXG4gICAgICAgICAgICBtb2RlID09PSB0aGlzLm1vZGVzW1R1aUNvbG9yU2VsZWN0b3JNb2RlLlNvbGlkQ29sb3JdXG4gICAgICAgICAgICAgICAgPyBgcmdiYSgke3RoaXMuY29sb3Iuam9pbignLCAnKX0pYFxuICAgICAgICAgICAgICAgIDogdGhpcy5nZXRHcmFkaWVudCh0aGlzLmRpcmVjdGlvbiksXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uSW5kZXhDaGFuZ2UoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLmN1cnJlbnRTdG9wID0gdGhpcy5zdG9wc0tleXNbaW5kZXhdID8/IDA7XG4gICAgfVxuXG4gICAgcHVibGljIG9uQ29sb3JDaGFuZ2UoY29sb3I6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5pc0dyYWRpZW50KSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUNvbG9yKGByZ2JhKCR7Y29sb3Iuam9pbignLCAnKX0pYCk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc3RvcHMuc2V0KHRoaXMuY3VycmVudFN0b3AsIGNvbG9yKTtcbiAgICAgICAgdGhpcy51cGRhdGVDb2xvcih0aGlzLmdldEdyYWRpZW50KHRoaXMuZGlyZWN0aW9uKSk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uU3RvcHNDaGFuZ2Uoc3RvcHNLZXlzOiByZWFkb25seSBudW1iZXJbXSk6IHZvaWQge1xuICAgICAgICBjb25zdCByZW1vdmVkID0gdGhpcy5zdG9wc0tleXMuZmluZCgoaXRlbSkgPT4gIXN0b3BzS2V5cy5pbmNsdWRlcyhpdGVtKSk7XG4gICAgICAgIGNvbnN0IGFkZGVkID0gc3RvcHNLZXlzLmZpbmQoKGl0ZW0pID0+ICF0aGlzLnN0b3BzS2V5cy5pbmNsdWRlcyhpdGVtKSk7XG5cbiAgICAgICAgaWYgKHJlbW92ZWQgPT09IHVuZGVmaW5lZCAmJiBhZGRlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aGlzLmFkZFN0b3AoYWRkZWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJlbW92ZWQgIT09IHVuZGVmaW5lZCAmJiBhZGRlZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aGlzLnJlbW92ZVN0b3AocmVtb3ZlZCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmVtb3ZlZCAhPT0gdW5kZWZpbmVkICYmIGFkZGVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRoaXMucmVwbGFjZVN0b3AocmVtb3ZlZCwgYWRkZWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy51cGRhdGVDb2xvcih0aGlzLmdldEdyYWRpZW50KHRoaXMuZGlyZWN0aW9uKSk7XG4gICAgfVxuXG4gICAgQHR1aVB1cmVcbiAgICBwcml2YXRlIGdldFN0b3BzS2V5cyhzdG9wczogTWFwPG51bWJlciwgdW5rbm93bj4pOiBudW1iZXJbXSB7XG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKHN0b3BzLmtleXMoKSk7XG4gICAgfVxuXG4gICAgQHR1aVB1cmVcbiAgICBwcml2YXRlIGZpbHRlclBhbGV0dGUoXG4gICAgICAgIGNvbG9yczogUmVhZG9ubHlNYXA8c3RyaW5nLCBzdHJpbmc+LFxuICAgICAgICBpc0dyYWRpZW50OiBib29sZWFuLFxuICAgICk6IE1hcDxzdHJpbmcsIHN0cmluZz4ge1xuICAgICAgICBjb25zdCBtYXAgPSBuZXcgTWFwKGNvbG9ycyk7XG5cbiAgICAgICAgbWFwLmZvckVhY2goKHZhbHVlLCBrZXkpID0+IHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAodmFsdWUuc3RhcnRzV2l0aCgnbGluZWFyLWdyYWRpZW50JykgJiYgIWlzR3JhZGllbnQpIHx8XG4gICAgICAgICAgICAgICAgKCF2YWx1ZS5zdGFydHNXaXRoKCdsaW5lYXItZ3JhZGllbnQnKSAmJiBpc0dyYWRpZW50KVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgbWFwLmRlbGV0ZShrZXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gbWFwO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlQ29sb3IoY29sb3I6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbG9yQ2hhbmdlLmVtaXQoY29sb3IpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0R3JhZGllbnQoZGlyZWN0aW9uOiBUdWlHcmFkaWVudERpcmVjdGlvbik6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgbGluZWFyLWdyYWRpZW50KCR7ZGlyZWN0aW9ufSwgJHtbLi4udGhpcy5zdG9wc0tleXNdXG4gICAgICAgICAgICAuc29ydCh0dWlEZWZhdWx0U29ydClcbiAgICAgICAgICAgIC5tYXAoKGtleSkgPT4gYHJnYmEoJHt0aGlzLmdldFN0b3Aoa2V5KS5qb2luKCcsICcpfSkgJHtrZXkgKiAxMDB9JWApXG4gICAgICAgICAgICAuam9pbignLCAnKX0pYDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFN0b3Aoc3RvcDogbnVtYmVyKTogW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl0ge1xuICAgICAgICByZXR1cm4gdGhpcy5zdG9wcy5nZXQoc3RvcCkgfHwgdGhpcy5zZWxlY3Rvck9wdGlvbnMuZ3JhZGllbnQuZW1wdHlTdG9wO1xuICAgIH1cblxuICAgIHByaXZhdGUgYWRkU3RvcChzdG9wOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY2xvc2VzdCA9IHRoaXMuc3RvcHNLZXlzLnJlZHVjZShcbiAgICAgICAgICAgIChwcmV2LCBjdXJyKSA9PiAoTWF0aC5hYnMoY3VyciAtIHN0b3ApIDwgTWF0aC5hYnMocHJldiAtIHN0b3ApID8gY3VyciA6IHByZXYpLFxuICAgICAgICAgICAgdGhpcy5zdG9wc0tleXNbMF0gPz8gMCxcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLnN0b3BzLnNldChzdG9wLCB0aGlzLmdldFN0b3AoY2xvc2VzdCkpO1xuICAgICAgICB0aGlzLnN0b3BzID0gbmV3IE1hcCh0aGlzLnN0b3BzKTtcbiAgICAgICAgdGhpcy5jdXJyZW50U3RvcCA9IHN0b3A7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZW1vdmVTdG9wKHN0b3A6IG51bWJlcik6IHZvaWQge1xuICAgICAgICB0aGlzLnN0b3BzLmRlbGV0ZShzdG9wKTtcbiAgICAgICAgdGhpcy5zdG9wcyA9IG5ldyBNYXAodGhpcy5zdG9wcyk7XG4gICAgICAgIHRoaXMuY3VycmVudFN0b3AgPSB0aGlzLnN0b3BzS2V5c1swXSA/PyAwO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVwbGFjZVN0b3AocmVtb3ZlZDogbnVtYmVyLCBhZGRlZDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5nZXRTdG9wKHJlbW92ZWQpO1xuXG4gICAgICAgIHRoaXMuY3VycmVudFN0b3AgPSBhZGRlZDtcbiAgICAgICAgdGhpcy5zdG9wcyA9IG5ldyBNYXAoXG4gICAgICAgICAgICB0aGlzLnN0b3BzS2V5cy5tYXA8W251bWJlciwgW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl1dPigoa2V5KSA9PlxuICAgICAgICAgICAgICAgIGtleSA9PT0gcmVtb3ZlZCA/IFthZGRlZCwgdmFsdWVdIDogW2tleSwgdGhpcy5nZXRTdG9wKGtleSldLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHBhcnNlR3JhZGllbnQoY29sb3I6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAoY29sb3IgPT09IHRoaXMuZ2V0R3JhZGllbnQodGhpcy5kaXJlY3Rpb24pKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBncmFkaWVudCA9IHR1aVBhcnNlR3JhZGllbnQodHVpR2V0R3JhZGllbnREYXRhKGNvbG9yKSk7XG5cbiAgICAgICAgdGhpcy5kaXJlY3Rpb24gPSBncmFkaWVudC5zaWRlO1xuICAgICAgICB0aGlzLmN1cnJlbnRTdG9wID0gdGhpcy5zZWxlY3Rvck9wdGlvbnMuZ3JhZGllbnQuc3RvcDtcbiAgICAgICAgdGhpcy5zdG9wcyA9IG5ldyBNYXAoXG4gICAgICAgICAgICBncmFkaWVudC5zdG9wcy5sZW5ndGhcbiAgICAgICAgICAgICAgICA/IGdyYWRpZW50LnN0b3BzLm1hcDxbbnVtYmVyLCBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXV0+KFxuICAgICAgICAgICAgICAgICAgICAgICh7Y29sb3IsIHBvc2l0aW9ufSkgPT4gW1xuICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZUZsb2F0KHBvc2l0aW9uKSAvIDEwMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHVpUGFyc2VDb2xvcihjb2xvciksXG4gICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICA6IHRoaXMuc2VsZWN0b3JPcHRpb25zLmdyYWRpZW50LnN0ZXBzLFxuICAgICAgICApO1xuICAgIH1cblxuICAgIHByaXZhdGUgcGFyc2VDb2xvcihjb2xvcjogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY3VycmVudFN0b3AgPSB0aGlzLnNlbGVjdG9yT3B0aW9ucy5ncmFkaWVudC5zdG9wO1xuICAgICAgICB0aGlzLmNvbG9yID0gdHVpUGFyc2VDb2xvcihjb2xvcik7XG4gICAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdG9yTW9kZVwiPlxuICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJ0LXNlbGVjdFwiXG4gICAgICAgIFt0dWlEcm9wZG93bl09XCJtZW51XCJcbiAgICAgICAgWyh0dWlEcm9wZG93bk9wZW4pXT1cIm9wZW5cIlxuICAgID5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgYXBwZWFyYW5jZT1cIlwiXG4gICAgICAgICAgICBzaXplPVwic1wiXG4gICAgICAgICAgICB0dWlCdXR0b25cbiAgICAgICAgICAgIHR1aUNoZXZyb25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICA+XG4gICAgICAgICAgICB7eyBjdXJyZW50TW9kZSB9fVxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICA8bmctdGVtcGxhdGUgI21lbnU+XG4gICAgICAgICAgICA8dHVpLWRhdGEtbGlzdFxuICAgICAgICAgICAgICAgIHJvbGU9XCJtZW51XCJcbiAgICAgICAgICAgICAgICBzaXplPVwic1wiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0LW1lbnVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IG1vZGUgb2YgbW9kZXNcIlxuICAgICAgICAgICAgICAgICAgICByb2xlPVwibWVudWl0ZW1yYWRpb1wiXG4gICAgICAgICAgICAgICAgICAgIHR1aU9wdGlvblxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWNoZWNrZWRdPVwiaXNNb2RlQWN0aXZlKG1vZGUpXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uTW9kZVNlbGVjdChtb2RlKVwiXG4gICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmVudGVyLnByZXZlbnQpPVwib25Nb2RlU2VsZWN0KG1vZGUpXCJcbiAgICAgICAgICAgICAgICAgICAgKGtleWRvd24uc3BhY2UucHJldmVudCk9XCJvbk1vZGVTZWxlY3QobW9kZSlcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgbW9kZSB9fVxuICAgICAgICAgICAgICAgICAgICA8dHVpLWljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXNNb2RlQWN0aXZlKG1vZGUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJAdHVpLmNoZWNrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidC1jaGVja21hcmtcIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC90dWktZGF0YS1saXN0PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuICAgIDxociBjbGFzcz1cInQtaHJcIiAvPlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJpc0dyYWRpZW50XCI+XG4gICAgPGRpdlxuICAgICAgICBjbGFzcz1cInQtd3JhcHBlclwiXG4gICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cImdyYWRpZW50XCJcbiAgICA+XG4gICAgICAgIDx0dWktbGluZWFyLW11bHRpLXBpY2tlclxuICAgICAgICAgICAgY2xhc3M9XCJ0LWdyYWRpZW50XCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJzdG9wc0tleXNcIlxuICAgICAgICAgICAgKGluZGV4Q2hhbmdlKT1cIm9uSW5kZXhDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwib25TdG9wc0NoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwidC1idXR0b25zXCI+XG4gICAgICAgIDwhLS0gVE9ETzogQ2hhbmdlIHRvIGB0dWlIaW50RGVzY3JpYmVgIHdoZW4gZmlndXJlIHR1aURyaXZlciBvcmRlciBpc3N1ZSAtLT5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGJ1dHRvbiBvZiBidXR0b25zXCJcbiAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJcIlxuICAgICAgICAgICAgc2l6ZT1cInhzXCJcbiAgICAgICAgICAgIHR1aUhpbnREZXNjcmliZVxuICAgICAgICAgICAgdHVpSWNvbkJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cInQtZGlyZWN0aW9uXCJcbiAgICAgICAgICAgIFtjbGFzcy50LWRpcmVjdGlvbl9hY3RpdmVdPVwiaXNEaXJlY3Rpb25BY3RpdmUoYnV0dG9uKVwiXG4gICAgICAgICAgICBbaWNvblN0YXJ0XT1cImdldEljb24oYnV0dG9uKVwiXG4gICAgICAgICAgICBbdHVpSGludF09XCJidXR0b25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uRGlyZWN0aW9uQ2hhbmdlKGJ1dHRvbilcIlxuICAgICAgICA+PC9idXR0b24+XG4gICAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cbjx0dWktY29sb3ItcGlja2VyXG4gICAgW2NvbG9yXT1cImN1cnJlbnRDb2xvclwiXG4gICAgKGNvbG9yQ2hhbmdlKT1cIm9uQ29sb3JDaGFuZ2UoJGV2ZW50KVwiXG4vPlxuPHR1aS1jb2xvci1lZGl0XG4gICAgKm5nSWY9XCIhaXNHcmFkaWVudFwiXG4gICAgdHVpR3JvdXBcbiAgICBjbGFzcz1cInQtZWRpdFwiXG4gICAgW2NvbG9yXT1cImNvbG9yXCJcbiAgICAoY29sb3JDaGFuZ2UpPVwib25Db2xvckNoYW5nZSgkZXZlbnQpXCJcbi8+XG48dHVpLXBhbGV0dGVcbiAgICAqbmdJZj1cInBhbGV0dGUuc2l6ZVwiXG4gICAgY2xhc3M9XCJ0LXBhbGV0dGVcIlxuICAgIFtjb2xvcnNdPVwicGFsZXR0ZVwiXG4gICAgKHNlbGVjdGVkQ29sb3IpPVwib25QYWxldHRlUGljaygkZXZlbnQpXCJcbi8+XG4iXX0=
|
|
@@ -20,12 +20,12 @@ class TuiFlatPickerComponent {
|
|
|
20
20
|
return this.value[1] * 100;
|
|
21
21
|
}
|
|
22
22
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiFlatPickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
23
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiFlatPickerComponent, selector: "tui-flat-picker", inputs: { value: "value" }, outputs: { valueChange: "valueChange" }, providers: [TuiPickerService], ngImport: i0, template: "<div\n class=\"t-circle\"\n [style.left.%]=\"left\"\n [style.top.%]=\"top\"\n></div>\n", styles: [":host{position:relative;display:block}.t-circle{position:absolute;
|
|
23
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiFlatPickerComponent, selector: "tui-flat-picker", inputs: { value: "value" }, outputs: { valueChange: "valueChange" }, providers: [TuiPickerService], ngImport: i0, template: "<div\n class=\"t-circle\"\n [style.left.%]=\"left\"\n [style.top.%]=\"top\"\n></div>\n", styles: [":host{position:relative;display:block}.t-circle{position:absolute;inline-size:1rem;block-size:1rem;border-radius:100%;margin:-.5rem 0 0 -.5rem;box-shadow:inset 0 0 0 1px var(--tui-base-01),0 0 0 1px var(--tui-base-03)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
24
24
|
}
|
|
25
25
|
export { TuiFlatPickerComponent };
|
|
26
26
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiFlatPickerComponent, decorators: [{
|
|
27
27
|
type: Component,
|
|
28
|
-
args: [{ selector: 'tui-flat-picker', changeDetection: ChangeDetectionStrategy.OnPush, providers: [TuiPickerService], template: "<div\n class=\"t-circle\"\n [style.left.%]=\"left\"\n [style.top.%]=\"top\"\n></div>\n", styles: [":host{position:relative;display:block}.t-circle{position:absolute;
|
|
28
|
+
args: [{ selector: 'tui-flat-picker', changeDetection: ChangeDetectionStrategy.OnPush, providers: [TuiPickerService], template: "<div\n class=\"t-circle\"\n [style.left.%]=\"left\"\n [style.top.%]=\"top\"\n></div>\n", styles: [":host{position:relative;display:block}.t-circle{position:absolute;inline-size:1rem;block-size:1rem;border-radius:100%;margin:-.5rem 0 0 -.5rem;box-shadow:inset 0 0 0 1px var(--tui-base-01),0 0 0 1px var(--tui-base-03)}\n"] }]
|
|
29
29
|
}], ctorParameters: function () { return []; }, propDecorators: { value: [{
|
|
30
30
|
type: Input
|
|
31
31
|
}], valueChange: [{
|
package/esm2022/components/color-selector/linear-multi-picker/linear-multi-picker.component.mjs
CHANGED
|
@@ -43,14 +43,14 @@ class TuiLinearMultiPickerComponent {
|
|
|
43
43
|
this.valueChange.emit(value);
|
|
44
44
|
}
|
|
45
45
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiLinearMultiPickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
46
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiLinearMultiPickerComponent, selector: "tui-linear-multi-picker", inputs: { value: "value" }, outputs: { valueChange: "valueChange", indexChange: "indexChange" }, host: { listeners: { "document:mouseup": "onMouseUp()" } }, providers: [TuiPickerService], ngImport: i0, template: "<div\n *ngFor=\"let item of value; let index = index\"\n class=\"t-circle\"\n [style.left.%]=\"item * 100\"\n (dblclick)=\"onClick(index)\"\n (mousedown)=\"onMouseDown(index)\"\n></div>\n", styles: [":host{position:relative;display:block;
|
|
46
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiLinearMultiPickerComponent, selector: "tui-linear-multi-picker", inputs: { value: "value" }, outputs: { valueChange: "valueChange", indexChange: "indexChange" }, host: { listeners: { "document:mouseup": "onMouseUp()" } }, providers: [TuiPickerService], ngImport: i0, template: "<div\n *ngFor=\"let item of value; let index = index\"\n class=\"t-circle\"\n [style.left.%]=\"item * 100\"\n (dblclick)=\"onClick(index)\"\n (mousedown)=\"onMouseDown(index)\"\n></div>\n", styles: [":host{position:relative;display:block;block-size:1rem;box-sizing:border-box}.t-circle{position:absolute;inline-size:1rem;block-size:1rem;border-radius:100%;margin:0 -.5rem;box-shadow:inset 0 0 0 2px var(--tui-base-01),0 0 0 1px var(--tui-base-03)}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
47
47
|
}
|
|
48
48
|
export { TuiLinearMultiPickerComponent };
|
|
49
49
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiLinearMultiPickerComponent, decorators: [{
|
|
50
50
|
type: Component,
|
|
51
51
|
args: [{ selector: 'tui-linear-multi-picker', changeDetection: ChangeDetectionStrategy.OnPush, providers: [TuiPickerService], host: {
|
|
52
52
|
'(document:mouseup)': 'onMouseUp()',
|
|
53
|
-
}, template: "<div\n *ngFor=\"let item of value; let index = index\"\n class=\"t-circle\"\n [style.left.%]=\"item * 100\"\n (dblclick)=\"onClick(index)\"\n (mousedown)=\"onMouseDown(index)\"\n></div>\n", styles: [":host{position:relative;display:block;
|
|
53
|
+
}, template: "<div\n *ngFor=\"let item of value; let index = index\"\n class=\"t-circle\"\n [style.left.%]=\"item * 100\"\n (dblclick)=\"onClick(index)\"\n (mousedown)=\"onMouseDown(index)\"\n></div>\n", styles: [":host{position:relative;display:block;block-size:1rem;box-sizing:border-box}.t-circle{position:absolute;inline-size:1rem;block-size:1rem;border-radius:100%;margin:0 -.5rem;box-shadow:inset 0 0 0 2px var(--tui-base-01),0 0 0 1px var(--tui-base-03)}\n"] }]
|
|
54
54
|
}], ctorParameters: function () { return []; }, propDecorators: { value: [{
|
|
55
55
|
type: Input
|
|
56
56
|
}], valueChange: [{
|
|
@@ -17,12 +17,12 @@ class TuiLinearPickerComponent {
|
|
|
17
17
|
return this.value * 100;
|
|
18
18
|
}
|
|
19
19
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiLinearPickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
20
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiLinearPickerComponent, selector: "tui-linear-picker", inputs: { value: "value" }, outputs: { valueChange: "valueChange" }, providers: [TuiPickerService], ngImport: i0, template: "<div\n class=\"t-circle\"\n [style.left.%]=\"left\"\n></div>\n", styles: [":host{position:relative;display:block;
|
|
20
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiLinearPickerComponent, selector: "tui-linear-picker", inputs: { value: "value" }, outputs: { valueChange: "valueChange" }, providers: [TuiPickerService], ngImport: i0, template: "<div\n class=\"t-circle\"\n [style.left.%]=\"left\"\n></div>\n", styles: [":host{position:relative;display:block;block-size:1rem;box-sizing:border-box}.t-circle{position:absolute;inline-size:1rem;block-size:1rem;border-radius:100%;margin:0 -.5rem;box-shadow:inset 0 0 0 2px var(--tui-base-01),0 0 0 1px var(--tui-base-03)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
21
21
|
}
|
|
22
22
|
export { TuiLinearPickerComponent };
|
|
23
23
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiLinearPickerComponent, decorators: [{
|
|
24
24
|
type: Component,
|
|
25
|
-
args: [{ selector: 'tui-linear-picker', changeDetection: ChangeDetectionStrategy.OnPush, providers: [TuiPickerService], template: "<div\n class=\"t-circle\"\n [style.left.%]=\"left\"\n></div>\n", styles: [":host{position:relative;display:block;
|
|
25
|
+
args: [{ selector: 'tui-linear-picker', changeDetection: ChangeDetectionStrategy.OnPush, providers: [TuiPickerService], template: "<div\n class=\"t-circle\"\n [style.left.%]=\"left\"\n></div>\n", styles: [":host{position:relative;display:block;block-size:1rem;box-sizing:border-box}.t-circle{position:absolute;inline-size:1rem;block-size:1rem;border-radius:100%;margin:0 -.5rem;box-shadow:inset 0 0 0 2px var(--tui-base-01),0 0 0 1px var(--tui-base-03)}\n"] }]
|
|
26
26
|
}], ctorParameters: function () { return []; }, propDecorators: { value: [{
|
|
27
27
|
type: Input
|
|
28
28
|
}], valueChange: [{
|
|
@@ -9,12 +9,12 @@ class TuiPaletteComponent {
|
|
|
9
9
|
this.originalOrder = (_a, _b) => 0;
|
|
10
10
|
}
|
|
11
11
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiPaletteComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
12
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiPaletteComponent, selector: "tui-palette", inputs: { colors: "colors" }, outputs: { selectedColor: "selectedColor" }, ngImport: i0, template: "<button\n *ngFor=\"let color of colors | keyvalue: originalOrder\"\n type=\"button\"\n class=\"t-button\"\n [id]=\"color.key\"\n [style.background]=\"color.value\"\n [tuiHint]=\"color.key\"\n [tuiHintDescribe]=\"color.key\"\n (click)=\"selectedColor.emit(color.value)\"\n></button>\n", styles: [":host{display:flex;flex-wrap:wrap;padding:.875rem}.t-button{-webkit-appearance:none;appearance:none;padding:0;background:none;font-size:inherit;line-height:inherit;
|
|
12
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiPaletteComponent, selector: "tui-palette", inputs: { colors: "colors" }, outputs: { selectedColor: "selectedColor" }, ngImport: i0, template: "<button\n *ngFor=\"let color of colors | keyvalue: originalOrder\"\n type=\"button\"\n class=\"t-button\"\n [id]=\"color.key\"\n [style.background]=\"color.value\"\n [tuiHint]=\"color.key\"\n [tuiHintDescribe]=\"color.key\"\n (click)=\"selectedColor.emit(color.value)\"\n></button>\n", styles: [":host{display:flex;flex-wrap:wrap;padding:.875rem}.t-button{-webkit-appearance:none;appearance:none;padding:0;background:none;font-size:inherit;line-height:inherit;inline-size:1.5625rem;block-size:1.5625rem;box-sizing:border-box;margin:.375rem;border-radius:var(--tui-radius-m);border:1px solid rgba(0,0,0,.08)}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.TuiHintDirective, selector: "[tuiHint]:not(ng-container):not(ng-template)", inputs: ["tuiHintContext", "tuiHintAppearance", "tuiHint"] }, { kind: "directive", type: i2.TuiHintDescribe, selector: "[tuiHintDescribe]", inputs: ["tuiHintDescribe"] }, { kind: "pipe", type: i1.KeyValuePipe, name: "keyvalue" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
13
13
|
}
|
|
14
14
|
export { TuiPaletteComponent };
|
|
15
15
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiPaletteComponent, decorators: [{
|
|
16
16
|
type: Component,
|
|
17
|
-
args: [{ selector: 'tui-palette', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n *ngFor=\"let color of colors | keyvalue: originalOrder\"\n type=\"button\"\n class=\"t-button\"\n [id]=\"color.key\"\n [style.background]=\"color.value\"\n [tuiHint]=\"color.key\"\n [tuiHintDescribe]=\"color.key\"\n (click)=\"selectedColor.emit(color.value)\"\n></button>\n", styles: [":host{display:flex;flex-wrap:wrap;padding:.875rem}.t-button{-webkit-appearance:none;appearance:none;padding:0;background:none;font-size:inherit;line-height:inherit;
|
|
17
|
+
args: [{ selector: 'tui-palette', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button\n *ngFor=\"let color of colors | keyvalue: originalOrder\"\n type=\"button\"\n class=\"t-button\"\n [id]=\"color.key\"\n [style.background]=\"color.value\"\n [tuiHint]=\"color.key\"\n [tuiHintDescribe]=\"color.key\"\n (click)=\"selectedColor.emit(color.value)\"\n></button>\n", styles: [":host{display:flex;flex-wrap:wrap;padding:.875rem}.t-button{-webkit-appearance:none;appearance:none;padding:0;background:none;font-size:inherit;line-height:inherit;inline-size:1.5625rem;block-size:1.5625rem;box-sizing:border-box;margin:.375rem;border-radius:var(--tui-radius-m);border:1px solid rgba(0,0,0,.08)}\n"] }]
|
|
18
18
|
}], propDecorators: { colors: [{
|
|
19
19
|
type: Input
|
|
20
20
|
}], selectedColor: [{
|