@ng-matero/extensions 18.5.1 → 18.6.0
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/colorpicker/colorpicker-input.d.ts +3 -3
- package/colorpicker/colorpicker-module.d.ts +5 -5
- package/colorpicker/colorpicker.d.ts +5 -6
- package/colorpicker/public-api.d.ts +2 -1
- package/esm2022/colorpicker/colorpicker-input.mjs +5 -6
- package/esm2022/colorpicker/colorpicker-module.mjs +7 -7
- package/esm2022/colorpicker/colorpicker.mjs +10 -20
- package/esm2022/colorpicker/public-api.mjs +1 -1
- package/fesm2022/mtxColorpicker.mjs +18 -29
- package/fesm2022/mtxColorpicker.mjs.map +1 -1
- package/package.json +14 -14
|
@@ -2,6 +2,7 @@ import { AfterViewInit, ElementRef, EventEmitter, OnDestroy } from '@angular/cor
|
|
|
2
2
|
import { AbstractControl, ControlValueAccessor, ValidationErrors } from '@angular/forms';
|
|
3
3
|
import { ThemePalette } from '@angular/material/core';
|
|
4
4
|
import { MatFormField } from '@angular/material/form-field';
|
|
5
|
+
import { ColorFormat } from '@acrodata/color-picker';
|
|
5
6
|
import { MtxColorpicker } from './colorpicker';
|
|
6
7
|
import * as i0 from "@angular/core";
|
|
7
8
|
export declare class MtxColorPickerInputEvent {
|
|
@@ -19,7 +20,6 @@ export declare class MtxColorPickerInputEvent {
|
|
|
19
20
|
}
|
|
20
21
|
export declare const MTX_COLORPICKER_VALUE_ACCESSOR: any;
|
|
21
22
|
export declare const MTX_COLORPICKER_VALIDATORS: any;
|
|
22
|
-
export type ColorFormat = 'hex' | 'rgb' | 'hsl' | 'hsv';
|
|
23
23
|
export declare class MtxColorpickerInput implements ControlValueAccessor, AfterViewInit, OnDestroy {
|
|
24
24
|
private _elementRef;
|
|
25
25
|
private _formField;
|
|
@@ -36,7 +36,7 @@ export declare class MtxColorpickerInput implements ControlValueAccessor, AfterV
|
|
|
36
36
|
set value(value: string | null);
|
|
37
37
|
private _value;
|
|
38
38
|
/** The input and output color format. */
|
|
39
|
-
format
|
|
39
|
+
format?: ColorFormat;
|
|
40
40
|
/** Emits when a `change` event is fired on this `<input>`. */
|
|
41
41
|
readonly colorChange: EventEmitter<MtxColorPickerInputEvent>;
|
|
42
42
|
/** Emits when an `input` event is fired on this `<input>`. */
|
|
@@ -78,7 +78,7 @@ export declare class MtxColorpickerInput implements ControlValueAccessor, AfterV
|
|
|
78
78
|
_onKeydown(event: KeyboardEvent): void;
|
|
79
79
|
/** Handles blur events on the input. */
|
|
80
80
|
_onBlur(): void;
|
|
81
|
-
_onInput(
|
|
81
|
+
_onInput(event: Event): void;
|
|
82
82
|
_onChange(): void;
|
|
83
83
|
/** Returns the palette used by the input's form field, if any. */
|
|
84
84
|
getThemePalette(): ThemePalette;
|
|
@@ -4,12 +4,12 @@ import * as i2 from "@angular/cdk/overlay";
|
|
|
4
4
|
import * as i3 from "@angular/cdk/a11y";
|
|
5
5
|
import * as i4 from "@angular/cdk/portal";
|
|
6
6
|
import * as i5 from "@angular/material/button";
|
|
7
|
-
import * as i6 from "
|
|
8
|
-
import * as i7 from "./colorpicker";
|
|
9
|
-
import * as i8 from "./colorpicker-
|
|
10
|
-
import * as i9 from "
|
|
7
|
+
import * as i6 from "./colorpicker";
|
|
8
|
+
import * as i7 from "./colorpicker-input";
|
|
9
|
+
import * as i8 from "./colorpicker-toggle";
|
|
10
|
+
import * as i9 from "@acrodata/color-picker";
|
|
11
11
|
export declare class MtxColorpickerModule {
|
|
12
12
|
static ɵfac: i0.ɵɵFactoryDeclaration<MtxColorpickerModule, never>;
|
|
13
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<MtxColorpickerModule, never, [typeof i1.CommonModule, typeof i2.OverlayModule, typeof i3.A11yModule, typeof i4.PortalModule, typeof i5.MatButtonModule, typeof i6.
|
|
13
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<MtxColorpickerModule, never, [typeof i1.CommonModule, typeof i2.OverlayModule, typeof i3.A11yModule, typeof i4.PortalModule, typeof i5.MatButtonModule, typeof i6.MtxColorpicker, typeof i6.MtxColorpickerContent, typeof i7.MtxColorpickerInput, typeof i8.MtxColorpickerToggle, typeof i8.MtxColorpickerToggleIcon, typeof i9.ColorPicker], [typeof i6.MtxColorpicker, typeof i6.MtxColorpickerContent, typeof i7.MtxColorpickerInput, typeof i8.MtxColorpickerToggle, typeof i8.MtxColorpickerToggleIcon]>;
|
|
14
14
|
static ɵinj: i0.ɵɵInjectorDeclaration<MtxColorpickerModule>;
|
|
15
15
|
}
|
|
@@ -3,8 +3,8 @@ import { Overlay, ScrollStrategy } from '@angular/cdk/overlay';
|
|
|
3
3
|
import { ChangeDetectorRef, EventEmitter, InjectionToken, OnChanges, OnDestroy, TemplateRef, ViewContainerRef } from '@angular/core';
|
|
4
4
|
import { ThemePalette } from '@angular/material/core';
|
|
5
5
|
import { Subject } from 'rxjs';
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
6
|
+
import { ColorFormat } from '@acrodata/color-picker';
|
|
7
|
+
import { MtxColorpickerInput } from './colorpicker-input';
|
|
8
8
|
import * as i0 from "@angular/core";
|
|
9
9
|
/** Injection token that determines the scroll handling while the panel is open. */
|
|
10
10
|
export declare const MTX_COLORPICKER_SCROLL_STRATEGY: InjectionToken<() => ScrollStrategy>;
|
|
@@ -29,7 +29,6 @@ export declare class MtxColorpickerContent implements OnDestroy {
|
|
|
29
29
|
constructor(_changeDetectorRef: ChangeDetectorRef);
|
|
30
30
|
_startExitAnimation(): void;
|
|
31
31
|
ngOnDestroy(): void;
|
|
32
|
-
getColorString(e: ColorEvent): string;
|
|
33
32
|
static ɵfac: i0.ɵɵFactoryDeclaration<MtxColorpickerContent, never>;
|
|
34
33
|
static ɵcmp: i0.ɵɵComponentDeclaration<MtxColorpickerContent, "mtx-colorpicker-content", ["mtxColorpickerContent"], { "color": { "alias": "color"; "required": false; }; }, {}, never, never, true, never>;
|
|
35
34
|
}
|
|
@@ -70,9 +69,9 @@ export declare class MtxColorpicker implements OnChanges, OnDestroy {
|
|
|
70
69
|
set color(value: ThemePalette);
|
|
71
70
|
private _color;
|
|
72
71
|
/** The input and output color format. */
|
|
73
|
-
get format(): ColorFormat;
|
|
74
|
-
set format(value: ColorFormat);
|
|
75
|
-
_format
|
|
72
|
+
get format(): ColorFormat | undefined;
|
|
73
|
+
set format(value: ColorFormat | undefined);
|
|
74
|
+
_format?: ColorFormat;
|
|
76
75
|
/** The currently selected color. */
|
|
77
76
|
get selected(): string;
|
|
78
77
|
set selected(value: string);
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export * from './colorpicker-module';
|
|
2
2
|
export { MTX_COLORPICKER_SCROLL_STRATEGY, MTX_COLORPICKER_SCROLL_STRATEGY_FACTORY, MTX_COLORPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER, MtxColorpickerContent, ColorpickerDropdownPositionX, ColorpickerDropdownPositionY, MtxColorpicker, } from './colorpicker';
|
|
3
|
-
export { MTX_COLORPICKER_VALUE_ACCESSOR, MTX_COLORPICKER_VALIDATORS, MtxColorpickerInput,
|
|
3
|
+
export { MTX_COLORPICKER_VALUE_ACCESSOR, MTX_COLORPICKER_VALIDATORS, MtxColorpickerInput, } from './colorpicker-input';
|
|
4
4
|
export * from './colorpicker-toggle';
|
|
5
5
|
export * from './colorpicker-animations';
|
|
6
|
+
export { ColorFormat } from '@acrodata/color-picker';
|
|
@@ -76,8 +76,6 @@ export class MtxColorpickerInput {
|
|
|
76
76
|
constructor(_elementRef, _formField) {
|
|
77
77
|
this._elementRef = _elementRef;
|
|
78
78
|
this._formField = _formField;
|
|
79
|
-
/** The input and output color format. */
|
|
80
|
-
this.format = 'hex';
|
|
81
79
|
/** Emits when a `change` event is fired on this `<input>`. */
|
|
82
80
|
this.colorChange = new EventEmitter();
|
|
83
81
|
/** Emits when an `input` event is fired on this `<input>`. */
|
|
@@ -162,7 +160,8 @@ export class MtxColorpickerInput {
|
|
|
162
160
|
}
|
|
163
161
|
this._onTouched();
|
|
164
162
|
}
|
|
165
|
-
_onInput(
|
|
163
|
+
_onInput(event) {
|
|
164
|
+
const value = event.target.value;
|
|
166
165
|
const nextValue = value;
|
|
167
166
|
this._value = nextValue;
|
|
168
167
|
this._cvaOnChange(nextValue);
|
|
@@ -181,7 +180,7 @@ export class MtxColorpickerInput {
|
|
|
181
180
|
this._elementRef.nativeElement.value = value ? value : '';
|
|
182
181
|
}
|
|
183
182
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: MtxColorpickerInput, deps: [{ token: i0.ElementRef }, { token: i1.MatFormField, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
184
|
-
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "18.2.0", type: MtxColorpickerInput, isStandalone: true, selector: "input[mtxColorpicker]", inputs: { mtxColorpicker: "mtxColorpicker", disabled: ["disabled", "disabled", booleanAttribute], value: "value", format: "format" }, outputs: { colorChange: "colorChange", colorInput: "colorInput" }, host: { listeners: { "input": "_onInput($event
|
|
183
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "18.2.0", type: MtxColorpickerInput, isStandalone: true, selector: "input[mtxColorpicker]", inputs: { mtxColorpicker: "mtxColorpicker", disabled: ["disabled", "disabled", booleanAttribute], value: "value", format: "format" }, outputs: { colorChange: "colorChange", colorInput: "colorInput" }, host: { listeners: { "input": "_onInput($event)", "change": "_onChange()", "blur": "_onBlur()", "keydown": "_onKeydown($event)" }, properties: { "attr.aria-haspopup": "_picker ? \"dialog\" : null", "attr.aria-owns": "(_picker?.opened && _picker.id) || null", "disabled": "disabled" }, classAttribute: "mtx-colorpicker-input" }, providers: [
|
|
185
184
|
MTX_COLORPICKER_VALUE_ACCESSOR,
|
|
186
185
|
MTX_COLORPICKER_VALIDATORS,
|
|
187
186
|
{ provide: MAT_INPUT_VALUE_ACCESSOR, useExisting: MtxColorpickerInput },
|
|
@@ -201,7 +200,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
|
201
200
|
'[attr.aria-haspopup]': '_picker ? "dialog" : null',
|
|
202
201
|
'[attr.aria-owns]': '(_picker?.opened && _picker.id) || null',
|
|
203
202
|
'[disabled]': 'disabled',
|
|
204
|
-
'(input)': '_onInput($event
|
|
203
|
+
'(input)': '_onInput($event)',
|
|
205
204
|
'(change)': '_onChange()',
|
|
206
205
|
'(blur)': '_onBlur()',
|
|
207
206
|
'(keydown)': '_onKeydown($event)',
|
|
@@ -225,4 +224,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
|
225
224
|
}], colorInput: [{
|
|
226
225
|
type: Output
|
|
227
226
|
}] } });
|
|
228
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3JwaWNrZXItaW5wdXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9leHRlbnNpb25zL2NvbG9ycGlja2VyL2NvbG9ycGlja2VyLWlucHV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRCxPQUFPLEVBRUwsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBRUwsUUFBUSxFQUNSLE1BQU0sRUFDTixnQkFBZ0IsRUFDaEIsVUFBVSxHQUNYLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFHTCxhQUFhLEVBQ2IsaUJBQWlCLEVBR2pCLFVBQVUsR0FDWCxNQUFNLGdCQUFnQixDQUFDO0FBR3hCLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7OztBQUlwQyxNQUFNLE9BQU8sd0JBQXdCO0lBSW5DO0lBQ0UsMkVBQTJFO0lBQ3BFLE1BQTJCO0lBQ2xDLG1GQUFtRjtJQUM1RSxhQUEwQjtRQUYxQixXQUFNLEdBQU4sTUFBTSxDQUFxQjtRQUUzQixrQkFBYSxHQUFiLGFBQWEsQ0FBYTtRQUVqQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO0lBQ2pDLENBQUM7Q0FDRjtBQUVELE1BQU0sQ0FBQyxNQUFNLDhCQUE4QixHQUFRO0lBQ2pELE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztJQUNsRCxLQUFLLEVBQUUsSUFBSTtDQUNaLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBUTtJQUM3QyxPQUFPLEVBQUUsYUFBYTtJQUN0QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG1C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QUFtQixFQUFFO1NBQ3hFOzsyRkFjVSxtQkFBbUI7a0JBcEIvQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx1QkFBdUI7b0JBQ2pDLFNBQVMsRUFBRTt3QkFDVCw4QkFBOEI7d0JBQzlCLDBCQUEwQjt3QkFDMUIsRUFBRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsV0FBVyxxQkFBcUIsRUFBRTtxQkFDeEU7b0JBQ0QsSUFBSSxFQUFFO3dCQUNKLE9BQU8sRUFBRSx1QkFBdUI7d0JBQ2hDLHNCQUFzQixFQUFFLDJCQUEyQjt3QkFDbkQsa0JBQWtCLEVBQUUseUNBQXlDO3dCQUM3RCxZQUFZLEVBQUUsVUFBVTt3QkFDeEIsU0FBUyxFQUFFLCtCQUErQjt3QkFDMUMsVUFBVSxFQUFFLGFBQWE7d0JBQ3pCLFFBQVEsRUFBRSxXQUFXO3dCQUNyQixXQUFXLEVBQUUsb0JBQW9CO3FCQUNsQztvQkFDRCxRQUFRLEVBQUUscUJBQXFCO29CQUMvQixVQUFVLEVBQUUsSUFBSTtpQkFDakI7OzBCQWtHSSxRQUFRO3lDQTVGUCxjQUFjO3NCQURqQixLQUFLO2dCQXNCRixRQUFRO3NCQURYLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBMkJsQyxLQUFLO3NCQURSLEtBQUs7Z0JBY0csTUFBTTtzQkFBZCxLQUFLO2dCQUdhLFdBQVc7c0JBQTdCLE1BQU07Z0JBSVksVUFBVTtzQkFBNUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPV05fQVJST1cgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG4gIGZvcndhcmRSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sLFxuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgTkdfVkFMSURBVE9SUyxcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gIFZhbGlkYXRpb25FcnJvcnMsXG4gIFZhbGlkYXRvckZuLFxuICBWYWxpZGF0b3JzLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBUaGVtZVBhbGV0dGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTUFUX0lOUFVUX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IE10eENvbG9ycGlja2VyIH0gZnJvbSAnLi9jb2xvcnBpY2tlcic7XG5cbmV4cG9ydCBjbGFzcyBNdHhDb2xvclBpY2tlcklucHV0RXZlbnQge1xuICAvKiogVGhlIG5ldyB2YWx1ZSBmb3IgdGhlIHRhcmdldCBjb2xvcnBpY2tlciBpbnB1dC4gKi9cbiAgdmFsdWU6IHN0cmluZyB8IG51bGw7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgLyoqIFJlZmVyZW5jZSB0byB0aGUgY29sb3JwaWNrZXIgaW5wdXQgY29tcG9uZW50IHRoYXQgZW1pdHRlZCB0aGUgZXZlbnQuICovXG4gICAgcHVibGljIHRhcmdldDogTXR4Q29sb3JwaWNrZXJJbnB1dCxcbiAgICAvKiogUmVmZXJlbmNlIHRvIHRoZSBuYXRpdmUgaW5wdXQgZWxlbWVudCBhc3NvY2lhdGVkIHdpdGggdGhlIGNvbG9ycGlja2VyIGlucHV0LiAqL1xuICAgIHB1YmxpYyB0YXJnZXRFbGVtZW50OiBIVE1MRWxlbWVudFxuICApIHtcbiAgICB0aGlzLnZhbHVlID0gdGhpcy50YXJnZXQudmFsdWU7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IE1UWF9DT0xPUlBJQ0tFUl9WQUxVRV9BQ0NFU1NPUjogYW55ID0ge1xuICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTXR4Q29sb3JwaWNrZXJJbnB1dCksXG4gIG11bHRpOiB0cnVlLFxufTtcblxuZXhwb3J0IGNvbnN0IE1UWF9DT0xPUlBJQ0tFUl9WQUxJREFUT1JTOiBhbnkgPSB7XG4gIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IE10eENvbG9ycGlja2VySW5wdXQpLFxuICBtdWx0aTogdHJ1ZSxcbn07XG5cbmV4cG9ydCB0eXBlIENvbG9yRm9ybWF0ID0gJ2hleCcgfCAncmdiJyB8ICdoc2wnIHwgJ2hzdic7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ2lucHV0W210eENvbG9ycGlja2VyXScsXG4gIHByb3ZpZGVyczogW1xuICAgIE1UWF9DT0xPUlBJQ0tFUl9WQUxVRV9BQ0NFU1NPUixcbiAgICBNVFhfQ09MT1JQSUNLRVJfVkFMSURBVE9SUyxcbiAgICB7IHByb3ZpZGU6IE1BVF9JTlBVVF9WQUxVRV9BQ0NFU1NPUiwgdXNlRXhpc3Rpbmc6IE10eENvbG9ycGlja2VySW5wdXQgfSxcbiAgXSxcbiAgaG9zdDoge1xuICAgICdjbGFzcyc6ICdtdHgtY29sb3JwaWNrZXItaW5wdXQnLFxuICAgICdbYXR0ci5hcmlhLWhhc3BvcHVwXSc6ICdfcGlja2VyID8gXCJkaWFsb2dcIiA6IG51bGwnLFxuICAgICdbYXR0ci5hcmlhLW93bnNdJzogJyhfcGlja2VyPy5vcGVuZWQgJiYgX3BpY2tlci5pZCkgfHwgbnVsbCcsXG4gICAgJ1tkaXNhYmxlZF0nOiAnZGlzYWJsZWQnLFxuICAgICcoaW5wdXQpJzogJ19vbklucHV0KCRldmVudC50YXJnZXQudmFsdWUpJyxcbiAgICAnKGNoYW5nZSknOiAnX29uQ2hhbmdlKCknLFxuICAgICcoYmx1ciknOiAnX29uQmx1cigpJyxcbiAgICAnKGtleWRvd24pJzogJ19vbktleWRvd24oJGV2ZW50KScsXG4gIH0sXG4gIGV4cG9ydEFzOiAnbXR4Q29sb3JwaWNrZXJJbnB1dCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIE10eENvbG9ycGlja2VySW5wdXQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgLyoqIFdoZXRoZXIgdGhlIGNvbXBvbmVudCBoYXMgYmVlbiBpbml0aWFsaXplZC4gKi9cbiAgcHJpdmF0ZSBfaXNJbml0aWFsaXplZCE6IGJvb2xlYW47XG5cbiAgQElucHV0KClcbiAgc2V0IG10eENvbG9ycGlja2VyKHZhbHVlOiBNdHhDb2xvcnBpY2tlcikge1xuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9waWNrZXIgPSB2YWx1ZTtcbiAgICB0aGlzLl9waWNrZXIucmVnaXN0ZXJJbnB1dCh0aGlzKTtcbiAgICB0aGlzLl9waWNrZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcblxuICAgIHRoaXMuX3BpY2tlclN1YnNjcmlwdGlvbiA9IHRoaXMuX3BpY2tlci5fc2VsZWN0ZWRDaGFuZ2VkLnN1YnNjcmliZSgoc2VsZWN0ZWQ6IHN0cmluZykgPT4ge1xuICAgICAgdGhpcy52YWx1ZSA9IHNlbGVjdGVkO1xuICAgICAgdGhpcy5fY3ZhT25DaGFuZ2Uoc2VsZWN0ZWQpO1xuICAgICAgdGhpcy5fb25Ub3VjaGVkKCk7XG4gICAgICB0aGlzLmNvbG9ySW5wdXQuZW1pdChuZXcgTXR4Q29sb3JQaWNrZXJJbnB1dEV2ZW50KHRoaXMsIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCkpO1xuICAgICAgdGhpcy5jb2xvckNoYW5nZS5lbWl0KG5ldyBNdHhDb2xvclBpY2tlcklucHV0RXZlbnQodGhpcywgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KSk7XG4gICAgfSk7XG4gIH1cbiAgX3BpY2tlciE6IE10eENvbG9ycGlja2VyO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBjb2xvcnBpY2tlci1pbnB1dCBpcyBkaXNhYmxlZC4gKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLl9kaXNhYmxlZDtcbiAgfVxuICBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuXG4gICAgaWYgKHRoaXMuX2Rpc2FibGVkICE9PSB2YWx1ZSkge1xuICAgICAgdGhpcy5fZGlzYWJsZWQgPSB2YWx1ZTtcbiAgICAgIHRoaXMuX2Rpc2FibGVkQ2hhbmdlLmVtaXQodmFsdWUpO1xuICAgIH1cblxuICAgIC8vIFdlIG5lZWQgdG8gbnVsbCBjaGVjayB0aGUgYGJsdXJgIG1ldGhvZCwgYmVjYXVzZSBpdCdzIHVuZGVmaW5lZCBkdXJpbmcgU1NSLlxuICAgIC8vIEluIEl2eSBzdGF0aWMgYmluZGluZ3MgYXJlIGludm9rZWQgZWFybGllciwgYmVmb3JlIHRoZSBlbGVtZW50IGlzIGF0dGFjaGVkIHRvIHRoZSBET00uXG4gICAgLy8gVGhpcyBjYW4gY2F1c2UgYW4gZXJyb3IgdG8gYmUgdGhyb3duIGluIHNvbWUgYnJvd3NlcnMgKElFL0VkZ2UpIHdoaWNoIGFzc2VydCB0aGF0IHRoZVxuICAgIC8vIGVsZW1lbnQgaGFzIGJlZW4gaW5zZXJ0ZWQuXG4gICAgaWYgKHZhbHVlICYmIHRoaXMuX2lzSW5pdGlhbGl6ZWQgJiYgZWxlbWVudC5ibHVyKSB7XG4gICAgICAvLyBOb3JtYWxseSwgbmF0aXZlIGlucHV0IGVsZW1lbnRzIGF1dG9tYXRpY2FsbHkgYmx1ciBpZiB0aGV5IHR1cm4gZGlzYWJsZWQuIFRoaXMgYmVoYXZpb3JcbiAgICAgIC8vIGlzIHByb2JsZW1hdGljLCBiZWNhdXNlIGl0IHdvdWxkIG1lYW4gdGhhdCBpdCB0cmlnZ2VycyBhbm90aGVyIGNoYW5nZSBkZXRlY3Rpb24gY3ljbGUsXG4gICAgICAvLyB3aGljaCB0aGVuIGNhdXNlcyBhIGNoYW5nZWQgYWZ0ZXIgY2hlY2tlZCBlcnJvciBpZiB0aGUgaW5wdXQgZWxlbWVudCB3YXMgZm9jdXNlZCBiZWZvcmUuXG4gICAgICBlbGVtZW50LmJsdXIoKTtcbiAgICB9XG4gIH1cbiAgcHJpdmF0ZSBfZGlzYWJsZWQhOiBib29sZWFuO1xuXG4gIC8qKiBUaGUgdmFsdWUgb2YgdGhlIGlucHV0LiAqL1xuICBASW5wdXQoKVxuICBnZXQgdmFsdWUoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICB9XG4gIHNldCB2YWx1ZSh2YWx1ZTogc3RyaW5nIHwgbnVsbCkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy52YWx1ZTtcbiAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMuX2Zvcm1hdFZhbHVlKHZhbHVlKTtcblxuICAgIHRoaXMuX3ZhbHVlQ2hhbmdlLmVtaXQodmFsdWUpO1xuICB9XG4gIHByaXZhdGUgX3ZhbHVlITogc3RyaW5nIHwgbnVsbDtcblxuICAvKiogVGhlIGlucHV0IGFuZCBvdXRwdXQgY29sb3IgZm9ybWF0LiAqL1xuICBASW5wdXQoKSBmb3JtYXQ6IENvbG9yRm9ybWF0ID0gJ2hleCc7XG5cbiAgLyoqIEVtaXRzIHdoZW4gYSBgY2hhbmdlYCBldmVudCBpcyBmaXJlZCBvbiB0aGlzIGA8aW5wdXQ+YC4gKi9cbiAgQE91dHB1dCgpIHJlYWRvbmx5IGNvbG9yQ2hhbmdlOiBFdmVudEVtaXR0ZXI8TXR4Q29sb3JQaWNrZXJJbnB1dEV2ZW50PiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxNdHhDb2xvclBpY2tlcklucHV0RXZlbnQ+KCk7XG5cbiAgLyoqIEVtaXRzIHdoZW4gYW4gYGlucHV0YCBldmVudCBpcyBmaXJlZCBvbiB0aGlzIGA8aW5wdXQ+YC4gKi9cbiAgQE91dHB1dCgpIHJlYWRvbmx5IGNvbG9ySW5wdXQ6IEV2ZW50RW1pdHRlcjxNdHhDb2xvclBpY2tlcklucHV0RXZlbnQ+ID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyPE10eENvbG9yUGlja2VySW5wdXRFdmVudD4oKTtcblxuICAvKiogRW1pdHMgd2hlbiB0aGUgZGlzYWJsZWQgc3RhdGUgaGFzIGNoYW5nZWQgKi9cbiAgX2Rpc2FibGVkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIC8qKiBFbWl0cyB3aGVuIHRoZSB2YWx1ZSBjaGFuZ2VzIChlaXRoZXIgZHVlIHRvIHVzZXIgaW5wdXQgb3IgcHJvZ3JhbW1hdGljIGNoYW5nZSkuICovXG4gIF92YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nIHwgbnVsbD4oKTtcblxuICBfb25Ub3VjaGVkID0gKCkgPT4ge307XG5cbiAgX3ZhbGlkYXRvck9uQ2hhbmdlID0gKCkgPT4ge307XG5cbiAgcHJpdmF0ZSBfY3ZhT25DaGFuZ2U6ICh2YWx1ZTogYW55KSA9PiB2b2lkID0gKCkgPT4ge307XG5cbiAgcHJpdmF0ZSBfcGlja2VyU3Vic2NyaXB0aW9uID0gU3Vic2NyaXB0aW9uLkVNUFRZO1xuXG4gIC8qKiBUaGUgY29tYmluZWQgZm9ybSBjb250cm9sIHZhbGlkYXRvciBmb3IgdGhpcyBpbnB1dC4gKi9cbiAgcHJpdmF0ZSBfdmFsaWRhdG9yOiBWYWxpZGF0b3JGbiB8IG51bGwgPSBWYWxpZGF0b3JzLmNvbXBvc2UoW10pO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBsYXN0IHZhbHVlIHNldCBvbiB0aGUgaW5wdXQgd2FzIHZhbGlkLiAqL1xuICBwcml2YXRlIF9sYXN0VmFsdWVWYWxpZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD4sXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfZm9ybUZpZWxkOiBNYXRGb3JtRmllbGRcbiAgKSB7fVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLl9pc0luaXRpYWxpemVkID0gdHJ1ZTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX3BpY2tlclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuX3ZhbHVlQ2hhbmdlLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fZGlzYWJsZWRDaGFuZ2UuY29tcGxldGUoKTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25WYWxpZGF0b3JDaGFuZ2UoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLl92YWxpZGF0b3JPbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgLyoqIEBkb2NzLXByaXZhdGUgKi9cbiAgdmFsaWRhdGUoYzogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl92YWxpZGF0b3IgPyB0aGlzLl92YWxpZGF0b3IoYykgOiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkXG4gICAqIEBicmVha2luZy1jaGFuZ2UgOC4wLjAgVXNlIGBnZXRDb25uZWN0ZWRPdmVybGF5T3JpZ2luYCBpbnN0ZWFkXG4gICAqL1xuICBnZXRQb3B1cENvbm5lY3Rpb25FbGVtZW50UmVmKCk6IEVsZW1lbnRSZWYge1xuICAgIHJldHVybiB0aGlzLmdldENvbm5lY3RlZE92ZXJsYXlPcmlnaW4oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBlbGVtZW50IHRoYXQgdGhlIGNvbG9ycGlja2VyIHBvcHVwIHNob3VsZCBiZSBjb25uZWN0ZWQgdG8uXG4gICAqIEByZXR1cm4gVGhlIGVsZW1lbnQgdG8gY29ubmVjdCB0aGUgcG9wdXAgdG8uXG4gICAqL1xuICBnZXRDb25uZWN0ZWRPdmVybGF5T3JpZ2luKCk6IEVsZW1lbnRSZWYge1xuICAgIHJldHVybiB0aGlzLl9mb3JtRmllbGQgPyB0aGlzLl9mb3JtRmllbGQuZ2V0Q29ubmVjdGVkT3ZlcmxheU9yaWdpbigpIDogdGhpcy5fZWxlbWVudFJlZjtcbiAgfVxuXG4gIC8qKiBHZXRzIHRoZSBJRCBvZiBhbiBlbGVtZW50IHRoYXQgc2hvdWxkIGJlIHVzZWQgYSBkZXNjcmlwdGlvbiBmb3IgdGhlIG92ZXJsYXkuICovXG4gIGdldE92ZXJsYXlMYWJlbElkKCk6IHN0cmluZyB8IG51bGwge1xuICAgIGlmICh0aGlzLl9mb3JtRmllbGQpIHtcbiAgICAgIHJldHVybiB0aGlzLl9mb3JtRmllbGQuZ2V0TGFiZWxJZCgpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuZ2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsbGVkYnknKTtcbiAgfVxuXG4gIC8vIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gIHdyaXRlVmFsdWUodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIC8vIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogYW55KSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5fY3ZhT25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIC8vIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5fb25Ub3VjaGVkID0gZm47XG4gIH1cblxuICAvLyBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLlxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIF9vbktleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBjb25zdCBpc0FsdERvd25BcnJvdyA9IGV2ZW50LmFsdEtleSAmJiBldmVudC5rZXlDb2RlID09PSBET1dOX0FSUk9XO1xuXG4gICAgaWYgKHRoaXMuX3BpY2tlciAmJiBpc0FsdERvd25BcnJvdyAmJiAhdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnJlYWRPbmx5KSB7XG4gICAgICB0aGlzLl9waWNrZXIub3BlbigpO1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gIH1cblxuICAvKiogSGFuZGxlcyBibHVyIGV2ZW50cyBvbiB0aGUgaW5wdXQuICovXG4gIF9vbkJsdXIoKSB7XG4gICAgLy8gUmVmb3JtYXQgdGhlIGlucHV0IG9ubHkgaWYgd2UgaGF2ZSBhIHZhbGlkIHZhbHVlLlxuICAgIGlmICh0aGlzLnZhbHVlKSB7XG4gICAgICB0aGlzLl9mb3JtYXRWYWx1ZSh0aGlzLnZhbHVlKTtcbiAgICB9XG5cbiAgICB0aGlzLl9vblRvdWNoZWQoKTtcbiAgfVxuXG4gIF9vbklucHV0KHZhbHVlOiBzdHJpbmcpIHtcbiAgICBjb25zdCBuZXh0VmFsdWUgPSB2YWx1ZTtcblxuICAgIHRoaXMuX3ZhbHVlID0gbmV4dFZhbHVlO1xuICAgIHRoaXMuX2N2YU9uQ2hhbmdlKG5leHRWYWx1ZSk7XG4gICAgdGhpcy5fdmFsdWVDaGFuZ2UuZW1pdChuZXh0VmFsdWUpO1xuICAgIHRoaXMuY29sb3JJbnB1dC5lbWl0KG5ldyBNdHhDb2xvclBpY2tlcklucHV0RXZlbnQodGhpcywgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KSk7XG4gIH1cblxuICBfb25DaGFuZ2UoKSB7XG4gICAgdGhpcy5jb2xvckNoYW5nZS5lbWl0KG5ldyBNdHhDb2xvclBpY2tlcklucHV0RXZlbnQodGhpcywgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KSk7XG4gIH1cblxuICAvKiogUmV0dXJucyB0aGUgcGFsZXR0ZSB1c2VkIGJ5IHRoZSBpbnB1dCdzIGZvcm0gZmllbGQsIGlmIGFueS4gKi9cbiAgZ2V0VGhlbWVQYWxldHRlKCk6IFRoZW1lUGFsZXR0ZSB7XG4gICAgcmV0dXJuIHRoaXMuX2Zvcm1GaWVsZCA/IHRoaXMuX2Zvcm1GaWVsZC5jb2xvciA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKiBUT0RPOiBGb3JtYXRzIGEgdmFsdWUgYW5kIHNldHMgaXQgb24gdGhlIGlucHV0IGVsZW1lbnQuICovXG4gIHByaXZhdGUgX2Zvcm1hdFZhbHVlKHZhbHVlOiBzdHJpbmcgfCBudWxsKSB7XG4gICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnZhbHVlID0gdmFsdWUgPyB2YWx1ZSA6ICcnO1xuICB9XG59XG4iXX0=
|
|
227
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3JwaWNrZXItaW5wdXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9leHRlbnNpb25zL2NvbG9ycGlja2VyL2NvbG9ycGlja2VyLWlucHV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNuRCxPQUFPLEVBRUwsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBRUwsUUFBUSxFQUNSLE1BQU0sRUFDTixnQkFBZ0IsRUFDaEIsVUFBVSxHQUNYLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFHTCxhQUFhLEVBQ2IsaUJBQWlCLEVBR2pCLFVBQVUsR0FDWCxNQUFNLGdCQUFnQixDQUFDO0FBR3hCLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7OztBQUtwQyxNQUFNLE9BQU8sd0JBQXdCO0lBSW5DO0lBQ0UsMkVBQTJFO0lBQ3BFLE1BQTJCO0lBQ2xDLG1GQUFtRjtJQUM1RSxhQUEwQjtRQUYxQixXQUFNLEdBQU4sTUFBTSxDQUFxQjtRQUUzQixrQkFBYSxHQUFiLGFBQWEsQ0FBYTtRQUVqQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO0lBQ2pDLENBQUM7Q0FDRjtBQUVELE1BQU0sQ0FBQyxNQUFNLDhCQUE4QixHQUFRO0lBQ2pELE9BQU8sRUFBRSxpQkFBaUI7SUFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztJQUNsRCxLQUFLLEVBQUUsSUFBSTtDQUNaLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBUTtJQUM3QyxPQUFPLEVBQUUsYUFBYTtJQUN0QixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG1C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V0FBVyxFQUFFLG1CQUFtQixFQUFFO1NBQ3hFOzsyRkFjVSxtQkFBbUI7a0JBcEIvQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx1QkFBdUI7b0JBQ2pDLFNBQVMsRUFBRTt3QkFDVCw4QkFBOEI7d0JBQzlCLDBCQUEwQjt3QkFDMUIsRUFBRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsV0FBVyxxQkFBcUIsRUFBRTtxQkFDeEU7b0JBQ0QsSUFBSSxFQUFFO3dCQUNKLE9BQU8sRUFBRSx1QkFBdUI7d0JBQ2hDLHNCQUFzQixFQUFFLDJCQUEyQjt3QkFDbkQsa0JBQWtCLEVBQUUseUNBQXlDO3dCQUM3RCxZQUFZLEVBQUUsVUFBVTt3QkFDeEIsU0FBUyxFQUFFLGtCQUFrQjt3QkFDN0IsVUFBVSxFQUFFLGFBQWE7d0JBQ3pCLFFBQVEsRUFBRSxXQUFXO3dCQUNyQixXQUFXLEVBQUUsb0JBQW9CO3FCQUNsQztvQkFDRCxRQUFRLEVBQUUscUJBQXFCO29CQUMvQixVQUFVLEVBQUUsSUFBSTtpQkFDakI7OzBCQWtHSSxRQUFRO3lDQTVGUCxjQUFjO3NCQURqQixLQUFLO2dCQXNCRixRQUFRO3NCQURYLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBMkJsQyxLQUFLO3NCQURSLEtBQUs7Z0JBY0csTUFBTTtzQkFBZCxLQUFLO2dCQUdhLFdBQVc7c0JBQTdCLE1BQU07Z0JBSVksVUFBVTtzQkFBNUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPV05fQVJST1cgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xuaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG4gIGZvcndhcmRSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sLFxuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgTkdfVkFMSURBVE9SUyxcbiAgTkdfVkFMVUVfQUNDRVNTT1IsXG4gIFZhbGlkYXRpb25FcnJvcnMsXG4gIFZhbGlkYXRvckZuLFxuICBWYWxpZGF0b3JzLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBUaGVtZVBhbGV0dGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IE1hdEZvcm1GaWVsZCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTUFUX0lOUFVUX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IENvbG9yRm9ybWF0IH0gZnJvbSAnQGFjcm9kYXRhL2NvbG9yLXBpY2tlcic7XG5pbXBvcnQgeyBNdHhDb2xvcnBpY2tlciB9IGZyb20gJy4vY29sb3JwaWNrZXInO1xuXG5leHBvcnQgY2xhc3MgTXR4Q29sb3JQaWNrZXJJbnB1dEV2ZW50IHtcbiAgLyoqIFRoZSBuZXcgdmFsdWUgZm9yIHRoZSB0YXJnZXQgY29sb3JwaWNrZXIgaW5wdXQuICovXG4gIHZhbHVlOiBzdHJpbmcgfCBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIC8qKiBSZWZlcmVuY2UgdG8gdGhlIGNvbG9ycGlja2VyIGlucHV0IGNvbXBvbmVudCB0aGF0IGVtaXR0ZWQgdGhlIGV2ZW50LiAqL1xuICAgIHB1YmxpYyB0YXJnZXQ6IE10eENvbG9ycGlja2VySW5wdXQsXG4gICAgLyoqIFJlZmVyZW5jZSB0byB0aGUgbmF0aXZlIGlucHV0IGVsZW1lbnQgYXNzb2NpYXRlZCB3aXRoIHRoZSBjb2xvcnBpY2tlciBpbnB1dC4gKi9cbiAgICBwdWJsaWMgdGFyZ2V0RWxlbWVudDogSFRNTEVsZW1lbnRcbiAgKSB7XG4gICAgdGhpcy52YWx1ZSA9IHRoaXMudGFyZ2V0LnZhbHVlO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCBNVFhfQ09MT1JQSUNLRVJfVkFMVUVfQUNDRVNTT1I6IGFueSA9IHtcbiAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IE10eENvbG9ycGlja2VySW5wdXQpLFxuICBtdWx0aTogdHJ1ZSxcbn07XG5cbmV4cG9ydCBjb25zdCBNVFhfQ09MT1JQSUNLRVJfVkFMSURBVE9SUzogYW55ID0ge1xuICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBNdHhDb2xvcnBpY2tlcklucHV0KSxcbiAgbXVsdGk6IHRydWUsXG59O1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdpbnB1dFttdHhDb2xvcnBpY2tlcl0nLFxuICBwcm92aWRlcnM6IFtcbiAgICBNVFhfQ09MT1JQSUNLRVJfVkFMVUVfQUNDRVNTT1IsXG4gICAgTVRYX0NPTE9SUElDS0VSX1ZBTElEQVRPUlMsXG4gICAgeyBwcm92aWRlOiBNQVRfSU5QVVRfVkFMVUVfQUNDRVNTT1IsIHVzZUV4aXN0aW5nOiBNdHhDb2xvcnBpY2tlcklucHV0IH0sXG4gIF0sXG4gIGhvc3Q6IHtcbiAgICAnY2xhc3MnOiAnbXR4LWNvbG9ycGlja2VyLWlucHV0JyxcbiAgICAnW2F0dHIuYXJpYS1oYXNwb3B1cF0nOiAnX3BpY2tlciA/IFwiZGlhbG9nXCIgOiBudWxsJyxcbiAgICAnW2F0dHIuYXJpYS1vd25zXSc6ICcoX3BpY2tlcj8ub3BlbmVkICYmIF9waWNrZXIuaWQpIHx8IG51bGwnLFxuICAgICdbZGlzYWJsZWRdJzogJ2Rpc2FibGVkJyxcbiAgICAnKGlucHV0KSc6ICdfb25JbnB1dCgkZXZlbnQpJyxcbiAgICAnKGNoYW5nZSknOiAnX29uQ2hhbmdlKCknLFxuICAgICcoYmx1ciknOiAnX29uQmx1cigpJyxcbiAgICAnKGtleWRvd24pJzogJ19vbktleWRvd24oJGV2ZW50KScsXG4gIH0sXG4gIGV4cG9ydEFzOiAnbXR4Q29sb3JwaWNrZXJJbnB1dCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIE10eENvbG9ycGlja2VySW5wdXQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgLyoqIFdoZXRoZXIgdGhlIGNvbXBvbmVudCBoYXMgYmVlbiBpbml0aWFsaXplZC4gKi9cbiAgcHJpdmF0ZSBfaXNJbml0aWFsaXplZCE6IGJvb2xlYW47XG5cbiAgQElucHV0KClcbiAgc2V0IG10eENvbG9ycGlja2VyKHZhbHVlOiBNdHhDb2xvcnBpY2tlcikge1xuICAgIGlmICghdmFsdWUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9waWNrZXIgPSB2YWx1ZTtcbiAgICB0aGlzLl9waWNrZXIucmVnaXN0ZXJJbnB1dCh0aGlzKTtcbiAgICB0aGlzLl9waWNrZXJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcblxuICAgIHRoaXMuX3BpY2tlclN1YnNjcmlwdGlvbiA9IHRoaXMuX3BpY2tlci5fc2VsZWN0ZWRDaGFuZ2VkLnN1YnNjcmliZSgoc2VsZWN0ZWQ6IHN0cmluZykgPT4ge1xuICAgICAgdGhpcy52YWx1ZSA9IHNlbGVjdGVkO1xuICAgICAgdGhpcy5fY3ZhT25DaGFuZ2Uoc2VsZWN0ZWQpO1xuICAgICAgdGhpcy5fb25Ub3VjaGVkKCk7XG4gICAgICB0aGlzLmNvbG9ySW5wdXQuZW1pdChuZXcgTXR4Q29sb3JQaWNrZXJJbnB1dEV2ZW50KHRoaXMsIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCkpO1xuICAgICAgdGhpcy5jb2xvckNoYW5nZS5lbWl0KG5ldyBNdHhDb2xvclBpY2tlcklucHV0RXZlbnQodGhpcywgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KSk7XG4gICAgfSk7XG4gIH1cbiAgX3BpY2tlciE6IE10eENvbG9ycGlja2VyO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBjb2xvcnBpY2tlci1pbnB1dCBpcyBkaXNhYmxlZC4gKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLl9kaXNhYmxlZDtcbiAgfVxuICBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuXG4gICAgaWYgKHRoaXMuX2Rpc2FibGVkICE9PSB2YWx1ZSkge1xuICAgICAgdGhpcy5fZGlzYWJsZWQgPSB2YWx1ZTtcbiAgICAgIHRoaXMuX2Rpc2FibGVkQ2hhbmdlLmVtaXQodmFsdWUpO1xuICAgIH1cblxuICAgIC8vIFdlIG5lZWQgdG8gbnVsbCBjaGVjayB0aGUgYGJsdXJgIG1ldGhvZCwgYmVjYXVzZSBpdCdzIHVuZGVmaW5lZCBkdXJpbmcgU1NSLlxuICAgIC8vIEluIEl2eSBzdGF0aWMgYmluZGluZ3MgYXJlIGludm9rZWQgZWFybGllciwgYmVmb3JlIHRoZSBlbGVtZW50IGlzIGF0dGFjaGVkIHRvIHRoZSBET00uXG4gICAgLy8gVGhpcyBjYW4gY2F1c2UgYW4gZXJyb3IgdG8gYmUgdGhyb3duIGluIHNvbWUgYnJvd3NlcnMgKElFL0VkZ2UpIHdoaWNoIGFzc2VydCB0aGF0IHRoZVxuICAgIC8vIGVsZW1lbnQgaGFzIGJlZW4gaW5zZXJ0ZWQuXG4gICAgaWYgKHZhbHVlICYmIHRoaXMuX2lzSW5pdGlhbGl6ZWQgJiYgZWxlbWVudC5ibHVyKSB7XG4gICAgICAvLyBOb3JtYWxseSwgbmF0aXZlIGlucHV0IGVsZW1lbnRzIGF1dG9tYXRpY2FsbHkgYmx1ciBpZiB0aGV5IHR1cm4gZGlzYWJsZWQuIFRoaXMgYmVoYXZpb3JcbiAgICAgIC8vIGlzIHByb2JsZW1hdGljLCBiZWNhdXNlIGl0IHdvdWxkIG1lYW4gdGhhdCBpdCB0cmlnZ2VycyBhbm90aGVyIGNoYW5nZSBkZXRlY3Rpb24gY3ljbGUsXG4gICAgICAvLyB3aGljaCB0aGVuIGNhdXNlcyBhIGNoYW5nZWQgYWZ0ZXIgY2hlY2tlZCBlcnJvciBpZiB0aGUgaW5wdXQgZWxlbWVudCB3YXMgZm9jdXNlZCBiZWZvcmUuXG4gICAgICBlbGVtZW50LmJsdXIoKTtcbiAgICB9XG4gIH1cbiAgcHJpdmF0ZSBfZGlzYWJsZWQhOiBib29sZWFuO1xuXG4gIC8qKiBUaGUgdmFsdWUgb2YgdGhlIGlucHV0LiAqL1xuICBASW5wdXQoKVxuICBnZXQgdmFsdWUoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICB9XG4gIHNldCB2YWx1ZSh2YWx1ZTogc3RyaW5nIHwgbnVsbCkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy52YWx1ZTtcbiAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMuX2Zvcm1hdFZhbHVlKHZhbHVlKTtcblxuICAgIHRoaXMuX3ZhbHVlQ2hhbmdlLmVtaXQodmFsdWUpO1xuICB9XG4gIHByaXZhdGUgX3ZhbHVlITogc3RyaW5nIHwgbnVsbDtcblxuICAvKiogVGhlIGlucHV0IGFuZCBvdXRwdXQgY29sb3IgZm9ybWF0LiAqL1xuICBASW5wdXQoKSBmb3JtYXQ/OiBDb2xvckZvcm1hdDtcblxuICAvKiogRW1pdHMgd2hlbiBhIGBjaGFuZ2VgIGV2ZW50IGlzIGZpcmVkIG9uIHRoaXMgYDxpbnB1dD5gLiAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgY29sb3JDaGFuZ2U6IEV2ZW50RW1pdHRlcjxNdHhDb2xvclBpY2tlcklucHV0RXZlbnQ+ID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyPE10eENvbG9yUGlja2VySW5wdXRFdmVudD4oKTtcblxuICAvKiogRW1pdHMgd2hlbiBhbiBgaW5wdXRgIGV2ZW50IGlzIGZpcmVkIG9uIHRoaXMgYDxpbnB1dD5gLiAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgY29sb3JJbnB1dDogRXZlbnRFbWl0dGVyPE10eENvbG9yUGlja2VySW5wdXRFdmVudD4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8TXR4Q29sb3JQaWNrZXJJbnB1dEV2ZW50PigpO1xuXG4gIC8qKiBFbWl0cyB3aGVuIHRoZSBkaXNhYmxlZCBzdGF0ZSBoYXMgY2hhbmdlZCAqL1xuICBfZGlzYWJsZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgLyoqIEVtaXRzIHdoZW4gdGhlIHZhbHVlIGNoYW5nZXMgKGVpdGhlciBkdWUgdG8gdXNlciBpbnB1dCBvciBwcm9ncmFtbWF0aWMgY2hhbmdlKS4gKi9cbiAgX3ZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmcgfCBudWxsPigpO1xuXG4gIF9vblRvdWNoZWQgPSAoKSA9PiB7fTtcblxuICBfdmFsaWRhdG9yT25DaGFuZ2UgPSAoKSA9PiB7fTtcblxuICBwcml2YXRlIF9jdmFPbkNoYW5nZTogKHZhbHVlOiBhbnkpID0+IHZvaWQgPSAoKSA9PiB7fTtcblxuICBwcml2YXRlIF9waWNrZXJTdWJzY3JpcHRpb24gPSBTdWJzY3JpcHRpb24uRU1QVFk7XG5cbiAgLyoqIFRoZSBjb21iaW5lZCBmb3JtIGNvbnRyb2wgdmFsaWRhdG9yIGZvciB0aGlzIGlucHV0LiAqL1xuICBwcml2YXRlIF92YWxpZGF0b3I6IFZhbGlkYXRvckZuIHwgbnVsbCA9IFZhbGlkYXRvcnMuY29tcG9zZShbXSk7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGxhc3QgdmFsdWUgc2V0IG9uIHRoZSBpbnB1dCB3YXMgdmFsaWQuICovXG4gIHByaXZhdGUgX2xhc3RWYWx1ZVZhbGlkID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PixcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIF9mb3JtRmllbGQ6IE1hdEZvcm1GaWVsZFxuICApIHt9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuX2lzSW5pdGlhbGl6ZWQgPSB0cnVlO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fcGlja2VyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5fdmFsdWVDaGFuZ2UuY29tcGxldGUoKTtcbiAgICB0aGlzLl9kaXNhYmxlZENoYW5nZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcmVnaXN0ZXJPblZhbGlkYXRvckNoYW5nZShmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuX3ZhbGlkYXRvck9uQ2hhbmdlID0gZm47XG4gIH1cblxuICAvKiogQGRvY3MtcHJpdmF0ZSAqL1xuICB2YWxpZGF0ZShjOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbGlkYXRvciA/IHRoaXMuX3ZhbGlkYXRvcihjKSA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWRcbiAgICogQGJyZWFraW5nLWNoYW5nZSA4LjAuMCBVc2UgYGdldENvbm5lY3RlZE92ZXJsYXlPcmlnaW5gIGluc3RlYWRcbiAgICovXG4gIGdldFBvcHVwQ29ubmVjdGlvbkVsZW1lbnRSZWYoKTogRWxlbWVudFJlZiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0Q29ubmVjdGVkT3ZlcmxheU9yaWdpbigpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGVsZW1lbnQgdGhhdCB0aGUgY29sb3JwaWNrZXIgcG9wdXAgc2hvdWxkIGJlIGNvbm5lY3RlZCB0by5cbiAgICogQHJldHVybiBUaGUgZWxlbWVudCB0byBjb25uZWN0IHRoZSBwb3B1cCB0by5cbiAgICovXG4gIGdldENvbm5lY3RlZE92ZXJsYXlPcmlnaW4oKTogRWxlbWVudFJlZiB7XG4gICAgcmV0dXJuIHRoaXMuX2Zvcm1GaWVsZCA/IHRoaXMuX2Zvcm1GaWVsZC5nZXRDb25uZWN0ZWRPdmVybGF5T3JpZ2luKCkgOiB0aGlzLl9lbGVtZW50UmVmO1xuICB9XG5cbiAgLyoqIEdldHMgdGhlIElEIG9mIGFuIGVsZW1lbnQgdGhhdCBzaG91bGQgYmUgdXNlZCBhIGRlc2NyaXB0aW9uIGZvciB0aGUgb3ZlcmxheS4gKi9cbiAgZ2V0T3ZlcmxheUxhYmVsSWQoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgaWYgKHRoaXMuX2Zvcm1GaWVsZCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2Zvcm1GaWVsZC5nZXRMYWJlbElkKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWxsZWRieScpO1xuICB9XG5cbiAgLy8gSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgLy8gSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBhbnkpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLl9jdmFPbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgLy8gSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLl9vblRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIC8vIEltcGxlbWVudGVkIGFzIHBhcnQgb2YgQ29udHJvbFZhbHVlQWNjZXNzb3IuXG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgX29uS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGNvbnN0IGlzQWx0RG93bkFycm93ID0gZXZlbnQuYWx0S2V5ICYmIGV2ZW50LmtleUNvZGUgPT09IERPV05fQVJST1c7XG5cbiAgICBpZiAodGhpcy5fcGlja2VyICYmIGlzQWx0RG93bkFycm93ICYmICF0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucmVhZE9ubHkpIHtcbiAgICAgIHRoaXMuX3BpY2tlci5vcGVuKCk7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBIYW5kbGVzIGJsdXIgZXZlbnRzIG9uIHRoZSBpbnB1dC4gKi9cbiAgX29uQmx1cigpIHtcbiAgICAvLyBSZWZvcm1hdCB0aGUgaW5wdXQgb25seSBpZiB3ZSBoYXZlIGEgdmFsaWQgdmFsdWUuXG4gICAgaWYgKHRoaXMudmFsdWUpIHtcbiAgICAgIHRoaXMuX2Zvcm1hdFZhbHVlKHRoaXMudmFsdWUpO1xuICAgIH1cblxuICAgIHRoaXMuX29uVG91Y2hlZCgpO1xuICB9XG5cbiAgX29uSW5wdXQoZXZlbnQ6IEV2ZW50KSB7XG4gICAgY29uc3QgdmFsdWUgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlO1xuICAgIGNvbnN0IG5leHRWYWx1ZSA9IHZhbHVlO1xuXG4gICAgdGhpcy5fdmFsdWUgPSBuZXh0VmFsdWU7XG4gICAgdGhpcy5fY3ZhT25DaGFuZ2UobmV4dFZhbHVlKTtcbiAgICB0aGlzLl92YWx1ZUNoYW5nZS5lbWl0KG5leHRWYWx1ZSk7XG4gICAgdGhpcy5jb2xvcklucHV0LmVtaXQobmV3IE10eENvbG9yUGlja2VySW5wdXRFdmVudCh0aGlzLCB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpKTtcbiAgfVxuXG4gIF9vbkNoYW5nZSgpIHtcbiAgICB0aGlzLmNvbG9yQ2hhbmdlLmVtaXQobmV3IE10eENvbG9yUGlja2VySW5wdXRFdmVudCh0aGlzLCB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpKTtcbiAgfVxuXG4gIC8qKiBSZXR1cm5zIHRoZSBwYWxldHRlIHVzZWQgYnkgdGhlIGlucHV0J3MgZm9ybSBmaWVsZCwgaWYgYW55LiAqL1xuICBnZXRUaGVtZVBhbGV0dGUoKTogVGhlbWVQYWxldHRlIHtcbiAgICByZXR1cm4gdGhpcy5fZm9ybUZpZWxkID8gdGhpcy5fZm9ybUZpZWxkLmNvbG9yIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqIFRPRE86IEZvcm1hdHMgYSB2YWx1ZSBhbmQgc2V0cyBpdCBvbiB0aGUgaW5wdXQgZWxlbWVudC4gKi9cbiAgcHJpdmF0ZSBfZm9ybWF0VmFsdWUodmFsdWU6IHN0cmluZyB8IG51bGwpIHtcbiAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSB2YWx1ZSA/IHZhbHVlIDogJyc7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -4,7 +4,7 @@ import { PortalModule } from '@angular/cdk/portal';
|
|
|
4
4
|
import { CommonModule } from '@angular/common';
|
|
5
5
|
import { NgModule } from '@angular/core';
|
|
6
6
|
import { MatButtonModule } from '@angular/material/button';
|
|
7
|
-
import {
|
|
7
|
+
import { ColorPicker } from '@acrodata/color-picker';
|
|
8
8
|
import { MTX_COLORPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER, MtxColorpicker, MtxColorpickerContent, } from './colorpicker';
|
|
9
9
|
import { MtxColorpickerInput } from './colorpicker-input';
|
|
10
10
|
import { MtxColorpickerToggle, MtxColorpickerToggleIcon } from './colorpicker-toggle';
|
|
@@ -16,12 +16,12 @@ export class MtxColorpickerModule {
|
|
|
16
16
|
A11yModule,
|
|
17
17
|
PortalModule,
|
|
18
18
|
MatButtonModule,
|
|
19
|
-
ColorChromeModule,
|
|
20
19
|
MtxColorpicker,
|
|
21
20
|
MtxColorpickerContent,
|
|
22
21
|
MtxColorpickerInput,
|
|
23
22
|
MtxColorpickerToggle,
|
|
24
|
-
MtxColorpickerToggleIcon
|
|
23
|
+
MtxColorpickerToggleIcon,
|
|
24
|
+
ColorPicker], exports: [MtxColorpicker,
|
|
25
25
|
MtxColorpickerContent,
|
|
26
26
|
MtxColorpickerInput,
|
|
27
27
|
MtxColorpickerToggle,
|
|
@@ -31,9 +31,9 @@ export class MtxColorpickerModule {
|
|
|
31
31
|
A11yModule,
|
|
32
32
|
PortalModule,
|
|
33
33
|
MatButtonModule,
|
|
34
|
-
ColorChromeModule,
|
|
35
34
|
MtxColorpickerContent,
|
|
36
|
-
MtxColorpickerToggle
|
|
35
|
+
MtxColorpickerToggle,
|
|
36
|
+
ColorPicker] }); }
|
|
37
37
|
}
|
|
38
38
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: MtxColorpickerModule, decorators: [{
|
|
39
39
|
type: NgModule,
|
|
@@ -44,12 +44,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
|
44
44
|
A11yModule,
|
|
45
45
|
PortalModule,
|
|
46
46
|
MatButtonModule,
|
|
47
|
-
ColorChromeModule,
|
|
48
47
|
MtxColorpicker,
|
|
49
48
|
MtxColorpickerContent,
|
|
50
49
|
MtxColorpickerInput,
|
|
51
50
|
MtxColorpickerToggle,
|
|
52
51
|
MtxColorpickerToggleIcon,
|
|
52
|
+
ColorPicker,
|
|
53
53
|
],
|
|
54
54
|
exports: [
|
|
55
55
|
MtxColorpicker,
|
|
@@ -61,4 +61,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
|
61
61
|
providers: [MTX_COLORPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER],
|
|
62
62
|
}]
|
|
63
63
|
}] });
|
|
64
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3JwaWNrZXItbW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvZXh0ZW5zaW9ucy9jb2xvcnBpY2tlci9jb2xvcnBpY2tlci1tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRTNELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQ0wsZ0RBQWdELEVBQ2hELGNBQWMsRUFDZCxxQkFBcUIsR0FDdEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDMUQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLHdCQUF3QixFQUFFLE1BQU0sc0JBQXNCLENBQUM7O0FBeUJ0RixNQUFNLE9BQU8sb0JBQW9CO2lJQUFwQixvQkFBb0I7a0lBQXBCLG9CQUFvQixZQXJCN0IsWUFBWTtZQUNaLGFBQWE7WUFDYixVQUFVO1lBQ1YsWUFBWTtZQUNaLGVBQWU7WUFDZixjQUFjO1lBQ2QscUJBQXFCO1lBQ3JCLG1CQUFtQjtZQUNuQixvQkFBb0I7WUFDcEIsd0JBQXdCO1lBQ3hCLFdBQVcsYUFHWCxjQUFjO1lBQ2QscUJBQXFCO1lBQ3JCLG1CQUFtQjtZQUNuQixvQkFBb0I7WUFDcEIsd0JBQXdCO2tJQUlmLG9CQUFvQixhQUZwQixDQUFDLGdEQUFnRCxDQUFDLFlBbkIzRCxZQUFZO1lBQ1osYUFBYTtZQUNiLFVBQVU7WUFDVixZQUFZO1lBQ1osZUFBZTtZQUVmLHFCQUFxQjtZQUVyQixvQkFBb0I7WUFFcEIsV0FBVzs7MkZBV0Ysb0JBQW9CO2tCQXZCaEMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixhQUFhO3dCQUNiLFVBQVU7d0JBQ1YsWUFBWTt3QkFDWixlQUFlO3dCQUNmLGNBQWM7d0JBQ2QscUJBQXFCO3dCQUNyQixtQkFBbUI7d0JBQ25CLG9CQUFvQjt3QkFDcEIsd0JBQXdCO3dCQUN4QixXQUFXO3FCQUNaO29CQUNELE9BQU8sRUFBRTt3QkFDUCxjQUFjO3dCQUNkLHFCQUFxQjt3QkFDckIsbUJBQW1CO3dCQUNuQixvQkFBb0I7d0JBQ3BCLHdCQUF3QjtxQkFDekI7b0JBQ0QsU0FBUyxFQUFFLENBQUMsZ0RBQWdELENBQUM7aUJBQzlEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQTExeU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IE92ZXJsYXlNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBQb3J0YWxNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcblxuaW1wb3J0IHsgQ29sb3JQaWNrZXIgfSBmcm9tICdAYWNyb2RhdGEvY29sb3ItcGlja2VyJztcbmltcG9ydCB7XG4gIE1UWF9DT0xPUlBJQ0tFUl9TQ1JPTExfU1RSQVRFR1lfRkFDVE9SWV9QUk9WSURFUixcbiAgTXR4Q29sb3JwaWNrZXIsXG4gIE10eENvbG9ycGlja2VyQ29udGVudCxcbn0gZnJvbSAnLi9jb2xvcnBpY2tlcic7XG5pbXBvcnQgeyBNdHhDb2xvcnBpY2tlcklucHV0IH0gZnJvbSAnLi9jb2xvcnBpY2tlci1pbnB1dCc7XG5pbXBvcnQgeyBNdHhDb2xvcnBpY2tlclRvZ2dsZSwgTXR4Q29sb3JwaWNrZXJUb2dnbGVJY29uIH0gZnJvbSAnLi9jb2xvcnBpY2tlci10b2dnbGUnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIE92ZXJsYXlNb2R1bGUsXG4gICAgQTExeU1vZHVsZSxcbiAgICBQb3J0YWxNb2R1bGUsXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgIE10eENvbG9ycGlja2VyLFxuICAgIE10eENvbG9ycGlja2VyQ29udGVudCxcbiAgICBNdHhDb2xvcnBpY2tlcklucHV0LFxuICAgIE10eENvbG9ycGlja2VyVG9nZ2xlLFxuICAgIE10eENvbG9ycGlja2VyVG9nZ2xlSWNvbixcbiAgICBDb2xvclBpY2tlcixcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIE10eENvbG9ycGlja2VyLFxuICAgIE10eENvbG9ycGlja2VyQ29udGVudCxcbiAgICBNdHhDb2xvcnBpY2tlcklucHV0LFxuICAgIE10eENvbG9ycGlja2VyVG9nZ2xlLFxuICAgIE10eENvbG9ycGlja2VyVG9nZ2xlSWNvbixcbiAgXSxcbiAgcHJvdmlkZXJzOiBbTVRYX0NPTE9SUElDS0VSX1NDUk9MTF9TVFJBVEVHWV9GQUNUT1JZX1BST1ZJREVSXSxcbn0pXG5leHBvcnQgY2xhc3MgTXR4Q29sb3JwaWNrZXJNb2R1bGUge31cbiJdfQ==
|
|
@@ -5,13 +5,11 @@ import { DOCUMENT, NgTemplateOutlet } from '@angular/common';
|
|
|
5
5
|
import { ChangeDetectionStrategy, Component, EventEmitter, Inject, InjectionToken, Injector, Input, Optional, Output, ViewEncapsulation, afterNextRender, booleanAttribute, inject, } from '@angular/core';
|
|
6
6
|
import { Subject, Subscription, merge } from 'rxjs';
|
|
7
7
|
import { filter, take } from 'rxjs/operators';
|
|
8
|
-
import {
|
|
9
|
-
import { ColorChromeModule } from 'ngx-color/chrome';
|
|
8
|
+
import { ColorPicker } from '@acrodata/color-picker';
|
|
10
9
|
import { mtxColorpickerAnimations } from './colorpicker-animations';
|
|
11
10
|
import * as i0 from "@angular/core";
|
|
12
|
-
import * as i1 from "
|
|
13
|
-
import * as i2 from "@angular/cdk/
|
|
14
|
-
import * as i3 from "@angular/cdk/bidi";
|
|
11
|
+
import * as i1 from "@angular/cdk/overlay";
|
|
12
|
+
import * as i2 from "@angular/cdk/bidi";
|
|
15
13
|
/** Used to generate a unique ID for each colorpicker instance. */
|
|
16
14
|
let colorpickerUid = 0;
|
|
17
15
|
/** Injection token that determines the scroll handling while the panel is open. */
|
|
@@ -45,16 +43,8 @@ export class MtxColorpickerContent {
|
|
|
45
43
|
ngOnDestroy() {
|
|
46
44
|
this._animationDone.complete();
|
|
47
45
|
}
|
|
48
|
-
getColorString(e) {
|
|
49
|
-
return {
|
|
50
|
-
hex: e.color.rgb.a === 1 ? e.color.hex : new TinyColor(e.color.rgb).toHex8String(),
|
|
51
|
-
rgb: new TinyColor(e.color.rgb).toRgbString(),
|
|
52
|
-
hsl: new TinyColor(e.color.hsl).toHslString(),
|
|
53
|
-
hsv: new TinyColor(e.color.hsv).toHsvString(),
|
|
54
|
-
}[this.picker.format];
|
|
55
|
-
}
|
|
56
46
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: MtxColorpickerContent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
57
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: MtxColorpickerContent, isStandalone: true, selector: "mtx-colorpicker-content", inputs: { color: "color" }, host: { listeners: { "@transformPanel.done": "_animationDone.next()" }, properties: { "class": "color ? \"mat-\" + color : \"\"", "@transformPanel": "_animationState" }, classAttribute: "mtx-colorpicker-content" }, exportAs: ["mtxColorpickerContent"], ngImport: i0, template: "@if (picker.content) {\n <ng-template [ngTemplateOutlet]=\"picker.content\"></ng-template>\n} @else {\n <color-
|
|
47
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: MtxColorpickerContent, isStandalone: true, selector: "mtx-colorpicker-content", inputs: { color: "color" }, host: { listeners: { "@transformPanel.done": "_animationDone.next()" }, properties: { "class": "color ? \"mat-\" + color : \"\"", "@transformPanel": "_animationState" }, classAttribute: "mtx-colorpicker-content" }, exportAs: ["mtxColorpickerContent"], ngImport: i0, template: "@if (picker.content) {\n <ng-template [ngTemplateOutlet]=\"picker.content\"></ng-template>\n} @else {\n <color-picker\n [format]=\"picker.format\"\n [color]=\"picker.selected\"\n (colorChange)=\"picker.select($event)\"\n />\n}\n", styles: [".mtx-colorpicker-content{display:block;border-radius:4px}\n"], dependencies: [{ kind: "component", type: ColorPicker, selector: "color-picker", inputs: ["format", "color", "hideAlpha", "disabled"], outputs: ["formatChange", "colorChange", "valueChange", "valueChanged"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], animations: [mtxColorpickerAnimations.transformPanel], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
58
48
|
}
|
|
59
49
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: MtxColorpickerContent, decorators: [{
|
|
60
50
|
type: Component,
|
|
@@ -63,7 +53,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
|
63
53
|
'[class]': 'color ? "mat-" + color : ""',
|
|
64
54
|
'[@transformPanel]': '_animationState',
|
|
65
55
|
'(@transformPanel.done)': '_animationDone.next()',
|
|
66
|
-
}, animations: [mtxColorpickerAnimations.transformPanel], exportAs: 'mtxColorpickerContent', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
56
|
+
}, animations: [mtxColorpickerAnimations.transformPanel], exportAs: 'mtxColorpickerContent', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [ColorPicker, NgTemplateOutlet], template: "@if (picker.content) {\n <ng-template [ngTemplateOutlet]=\"picker.content\"></ng-template>\n} @else {\n <color-picker\n [format]=\"picker.format\"\n [color]=\"picker.selected\"\n (colorChange)=\"picker.select($event)\"\n />\n}\n", styles: [".mtx-colorpicker-content{display:block;border-radius:4px}\n"] }]
|
|
67
57
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { color: [{
|
|
68
58
|
type: Input
|
|
69
59
|
}] } });
|
|
@@ -95,7 +85,7 @@ export class MtxColorpicker {
|
|
|
95
85
|
}
|
|
96
86
|
/** The input and output color format. */
|
|
97
87
|
get format() {
|
|
98
|
-
return this._format || this.pickerInput
|
|
88
|
+
return this._format || this.pickerInput?.format;
|
|
99
89
|
}
|
|
100
90
|
set format(value) {
|
|
101
91
|
this._format = value;
|
|
@@ -311,7 +301,7 @@ export class MtxColorpicker {
|
|
|
311
301
|
(this.pickerInput && hasModifierKey(event, 'altKey') && event.keyCode === UP_ARROW));
|
|
312
302
|
})));
|
|
313
303
|
}
|
|
314
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: MtxColorpicker, deps: [{ token:
|
|
304
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: MtxColorpicker, deps: [{ token: i1.Overlay }, { token: i0.ViewContainerRef }, { token: MTX_COLORPICKER_SCROLL_STRATEGY }, { token: i2.Directionality, optional: true }, { token: DOCUMENT, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
315
305
|
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.0", type: MtxColorpicker, isStandalone: true, selector: "mtx-colorpicker", inputs: { content: "content", disabled: ["disabled", "disabled", booleanAttribute], xPosition: "xPosition", yPosition: "yPosition", restoreFocus: ["restoreFocus", "restoreFocus", booleanAttribute], opened: ["opened", "opened", booleanAttribute], color: "color", format: "format" }, outputs: { openedStream: "opened", closedStream: "closed" }, exportAs: ["mtxColorpicker"], usesOnChanges: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
316
306
|
}
|
|
317
307
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: MtxColorpicker, decorators: [{
|
|
@@ -324,10 +314,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
|
324
314
|
encapsulation: ViewEncapsulation.None,
|
|
325
315
|
standalone: true,
|
|
326
316
|
}]
|
|
327
|
-
}], ctorParameters: () => [{ type:
|
|
317
|
+
}], ctorParameters: () => [{ type: i1.Overlay }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{
|
|
328
318
|
type: Inject,
|
|
329
319
|
args: [MTX_COLORPICKER_SCROLL_STRATEGY]
|
|
330
|
-
}] }, { type:
|
|
320
|
+
}] }, { type: i2.Directionality, decorators: [{
|
|
331
321
|
type: Optional
|
|
332
322
|
}] }, { type: undefined, decorators: [{
|
|
333
323
|
type: Optional
|
|
@@ -360,4 +350,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
|
360
350
|
}], format: [{
|
|
361
351
|
type: Input
|
|
362
352
|
}] } });
|
|
363
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3JwaWNrZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9leHRlbnNpb25zL2NvbG9ycGlja2VyL2NvbG9ycGlja2VyLnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvZXh0ZW5zaW9ucy9jb2xvcnBpY2tlci9jb2xvcnBpY2tlci1jb250ZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDekUsT0FBTyxFQUVMLE9BQU8sRUFDUCxhQUFhLEdBR2QsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdELE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUVULFlBQVksRUFDWixNQUFNLEVBQ04sY0FBYyxFQUNkLFFBQVEsRUFDUixLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFHTixpQkFBaUIsRUFDakIsZUFBZSxFQUNmLGdCQUFnQixFQUNoQixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFOUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTVDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3JELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7OztBQUdwRSxrRUFBa0U7QUFDbEUsSUFBSSxjQUFjLEdBQUcsQ0FBQyxDQUFDO0FB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QUFPO3NCQUFmLEtBQUs7Z0JBR1ksWUFBWTtzQkFBN0IsTUFBTTt1QkFBQyxRQUFRO2dCQUdFLFlBQVk7c0JBQTdCLE1BQU07dUJBQUMsUUFBUTtnQkFFNEIsUUFBUTtzQkFBbkQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFldEMsU0FBUztzQkFEUixLQUFLO2dCQUtOLFNBQVM7c0JBRFIsS0FBSztnQkFRa0MsWUFBWTtzQkFBbkQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFJbEMsTUFBTTtzQkFEVCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQWNsQyxLQUFLO3NCQURSLEtBQUs7Z0JBV0YsTUFBTTtzQkFEVCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aW9uYWxpdHkgfSBmcm9tICdAYW5ndWxhci9jZGsvYmlkaSc7XG5pbXBvcnQgeyBFU0NBUEUsIFVQX0FSUk9XLCBoYXNNb2RpZmllcktleSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XG5pbXBvcnQge1xuICBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3ksXG4gIE92ZXJsYXksXG4gIE92ZXJsYXlDb25maWcsXG4gIE92ZXJsYXlSZWYsXG4gIFNjcm9sbFN0cmF0ZWd5LFxufSBmcm9tICdAYW5ndWxhci9jZGsvb3ZlcmxheSc7XG5pbXBvcnQgeyBDb21wb25lbnRQb3J0YWwgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IERPQ1VNRU5ULCBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb21wb25lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5qZWN0LFxuICBJbmplY3Rpb25Ub2tlbixcbiAgSW5qZWN0b3IsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDb250YWluZXJSZWYsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBhZnRlck5leHRSZW5kZXIsXG4gIGJvb2xlYW5BdHRyaWJ1dGUsXG4gIGluamVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUaGVtZVBhbGV0dGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiwgbWVyZ2UgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHsgVGlueUNvbG9yIH0gZnJvbSAnQGN0cmwvdGlueWNvbG9yJztcbmltcG9ydCB7IENvbG9yRXZlbnQgfSBmcm9tICduZ3gtY29sb3InO1xuaW1wb3J0IHsgQ29sb3JDaHJvbWVNb2R1bGUgfSBmcm9tICduZ3gtY29sb3IvY2hyb21lJztcbmltcG9ydCB7IG10eENvbG9ycGlja2VyQW5pbWF0aW9ucyB9IGZyb20gJy4vY29sb3JwaWNrZXItYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBDb2xvckZvcm1hdCwgTXR4Q29sb3JwaWNrZXJJbnB1dCB9IGZyb20gJy4vY29sb3JwaWNrZXItaW5wdXQnO1xuXG4vKiogVXNlZCB0byBnZW5lcmF0ZSBhIHVuaXF1ZSBJRCBmb3IgZWFjaCBjb2xvcnBpY2tlciBpbnN0YW5jZS4gKi9cbmxldCBjb2xvcnBpY2tlclVpZCA9IDA7XG5cbi8qKiBJbmplY3Rpb24gdG9rZW4gdGhhdCBkZXRlcm1pbmVzIHRoZSBzY3JvbGwgaGFuZGxpbmcgd2hpbGUgdGhlIHBhbmVsIGlzIG9wZW4uICovXG5leHBvcnQgY29uc3QgTVRYX0NPTE9SUElDS0VSX1NDUk9MTF9TVFJBVEVHWSA9IG5ldyBJbmplY3Rpb25Ub2tlbjwoKSA9PiBTY3JvbGxTdHJhdGVneT4oXG4gICdtdHgtY29sb3JwaWNrZXItc2Nyb2xsLXN0cmF0ZWd5JyxcbiAge1xuICAgIHByb3ZpZGVkSW46ICdyb290JyxcbiAgICBmYWN0b3J5OiAoKSA9PiB7XG4gICAgICBjb25zdCBvdmVybGF5ID0gaW5qZWN0KE92ZXJsYXkpO1xuICAgICAgcmV0dXJuICgpID0+IG92ZXJsYXkuc2Nyb2xsU3RyYXRlZ2llcy5yZXBvc2l0aW9uKCk7XG4gICAgfSxcbiAgfVxuKTtcblxuZXhwb3J0IGZ1bmN0aW9uIE1UWF9DT0xPUlBJQ0tFUl9TQ1JPTExfU1RSQVRFR1lfRkFDVE9SWShvdmVybGF5OiBPdmVybGF5KTogKCkgPT4gU2Nyb2xsU3RyYXRlZ3kge1xuICByZXR1cm4gKCkgPT4gb3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oKTtcbn1cblxuLyoqIFBvc3NpYmxlIHBvc2l0aW9ucyBmb3IgdGhlIGNvbG9ycGlja2VyIGRyb3Bkb3duIGFsb25nIHRoZSBYIGF4aXMuICovXG5leHBvcnQgdHlwZSBDb2xvcnBpY2tlckRyb3Bkb3duUG9zaXRpb25YID0gJ3N0YXJ0JyB8ICdlbmQnO1xuXG4vKiogUG9zc2libGUgcG9zaXRpb25zIGZvciB0aGUgY29sb3JwaWNrZXIgZHJvcGRvd24gYWxvbmcgdGhlIFkgYXhpcy4gKi9cbmV4cG9ydCB0eXBlIENvbG9ycGlja2VyRHJvcGRvd25Qb3NpdGlvblkgPSAnYWJvdmUnIHwgJ2JlbG93JztcblxuZXhwb3J0IGNvbnN0IE1UWF9DT0xPUlBJQ0tFUl9TQ1JPTExfU1RSQVRFR1lfRkFDVE9SWV9QUk9WSURFUiA9IHtcbiAgcHJvdmlkZTogTVRYX0NPTE9SUElDS0VSX1NDUk9MTF9TVFJBVEVHWSxcbiAgZGVwczogW092ZXJsYXldLFxuICB1c2VGYWN0b3J5OiBNVFhfQ09MT1JQSUNLRVJfU0NST0xMX1NUUkFURUdZX0ZBQ1RPUlksXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtdHgtY29sb3JwaWNrZXItY29udGVudCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jb2xvcnBpY2tlci1jb250ZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJ2NvbG9ycGlja2VyLWNvbnRlbnQuc2NzcycsXG4gIGhvc3Q6IHtcbiAgICAnY2xhc3MnOiAnbXR4LWNvbG9ycGlja2VyLWNvbnRlbnQnLFxuICAgICdbY2xhc3NdJzogJ2NvbG9yID8gXCJtYXQtXCIgKyBjb2xvciA6IFwiXCInLFxuICAgICdbQHRyYW5zZm9ybVBhbmVsXSc6ICdfYW5pbWF0aW9uU3RhdGUnLFxuICAgICcoQHRyYW5zZm9ybVBhbmVsLmRvbmUpJzogJ19hbmltYXRpb25Eb25lLm5leHQoKScsXG4gIH0sXG4gIGFuaW1hdGlvbnM6IFttdHhDb2xvcnBpY2tlckFuaW1hdGlvbnMudHJhbnNmb3JtUGFuZWxdLFxuICBleHBvcnRBczogJ210eENvbG9ycGlja2VyQ29udGVudCcsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29sb3JDaHJvbWVNb2R1bGUsIE5nVGVtcGxhdGVPdXRsZXRdLFxufSlcbmV4cG9ydCBjbGFzcyBNdHhDb2xvcnBpY2tlckNvbnRlbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBjb2xvcjogVGhlbWVQYWxldHRlO1xuXG4gIHBpY2tlciE6IE10eENvbG9ycGlja2VyO1xuXG4gIC8qKiBDdXJyZW50IHN0YXRlIG9mIHRoZSBhbmltYXRpb24uICovXG4gIF9hbmltYXRpb25TdGF0ZTogJ2VudGVyLWRyb3Bkb3duJyB8ICd2b2lkJyA9ICdlbnRlci1kcm9wZG93bic7XG5cbiAgLyoqIEVtaXRzIHdoZW4gYW4gYW5pbWF0aW9uIGhhcyBmaW5pc2hlZC4gKi9cbiAgcmVhZG9ubHkgX2FuaW1hdGlvbkRvbmUgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICBfc3RhcnRFeGl0QW5pbWF0aW9uKCkge1xuICAgIHRoaXMuX2FuaW1hdGlvblN0YXRlID0gJ3ZvaWQnO1xuICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fYW5pbWF0aW9uRG9uZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgZ2V0Q29sb3JTdHJpbmcoZTogQ29sb3JFdmVudCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGhleDogZS5jb2xvci5yZ2IuYSA9PT0gMSA/IGUuY29sb3IuaGV4IDogbmV3IFRpbnlDb2xvcihlLmNvbG9yLnJnYikudG9IZXg4U3RyaW5nKCksXG4gICAgICByZ2I6IG5ldyBUaW55Q29sb3IoZS5jb2xvci5yZ2IpLnRvUmdiU3RyaW5nKCksXG4gICAgICBoc2w6IG5ldyBUaW55Q29sb3IoZS5jb2xvci5oc2wpLnRvSHNsU3RyaW5nKCksXG4gICAgICBoc3Y6IG5ldyBUaW55Q29sb3IoZS5jb2xvci5oc3YpLnRvSHN2U3RyaW5nKCksXG4gICAgfVt0aGlzLnBpY2tlci5mb3JtYXRdO1xuICB9XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ210eC1jb2xvcnBpY2tlcicsXG4gIHRlbXBsYXRlOiAnJyxcbiAgZXhwb3J0QXM6ICdtdHhDb2xvcnBpY2tlcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBNdHhDb2xvcnBpY2tlciBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBfc2Nyb2xsU3RyYXRlZ3k6ICgpID0+IFNjcm9sbFN0cmF0ZWd5O1xuICBwcml2YXRlIF9pbnB1dFN0YXRlQ2hhbmdlcyA9IFN1YnNjcmlwdGlvbi5FTVBUWTtcblxuICAvKiogQ3VzdG9tIGNvbG9ycGlja2VyIGNvbnRlbnQgc2V0IGJ5IHRoZSBjb25zdW1lci4gKi9cbiAgQElucHV0KCkgY29udGVudCE6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgLyoqIEVtaXRzIHdoZW4gdGhlIGNvbG9ycGlja2VyIGhhcyBiZWVuIG9wZW5lZC4gKi9cbiAgQE91dHB1dCgnb3BlbmVkJykgb3BlbmVkU3RyZWFtOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgLyoqIEVtaXRzIHdoZW4gdGhlIGNvbG9ycGlja2VyIGhhcyBiZWVuIGNsb3NlZC4gKi9cbiAgQE91dHB1dCgnY2xvc2VkJykgY2xvc2VkU3RyZWFtOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIGdldCBkaXNhYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQgPT09IHVuZGVmaW5lZCAmJiB0aGlzLnBpY2tlcklucHV0XG4gICAgICA/IHRoaXMucGlja2VySW5wdXQuZGlzYWJsZWRcbiAgICAgIDogISF0aGlzLl9kaXNhYmxlZDtcbiAgfVxuICBzZXQgZGlzYWJsZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICBpZiAodmFsdWUgIT09IHRoaXMuX2Rpc2FibGVkKSB7XG4gICAgICB0aGlzLl9kaXNhYmxlZCA9IHZhbHVlO1xuICAgICAgdGhpcy5fZGlzYWJsZWRDaGFuZ2UubmV4dCh2YWx1ZSk7XG4gICAgfVxuICB9XG4gIHByaXZhdGUgX2Rpc2FibGVkITogYm9vbGVhbjtcblxuICAvKiogUHJlZmVycmVkIHBvc2l0aW9uIG9mIHRoZSBjb2xvcnBpY2tlciBpbiB0aGUgWCBheGlzLiAqL1xuICBASW5wdXQoKVxuICB4UG9zaXRpb246IENvbG9ycGlja2VyRHJvcGRvd25Qb3NpdGlvblggPSAnc3RhcnQnO1xuXG4gIC8qKiBQcmVmZXJyZWQgcG9zaXRpb24gb2YgdGhlIGNvbG9ycGlja2VyIGluIHRoZSBZIGF4aXMuICovXG4gIEBJbnB1dCgpXG4gIHlQb3NpdGlvbjogQ29sb3JwaWNrZXJEcm9wZG93blBvc2l0aW9uWSA9ICdiZWxvdyc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcmVzdG9yZSBmb2N1cyB0byB0aGUgcHJldmlvdXNseS1mb2N1c2VkIGVsZW1lbnQgd2hlbiB0aGUgcGFuZWwgaXMgY2xvc2VkLlxuICAgKiBOb3RlIHRoYXQgYXV0b21hdGljIGZvY3VzIHJlc3RvcmF0aW9uIGlzIGFuIGFjY2Vzc2liaWxpdHkgZmVhdHVyZSBhbmQgaXQgaXMgcmVjb21tZW5kZWQgdGhhdFxuICAgKiB5b3UgcHJvdmlkZSB5b3VyIG93biBlcXVpdmFsZW50LCBpZiB5b3UgZGVjaWRlIHRvIHR1cm4gaXQgb2ZmLlxuICAgKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pIHJlc3RvcmVGb2N1cyA9IHRydWU7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIHBhbmVsIGlzIG9wZW4uICovXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICBnZXQgb3BlbmVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9vcGVuZWQ7XG4gIH1cbiAgc2V0IG9wZW5lZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHZhbHVlID8gdGhpcy5vcGVuKCkgOiB0aGlzLmNsb3NlKCk7XG4gIH1cbiAgcHJpdmF0ZSBfb3BlbmVkID0gZmFsc2U7XG5cbiAgLyoqIFRoZSBpZCBmb3IgdGhlIGNvbG9ycGlja2VyIHBhbmVsLiAqL1xuICBpZCA9IGBtdHgtY29sb3JwaWNrZXItJHtjb2xvcnBpY2tlclVpZCsrfWA7XG5cbiAgLyoqIENvbG9yIHBhbGV0dGUgdG8gdXNlIG9uIHRoZSBjb2xvcnBpY2tlcidzIHBhbmVsLiAqL1xuICBASW5wdXQoKVxuICBnZXQgY29sb3IoKTogVGhlbWVQYWxldHRlIHtcbiAgICByZXR1cm4gdGhpcy5fY29sb3IgfHwgKHRoaXMucGlja2VySW5wdXQgPyB0aGlzLnBpY2tlcklucHV0LmdldFRoZW1lUGFsZXR0ZSgpIDogdW5kZWZpbmVkKTtcbiAgfVxuICBzZXQgY29sb3IodmFsdWU6IFRoZW1lUGFsZXR0ZSkge1xuICAgIHRoaXMuX2NvbG9yID0gdmFsdWU7XG4gIH1cbiAgcHJpdmF0ZSBfY29sb3I6IFRoZW1lUGFsZXR0ZTtcblxuICAvKiogVGhlIGlucHV0IGFuZCBvdXRwdXQgY29sb3IgZm9ybWF0LiAqL1xuICBASW5wdXQoKVxuICBnZXQgZm9ybWF0KCk6IENvbG9yRm9ybWF0IHtcbiAgICByZXR1cm4gdGhpcy5fZm9ybWF0IHx8IHRoaXMucGlja2VySW5wdXQuZm9ybWF0O1xuICB9XG4gIHNldCBmb3JtYXQodmFsdWU6IENvbG9yRm9ybWF0KSB7XG4gICAgdGhpcy5fZm9ybWF0ID0gdmFsdWU7XG4gIH1cbiAgX2Zvcm1hdCE6IENvbG9yRm9ybWF0O1xuXG4gIC8qKiBUaGUgY3VycmVudGx5IHNlbGVjdGVkIGNvbG9yLiAqL1xuICBnZXQgc2VsZWN0ZWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsaWRTZWxlY3RlZDtcbiAgfVxuICBzZXQgc2VsZWN0ZWQodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX3ZhbGlkU2VsZWN0ZWQgPSB2YWx1ZTtcbiAgfVxuICBwcml2YXRlIF92YWxpZFNlbGVjdGVkOiBzdHJpbmcgPSAnJztcblxuICAvKiogQSByZWZlcmVuY2UgdG8gdGhlIG92ZXJsYXkgd2hlbiB0aGUgcGlja2VyIGlzIG9wZW5lZCBhcyBhIHBvcHVwLiAqL1xuICBwcml2YXRlIF9vdmVybGF5UmVmITogT3ZlcmxheVJlZiB8IG51bGw7XG5cbiAgLyoqIFJlZmVyZW5jZSB0byB0aGUgY29tcG9uZW50IGluc3RhbmNlIHJlbmRlcmVkIGluIHRoZSBvdmVybGF5LiAqL1xuICBwcml2YXRlIF9jb21wb25lbnRSZWYhOiBDb21wb25lbnRSZWY8TXR4Q29sb3JwaWNrZXJDb250ZW50PiB8IG51bGw7XG5cbiAgLyoqIFRoZSBlbGVtZW50IHRoYXQgd2FzIGZvY3VzZWQgYmVmb3JlIHRoZSBjb2xvcnBpY2tlciB3YXMgb3BlbmVkLiAqL1xuICBwcml2YXRlIF9mb2N1c2VkRWxlbWVudEJlZm9yZU9wZW46IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqIFVuaXF1ZSBjbGFzcyB0aGF0IHdpbGwgYmUgYWRkZWQgdG8gdGhlIGJhY2tkcm9wIHNvIHRoYXQgdGhlIHRlc3QgaGFybmVzc2VzIGNhbiBsb29rIGl0IHVwLiAqL1xuICBwcml2YXRlIF9iYWNrZHJvcEhhcm5lc3NDbGFzcyA9IGAke3RoaXMuaWR9LWJhY2tkcm9wYDtcblxuICAvKiogVGhlIGlucHV0IGVsZW1lbnQgdGhpcyBjb2xvcnBpY2tlciBpcyBhc3NvY2lhdGVkIHdpdGguICovXG4gIHBpY2tlcklucHV0ITogTXR4Q29sb3JwaWNrZXJJbnB1dDtcblxuICAvKiogRW1pdHMgd2hlbiB0aGUgY29sb3JwaWNrZXIgaXMgZGlzYWJsZWQuICovXG4gIHJlYWRvbmx5IF9kaXNhYmxlZENoYW5nZSA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG5cbiAgLyoqIEVtaXRzIG5ldyBzZWxlY3RlZCBjb2xvciB3aGVuIHNlbGVjdGVkIGNvbG9yIGNoYW5nZXMuICovXG4gIHJlYWRvbmx5IF9zZWxlY3RlZENoYW5nZWQgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG5cbiAgcHJpdmF0ZSBfaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX292ZXJsYXk6IE92ZXJsYXksXG4gICAgcHJpdmF0ZSBfdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICBASW5qZWN0KE1UWF9DT0xPUlBJQ0tFUl9TQ1JPTExfU1RSQVRFR1kpIHNjcm9sbFN0cmF0ZWd5OiBhbnksXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfZGlyOiBEaXJlY3Rpb25hbGl0eSxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIF9kb2N1bWVudDogYW55XG4gICkge1xuICAgIHRoaXMuX3Njcm9sbFN0cmF0ZWd5ID0gc2Nyb2xsU3RyYXRlZ3k7XG4gIH1cblxuICBuZ09uQ2hhbmdlcygpIHt9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fZGVzdHJveU92ZXJsYXkoKTtcbiAgICB0aGlzLmNsb3NlKCk7XG4gICAgdGhpcy5faW5wdXRTdGF0ZUNoYW5nZXMudW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLl9kaXNhYmxlZENoYW5nZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgLyoqIFNlbGVjdHMgdGhlIGdpdmVuIGNvbG9yLiAqL1xuICBzZWxlY3QobmV4dFZhbDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3Qgb2xkVmFsdWUgPSB0aGlzLnNlbGVjdGVkO1xuICAgIHRoaXMuc2VsZWN0ZWQgPSBuZXh0VmFsO1xuXG4gICAgLy8gVE9ETzogYG5leHRWYWxgIHNob3VsZCBjb21wYXJlIHdpdGggYG9sZFZhbHVlYFxuICAgIHRoaXMuX3NlbGVjdGVkQ2hhbmdlZC5uZXh0KG5leHRWYWwpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVyIGFuIGlucHV0IHdpdGggdGhpcyBjb2xvcnBpY2tlci5cbiAgICogQHBhcmFtIGlucHV0IFRoZSBjb2xvcnBpY2tlciBpbnB1dCB0byByZWdpc3RlciB3aXRoIHRoaXMgY29sb3JwaWNrZXIuXG4gICAqL1xuICByZWdpc3RlcklucHV0KGlucHV0OiBNdHhDb2xvcnBpY2tlcklucHV0KTogdm9pZCB7XG4gICAgaWYgKHRoaXMucGlja2VySW5wdXQpIHtcbiAgICAgIHRocm93IEVycm9yKCdBIENvbG9ycGlja2VyIGNhbiBvbmx5IGJlIGFzc29jaWF0ZWQgd2l0aCBhIHNpbmdsZSBpbnB1dC4nKTtcbiAgICB9XG4gICAgdGhpcy5waWNrZXJJbnB1dCA9IGlucHV0O1xuICAgIHRoaXMuX2lucHV0U3RhdGVDaGFuZ2VzID0gaW5wdXQuX3ZhbHVlQ2hhbmdlLnN1YnNjcmliZShcbiAgICAgICh2YWx1ZTogc3RyaW5nKSA9PiAodGhpcy5zZWxlY3RlZCA9IHZhbHVlKVxuICAgICk7XG4gIH1cblxuICAvKiogT3BlbiB0aGUgcGFuZWwuICovXG4gIG9wZW4oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX29wZW5lZCB8fCB0aGlzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghdGhpcy5waWNrZXJJbnB1dCkge1xuICAgICAgdGhyb3cgRXJyb3IoJ0F0dGVtcHRlZCB0byBvcGVuIGFuIENvbG9ycGlja2VyIHdpdGggbm8gYXNzb2NpYXRlZCBpbnB1dC4nKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fZG9jdW1lbnQpIHtcbiAgICAgIHRoaXMuX2ZvY3VzZWRFbGVtZW50QmVmb3JlT3BlbiA9IHRoaXMuX2RvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgdGhpcy5fb3Blbk92ZXJsYXkoKTtcbiAgICB0aGlzLl9vcGVuZWQgPSB0cnVlO1xuICAgIHRoaXMub3BlbmVkU3RyZWFtLmVtaXQoKTtcbiAgfVxuXG4gIC8qKiBDbG9zZSB0aGUgcGFuZWwuICovXG4gIGNsb3NlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fb3BlbmVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2NvbXBvbmVudFJlZikge1xuICAgICAgY29uc3QgaW5zdGFuY2UgPSB0aGlzLl9jb21wb25lbnRSZWYuaW5zdGFuY2U7XG4gICAgICBpbnN0YW5jZS5fc3RhcnRFeGl0QW5pbWF0aW9uKCk7XG4gICAgICBpbnN0YW5jZS5fYW5pbWF0aW9uRG9uZS5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoKSA9PiB0aGlzLl9kZXN0cm95T3ZlcmxheSgpKTtcbiAgICB9XG5cbiAgICBjb25zdCBjb21wbGV0ZUNsb3NlID0gKCkgPT4ge1xuICAgICAgLy8gVGhlIGBfb3BlbmVkYCBjb3VsZCd2ZSBiZWVuIHJlc2V0IGFscmVhZHkgaWZcbiAgICAgIC8vIHdlIGdvdCB0d28gZXZlbnRzIGluIHF1aWNrIHN1Y2Nlc3Npb24uXG4gICAgICBpZiAodGhpcy5fb3BlbmVkKSB7XG4gICAgICAgIHRoaXMuX29wZW5lZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmNsb3NlZFN0cmVhbS5lbWl0KCk7XG4gICAgICAgIHRoaXMuX2ZvY3VzZWRFbGVtZW50QmVmb3JlT3BlbiA9IG51bGw7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGlmIChcbiAgICAgIHRoaXMucmVzdG9yZUZvY3VzICYmXG4gICAgICB0aGlzLl9mb2N1c2VkRWxlbWVudEJlZm9yZU9wZW4gJiZcbiAgICAgIHR5cGVvZiB0aGlzLl9mb2N1c2VkRWxlbWVudEJlZm9yZU9wZW4uZm9jdXMgPT09ICdmdW5jdGlvbidcbiAgICApIHtcbiAgICAgIC8vIEJlY2F1c2UgSUUgbW92ZXMgZm9jdXMgYXN5bmNocm9ub3VzbHksIHdlIGNhbid0IGNvdW50IG9uIGl0IGJlaW5nIHJlc3RvcmVkIGJlZm9yZSB3ZSd2ZVxuICAgICAgLy8gbWFya2VkIHRoZSBjb2xvcnBpY2tlciBhcyBjbG9zZWQuIElmIHRoZSBldmVudCBmaXJlcyBvdXQgb2Ygc2VxdWVuY2UgYW5kIHRoZSBlbGVtZW50IHRoYXRcbiAgICAgIC8vIHdlJ3JlIHJlZm9jdXNpbmcgb3BlbnMgdGhlIGNvbG9ycGlja2VyIG9uIGZvY3VzLCB0aGUgdXNlciBjb3VsZCBiZSBzdHVjayB3aXRoIG5vdCBiZWluZ1xuICAgICAgLy8gYWJsZSB0byBjbG9zZSB0aGUgcGFuZWwgYXQgYWxsLiBXZSB3b3JrIGFyb3VuZCBpdCBieSBtYWtpbmcgdGhlIGxvZ2ljLCB0aGF0IG1hcmtzXG4gICAgICAvLyB0aGUgY29sb3JwaWNrZXIgYXMgY2xvc2VkLCBhc3luYyBhcyB3ZWxsLlxuICAgICAgdGhpcy5fZm9jdXNlZEVsZW1lbnRCZWZvcmVPcGVuLmZvY3VzKCk7XG4gICAgICBzZXRUaW1lb3V0KGNvbXBsZXRlQ2xvc2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb21wbGV0ZUNsb3NlKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEZvcndhcmRzIHJlbGV2YW50IHZhbHVlcyBmcm9tIHRoZSBjb2xvcnBpY2tlciB0byB0aGUgY29sb3JwaWNrZXIgY29udGVudCBpbnNpZGUgdGhlIG92ZXJsYXkuICovXG4gIHByb3RlY3RlZCBfZm9yd2FyZENvbnRlbnRWYWx1ZXMoaW5zdGFuY2U6IE10eENvbG9ycGlja2VyQ29udGVudCkge1xuICAgIGluc3RhbmNlLnBpY2tlciA9IHRoaXM7XG4gICAgaW5zdGFuY2UuY29sb3IgPSB0aGlzLmNvbG9yO1xuICB9XG5cbiAgLyoqIE9wZW4gdGhlIGNvbG9waWNrZXIgYXMgYSBwb3B1cC4gKi9cbiAgcHJpdmF0ZSBfb3Blbk92ZXJsYXkoKTogdm9pZCB7XG4gICAgdGhpcy5fZGVzdHJveU92ZXJsYXkoKTtcblxuICAgIGNvbnN0IGxhYmVsSWQgPSB0aGlzLnBpY2tlcklucHV0LmdldE92ZXJsYXlMYWJlbElkKCk7XG4gICAgY29uc3QgcG9ydGFsID0gbmV3IENvbXBvbmVudFBvcnRhbDxNdHhDb2xvcnBpY2tlckNvbnRlbnQ+KFxuICAgICAgTXR4Q29sb3JwaWNrZXJDb250ZW50LFxuICAgICAgdGhpcy5fdmlld0NvbnRhaW5lclJlZlxuICAgICk7XG4gICAgY29uc3Qgb3ZlcmxheVJlZiA9ICh0aGlzLl9vdmVybGF5UmVmID0gdGhpcy5fb3ZlcmxheS5jcmVhdGUoXG4gICAgICBuZXcgT3ZlcmxheUNvbmZpZyh7XG4gICAgICAgIHBvc2l0aW9uU3RyYXRlZ3k6IHRoaXMuX2dldERyb3Bkb3duU3RyYXRlZ3koKSxcbiAgICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXG4gICAgICAgIGJhY2tkcm9wQ2xhc3M6IFsnbWF0LW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AnLCB0aGlzLl9iYWNrZHJvcEhhcm5lc3NDbGFzc10sXG4gICAgICAgIGRpcmVjdGlvbjogdGhpcy5fZGlyLFxuICAgICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5fc2Nyb2xsU3RyYXRlZ3koKSxcbiAgICAgICAgcGFuZWxDbGFzczogYG10eC1jb2xvcnBpY2tlci1wb3B1cGAsXG4gICAgICB9KVxuICAgICkpO1xuICAgIGNvbnN0IG92ZXJsYXlFbGVtZW50ID0gb3ZlcmxheVJlZi5vdmVybGF5RWxlbWVudDtcbiAgICBvdmVybGF5RWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3JvbGUnLCAnZGlhbG9nJyk7XG5cbiAgICBpZiAobGFiZWxJZCkge1xuICAgICAgb3ZlcmxheUVsZW1lbnQuc2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsbGVkYnknLCBsYWJlbElkKTtcbiAgICB9XG5cbiAgICB0aGlzLl9nZXRDbG9zZVN0cmVhbShvdmVybGF5UmVmKS5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgaWYgKGV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB9XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLl9jb21wb25lbnRSZWYgPSBvdmVybGF5UmVmLmF0dGFjaChwb3J0YWwpO1xuICAgIHRoaXMuX2ZvcndhcmRDb250ZW50VmFsdWVzKHRoaXMuX2NvbXBvbmVudFJlZi5pbnN0YW5jZSk7XG5cbiAgICAvLyBVcGRhdGUgdGhlIHBvc2l0aW9uIG9uY2UgdGhlIHBhbmVsIGhhcyByZW5kZXJlZC4gT25seSByZWxldmFudCBpbiBkcm9wZG93biBtb2RlLlxuICAgIGFmdGVyTmV4dFJlbmRlcihcbiAgICAgICgpID0+IHtcbiAgICAgICAgb3ZlcmxheVJlZi51cGRhdGVQb3NpdGlvbigpO1xuICAgICAgfSxcbiAgICAgIHsgaW5qZWN0b3I6IHRoaXMuX2luamVjdG9yIH1cbiAgICApO1xuICB9XG5cbiAgLyoqIERlc3Ryb3lzIHRoZSBjdXJyZW50IG92ZXJsYXkuICovXG4gIHByaXZhdGUgX2Rlc3Ryb3lPdmVybGF5KCkge1xuICAgIGlmICh0aGlzLl9vdmVybGF5UmVmKSB7XG4gICAgICB0aGlzLl9vdmVybGF5UmVmLmRpc3Bvc2UoKTtcbiAgICAgIHRoaXMuX292ZXJsYXlSZWYgPSB0aGlzLl9jb21wb25lbnRSZWYgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBHZXRzIGEgcG9zaXRpb24gc3RyYXRlZ3kgdGhhdCB3aWxsIG9wZW4gdGhlIHBhbmVsIGFzIGEgZHJvcGRvd24uICovXG4gIHByaXZhdGUgX2dldERyb3Bkb3duU3RyYXRlZ3koKSB7XG4gICAgY29uc3Qgc3RyYXRlZ3kgPSB0aGlzLl9vdmVybGF5XG4gICAgICAucG9zaXRpb24oKVxuICAgICAgLmZsZXhpYmxlQ29ubmVjdGVkVG8odGhpcy5waWNrZXJJbnB1dC5nZXRDb25uZWN0ZWRPdmVybGF5T3JpZ2luKCkpXG4gICAgICAud2l0aFRyYW5zZm9ybU9yaWdpbk9uKCcubXR4LWNvbG9ycGlja2VyLWNvbnRlbnQnKVxuICAgICAgLndpdGhGbGV4aWJsZURpbWVuc2lvbnMoZmFsc2UpXG4gICAgICAud2l0aFZpZXdwb3J0TWFyZ2luKDgpXG4gICAgICAud2l0aExvY2tlZFBvc2l0aW9uKCk7XG5cbiAgICByZXR1cm4gdGhpcy5fc2V0Q29ubmVjdGVkUG9zaXRpb25zKHN0cmF0ZWd5KTtcbiAgfVxuXG4gIC8qKiBTZXRzIHRoZSBwb3NpdGlvbnMgb2YgdGhlIGNvbG9ycGlja2VyIGluIGRyb3Bkb3duIG1vZGUgYmFzZWQgb24gdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbi4gKi9cbiAgcHJpdmF0ZSBfc2V0Q29ubmVjdGVkUG9zaXRpb25zKHN0cmF0ZWd5OiBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3kpIHtcbiAgICBjb25zdCBwcmltYXJ5WCA9IHRoaXMueFBvc2l0aW9uID09PSAnZW5kJyA/ICdlbmQnIDogJ3N0YXJ0JztcbiAgICBjb25zdCBzZWNvbmRhcnlYID0gcHJpbWFyeVggPT09ICdzdGFydCcgPyAnZW5kJyA6ICdzdGFydCc7XG4gICAgY29uc3QgcHJpbWFyeVkgPSB0aGlzLnlQb3NpdGlvbiA9PT0gJ2Fib3ZlJyA/ICdib3R0b20nIDogJ3RvcCc7XG4gICAgY29uc3Qgc2Vjb25kYXJ5WSA9IHByaW1hcnlZID09PSAndG9wJyA/ICdib3R0b20nIDogJ3RvcCc7XG5cbiAgICByZXR1cm4gc3RyYXRlZ3kud2l0aFBvc2l0aW9ucyhbXG4gICAgICB7XG4gICAgICAgIG9yaWdpblg6IHByaW1hcnlYLFxuICAgICAgICBvcmlnaW5ZOiBzZWNvbmRhcnlZLFxuICAgICAgICBvdmVybGF5WDogcHJpbWFyeVgsXG4gICAgICAgIG92ZXJsYXlZOiBwcmltYXJ5WSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG9yaWdpblg6IHByaW1hcnlYLFxuICAgICAgICBvcmlnaW5ZOiBwcmltYXJ5WSxcbiAgICAgICAgb3ZlcmxheVg6IHByaW1hcnlYLFxuICAgICAgICBvdmVybGF5WTogc2Vjb25kYXJ5WSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG9yaWdpblg6IHNlY29uZGFyeVgsXG4gICAgICAgIG9yaWdpblk6IHNlY29uZGFyeVksXG4gICAgICAgIG92ZXJsYXlYOiBzZWNvbmRhcnlYLFxuICAgICAgICBvdmVybGF5WTogcHJpbWFyeVksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBvcmlnaW5YOiBzZWNvbmRhcnlYLFxuICAgICAgICBvcmlnaW5ZOiBwcmltYXJ5WSxcbiAgICAgICAgb3ZlcmxheVg6IHNlY29uZGFyeVgsXG4gICAgICAgIG92ZXJsYXlZOiBzZWNvbmRhcnlZLFxuICAgICAgfSxcbiAgICBdKTtcbiAgfVxuXG4gIC8qKiBHZXRzIGFuIG9ic2VydmFibGUgdGhhdCB3aWxsIGVtaXQgd2hlbiB0aGUgb3ZlcmxheSBpcyBzdXBwb3NlZCB0byBiZSBjbG9zZWQuICovXG4gIHByaXZhdGUgX2dldENsb3NlU3RyZWFtKG92ZXJsYXlSZWY6IE92ZXJsYXlSZWYpIHtcbiAgICByZXR1cm4gbWVyZ2UoXG4gICAgICBvdmVybGF5UmVmLmJhY2tkcm9wQ2xpY2soKSxcbiAgICAgIG92ZXJsYXlSZWYuZGV0YWNobWVudHMoKSxcbiAgICAgIG92ZXJsYXlSZWYua2V5ZG93bkV2ZW50cygpLnBpcGUoXG4gICAgICAgIGZpbHRlcihldmVudCA9PiB7XG4gICAgICAgICAgLy8gQ2xvc2luZyBvbiBhbHQgKyB1cCBpcyBvbmx5IHZhbGlkIHdoZW4gdGhlcmUncyBhbiBpbnB1dCBhc3NvY2lhdGVkIHdpdGggdGhlIGNvbG9ycGlja2VyLlxuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAoZXZlbnQua2V5Q29kZSA9PT0gRVNDQVBFICYmICFoYXNNb2RpZmllcktleShldmVudCkpIHx8XG4gICAgICAgICAgICAodGhpcy5waWNrZXJJbnB1dCAmJiBoYXNNb2RpZmllcktleShldmVudCwgJ2FsdEtleScpICYmIGV2ZW50LmtleUNvZGUgPT09IFVQX0FSUk9XKVxuICAgICAgICAgICk7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgKTtcbiAgfVxufVxuIiwiQGlmIChwaWNrZXIuY29udGVudCkge1xuICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwicGlja2VyLmNvbnRlbnRcIj48L25nLXRlbXBsYXRlPlxufSBAZWxzZSB7XG4gIDxjb2xvci1jaHJvbWUgW2NvbG9yXT1cInBpY2tlci5zZWxlY3RlZFwiIChvbkNoYW5nZUNvbXBsZXRlKT1cInBpY2tlci5zZWxlY3QoZ2V0Q29sb3JTdHJpbmcoJGV2ZW50KSlcIiAvPlxufVxuIl19
|
|
353
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3JwaWNrZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9leHRlbnNpb25zL2NvbG9ycGlja2VyL2NvbG9ycGlja2VyLnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvZXh0ZW5zaW9ucy9jb2xvcnBpY2tlci9jb2xvcnBpY2tlci1jb250ZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDekUsT0FBTyxFQUVMLE9BQU8sRUFDUCxhQUFhLEdBR2QsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdELE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUVULFlBQVksRUFDWixNQUFNLEVBQ04sY0FBYyxFQUNkLFFBQVEsRUFDUixLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFHTixpQkFBaUIsRUFDakIsZUFBZSxFQUNmLGdCQUFnQixFQUNoQixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BELE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFOUMsT0FBTyxFQUFlLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7O0FBR3BFLGtFQUFrRTtBQUNsRSxJQUFJLGNBQWMsR0FBRyxDQUFDLENBQUM7QUFFdkIsbUZBQW1GO0FBQ25GLE1BQU0sQ0FBQyxNQUFNLCtCQUErQixHQUFHLElB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LDJEQUVuQixRQUFRO3FIQS9HbkIsY0FBYyxvSEFhTCxnQkFBZ0Isa0dBMEJoQixnQkFBZ0IsZ0NBR2hCLGdCQUFnQiwrS0FoRDFCLEVBQUU7OzJGQU1ELGNBQWM7a0JBUjFCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtvQkFDM0IsUUFBUSxFQUFFLEVBQUU7b0JBQ1osUUFBUSxFQUFFLGdCQUFnQjtvQkFDMUIsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO29CQUNyQyxVQUFVLEVBQUUsSUFBSTtpQkFDakI7OzBCQThHSSxNQUFNOzJCQUFDLCtCQUErQjs7MEJBQ3RDLFFBQVE7OzBCQUNSLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsUUFBUTt5Q0ExR3JCLE9BQU87c0JBQWYsS0FBSztnQkFHWSxZQUFZO3NCQUE3QixNQUFNO3VCQUFDLFFBQVE7Z0JBR0UsWUFBWTtzQkFBN0IsTUFBTTt1QkFBQyxRQUFRO2dCQUU0QixRQUFRO3NCQUFuRCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQWV0QyxTQUFTO3NCQURSLEtBQUs7Z0JBS04sU0FBUztzQkFEUixLQUFLO2dCQVFrQyxZQUFZO3NCQUFuRCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUlsQyxNQUFNO3NCQURULEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBY2xDLEtBQUs7c0JBRFIsS0FBSztnQkFXRixNQUFNO3NCQURULEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3Rpb25hbGl0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9iaWRpJztcbmltcG9ydCB7IEVTQ0FQRSwgVVBfQVJST1csIGhhc01vZGlmaWVyS2V5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7XG4gIEZsZXhpYmxlQ29ubmVjdGVkUG9zaXRpb25TdHJhdGVneSxcbiAgT3ZlcmxheSxcbiAgT3ZlcmxheUNvbmZpZyxcbiAgT3ZlcmxheVJlZixcbiAgU2Nyb2xsU3RyYXRlZ3ksXG59IGZyb20gJ0Bhbmd1bGFyL2Nkay9vdmVybGF5JztcbmltcG9ydCB7IENvbXBvbmVudFBvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgRE9DVU1FTlQsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbXBvbmVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3QsXG4gIEluamVjdGlvblRva2VuLFxuICBJbmplY3RvcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NvbnRhaW5lclJlZixcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGFmdGVyTmV4dFJlbmRlcixcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRoZW1lUGFsZXR0ZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uLCBtZXJnZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBDb2xvckZvcm1hdCwgQ29sb3JQaWNrZXIgfSBmcm9tICdAYWNyb2RhdGEvY29sb3ItcGlja2VyJztcbmltcG9ydCB7IG10eENvbG9ycGlja2VyQW5pbWF0aW9ucyB9IGZyb20gJy4vY29sb3JwaWNrZXItYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBNdHhDb2xvcnBpY2tlcklucHV0IH0gZnJvbSAnLi9jb2xvcnBpY2tlci1pbnB1dCc7XG5cbi8qKiBVc2VkIHRvIGdlbmVyYXRlIGEgdW5pcXVlIElEIGZvciBlYWNoIGNvbG9ycGlja2VyIGluc3RhbmNlLiAqL1xubGV0IGNvbG9ycGlja2VyVWlkID0gMDtcblxuLyoqIEluamVjdGlvbiB0b2tlbiB0aGF0IGRldGVybWluZXMgdGhlIHNjcm9sbCBoYW5kbGluZyB3aGlsZSB0aGUgcGFuZWwgaXMgb3Blbi4gKi9cbmV4cG9ydCBjb25zdCBNVFhfQ09MT1JQSUNLRVJfU0NST0xMX1NUUkFURUdZID0gbmV3IEluamVjdGlvblRva2VuPCgpID0+IFNjcm9sbFN0cmF0ZWd5PihcbiAgJ210eC1jb2xvcnBpY2tlci1zY3JvbGwtc3RyYXRlZ3knLFxuICB7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxuICAgIGZhY3Rvcnk6ICgpID0+IHtcbiAgICAgIGNvbnN0IG92ZXJsYXkgPSBpbmplY3QoT3ZlcmxheSk7XG4gICAgICByZXR1cm4gKCkgPT4gb3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oKTtcbiAgICB9LFxuICB9XG4pO1xuXG5leHBvcnQgZnVuY3Rpb24gTVRYX0NPTE9SUElDS0VSX1NDUk9MTF9TVFJBVEVHWV9GQUNUT1JZKG92ZXJsYXk6IE92ZXJsYXkpOiAoKSA9PiBTY3JvbGxTdHJhdGVneSB7XG4gIHJldHVybiAoKSA9PiBvdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpO1xufVxuXG4vKiogUG9zc2libGUgcG9zaXRpb25zIGZvciB0aGUgY29sb3JwaWNrZXIgZHJvcGRvd24gYWxvbmcgdGhlIFggYXhpcy4gKi9cbmV4cG9ydCB0eXBlIENvbG9ycGlja2VyRHJvcGRvd25Qb3NpdGlvblggPSAnc3RhcnQnIHwgJ2VuZCc7XG5cbi8qKiBQb3NzaWJsZSBwb3NpdGlvbnMgZm9yIHRoZSBjb2xvcnBpY2tlciBkcm9wZG93biBhbG9uZyB0aGUgWSBheGlzLiAqL1xuZXhwb3J0IHR5cGUgQ29sb3JwaWNrZXJEcm9wZG93blBvc2l0aW9uWSA9ICdhYm92ZScgfCAnYmVsb3cnO1xuXG5leHBvcnQgY29uc3QgTVRYX0NPTE9SUElDS0VSX1NDUk9MTF9TVFJBVEVHWV9GQUNUT1JZX1BST1ZJREVSID0ge1xuICBwcm92aWRlOiBNVFhfQ09MT1JQSUNLRVJfU0NST0xMX1NUUkFURUdZLFxuICBkZXBzOiBbT3ZlcmxheV0sXG4gIHVzZUZhY3Rvcnk6IE1UWF9DT0xPUlBJQ0tFUl9TQ1JPTExfU1RSQVRFR1lfRkFDVE9SWSxcbn07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ210eC1jb2xvcnBpY2tlci1jb250ZW50JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbG9ycGlja2VyLWNvbnRlbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnY29sb3JwaWNrZXItY29udGVudC5zY3NzJyxcbiAgaG9zdDoge1xuICAgICdjbGFzcyc6ICdtdHgtY29sb3JwaWNrZXItY29udGVudCcsXG4gICAgJ1tjbGFzc10nOiAnY29sb3IgPyBcIm1hdC1cIiArIGNvbG9yIDogXCJcIicsXG4gICAgJ1tAdHJhbnNmb3JtUGFuZWxdJzogJ19hbmltYXRpb25TdGF0ZScsXG4gICAgJyhAdHJhbnNmb3JtUGFuZWwuZG9uZSknOiAnX2FuaW1hdGlvbkRvbmUubmV4dCgpJyxcbiAgfSxcbiAgYW5pbWF0aW9uczogW210eENvbG9ycGlja2VyQW5pbWF0aW9ucy50cmFuc2Zvcm1QYW5lbF0sXG4gIGV4cG9ydEFzOiAnbXR4Q29sb3JwaWNrZXJDb250ZW50JyxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb2xvclBpY2tlciwgTmdUZW1wbGF0ZU91dGxldF0sXG59KVxuZXhwb3J0IGNsYXNzIE10eENvbG9ycGlja2VyQ29udGVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIGNvbG9yOiBUaGVtZVBhbGV0dGU7XG5cbiAgcGlja2VyITogTXR4Q29sb3JwaWNrZXI7XG5cbiAgLyoqIEN1cnJlbnQgc3RhdGUgb2YgdGhlIGFuaW1hdGlvbi4gKi9cbiAgX2FuaW1hdGlvblN0YXRlOiAnZW50ZXItZHJvcGRvd24nIHwgJ3ZvaWQnID0gJ2VudGVyLWRyb3Bkb3duJztcblxuICAvKiogRW1pdHMgd2hlbiBhbiBhbmltYXRpb24gaGFzIGZpbmlzaGVkLiAqL1xuICByZWFkb25seSBfYW5pbWF0aW9uRG9uZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIF9zdGFydEV4aXRBbmltYXRpb24oKSB7XG4gICAgdGhpcy5fYW5pbWF0aW9uU3RhdGUgPSAndm9pZCc7XG4gICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9hbmltYXRpb25Eb25lLmNvbXBsZXRlKCk7XG4gIH1cbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbXR4LWNvbG9ycGlja2VyJyxcbiAgdGVtcGxhdGU6ICcnLFxuICBleHBvcnRBczogJ210eENvbG9ycGlja2VyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIE10eENvbG9ycGlja2VyIGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIF9zY3JvbGxTdHJhdGVneTogKCkgPT4gU2Nyb2xsU3RyYXRlZ3k7XG4gIHByaXZhdGUgX2lucHV0U3RhdGVDaGFuZ2VzID0gU3Vic2NyaXB0aW9uLkVNUFRZO1xuXG4gIC8qKiBDdXN0b20gY29sb3JwaWNrZXIgY29udGVudCBzZXQgYnkgdGhlIGNvbnN1bWVyLiAqL1xuICBASW5wdXQoKSBjb250ZW50ITogVGVtcGxhdGVSZWY8YW55PjtcblxuICAvKiogRW1pdHMgd2hlbiB0aGUgY29sb3JwaWNrZXIgaGFzIGJlZW4gb3BlbmVkLiAqL1xuICBAT3V0cHV0KCdvcGVuZWQnKSBvcGVuZWRTdHJlYW06IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICAvKiogRW1pdHMgd2hlbiB0aGUgY29sb3JwaWNrZXIgaGFzIGJlZW4gY2xvc2VkLiAqL1xuICBAT3V0cHV0KCdjbG9zZWQnKSBjbG9zZWRTdHJlYW06IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgZ2V0IGRpc2FibGVkKCkge1xuICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZCA9PT0gdW5kZWZpbmVkICYmIHRoaXMucGlja2VySW5wdXRcbiAgICAgID8gdGhpcy5waWNrZXJJbnB1dC5kaXNhYmxlZFxuICAgICAgOiAhIXRoaXMuX2Rpc2FibGVkO1xuICB9XG4gIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIGlmICh2YWx1ZSAhPT0gdGhpcy5fZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuX2Rpc2FibGVkID0gdmFsdWU7XG4gICAgICB0aGlzLl9kaXNhYmxlZENoYW5nZS5uZXh0KHZhbHVlKTtcbiAgICB9XG4gIH1cbiAgcHJpdmF0ZSBfZGlzYWJsZWQhOiBib29sZWFuO1xuXG4gIC8qKiBQcmVmZXJyZWQgcG9zaXRpb24gb2YgdGhlIGNvbG9ycGlja2VyIGluIHRoZSBYIGF4aXMuICovXG4gIEBJbnB1dCgpXG4gIHhQb3NpdGlvbjogQ29sb3JwaWNrZXJEcm9wZG93blBvc2l0aW9uWCA9ICdzdGFydCc7XG5cbiAgLyoqIFByZWZlcnJlZCBwb3NpdGlvbiBvZiB0aGUgY29sb3JwaWNrZXIgaW4gdGhlIFkgYXhpcy4gKi9cbiAgQElucHV0KClcbiAgeVBvc2l0aW9uOiBDb2xvcnBpY2tlckRyb3Bkb3duUG9zaXRpb25ZID0gJ2JlbG93JztcblxuICAvKipcbiAgICogV2hldGhlciB0byByZXN0b3JlIGZvY3VzIHRvIHRoZSBwcmV2aW91c2x5LWZvY3VzZWQgZWxlbWVudCB3aGVuIHRoZSBwYW5lbCBpcyBjbG9zZWQuXG4gICAqIE5vdGUgdGhhdCBhdXRvbWF0aWMgZm9jdXMgcmVzdG9yYXRpb24gaXMgYW4gYWNjZXNzaWJpbGl0eSBmZWF0dXJlIGFuZCBpdCBpcyByZWNvbW1lbmRlZCB0aGF0XG4gICAqIHlvdSBwcm92aWRlIHlvdXIgb3duIGVxdWl2YWxlbnQsIGlmIHlvdSBkZWNpZGUgdG8gdHVybiBpdCBvZmYuXG4gICAqL1xuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgcmVzdG9yZUZvY3VzID0gdHJ1ZTtcblxuICAvKiogV2hldGhlciB0aGUgcGFuZWwgaXMgb3Blbi4gKi9cbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gIGdldCBvcGVuZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX29wZW5lZDtcbiAgfVxuICBzZXQgb3BlbmVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdmFsdWUgPyB0aGlzLm9wZW4oKSA6IHRoaXMuY2xvc2UoKTtcbiAgfVxuICBwcml2YXRlIF9vcGVuZWQgPSBmYWxzZTtcblxuICAvKiogVGhlIGlkIGZvciB0aGUgY29sb3JwaWNrZXIgcGFuZWwuICovXG4gIGlkID0gYG10eC1jb2xvcnBpY2tlci0ke2NvbG9ycGlja2VyVWlkKyt9YDtcblxuICAvKiogQ29sb3IgcGFsZXR0ZSB0byB1c2Ugb24gdGhlIGNvbG9ycGlja2VyJ3MgcGFuZWwuICovXG4gIEBJbnB1dCgpXG4gIGdldCBjb2xvcigpOiBUaGVtZVBhbGV0dGUge1xuICAgIHJldHVybiB0aGlzLl9jb2xvciB8fCAodGhpcy5waWNrZXJJbnB1dCA/IHRoaXMucGlja2VySW5wdXQuZ2V0VGhlbWVQYWxldHRlKCkgOiB1bmRlZmluZWQpO1xuICB9XG4gIHNldCBjb2xvcih2YWx1ZTogVGhlbWVQYWxldHRlKSB7XG4gICAgdGhpcy5fY29sb3IgPSB2YWx1ZTtcbiAgfVxuICBwcml2YXRlIF9jb2xvcjogVGhlbWVQYWxldHRlO1xuXG4gIC8qKiBUaGUgaW5wdXQgYW5kIG91dHB1dCBjb2xvciBmb3JtYXQuICovXG4gIEBJbnB1dCgpXG4gIGdldCBmb3JtYXQoKTogQ29sb3JGb3JtYXQgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9mb3JtYXQgfHwgdGhpcy5waWNrZXJJbnB1dD8uZm9ybWF0O1xuICB9XG4gIHNldCBmb3JtYXQodmFsdWU6IENvbG9yRm9ybWF0IHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fZm9ybWF0ID0gdmFsdWU7XG4gIH1cbiAgX2Zvcm1hdD86IENvbG9yRm9ybWF0O1xuXG4gIC8qKiBUaGUgY3VycmVudGx5IHNlbGVjdGVkIGNvbG9yLiAqL1xuICBnZXQgc2VsZWN0ZWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsaWRTZWxlY3RlZDtcbiAgfVxuICBzZXQgc2VsZWN0ZWQodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX3ZhbGlkU2VsZWN0ZWQgPSB2YWx1ZTtcbiAgfVxuICBwcml2YXRlIF92YWxpZFNlbGVjdGVkOiBzdHJpbmcgPSAnJztcblxuICAvKiogQSByZWZlcmVuY2UgdG8gdGhlIG92ZXJsYXkgd2hlbiB0aGUgcGlja2VyIGlzIG9wZW5lZCBhcyBhIHBvcHVwLiAqL1xuICBwcml2YXRlIF9vdmVybGF5UmVmITogT3ZlcmxheVJlZiB8IG51bGw7XG5cbiAgLyoqIFJlZmVyZW5jZSB0byB0aGUgY29tcG9uZW50IGluc3RhbmNlIHJlbmRlcmVkIGluIHRoZSBvdmVybGF5LiAqL1xuICBwcml2YXRlIF9jb21wb25lbnRSZWYhOiBDb21wb25lbnRSZWY8TXR4Q29sb3JwaWNrZXJDb250ZW50PiB8IG51bGw7XG5cbiAgLyoqIFRoZSBlbGVtZW50IHRoYXQgd2FzIGZvY3VzZWQgYmVmb3JlIHRoZSBjb2xvcnBpY2tlciB3YXMgb3BlbmVkLiAqL1xuICBwcml2YXRlIF9mb2N1c2VkRWxlbWVudEJlZm9yZU9wZW46IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqIFVuaXF1ZSBjbGFzcyB0aGF0IHdpbGwgYmUgYWRkZWQgdG8gdGhlIGJhY2tkcm9wIHNvIHRoYXQgdGhlIHRlc3QgaGFybmVzc2VzIGNhbiBsb29rIGl0IHVwLiAqL1xuICBwcml2YXRlIF9iYWNrZHJvcEhhcm5lc3NDbGFzcyA9IGAke3RoaXMuaWR9LWJhY2tkcm9wYDtcblxuICAvKiogVGhlIGlucHV0IGVsZW1lbnQgdGhpcyBjb2xvcnBpY2tlciBpcyBhc3NvY2lhdGVkIHdpdGguICovXG4gIHBpY2tlcklucHV0ITogTXR4Q29sb3JwaWNrZXJJbnB1dDtcblxuICAvKiogRW1pdHMgd2hlbiB0aGUgY29sb3JwaWNrZXIgaXMgZGlzYWJsZWQuICovXG4gIHJlYWRvbmx5IF9kaXNhYmxlZENoYW5nZSA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG5cbiAgLyoqIEVtaXRzIG5ldyBzZWxlY3RlZCBjb2xvciB3aGVuIHNlbGVjdGVkIGNvbG9yIGNoYW5nZXMuICovXG4gIHJlYWRvbmx5IF9zZWxlY3RlZENoYW5nZWQgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG5cbiAgcHJpdmF0ZSBfaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX292ZXJsYXk6IE92ZXJsYXksXG4gICAgcHJpdmF0ZSBfdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICBASW5qZWN0KE1UWF9DT0xPUlBJQ0tFUl9TQ1JPTExfU1RSQVRFR1kpIHNjcm9sbFN0cmF0ZWd5OiBhbnksXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfZGlyOiBEaXJlY3Rpb25hbGl0eSxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIF9kb2N1bWVudDogYW55XG4gICkge1xuICAgIHRoaXMuX3Njcm9sbFN0cmF0ZWd5ID0gc2Nyb2xsU3RyYXRlZ3k7XG4gIH1cblxuICBuZ09uQ2hhbmdlcygpIHt9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fZGVzdHJveU92ZXJsYXkoKTtcbiAgICB0aGlzLmNsb3NlKCk7XG4gICAgdGhpcy5faW5wdXRTdGF0ZUNoYW5nZXMudW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLl9kaXNhYmxlZENoYW5nZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgLyoqIFNlbGVjdHMgdGhlIGdpdmVuIGNvbG9yLiAqL1xuICBzZWxlY3QobmV4dFZhbDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3Qgb2xkVmFsdWUgPSB0aGlzLnNlbGVjdGVkO1xuICAgIHRoaXMuc2VsZWN0ZWQgPSBuZXh0VmFsO1xuXG4gICAgLy8gVE9ETzogYG5leHRWYWxgIHNob3VsZCBjb21wYXJlIHdpdGggYG9sZFZhbHVlYFxuICAgIHRoaXMuX3NlbGVjdGVkQ2hhbmdlZC5uZXh0KG5leHRWYWwpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVyIGFuIGlucHV0IHdpdGggdGhpcyBjb2xvcnBpY2tlci5cbiAgICogQHBhcmFtIGlucHV0IFRoZSBjb2xvcnBpY2tlciBpbnB1dCB0byByZWdpc3RlciB3aXRoIHRoaXMgY29sb3JwaWNrZXIuXG4gICAqL1xuICByZWdpc3RlcklucHV0KGlucHV0OiBNdHhDb2xvcnBpY2tlcklucHV0KTogdm9pZCB7XG4gICAgaWYgKHRoaXMucGlja2VySW5wdXQpIHtcbiAgICAgIHRocm93IEVycm9yKCdBIENvbG9ycGlja2VyIGNhbiBvbmx5IGJlIGFzc29jaWF0ZWQgd2l0aCBhIHNpbmdsZSBpbnB1dC4nKTtcbiAgICB9XG4gICAgdGhpcy5waWNrZXJJbnB1dCA9IGlucHV0O1xuICAgIHRoaXMuX2lucHV0U3RhdGVDaGFuZ2VzID0gaW5wdXQuX3ZhbHVlQ2hhbmdlLnN1YnNjcmliZShcbiAgICAgICh2YWx1ZTogc3RyaW5nKSA9PiAodGhpcy5zZWxlY3RlZCA9IHZhbHVlKVxuICAgICk7XG4gIH1cblxuICAvKiogT3BlbiB0aGUgcGFuZWwuICovXG4gIG9wZW4oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX29wZW5lZCB8fCB0aGlzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghdGhpcy5waWNrZXJJbnB1dCkge1xuICAgICAgdGhyb3cgRXJyb3IoJ0F0dGVtcHRlZCB0byBvcGVuIGFuIENvbG9ycGlja2VyIHdpdGggbm8gYXNzb2NpYXRlZCBpbnB1dC4nKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fZG9jdW1lbnQpIHtcbiAgICAgIHRoaXMuX2ZvY3VzZWRFbGVtZW50QmVmb3JlT3BlbiA9IHRoaXMuX2RvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgdGhpcy5fb3Blbk92ZXJsYXkoKTtcbiAgICB0aGlzLl9vcGVuZWQgPSB0cnVlO1xuICAgIHRoaXMub3BlbmVkU3RyZWFtLmVtaXQoKTtcbiAgfVxuXG4gIC8qKiBDbG9zZSB0aGUgcGFuZWwuICovXG4gIGNsb3NlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fb3BlbmVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2NvbXBvbmVudFJlZikge1xuICAgICAgY29uc3QgaW5zdGFuY2UgPSB0aGlzLl9jb21wb25lbnRSZWYuaW5zdGFuY2U7XG4gICAgICBpbnN0YW5jZS5fc3RhcnRFeGl0QW5pbWF0aW9uKCk7XG4gICAgICBpbnN0YW5jZS5fYW5pbWF0aW9uRG9uZS5waXBlKHRha2UoMSkpLnN1YnNjcmliZSgoKSA9PiB0aGlzLl9kZXN0cm95T3ZlcmxheSgpKTtcbiAgICB9XG5cbiAgICBjb25zdCBjb21wbGV0ZUNsb3NlID0gKCkgPT4ge1xuICAgICAgLy8gVGhlIGBfb3BlbmVkYCBjb3VsZCd2ZSBiZWVuIHJlc2V0IGFscmVhZHkgaWZcbiAgICAgIC8vIHdlIGdvdCB0d28gZXZlbnRzIGluIHF1aWNrIHN1Y2Nlc3Npb24uXG4gICAgICBpZiAodGhpcy5fb3BlbmVkKSB7XG4gICAgICAgIHRoaXMuX29wZW5lZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmNsb3NlZFN0cmVhbS5lbWl0KCk7XG4gICAgICAgIHRoaXMuX2ZvY3VzZWRFbGVtZW50QmVmb3JlT3BlbiA9IG51bGw7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGlmIChcbiAgICAgIHRoaXMucmVzdG9yZUZvY3VzICYmXG4gICAgICB0aGlzLl9mb2N1c2VkRWxlbWVudEJlZm9yZU9wZW4gJiZcbiAgICAgIHR5cGVvZiB0aGlzLl9mb2N1c2VkRWxlbWVudEJlZm9yZU9wZW4uZm9jdXMgPT09ICdmdW5jdGlvbidcbiAgICApIHtcbiAgICAgIC8vIEJlY2F1c2UgSUUgbW92ZXMgZm9jdXMgYXN5bmNocm9ub3VzbHksIHdlIGNhbid0IGNvdW50IG9uIGl0IGJlaW5nIHJlc3RvcmVkIGJlZm9yZSB3ZSd2ZVxuICAgICAgLy8gbWFya2VkIHRoZSBjb2xvcnBpY2tlciBhcyBjbG9zZWQuIElmIHRoZSBldmVudCBmaXJlcyBvdXQgb2Ygc2VxdWVuY2UgYW5kIHRoZSBlbGVtZW50IHRoYXRcbiAgICAgIC8vIHdlJ3JlIHJlZm9jdXNpbmcgb3BlbnMgdGhlIGNvbG9ycGlja2VyIG9uIGZvY3VzLCB0aGUgdXNlciBjb3VsZCBiZSBzdHVjayB3aXRoIG5vdCBiZWluZ1xuICAgICAgLy8gYWJsZSB0byBjbG9zZSB0aGUgcGFuZWwgYXQgYWxsLiBXZSB3b3JrIGFyb3VuZCBpdCBieSBtYWtpbmcgdGhlIGxvZ2ljLCB0aGF0IG1hcmtzXG4gICAgICAvLyB0aGUgY29sb3JwaWNrZXIgYXMgY2xvc2VkLCBhc3luYyBhcyB3ZWxsLlxuICAgICAgdGhpcy5fZm9jdXNlZEVsZW1lbnRCZWZvcmVPcGVuLmZvY3VzKCk7XG4gICAgICBzZXRUaW1lb3V0KGNvbXBsZXRlQ2xvc2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb21wbGV0ZUNsb3NlKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEZvcndhcmRzIHJlbGV2YW50IHZhbHVlcyBmcm9tIHRoZSBjb2xvcnBpY2tlciB0byB0aGUgY29sb3JwaWNrZXIgY29udGVudCBpbnNpZGUgdGhlIG92ZXJsYXkuICovXG4gIHByb3RlY3RlZCBfZm9yd2FyZENvbnRlbnRWYWx1ZXMoaW5zdGFuY2U6IE10eENvbG9ycGlja2VyQ29udGVudCkge1xuICAgIGluc3RhbmNlLnBpY2tlciA9IHRoaXM7XG4gICAgaW5zdGFuY2UuY29sb3IgPSB0aGlzLmNvbG9yO1xuICB9XG5cbiAgLyoqIE9wZW4gdGhlIGNvbG9waWNrZXIgYXMgYSBwb3B1cC4gKi9cbiAgcHJpdmF0ZSBfb3Blbk92ZXJsYXkoKTogdm9pZCB7XG4gICAgdGhpcy5fZGVzdHJveU92ZXJsYXkoKTtcblxuICAgIGNvbnN0IGxhYmVsSWQgPSB0aGlzLnBpY2tlcklucHV0LmdldE92ZXJsYXlMYWJlbElkKCk7XG4gICAgY29uc3QgcG9ydGFsID0gbmV3IENvbXBvbmVudFBvcnRhbDxNdHhDb2xvcnBpY2tlckNvbnRlbnQ+KFxuICAgICAgTXR4Q29sb3JwaWNrZXJDb250ZW50LFxuICAgICAgdGhpcy5fdmlld0NvbnRhaW5lclJlZlxuICAgICk7XG4gICAgY29uc3Qgb3ZlcmxheVJlZiA9ICh0aGlzLl9vdmVybGF5UmVmID0gdGhpcy5fb3ZlcmxheS5jcmVhdGUoXG4gICAgICBuZXcgT3ZlcmxheUNvbmZpZyh7XG4gICAgICAgIHBvc2l0aW9uU3RyYXRlZ3k6IHRoaXMuX2dldERyb3Bkb3duU3RyYXRlZ3koKSxcbiAgICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXG4gICAgICAgIGJhY2tkcm9wQ2xhc3M6IFsnbWF0LW92ZXJsYXktdHJhbnNwYXJlbnQtYmFja2Ryb3AnLCB0aGlzLl9iYWNrZHJvcEhhcm5lc3NDbGFzc10sXG4gICAgICAgIGRpcmVjdGlvbjogdGhpcy5fZGlyLFxuICAgICAgICBzY3JvbGxTdHJhdGVneTogdGhpcy5fc2Nyb2xsU3RyYXRlZ3koKSxcbiAgICAgICAgcGFuZWxDbGFzczogYG10eC1jb2xvcnBpY2tlci1wb3B1cGAsXG4gICAgICB9KVxuICAgICkpO1xuICAgIGNvbnN0IG92ZXJsYXlFbGVtZW50ID0gb3ZlcmxheVJlZi5vdmVybGF5RWxlbWVudDtcbiAgICBvdmVybGF5RWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3JvbGUnLCAnZGlhbG9nJyk7XG5cbiAgICBpZiAobGFiZWxJZCkge1xuICAgICAgb3ZlcmxheUVsZW1lbnQuc2V0QXR0cmlidXRlKCdhcmlhLWxhYmVsbGVkYnknLCBsYWJlbElkKTtcbiAgICB9XG5cbiAgICB0aGlzLl9nZXRDbG9zZVN0cmVhbShvdmVybGF5UmVmKS5zdWJzY3JpYmUoZXZlbnQgPT4ge1xuICAgICAgaWYgKGV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB9XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLl9jb21wb25lbnRSZWYgPSBvdmVybGF5UmVmLmF0dGFjaChwb3J0YWwpO1xuICAgIHRoaXMuX2ZvcndhcmRDb250ZW50VmFsdWVzKHRoaXMuX2NvbXBvbmVudFJlZi5pbnN0YW5jZSk7XG5cbiAgICAvLyBVcGRhdGUgdGhlIHBvc2l0aW9uIG9uY2UgdGhlIHBhbmVsIGhhcyByZW5kZXJlZC4gT25seSByZWxldmFudCBpbiBkcm9wZG93biBtb2RlLlxuICAgIGFmdGVyTmV4dFJlbmRlcihcbiAgICAgICgpID0+IHtcbiAgICAgICAgb3ZlcmxheVJlZi51cGRhdGVQb3NpdGlvbigpO1xuICAgICAgfSxcbiAgICAgIHsgaW5qZWN0b3I6IHRoaXMuX2luamVjdG9yIH1cbiAgICApO1xuICB9XG5cbiAgLyoqIERlc3Ryb3lzIHRoZSBjdXJyZW50IG92ZXJsYXkuICovXG4gIHByaXZhdGUgX2Rlc3Ryb3lPdmVybGF5KCkge1xuICAgIGlmICh0aGlzLl9vdmVybGF5UmVmKSB7XG4gICAgICB0aGlzLl9vdmVybGF5UmVmLmRpc3Bvc2UoKTtcbiAgICAgIHRoaXMuX292ZXJsYXlSZWYgPSB0aGlzLl9jb21wb25lbnRSZWYgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBHZXRzIGEgcG9zaXRpb24gc3RyYXRlZ3kgdGhhdCB3aWxsIG9wZW4gdGhlIHBhbmVsIGFzIGEgZHJvcGRvd24uICovXG4gIHByaXZhdGUgX2dldERyb3Bkb3duU3RyYXRlZ3koKSB7XG4gICAgY29uc3Qgc3RyYXRlZ3kgPSB0aGlzLl9vdmVybGF5XG4gICAgICAucG9zaXRpb24oKVxuICAgICAgLmZsZXhpYmxlQ29ubmVjdGVkVG8odGhpcy5waWNrZXJJbnB1dC5nZXRDb25uZWN0ZWRPdmVybGF5T3JpZ2luKCkpXG4gICAgICAud2l0aFRyYW5zZm9ybU9yaWdpbk9uKCcubXR4LWNvbG9ycGlja2VyLWNvbnRlbnQnKVxuICAgICAgLndpdGhGbGV4aWJsZURpbWVuc2lvbnMoZmFsc2UpXG4gICAgICAud2l0aFZpZXdwb3J0TWFyZ2luKDgpXG4gICAgICAud2l0aExvY2tlZFBvc2l0aW9uKCk7XG5cbiAgICByZXR1cm4gdGhpcy5fc2V0Q29ubmVjdGVkUG9zaXRpb25zKHN0cmF0ZWd5KTtcbiAgfVxuXG4gIC8qKiBTZXRzIHRoZSBwb3NpdGlvbnMgb2YgdGhlIGNvbG9ycGlja2VyIGluIGRyb3Bkb3duIG1vZGUgYmFzZWQgb24gdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbi4gKi9cbiAgcHJpdmF0ZSBfc2V0Q29ubmVjdGVkUG9zaXRpb25zKHN0cmF0ZWd5OiBGbGV4aWJsZUNvbm5lY3RlZFBvc2l0aW9uU3RyYXRlZ3kpIHtcbiAgICBjb25zdCBwcmltYXJ5WCA9IHRoaXMueFBvc2l0aW9uID09PSAnZW5kJyA/ICdlbmQnIDogJ3N0YXJ0JztcbiAgICBjb25zdCBzZWNvbmRhcnlYID0gcHJpbWFyeVggPT09ICdzdGFydCcgPyAnZW5kJyA6ICdzdGFydCc7XG4gICAgY29uc3QgcHJpbWFyeVkgPSB0aGlzLnlQb3NpdGlvbiA9PT0gJ2Fib3ZlJyA/ICdib3R0b20nIDogJ3RvcCc7XG4gICAgY29uc3Qgc2Vjb25kYXJ5WSA9IHByaW1hcnlZID09PSAndG9wJyA/ICdib3R0b20nIDogJ3RvcCc7XG5cbiAgICByZXR1cm4gc3RyYXRlZ3kud2l0aFBvc2l0aW9ucyhbXG4gICAgICB7XG4gICAgICAgIG9yaWdpblg6IHByaW1hcnlYLFxuICAgICAgICBvcmlnaW5ZOiBzZWNvbmRhcnlZLFxuICAgICAgICBvdmVybGF5WDogcHJpbWFyeVgsXG4gICAgICAgIG92ZXJsYXlZOiBwcmltYXJ5WSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG9yaWdpblg6IHByaW1hcnlYLFxuICAgICAgICBvcmlnaW5ZOiBwcmltYXJ5WSxcbiAgICAgICAgb3ZlcmxheVg6IHByaW1hcnlYLFxuICAgICAgICBvdmVybGF5WTogc2Vjb25kYXJ5WSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIG9yaWdpblg6IHNlY29uZGFyeVgsXG4gICAgICAgIG9yaWdpblk6IHNlY29uZGFyeVksXG4gICAgICAgIG92ZXJsYXlYOiBzZWNvbmRhcnlYLFxuICAgICAgICBvdmVybGF5WTogcHJpbWFyeVksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBvcmlnaW5YOiBzZWNvbmRhcnlYLFxuICAgICAgICBvcmlnaW5ZOiBwcmltYXJ5WSxcbiAgICAgICAgb3ZlcmxheVg6IHNlY29uZGFyeVgsXG4gICAgICAgIG92ZXJsYXlZOiBzZWNvbmRhcnlZLFxuICAgICAgfSxcbiAgICBdKTtcbiAgfVxuXG4gIC8qKiBHZXRzIGFuIG9ic2VydmFibGUgdGhhdCB3aWxsIGVtaXQgd2hlbiB0aGUgb3ZlcmxheSBpcyBzdXBwb3NlZCB0byBiZSBjbG9zZWQuICovXG4gIHByaXZhdGUgX2dldENsb3NlU3RyZWFtKG92ZXJsYXlSZWY6IE92ZXJsYXlSZWYpIHtcbiAgICByZXR1cm4gbWVyZ2UoXG4gICAgICBvdmVybGF5UmVmLmJhY2tkcm9wQ2xpY2soKSxcbiAgICAgIG92ZXJsYXlSZWYuZGV0YWNobWVudHMoKSxcbiAgICAgIG92ZXJsYXlSZWYua2V5ZG93bkV2ZW50cygpLnBpcGUoXG4gICAgICAgIGZpbHRlcihldmVudCA9PiB7XG4gICAgICAgICAgLy8gQ2xvc2luZyBvbiBhbHQgKyB1cCBpcyBvbmx5IHZhbGlkIHdoZW4gdGhlcmUncyBhbiBpbnB1dCBhc3NvY2lhdGVkIHdpdGggdGhlIGNvbG9ycGlja2VyLlxuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAoZXZlbnQua2V5Q29kZSA9PT0gRVNDQVBFICYmICFoYXNNb2RpZmllcktleShldmVudCkpIHx8XG4gICAgICAgICAgICAodGhpcy5waWNrZXJJbnB1dCAmJiBoYXNNb2RpZmllcktleShldmVudCwgJ2FsdEtleScpICYmIGV2ZW50LmtleUNvZGUgPT09IFVQX0FSUk9XKVxuICAgICAgICAgICk7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgKTtcbiAgfVxufVxuIiwiQGlmIChwaWNrZXIuY29udGVudCkge1xuICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwicGlja2VyLmNvbnRlbnRcIj48L25nLXRlbXBsYXRlPlxufSBAZWxzZSB7XG4gIDxjb2xvci1waWNrZXJcbiAgICBbZm9ybWF0XT1cInBpY2tlci5mb3JtYXRcIlxuICAgIFtjb2xvcl09XCJwaWNrZXIuc2VsZWN0ZWRcIlxuICAgIChjb2xvckNoYW5nZSk9XCJwaWNrZXIuc2VsZWN0KCRldmVudClcIlxuICAvPlxufVxuIl19
|
|
@@ -3,4 +3,4 @@ export { MTX_COLORPICKER_SCROLL_STRATEGY, MTX_COLORPICKER_SCROLL_STRATEGY_FACTOR
|
|
|
3
3
|
export { MTX_COLORPICKER_VALUE_ACCESSOR, MTX_COLORPICKER_VALIDATORS, MtxColorpickerInput, } from './colorpicker-input';
|
|
4
4
|
export * from './colorpicker-toggle';
|
|
5
5
|
export * from './colorpicker-animations';
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2V4dGVuc2lvbnMvY29sb3JwaWNrZXIvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLE9BQU8sRUFDTCwrQkFBK0IsRUFDL0IsdUNBQXVDLEVBQ3ZDLGdEQUFnRCxFQUNoRCxxQkFBcUIsRUFHckIsY0FBYyxHQUNmLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCw4QkFBOEIsRUFDOUIsMEJBQTBCLEVBQzFCLG1CQUFtQixHQUNwQixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYywwQkFBMEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY29sb3JwaWNrZXItbW9kdWxlJztcbmV4cG9ydCB7XG4gIE1UWF9DT0xPUlBJQ0tFUl9TQ1JPTExfU1RSQVRFR1ksXG4gIE1UWF9DT0xPUlBJQ0tFUl9TQ1JPTExfU1RSQVRFR1lfRkFDVE9SWSxcbiAgTVRYX0NPTE9SUElDS0VSX1NDUk9MTF9TVFJBVEVHWV9GQUNUT1JZX1BST1ZJREVSLFxuICBNdHhDb2xvcnBpY2tlckNvbnRlbnQsXG4gIENvbG9ycGlja2VyRHJvcGRvd25Qb3NpdGlvblgsXG4gIENvbG9ycGlja2VyRHJvcGRvd25Qb3NpdGlvblksXG4gIE10eENvbG9ycGlja2VyLFxufSBmcm9tICcuL2NvbG9ycGlja2VyJztcbmV4cG9ydCB7XG4gIE1UWF9DT0xPUlBJQ0tFUl9WQUxVRV9BQ0NFU1NPUixcbiAgTVRYX0NPTE9SUElDS0VSX1ZBTElEQVRPUlMsXG4gIE10eENvbG9ycGlja2VySW5wdXQsXG59IGZyb20gJy4vY29sb3JwaWNrZXItaW5wdXQnO1xuZXhwb3J0ICogZnJvbSAnLi9jb2xvcnBpY2tlci10b2dnbGUnO1xuZXhwb3J0ICogZnJvbSAnLi9jb2xvcnBpY2tlci1hbmltYXRpb25zJztcblxuZXhwb3J0IHsgQ29sb3JGb3JtYXQgfSBmcm9tICdAYWNyb2RhdGEvY29sb3ItcGlja2VyJztcbiJdfQ==
|
|
@@ -1,19 +1,17 @@
|
|
|
1
1
|
import { A11yModule } from '@angular/cdk/a11y';
|
|
2
|
-
import * as
|
|
2
|
+
import * as i1 from '@angular/cdk/overlay';
|
|
3
3
|
import { Overlay, OverlayConfig, OverlayModule } from '@angular/cdk/overlay';
|
|
4
4
|
import { ComponentPortal, PortalModule } from '@angular/cdk/portal';
|
|
5
5
|
import { NgTemplateOutlet, DOCUMENT, CommonModule } from '@angular/common';
|
|
6
6
|
import * as i0 from '@angular/core';
|
|
7
7
|
import { InjectionToken, inject, Component, ViewEncapsulation, ChangeDetectionStrategy, Input, EventEmitter, Injector, afterNextRender, booleanAttribute, Inject, Optional, Output, forwardRef, Directive, Attribute, ContentChild, ViewChild, NgModule } from '@angular/core';
|
|
8
8
|
import { MatIconButton, MatButtonModule } from '@angular/material/button';
|
|
9
|
-
import
|
|
10
|
-
import { ColorChromeModule } from 'ngx-color/chrome';
|
|
9
|
+
import { ColorPicker } from '@acrodata/color-picker';
|
|
11
10
|
import { ESCAPE, hasModifierKey, UP_ARROW, DOWN_ARROW } from '@angular/cdk/keycodes';
|
|
12
11
|
import { Subject, Subscription, merge, of } from 'rxjs';
|
|
13
12
|
import { take, filter } from 'rxjs/operators';
|
|
14
|
-
import { TinyColor } from '@ctrl/tinycolor';
|
|
15
13
|
import { trigger, transition, animate, keyframes, style } from '@angular/animations';
|
|
16
|
-
import * as
|
|
14
|
+
import * as i2 from '@angular/cdk/bidi';
|
|
17
15
|
import { NG_VALUE_ACCESSOR, NG_VALIDATORS, Validators } from '@angular/forms';
|
|
18
16
|
import { MAT_INPUT_VALUE_ACCESSOR } from '@angular/material/input';
|
|
19
17
|
import * as i1$1 from '@angular/material/form-field';
|
|
@@ -66,16 +64,8 @@ class MtxColorpickerContent {
|
|
|
66
64
|
ngOnDestroy() {
|
|
67
65
|
this._animationDone.complete();
|
|
68
66
|
}
|
|
69
|
-
getColorString(e) {
|
|
70
|
-
return {
|
|
71
|
-
hex: e.color.rgb.a === 1 ? e.color.hex : new TinyColor(e.color.rgb).toHex8String(),
|
|
72
|
-
rgb: new TinyColor(e.color.rgb).toRgbString(),
|
|
73
|
-
hsl: new TinyColor(e.color.hsl).toHslString(),
|
|
74
|
-
hsv: new TinyColor(e.color.hsv).toHsvString(),
|
|
75
|
-
}[this.picker.format];
|
|
76
|
-
}
|
|
77
67
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: MtxColorpickerContent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
78
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: MtxColorpickerContent, isStandalone: true, selector: "mtx-colorpicker-content", inputs: { color: "color" }, host: { listeners: { "@transformPanel.done": "_animationDone.next()" }, properties: { "class": "color ? \"mat-\" + color : \"\"", "@transformPanel": "_animationState" }, classAttribute: "mtx-colorpicker-content" }, exportAs: ["mtxColorpickerContent"], ngImport: i0, template: "@if (picker.content) {\n <ng-template [ngTemplateOutlet]=\"picker.content\"></ng-template>\n} @else {\n <color-
|
|
68
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: MtxColorpickerContent, isStandalone: true, selector: "mtx-colorpicker-content", inputs: { color: "color" }, host: { listeners: { "@transformPanel.done": "_animationDone.next()" }, properties: { "class": "color ? \"mat-\" + color : \"\"", "@transformPanel": "_animationState" }, classAttribute: "mtx-colorpicker-content" }, exportAs: ["mtxColorpickerContent"], ngImport: i0, template: "@if (picker.content) {\n <ng-template [ngTemplateOutlet]=\"picker.content\"></ng-template>\n} @else {\n <color-picker\n [format]=\"picker.format\"\n [color]=\"picker.selected\"\n (colorChange)=\"picker.select($event)\"\n />\n}\n", styles: [".mtx-colorpicker-content{display:block;border-radius:4px}\n"], dependencies: [{ kind: "component", type: ColorPicker, selector: "color-picker", inputs: ["format", "color", "hideAlpha", "disabled"], outputs: ["formatChange", "colorChange", "valueChange", "valueChanged"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], animations: [mtxColorpickerAnimations.transformPanel], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
79
69
|
}
|
|
80
70
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: MtxColorpickerContent, decorators: [{
|
|
81
71
|
type: Component,
|
|
@@ -84,7 +74,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
|
84
74
|
'[class]': 'color ? "mat-" + color : ""',
|
|
85
75
|
'[@transformPanel]': '_animationState',
|
|
86
76
|
'(@transformPanel.done)': '_animationDone.next()',
|
|
87
|
-
}, animations: [mtxColorpickerAnimations.transformPanel], exportAs: 'mtxColorpickerContent', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [
|
|
77
|
+
}, animations: [mtxColorpickerAnimations.transformPanel], exportAs: 'mtxColorpickerContent', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [ColorPicker, NgTemplateOutlet], template: "@if (picker.content) {\n <ng-template [ngTemplateOutlet]=\"picker.content\"></ng-template>\n} @else {\n <color-picker\n [format]=\"picker.format\"\n [color]=\"picker.selected\"\n (colorChange)=\"picker.select($event)\"\n />\n}\n", styles: [".mtx-colorpicker-content{display:block;border-radius:4px}\n"] }]
|
|
88
78
|
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { color: [{
|
|
89
79
|
type: Input
|
|
90
80
|
}] } });
|
|
@@ -116,7 +106,7 @@ class MtxColorpicker {
|
|
|
116
106
|
}
|
|
117
107
|
/** The input and output color format. */
|
|
118
108
|
get format() {
|
|
119
|
-
return this._format || this.pickerInput
|
|
109
|
+
return this._format || this.pickerInput?.format;
|
|
120
110
|
}
|
|
121
111
|
set format(value) {
|
|
122
112
|
this._format = value;
|
|
@@ -332,7 +322,7 @@ class MtxColorpicker {
|
|
|
332
322
|
(this.pickerInput && hasModifierKey(event, 'altKey') && event.keyCode === UP_ARROW));
|
|
333
323
|
})));
|
|
334
324
|
}
|
|
335
|
-
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: MtxColorpicker, deps: [{ token:
|
|
325
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: MtxColorpicker, deps: [{ token: i1.Overlay }, { token: i0.ViewContainerRef }, { token: MTX_COLORPICKER_SCROLL_STRATEGY }, { token: i2.Directionality, optional: true }, { token: DOCUMENT, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
336
326
|
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.0", type: MtxColorpicker, isStandalone: true, selector: "mtx-colorpicker", inputs: { content: "content", disabled: ["disabled", "disabled", booleanAttribute], xPosition: "xPosition", yPosition: "yPosition", restoreFocus: ["restoreFocus", "restoreFocus", booleanAttribute], opened: ["opened", "opened", booleanAttribute], color: "color", format: "format" }, outputs: { openedStream: "opened", closedStream: "closed" }, exportAs: ["mtxColorpicker"], usesOnChanges: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
337
327
|
}
|
|
338
328
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: MtxColorpicker, decorators: [{
|
|
@@ -345,10 +335,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
|
345
335
|
encapsulation: ViewEncapsulation.None,
|
|
346
336
|
standalone: true,
|
|
347
337
|
}]
|
|
348
|
-
}], ctorParameters: () => [{ type:
|
|
338
|
+
}], ctorParameters: () => [{ type: i1.Overlay }, { type: i0.ViewContainerRef }, { type: undefined, decorators: [{
|
|
349
339
|
type: Inject,
|
|
350
340
|
args: [MTX_COLORPICKER_SCROLL_STRATEGY]
|
|
351
|
-
}] }, { type:
|
|
341
|
+
}] }, { type: i2.Directionality, decorators: [{
|
|
352
342
|
type: Optional
|
|
353
343
|
}] }, { type: undefined, decorators: [{
|
|
354
344
|
type: Optional
|
|
@@ -453,8 +443,6 @@ class MtxColorpickerInput {
|
|
|
453
443
|
constructor(_elementRef, _formField) {
|
|
454
444
|
this._elementRef = _elementRef;
|
|
455
445
|
this._formField = _formField;
|
|
456
|
-
/** The input and output color format. */
|
|
457
|
-
this.format = 'hex';
|
|
458
446
|
/** Emits when a `change` event is fired on this `<input>`. */
|
|
459
447
|
this.colorChange = new EventEmitter();
|
|
460
448
|
/** Emits when an `input` event is fired on this `<input>`. */
|
|
@@ -539,7 +527,8 @@ class MtxColorpickerInput {
|
|
|
539
527
|
}
|
|
540
528
|
this._onTouched();
|
|
541
529
|
}
|
|
542
|
-
_onInput(
|
|
530
|
+
_onInput(event) {
|
|
531
|
+
const value = event.target.value;
|
|
543
532
|
const nextValue = value;
|
|
544
533
|
this._value = nextValue;
|
|
545
534
|
this._cvaOnChange(nextValue);
|
|
@@ -558,7 +547,7 @@ class MtxColorpickerInput {
|
|
|
558
547
|
this._elementRef.nativeElement.value = value ? value : '';
|
|
559
548
|
}
|
|
560
549
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: MtxColorpickerInput, deps: [{ token: i0.ElementRef }, { token: i1$1.MatFormField, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
561
|
-
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "18.2.0", type: MtxColorpickerInput, isStandalone: true, selector: "input[mtxColorpicker]", inputs: { mtxColorpicker: "mtxColorpicker", disabled: ["disabled", "disabled", booleanAttribute], value: "value", format: "format" }, outputs: { colorChange: "colorChange", colorInput: "colorInput" }, host: { listeners: { "input": "_onInput($event
|
|
550
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "18.2.0", type: MtxColorpickerInput, isStandalone: true, selector: "input[mtxColorpicker]", inputs: { mtxColorpicker: "mtxColorpicker", disabled: ["disabled", "disabled", booleanAttribute], value: "value", format: "format" }, outputs: { colorChange: "colorChange", colorInput: "colorInput" }, host: { listeners: { "input": "_onInput($event)", "change": "_onChange()", "blur": "_onBlur()", "keydown": "_onKeydown($event)" }, properties: { "attr.aria-haspopup": "_picker ? \"dialog\" : null", "attr.aria-owns": "(_picker?.opened && _picker.id) || null", "disabled": "disabled" }, classAttribute: "mtx-colorpicker-input" }, providers: [
|
|
562
551
|
MTX_COLORPICKER_VALUE_ACCESSOR,
|
|
563
552
|
MTX_COLORPICKER_VALIDATORS,
|
|
564
553
|
{ provide: MAT_INPUT_VALUE_ACCESSOR, useExisting: MtxColorpickerInput },
|
|
@@ -578,7 +567,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
|
578
567
|
'[attr.aria-haspopup]': '_picker ? "dialog" : null',
|
|
579
568
|
'[attr.aria-owns]': '(_picker?.opened && _picker.id) || null',
|
|
580
569
|
'[disabled]': 'disabled',
|
|
581
|
-
'(input)': '_onInput($event
|
|
570
|
+
'(input)': '_onInput($event)',
|
|
582
571
|
'(change)': '_onChange()',
|
|
583
572
|
'(blur)': '_onBlur()',
|
|
584
573
|
'(keydown)': '_onKeydown($event)',
|
|
@@ -708,12 +697,12 @@ class MtxColorpickerModule {
|
|
|
708
697
|
A11yModule,
|
|
709
698
|
PortalModule,
|
|
710
699
|
MatButtonModule,
|
|
711
|
-
ColorChromeModule,
|
|
712
700
|
MtxColorpicker,
|
|
713
701
|
MtxColorpickerContent,
|
|
714
702
|
MtxColorpickerInput,
|
|
715
703
|
MtxColorpickerToggle,
|
|
716
|
-
MtxColorpickerToggleIcon
|
|
704
|
+
MtxColorpickerToggleIcon,
|
|
705
|
+
ColorPicker], exports: [MtxColorpicker,
|
|
717
706
|
MtxColorpickerContent,
|
|
718
707
|
MtxColorpickerInput,
|
|
719
708
|
MtxColorpickerToggle,
|
|
@@ -723,9 +712,9 @@ class MtxColorpickerModule {
|
|
|
723
712
|
A11yModule,
|
|
724
713
|
PortalModule,
|
|
725
714
|
MatButtonModule,
|
|
726
|
-
ColorChromeModule,
|
|
727
715
|
MtxColorpickerContent,
|
|
728
|
-
MtxColorpickerToggle
|
|
716
|
+
MtxColorpickerToggle,
|
|
717
|
+
ColorPicker] }); }
|
|
729
718
|
}
|
|
730
719
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: MtxColorpickerModule, decorators: [{
|
|
731
720
|
type: NgModule,
|
|
@@ -736,12 +725,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
|
736
725
|
A11yModule,
|
|
737
726
|
PortalModule,
|
|
738
727
|
MatButtonModule,
|
|
739
|
-
ColorChromeModule,
|
|
740
728
|
MtxColorpicker,
|
|
741
729
|
MtxColorpickerContent,
|
|
742
730
|
MtxColorpickerInput,
|
|
743
731
|
MtxColorpickerToggle,
|
|
744
732
|
MtxColorpickerToggleIcon,
|
|
733
|
+
ColorPicker,
|
|
745
734
|
],
|
|
746
735
|
exports: [
|
|
747
736
|
MtxColorpicker,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mtxColorpicker.mjs","sources":["../../../projects/extensions/colorpicker/colorpicker-animations.ts","../../../projects/extensions/colorpicker/colorpicker.ts","../../../projects/extensions/colorpicker/colorpicker-content.html","../../../projects/extensions/colorpicker/colorpicker-input.ts","../../../projects/extensions/colorpicker/colorpicker-toggle.ts","../../../projects/extensions/colorpicker/colorpicker-toggle.html","../../../projects/extensions/colorpicker/colorpicker-module.ts","../../../projects/extensions/colorpicker/mtxColorpicker.ts"],"sourcesContent":["import {\n animate,\n style,\n transition,\n trigger,\n keyframes,\n AnimationTriggerMetadata,\n} from '@angular/animations';\n\n/**\n * Animations used by the colorpicker.\n * @docs-private\n */\nexport const mtxColorpickerAnimations: {\n readonly transformPanel: AnimationTriggerMetadata;\n} = {\n /** Transforms the height of the colorpicker's panel. */\n transformPanel: trigger('transformPanel', [\n transition(\n 'void => enter-dropdown',\n animate(\n '120ms cubic-bezier(0, 0, 0.2, 1)',\n keyframes([\n style({ opacity: 0, transform: 'scale(1, 0.8)' }),\n style({ opacity: 1, transform: 'scale(1, 1)' }),\n ])\n )\n ),\n transition('* => void', animate('100ms linear', style({ opacity: 0 }))),\n ]),\n};\n","import { Directionality } from '@angular/cdk/bidi';\nimport { ESCAPE, UP_ARROW, hasModifierKey } from '@angular/cdk/keycodes';\nimport {\n FlexibleConnectedPositionStrategy,\n Overlay,\n OverlayConfig,\n OverlayRef,\n ScrollStrategy,\n} from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { DOCUMENT, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n EventEmitter,\n Inject,\n InjectionToken,\n Injector,\n Input,\n OnChanges,\n OnDestroy,\n Optional,\n Output,\n TemplateRef,\n ViewContainerRef,\n ViewEncapsulation,\n afterNextRender,\n booleanAttribute,\n inject,\n} from '@angular/core';\nimport { ThemePalette } from '@angular/material/core';\nimport { Subject, Subscription, merge } from 'rxjs';\nimport { filter, take } from 'rxjs/operators';\n\nimport { TinyColor } from '@ctrl/tinycolor';\nimport { ColorEvent } from 'ngx-color';\nimport { ColorChromeModule } from 'ngx-color/chrome';\nimport { mtxColorpickerAnimations } from './colorpicker-animations';\nimport { ColorFormat, MtxColorpickerInput } from './colorpicker-input';\n\n/** Used to generate a unique ID for each colorpicker instance. */\nlet colorpickerUid = 0;\n\n/** Injection token that determines the scroll handling while the panel is open. */\nexport const MTX_COLORPICKER_SCROLL_STRATEGY = new InjectionToken<() => ScrollStrategy>(\n 'mtx-colorpicker-scroll-strategy',\n {\n providedIn: 'root',\n factory: () => {\n const overlay = inject(Overlay);\n return () => overlay.scrollStrategies.reposition();\n },\n }\n);\n\nexport function MTX_COLORPICKER_SCROLL_STRATEGY_FACTORY(overlay: Overlay): () => ScrollStrategy {\n return () => overlay.scrollStrategies.reposition();\n}\n\n/** Possible positions for the colorpicker dropdown along the X axis. */\nexport type ColorpickerDropdownPositionX = 'start' | 'end';\n\n/** Possible positions for the colorpicker dropdown along the Y axis. */\nexport type ColorpickerDropdownPositionY = 'above' | 'below';\n\nexport const MTX_COLORPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER = {\n provide: MTX_COLORPICKER_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: MTX_COLORPICKER_SCROLL_STRATEGY_FACTORY,\n};\n\n@Component({\n selector: 'mtx-colorpicker-content',\n templateUrl: './colorpicker-content.html',\n styleUrl: 'colorpicker-content.scss',\n host: {\n 'class': 'mtx-colorpicker-content',\n '[class]': 'color ? \"mat-\" + color : \"\"',\n '[@transformPanel]': '_animationState',\n '(@transformPanel.done)': '_animationDone.next()',\n },\n animations: [mtxColorpickerAnimations.transformPanel],\n exportAs: 'mtxColorpickerContent',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [ColorChromeModule, NgTemplateOutlet],\n})\nexport class MtxColorpickerContent implements OnDestroy {\n @Input() color: ThemePalette;\n\n picker!: MtxColorpicker;\n\n /** Current state of the animation. */\n _animationState: 'enter-dropdown' | 'void' = 'enter-dropdown';\n\n /** Emits when an animation has finished. */\n readonly _animationDone = new Subject<void>();\n\n constructor(private _changeDetectorRef: ChangeDetectorRef) {}\n\n _startExitAnimation() {\n this._animationState = 'void';\n this._changeDetectorRef.markForCheck();\n }\n\n ngOnDestroy() {\n this._animationDone.complete();\n }\n\n getColorString(e: ColorEvent): string {\n return {\n hex: e.color.rgb.a === 1 ? e.color.hex : new TinyColor(e.color.rgb).toHex8String(),\n rgb: new TinyColor(e.color.rgb).toRgbString(),\n hsl: new TinyColor(e.color.hsl).toHslString(),\n hsv: new TinyColor(e.color.hsv).toHsvString(),\n }[this.picker.format];\n }\n}\n\n@Component({\n selector: 'mtx-colorpicker',\n template: '',\n exportAs: 'mtxColorpicker',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n})\nexport class MtxColorpicker implements OnChanges, OnDestroy {\n private _scrollStrategy: () => ScrollStrategy;\n private _inputStateChanges = Subscription.EMPTY;\n\n /** Custom colorpicker content set by the consumer. */\n @Input() content!: TemplateRef<any>;\n\n /** Emits when the colorpicker has been opened. */\n @Output('opened') openedStream: EventEmitter<void> = new EventEmitter<void>();\n\n /** Emits when the colorpicker has been closed. */\n @Output('closed') closedStream: EventEmitter<void> = new EventEmitter<void>();\n\n @Input({ transform: booleanAttribute }) get disabled() {\n return this._disabled === undefined && this.pickerInput\n ? this.pickerInput.disabled\n : !!this._disabled;\n }\n set disabled(value: boolean) {\n if (value !== this._disabled) {\n this._disabled = value;\n this._disabledChange.next(value);\n }\n }\n private _disabled!: boolean;\n\n /** Preferred position of the colorpicker in the X axis. */\n @Input()\n xPosition: ColorpickerDropdownPositionX = 'start';\n\n /** Preferred position of the colorpicker in the Y axis. */\n @Input()\n yPosition: ColorpickerDropdownPositionY = 'below';\n\n /**\n * Whether to restore focus to the previously-focused element when the panel is closed.\n * Note that automatic focus restoration is an accessibility feature and it is recommended that\n * you provide your own equivalent, if you decide to turn it off.\n */\n @Input({ transform: booleanAttribute }) restoreFocus = true;\n\n /** Whether the panel is open. */\n @Input({ transform: booleanAttribute })\n get opened(): boolean {\n return this._opened;\n }\n set opened(value: boolean) {\n value ? this.open() : this.close();\n }\n private _opened = false;\n\n /** The id for the colorpicker panel. */\n id = `mtx-colorpicker-${colorpickerUid++}`;\n\n /** Color palette to use on the colorpicker's panel. */\n @Input()\n get color(): ThemePalette {\n return this._color || (this.pickerInput ? this.pickerInput.getThemePalette() : undefined);\n }\n set color(value: ThemePalette) {\n this._color = value;\n }\n private _color: ThemePalette;\n\n /** The input and output color format. */\n @Input()\n get format(): ColorFormat {\n return this._format || this.pickerInput.format;\n }\n set format(value: ColorFormat) {\n this._format = value;\n }\n _format!: ColorFormat;\n\n /** The currently selected color. */\n get selected(): string {\n return this._validSelected;\n }\n set selected(value: string) {\n this._validSelected = value;\n }\n private _validSelected: string = '';\n\n /** A reference to the overlay when the picker is opened as a popup. */\n private _overlayRef!: OverlayRef | null;\n\n /** Reference to the component instance rendered in the overlay. */\n private _componentRef!: ComponentRef<MtxColorpickerContent> | null;\n\n /** The element that was focused before the colorpicker was opened. */\n private _focusedElementBeforeOpen: HTMLElement | null = null;\n\n /** Unique class that will be added to the backdrop so that the test harnesses can look it up. */\n private _backdropHarnessClass = `${this.id}-backdrop`;\n\n /** The input element this colorpicker is associated with. */\n pickerInput!: MtxColorpickerInput;\n\n /** Emits when the colorpicker is disabled. */\n readonly _disabledChange = new Subject<boolean>();\n\n /** Emits new selected color when selected color changes. */\n readonly _selectedChanged = new Subject<string>();\n\n private _injector = inject(Injector);\n\n constructor(\n private _overlay: Overlay,\n private _viewContainerRef: ViewContainerRef,\n @Inject(MTX_COLORPICKER_SCROLL_STRATEGY) scrollStrategy: any,\n @Optional() private _dir: Directionality,\n @Optional() @Inject(DOCUMENT) private _document: any\n ) {\n this._scrollStrategy = scrollStrategy;\n }\n\n ngOnChanges() {}\n\n ngOnDestroy() {\n this._destroyOverlay();\n this.close();\n this._inputStateChanges.unsubscribe();\n this._disabledChange.complete();\n }\n\n /** Selects the given color. */\n select(nextVal: string): void {\n const oldValue = this.selected;\n this.selected = nextVal;\n\n // TODO: `nextVal` should compare with `oldValue`\n this._selectedChanged.next(nextVal);\n }\n\n /**\n * Register an input with this colorpicker.\n * @param input The colorpicker input to register with this colorpicker.\n */\n registerInput(input: MtxColorpickerInput): void {\n if (this.pickerInput) {\n throw Error('A Colorpicker can only be associated with a single input.');\n }\n this.pickerInput = input;\n this._inputStateChanges = input._valueChange.subscribe(\n (value: string) => (this.selected = value)\n );\n }\n\n /** Open the panel. */\n open(): void {\n if (this._opened || this.disabled) {\n return;\n }\n if (!this.pickerInput) {\n throw Error('Attempted to open an Colorpicker with no associated input.');\n }\n\n if (this._document) {\n this._focusedElementBeforeOpen = this._document.activeElement;\n }\n\n this._openOverlay();\n this._opened = true;\n this.openedStream.emit();\n }\n\n /** Close the panel. */\n close(): void {\n if (!this._opened) {\n return;\n }\n\n if (this._componentRef) {\n const instance = this._componentRef.instance;\n instance._startExitAnimation();\n instance._animationDone.pipe(take(1)).subscribe(() => this._destroyOverlay());\n }\n\n const completeClose = () => {\n // The `_opened` could've been reset already if\n // we got two events in quick succession.\n if (this._opened) {\n this._opened = false;\n this.closedStream.emit();\n this._focusedElementBeforeOpen = null;\n }\n };\n\n if (\n this.restoreFocus &&\n this._focusedElementBeforeOpen &&\n typeof this._focusedElementBeforeOpen.focus === 'function'\n ) {\n // Because IE moves focus asynchronously, we can't count on it being restored before we've\n // marked the colorpicker as closed. If the event fires out of sequence and the element that\n // we're refocusing opens the colorpicker on focus, the user could be stuck with not being\n // able to close the panel at all. We work around it by making the logic, that marks\n // the colorpicker as closed, async as well.\n this._focusedElementBeforeOpen.focus();\n setTimeout(completeClose);\n } else {\n completeClose();\n }\n }\n\n /** Forwards relevant values from the colorpicker to the colorpicker content inside the overlay. */\n protected _forwardContentValues(instance: MtxColorpickerContent) {\n instance.picker = this;\n instance.color = this.color;\n }\n\n /** Open the colopicker as a popup. */\n private _openOverlay(): void {\n this._destroyOverlay();\n\n const labelId = this.pickerInput.getOverlayLabelId();\n const portal = new ComponentPortal<MtxColorpickerContent>(\n MtxColorpickerContent,\n this._viewContainerRef\n );\n const overlayRef = (this._overlayRef = this._overlay.create(\n new OverlayConfig({\n positionStrategy: this._getDropdownStrategy(),\n hasBackdrop: true,\n backdropClass: ['mat-overlay-transparent-backdrop', this._backdropHarnessClass],\n direction: this._dir,\n scrollStrategy: this._scrollStrategy(),\n panelClass: `mtx-colorpicker-popup`,\n })\n ));\n const overlayElement = overlayRef.overlayElement;\n overlayElement.setAttribute('role', 'dialog');\n\n if (labelId) {\n overlayElement.setAttribute('aria-labelledby', labelId);\n }\n\n this._getCloseStream(overlayRef).subscribe(event => {\n if (event) {\n event.preventDefault();\n }\n this.close();\n });\n\n this._componentRef = overlayRef.attach(portal);\n this._forwardContentValues(this._componentRef.instance);\n\n // Update the position once the panel has rendered. Only relevant in dropdown mode.\n afterNextRender(\n () => {\n overlayRef.updatePosition();\n },\n { injector: this._injector }\n );\n }\n\n /** Destroys the current overlay. */\n private _destroyOverlay() {\n if (this._overlayRef) {\n this._overlayRef.dispose();\n this._overlayRef = this._componentRef = null;\n }\n }\n\n /** Gets a position strategy that will open the panel as a dropdown. */\n private _getDropdownStrategy() {\n const strategy = this._overlay\n .position()\n .flexibleConnectedTo(this.pickerInput.getConnectedOverlayOrigin())\n .withTransformOriginOn('.mtx-colorpicker-content')\n .withFlexibleDimensions(false)\n .withViewportMargin(8)\n .withLockedPosition();\n\n return this._setConnectedPositions(strategy);\n }\n\n /** Sets the positions of the colorpicker in dropdown mode based on the current configuration. */\n private _setConnectedPositions(strategy: FlexibleConnectedPositionStrategy) {\n const primaryX = this.xPosition === 'end' ? 'end' : 'start';\n const secondaryX = primaryX === 'start' ? 'end' : 'start';\n const primaryY = this.yPosition === 'above' ? 'bottom' : 'top';\n const secondaryY = primaryY === 'top' ? 'bottom' : 'top';\n\n return strategy.withPositions([\n {\n originX: primaryX,\n originY: secondaryY,\n overlayX: primaryX,\n overlayY: primaryY,\n },\n {\n originX: primaryX,\n originY: primaryY,\n overlayX: primaryX,\n overlayY: secondaryY,\n },\n {\n originX: secondaryX,\n originY: secondaryY,\n overlayX: secondaryX,\n overlayY: primaryY,\n },\n {\n originX: secondaryX,\n originY: primaryY,\n overlayX: secondaryX,\n overlayY: secondaryY,\n },\n ]);\n }\n\n /** Gets an observable that will emit when the overlay is supposed to be closed. */\n private _getCloseStream(overlayRef: OverlayRef) {\n return merge(\n overlayRef.backdropClick(),\n overlayRef.detachments(),\n overlayRef.keydownEvents().pipe(\n filter(event => {\n // Closing on alt + up is only valid when there's an input associated with the colorpicker.\n return (\n (event.keyCode === ESCAPE && !hasModifierKey(event)) ||\n (this.pickerInput && hasModifierKey(event, 'altKey') && event.keyCode === UP_ARROW)\n );\n })\n )\n );\n }\n}\n","@if (picker.content) {\n <ng-template [ngTemplateOutlet]=\"picker.content\"></ng-template>\n} @else {\n <color-chrome [color]=\"picker.selected\" (onChangeComplete)=\"picker.select(getColorString($event))\" />\n}\n","import { DOWN_ARROW } from '@angular/cdk/keycodes';\nimport {\n AfterViewInit,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n Optional,\n Output,\n booleanAttribute,\n forwardRef,\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n ValidatorFn,\n Validators,\n} from '@angular/forms';\nimport { ThemePalette } from '@angular/material/core';\nimport { MatFormField } from '@angular/material/form-field';\nimport { MAT_INPUT_VALUE_ACCESSOR } from '@angular/material/input';\nimport { Subscription } from 'rxjs';\n\nimport { MtxColorpicker } from './colorpicker';\n\nexport class MtxColorPickerInputEvent {\n /** The new value for the target colorpicker input. */\n value: string | null;\n\n constructor(\n /** Reference to the colorpicker input component that emitted the event. */\n public target: MtxColorpickerInput,\n /** Reference to the native input element associated with the colorpicker input. */\n public targetElement: HTMLElement\n ) {\n this.value = this.target.value;\n }\n}\n\nexport const MTX_COLORPICKER_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MtxColorpickerInput),\n multi: true,\n};\n\nexport const MTX_COLORPICKER_VALIDATORS: any = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => MtxColorpickerInput),\n multi: true,\n};\n\nexport type ColorFormat = 'hex' | 'rgb' | 'hsl' | 'hsv';\n\n@Directive({\n selector: 'input[mtxColorpicker]',\n providers: [\n MTX_COLORPICKER_VALUE_ACCESSOR,\n MTX_COLORPICKER_VALIDATORS,\n { provide: MAT_INPUT_VALUE_ACCESSOR, useExisting: MtxColorpickerInput },\n ],\n host: {\n 'class': 'mtx-colorpicker-input',\n '[attr.aria-haspopup]': '_picker ? \"dialog\" : null',\n '[attr.aria-owns]': '(_picker?.opened && _picker.id) || null',\n '[disabled]': 'disabled',\n '(input)': '_onInput($event.target.value)',\n '(change)': '_onChange()',\n '(blur)': '_onBlur()',\n '(keydown)': '_onKeydown($event)',\n },\n exportAs: 'mtxColorpickerInput',\n standalone: true,\n})\nexport class MtxColorpickerInput implements ControlValueAccessor, AfterViewInit, OnDestroy {\n /** Whether the component has been initialized. */\n private _isInitialized!: boolean;\n\n @Input()\n set mtxColorpicker(value: MtxColorpicker) {\n if (!value) {\n return;\n }\n\n this._picker = value;\n this._picker.registerInput(this);\n this._pickerSubscription.unsubscribe();\n\n this._pickerSubscription = this._picker._selectedChanged.subscribe((selected: string) => {\n this.value = selected;\n this._cvaOnChange(selected);\n this._onTouched();\n this.colorInput.emit(new MtxColorPickerInputEvent(this, this._elementRef.nativeElement));\n this.colorChange.emit(new MtxColorPickerInputEvent(this, this._elementRef.nativeElement));\n });\n }\n _picker!: MtxColorpicker;\n\n /** Whether the colorpicker-input is disabled. */\n @Input({ transform: booleanAttribute })\n get disabled(): boolean {\n return !!this._disabled;\n }\n set disabled(value: boolean) {\n const element = this._elementRef.nativeElement;\n\n if (this._disabled !== value) {\n this._disabled = value;\n this._disabledChange.emit(value);\n }\n\n // We need to null check the `blur` method, because it's undefined during SSR.\n // In Ivy static bindings are invoked earlier, before the element is attached to the DOM.\n // This can cause an error to be thrown in some browsers (IE/Edge) which assert that the\n // element has been inserted.\n if (value && this._isInitialized && element.blur) {\n // Normally, native input elements automatically blur if they turn disabled. This behavior\n // is problematic, because it would mean that it triggers another change detection cycle,\n // which then causes a changed after checked error if the input element was focused before.\n element.blur();\n }\n }\n private _disabled!: boolean;\n\n /** The value of the input. */\n @Input()\n get value(): string | null {\n return this._value;\n }\n set value(value: string | null) {\n const oldValue = this.value;\n this._value = value;\n this._formatValue(value);\n\n this._valueChange.emit(value);\n }\n private _value!: string | null;\n\n /** The input and output color format. */\n @Input() format: ColorFormat = 'hex';\n\n /** Emits when a `change` event is fired on this `<input>`. */\n @Output() readonly colorChange: EventEmitter<MtxColorPickerInputEvent> =\n new EventEmitter<MtxColorPickerInputEvent>();\n\n /** Emits when an `input` event is fired on this `<input>`. */\n @Output() readonly colorInput: EventEmitter<MtxColorPickerInputEvent> =\n new EventEmitter<MtxColorPickerInputEvent>();\n\n /** Emits when the disabled state has changed */\n _disabledChange = new EventEmitter<boolean>();\n\n /** Emits when the value changes (either due to user input or programmatic change). */\n _valueChange = new EventEmitter<string | null>();\n\n _onTouched = () => {};\n\n _validatorOnChange = () => {};\n\n private _cvaOnChange: (value: any) => void = () => {};\n\n private _pickerSubscription = Subscription.EMPTY;\n\n /** The combined form control validator for this input. */\n private _validator: ValidatorFn | null = Validators.compose([]);\n\n /** Whether the last value set on the input was valid. */\n private _lastValueValid = false;\n\n constructor(\n private _elementRef: ElementRef<HTMLInputElement>,\n @Optional() private _formField: MatFormField\n ) {}\n\n ngAfterViewInit() {\n this._isInitialized = true;\n }\n\n ngOnDestroy() {\n this._pickerSubscription.unsubscribe();\n this._valueChange.complete();\n this._disabledChange.complete();\n }\n\n registerOnValidatorChange(fn: () => void): void {\n this._validatorOnChange = fn;\n }\n\n /** @docs-private */\n validate(c: AbstractControl): ValidationErrors | null {\n return this._validator ? this._validator(c) : null;\n }\n\n /**\n * @deprecated\n * @breaking-change 8.0.0 Use `getConnectedOverlayOrigin` instead\n */\n getPopupConnectionElementRef(): ElementRef {\n return this.getConnectedOverlayOrigin();\n }\n\n /**\n * Gets the element that the colorpicker popup should be connected to.\n * @return The element to connect the popup to.\n */\n getConnectedOverlayOrigin(): ElementRef {\n return this._formField ? this._formField.getConnectedOverlayOrigin() : this._elementRef;\n }\n\n /** Gets the ID of an element that should be used a description for the overlay. */\n getOverlayLabelId(): string | null {\n if (this._formField) {\n return this._formField.getLabelId();\n }\n\n return this._elementRef.nativeElement.getAttribute('aria-labelledby');\n }\n\n // Implemented as part of ControlValueAccessor.\n writeValue(value: string): void {\n this.value = value;\n }\n\n // Implemented as part of ControlValueAccessor.\n registerOnChange(fn: (value: any) => void): void {\n this._cvaOnChange = fn;\n }\n\n // Implemented as part of ControlValueAccessor.\n registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n // Implemented as part of ControlValueAccessor.\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n _onKeydown(event: KeyboardEvent) {\n const isAltDownArrow = event.altKey && event.keyCode === DOWN_ARROW;\n\n if (this._picker && isAltDownArrow && !this._elementRef.nativeElement.readOnly) {\n this._picker.open();\n event.preventDefault();\n }\n }\n\n /** Handles blur events on the input. */\n _onBlur() {\n // Reformat the input only if we have a valid value.\n if (this.value) {\n this._formatValue(this.value);\n }\n\n this._onTouched();\n }\n\n _onInput(value: string) {\n const nextValue = value;\n\n this._value = nextValue;\n this._cvaOnChange(nextValue);\n this._valueChange.emit(nextValue);\n this.colorInput.emit(new MtxColorPickerInputEvent(this, this._elementRef.nativeElement));\n }\n\n _onChange() {\n this.colorChange.emit(new MtxColorPickerInputEvent(this, this._elementRef.nativeElement));\n }\n\n /** Returns the palette used by the input's form field, if any. */\n getThemePalette(): ThemePalette {\n return this._formField ? this._formField.color : undefined;\n }\n\n /** TODO: Formats a value and sets it on the input element. */\n private _formatValue(value: string | null) {\n this._elementRef.nativeElement.value = value ? value : '';\n }\n}\n","import {\n AfterContentInit,\n Attribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n Directive,\n Input,\n OnChanges,\n OnDestroy,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation,\n booleanAttribute,\n} from '@angular/core';\nimport { MatButton, MatIconButton } from '@angular/material/button';\nimport { Observable, Subscription, merge, of as observableOf } from 'rxjs';\n\nimport { MtxColorpicker } from './colorpicker';\n\n/** Can be used to override the icon of a `mtxColorpickerToggle`. */\n@Directive({\n selector: '[mtxColorpickerToggleIcon]',\n standalone: true,\n})\nexport class MtxColorpickerToggleIcon {}\n\n@Component({\n selector: 'mtx-colorpicker-toggle',\n templateUrl: './colorpicker-toggle.html',\n styleUrl: './colorpicker-toggle.scss',\n host: {\n 'class': 'mtx-colorpicker-toggle',\n '[attr.tabindex]': 'null',\n '[class.mtx-colorpicker-toggle-active]': 'picker && picker.opened',\n '[class.mat-accent]': 'picker && picker.color === \"accent\"',\n '[class.mat-warn]': 'picker && picker.color === \"warn\"',\n // Bind the `click` on the host, rather than the inner `button`, so that we can call\n // `stopPropagation` on it without affecting the user's `click` handlers. We need to stop\n // it so that the input doesn't get focused automatically by the form field (See #21836).\n '(click)': '_open($event)',\n },\n exportAs: 'mtxColorpickerToggle',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [MatIconButton],\n})\nexport class MtxColorpickerToggle implements AfterContentInit, OnChanges, OnDestroy {\n private _stateChanges = Subscription.EMPTY;\n\n /** Colorpicker instance that the button will toggle. */\n @Input('for') picker!: MtxColorpicker;\n\n /** Tabindex for the toggle. */\n @Input() tabIndex: number | null;\n\n /** Screen-reader label for the button. */\n @Input('aria-label') ariaLabel!: string;\n\n /** Whether the toggle button is disabled. */\n @Input({ transform: booleanAttribute })\n get disabled(): boolean {\n if (this._disabled == null && this.picker) {\n return this.picker.disabled;\n }\n\n return !!this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = value;\n }\n private _disabled!: boolean;\n\n /** Whether ripples on the toggle should be disabled. */\n @Input({ transform: booleanAttribute }) disableRipple!: boolean;\n\n /** Custom icon set by the consumer. */\n @ContentChild(MtxColorpickerToggleIcon) _customIcon!: MtxColorpickerToggleIcon;\n\n /** Underlying button element. */\n @ViewChild('button') _button!: MatButton;\n\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n @Attribute('tabindex') defaultTabIndex: string\n ) {\n const parsedTabIndex = Number(defaultTabIndex);\n this.tabIndex = parsedTabIndex || parsedTabIndex === 0 ? parsedTabIndex : null;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.picker) {\n this._watchStateChanges();\n }\n }\n\n ngOnDestroy() {\n this._stateChanges.unsubscribe();\n }\n\n ngAfterContentInit() {\n this._watchStateChanges();\n }\n\n _open(event: Event): void {\n if (this.picker && !this.disabled) {\n this.picker.open();\n event.stopPropagation();\n }\n }\n\n private _watchStateChanges() {\n const pickerDisabled = this.picker ? this.picker._disabledChange : observableOf();\n const inputDisabled =\n this.picker && this.picker.pickerInput\n ? this.picker.pickerInput._disabledChange\n : observableOf();\n const pickerToggled = this.picker\n ? merge(this.picker.openedStream, this.picker.closedStream)\n : observableOf();\n\n this._stateChanges.unsubscribe();\n this._stateChanges = merge(\n pickerDisabled as Observable<void>,\n inputDisabled as Observable<void>,\n pickerToggled\n ).subscribe(() => this._changeDetectorRef.markForCheck());\n }\n}\n","<button #button\n mat-icon-button\n type=\"button\"\n [attr.aria-haspopup]=\"picker ? 'dialog' : null\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.tabindex]=\"disabled ? -1 : tabIndex\"\n [disabled]=\"disabled\"\n [disableRipple]=\"disableRipple\">\n\n @if (!_customIcon) {\n <svg\n class=\"mtx-colorpicker-toggle-default-icon\"\n viewBox=\"0 0 24 24\"\n width=\"24px\"\n height=\"24px\"\n fill=\"currentColor\"\n focusable=\"false\">\n <path d=\"M17.5,12A1.5,1.5 0 0,1 16,10.5A1.5,1.5 0 0,1 17.5,9A1.5,1.5 0 0,1 19,10.5A1.5,1.5 0 0,1 17.5,12M14.5,8A1.5,1.5 0 0,1 13,6.5A1.5,1.5 0 0,1 14.5,5A1.5,1.5 0 0,1 16,6.5A1.5,1.5 0 0,1 14.5,8M9.5,8A1.5,1.5 0 0,1 8,6.5A1.5,1.5 0 0,1 9.5,5A1.5,1.5 0 0,1 11,6.5A1.5,1.5 0 0,1 9.5,8M6.5,12A1.5,1.5 0 0,1 5,10.5A1.5,1.5 0 0,1 6.5,9A1.5,1.5 0 0,1 8,10.5A1.5,1.5 0 0,1 6.5,12M12,3A9,9 0 0,0 3,12A9,9 0 0,0 12,21A1.5,1.5 0 0,0 13.5,19.5C13.5,19.11 13.35,18.76 13.11,18.5C12.88,18.23 12.73,17.88 12.73,17.5A1.5,1.5 0 0,1 14.23,16H16A5,5 0 0,0 21,11C21,6.58 16.97,3 12,3Z\" />\n </svg>\n }\n\n <ng-content select=\"[mtxColorpickerToggleIcon]\"></ng-content>\n</button>\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\n\nimport { ColorChromeModule } from 'ngx-color/chrome';\nimport {\n MTX_COLORPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER,\n MtxColorpicker,\n MtxColorpickerContent,\n} from './colorpicker';\nimport { MtxColorpickerInput } from './colorpicker-input';\nimport { MtxColorpickerToggle, MtxColorpickerToggleIcon } from './colorpicker-toggle';\n\n@NgModule({\n imports: [\n CommonModule,\n OverlayModule,\n A11yModule,\n PortalModule,\n MatButtonModule,\n ColorChromeModule,\n MtxColorpicker,\n MtxColorpickerContent,\n MtxColorpickerInput,\n MtxColorpickerToggle,\n MtxColorpickerToggleIcon,\n ],\n exports: [\n MtxColorpicker,\n MtxColorpickerContent,\n MtxColorpickerInput,\n MtxColorpickerToggle,\n MtxColorpickerToggleIcon,\n ],\n providers: [MTX_COLORPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER],\n})\nexport class MtxColorpickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","observableOf"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mtxColorpicker.mjs","sources":["../../../projects/extensions/colorpicker/colorpicker-animations.ts","../../../projects/extensions/colorpicker/colorpicker.ts","../../../projects/extensions/colorpicker/colorpicker-content.html","../../../projects/extensions/colorpicker/colorpicker-input.ts","../../../projects/extensions/colorpicker/colorpicker-toggle.ts","../../../projects/extensions/colorpicker/colorpicker-toggle.html","../../../projects/extensions/colorpicker/colorpicker-module.ts","../../../projects/extensions/colorpicker/mtxColorpicker.ts"],"sourcesContent":["import {\n animate,\n style,\n transition,\n trigger,\n keyframes,\n AnimationTriggerMetadata,\n} from '@angular/animations';\n\n/**\n * Animations used by the colorpicker.\n * @docs-private\n */\nexport const mtxColorpickerAnimations: {\n readonly transformPanel: AnimationTriggerMetadata;\n} = {\n /** Transforms the height of the colorpicker's panel. */\n transformPanel: trigger('transformPanel', [\n transition(\n 'void => enter-dropdown',\n animate(\n '120ms cubic-bezier(0, 0, 0.2, 1)',\n keyframes([\n style({ opacity: 0, transform: 'scale(1, 0.8)' }),\n style({ opacity: 1, transform: 'scale(1, 1)' }),\n ])\n )\n ),\n transition('* => void', animate('100ms linear', style({ opacity: 0 }))),\n ]),\n};\n","import { Directionality } from '@angular/cdk/bidi';\nimport { ESCAPE, UP_ARROW, hasModifierKey } from '@angular/cdk/keycodes';\nimport {\n FlexibleConnectedPositionStrategy,\n Overlay,\n OverlayConfig,\n OverlayRef,\n ScrollStrategy,\n} from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { DOCUMENT, NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n EventEmitter,\n Inject,\n InjectionToken,\n Injector,\n Input,\n OnChanges,\n OnDestroy,\n Optional,\n Output,\n TemplateRef,\n ViewContainerRef,\n ViewEncapsulation,\n afterNextRender,\n booleanAttribute,\n inject,\n} from '@angular/core';\nimport { ThemePalette } from '@angular/material/core';\nimport { Subject, Subscription, merge } from 'rxjs';\nimport { filter, take } from 'rxjs/operators';\n\nimport { ColorFormat, ColorPicker } from '@acrodata/color-picker';\nimport { mtxColorpickerAnimations } from './colorpicker-animations';\nimport { MtxColorpickerInput } from './colorpicker-input';\n\n/** Used to generate a unique ID for each colorpicker instance. */\nlet colorpickerUid = 0;\n\n/** Injection token that determines the scroll handling while the panel is open. */\nexport const MTX_COLORPICKER_SCROLL_STRATEGY = new InjectionToken<() => ScrollStrategy>(\n 'mtx-colorpicker-scroll-strategy',\n {\n providedIn: 'root',\n factory: () => {\n const overlay = inject(Overlay);\n return () => overlay.scrollStrategies.reposition();\n },\n }\n);\n\nexport function MTX_COLORPICKER_SCROLL_STRATEGY_FACTORY(overlay: Overlay): () => ScrollStrategy {\n return () => overlay.scrollStrategies.reposition();\n}\n\n/** Possible positions for the colorpicker dropdown along the X axis. */\nexport type ColorpickerDropdownPositionX = 'start' | 'end';\n\n/** Possible positions for the colorpicker dropdown along the Y axis. */\nexport type ColorpickerDropdownPositionY = 'above' | 'below';\n\nexport const MTX_COLORPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER = {\n provide: MTX_COLORPICKER_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: MTX_COLORPICKER_SCROLL_STRATEGY_FACTORY,\n};\n\n@Component({\n selector: 'mtx-colorpicker-content',\n templateUrl: './colorpicker-content.html',\n styleUrl: 'colorpicker-content.scss',\n host: {\n 'class': 'mtx-colorpicker-content',\n '[class]': 'color ? \"mat-\" + color : \"\"',\n '[@transformPanel]': '_animationState',\n '(@transformPanel.done)': '_animationDone.next()',\n },\n animations: [mtxColorpickerAnimations.transformPanel],\n exportAs: 'mtxColorpickerContent',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [ColorPicker, NgTemplateOutlet],\n})\nexport class MtxColorpickerContent implements OnDestroy {\n @Input() color: ThemePalette;\n\n picker!: MtxColorpicker;\n\n /** Current state of the animation. */\n _animationState: 'enter-dropdown' | 'void' = 'enter-dropdown';\n\n /** Emits when an animation has finished. */\n readonly _animationDone = new Subject<void>();\n\n constructor(private _changeDetectorRef: ChangeDetectorRef) {}\n\n _startExitAnimation() {\n this._animationState = 'void';\n this._changeDetectorRef.markForCheck();\n }\n\n ngOnDestroy() {\n this._animationDone.complete();\n }\n}\n\n@Component({\n selector: 'mtx-colorpicker',\n template: '',\n exportAs: 'mtxColorpicker',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n standalone: true,\n})\nexport class MtxColorpicker implements OnChanges, OnDestroy {\n private _scrollStrategy: () => ScrollStrategy;\n private _inputStateChanges = Subscription.EMPTY;\n\n /** Custom colorpicker content set by the consumer. */\n @Input() content!: TemplateRef<any>;\n\n /** Emits when the colorpicker has been opened. */\n @Output('opened') openedStream: EventEmitter<void> = new EventEmitter<void>();\n\n /** Emits when the colorpicker has been closed. */\n @Output('closed') closedStream: EventEmitter<void> = new EventEmitter<void>();\n\n @Input({ transform: booleanAttribute }) get disabled() {\n return this._disabled === undefined && this.pickerInput\n ? this.pickerInput.disabled\n : !!this._disabled;\n }\n set disabled(value: boolean) {\n if (value !== this._disabled) {\n this._disabled = value;\n this._disabledChange.next(value);\n }\n }\n private _disabled!: boolean;\n\n /** Preferred position of the colorpicker in the X axis. */\n @Input()\n xPosition: ColorpickerDropdownPositionX = 'start';\n\n /** Preferred position of the colorpicker in the Y axis. */\n @Input()\n yPosition: ColorpickerDropdownPositionY = 'below';\n\n /**\n * Whether to restore focus to the previously-focused element when the panel is closed.\n * Note that automatic focus restoration is an accessibility feature and it is recommended that\n * you provide your own equivalent, if you decide to turn it off.\n */\n @Input({ transform: booleanAttribute }) restoreFocus = true;\n\n /** Whether the panel is open. */\n @Input({ transform: booleanAttribute })\n get opened(): boolean {\n return this._opened;\n }\n set opened(value: boolean) {\n value ? this.open() : this.close();\n }\n private _opened = false;\n\n /** The id for the colorpicker panel. */\n id = `mtx-colorpicker-${colorpickerUid++}`;\n\n /** Color palette to use on the colorpicker's panel. */\n @Input()\n get color(): ThemePalette {\n return this._color || (this.pickerInput ? this.pickerInput.getThemePalette() : undefined);\n }\n set color(value: ThemePalette) {\n this._color = value;\n }\n private _color: ThemePalette;\n\n /** The input and output color format. */\n @Input()\n get format(): ColorFormat | undefined {\n return this._format || this.pickerInput?.format;\n }\n set format(value: ColorFormat | undefined) {\n this._format = value;\n }\n _format?: ColorFormat;\n\n /** The currently selected color. */\n get selected(): string {\n return this._validSelected;\n }\n set selected(value: string) {\n this._validSelected = value;\n }\n private _validSelected: string = '';\n\n /** A reference to the overlay when the picker is opened as a popup. */\n private _overlayRef!: OverlayRef | null;\n\n /** Reference to the component instance rendered in the overlay. */\n private _componentRef!: ComponentRef<MtxColorpickerContent> | null;\n\n /** The element that was focused before the colorpicker was opened. */\n private _focusedElementBeforeOpen: HTMLElement | null = null;\n\n /** Unique class that will be added to the backdrop so that the test harnesses can look it up. */\n private _backdropHarnessClass = `${this.id}-backdrop`;\n\n /** The input element this colorpicker is associated with. */\n pickerInput!: MtxColorpickerInput;\n\n /** Emits when the colorpicker is disabled. */\n readonly _disabledChange = new Subject<boolean>();\n\n /** Emits new selected color when selected color changes. */\n readonly _selectedChanged = new Subject<string>();\n\n private _injector = inject(Injector);\n\n constructor(\n private _overlay: Overlay,\n private _viewContainerRef: ViewContainerRef,\n @Inject(MTX_COLORPICKER_SCROLL_STRATEGY) scrollStrategy: any,\n @Optional() private _dir: Directionality,\n @Optional() @Inject(DOCUMENT) private _document: any\n ) {\n this._scrollStrategy = scrollStrategy;\n }\n\n ngOnChanges() {}\n\n ngOnDestroy() {\n this._destroyOverlay();\n this.close();\n this._inputStateChanges.unsubscribe();\n this._disabledChange.complete();\n }\n\n /** Selects the given color. */\n select(nextVal: string): void {\n const oldValue = this.selected;\n this.selected = nextVal;\n\n // TODO: `nextVal` should compare with `oldValue`\n this._selectedChanged.next(nextVal);\n }\n\n /**\n * Register an input with this colorpicker.\n * @param input The colorpicker input to register with this colorpicker.\n */\n registerInput(input: MtxColorpickerInput): void {\n if (this.pickerInput) {\n throw Error('A Colorpicker can only be associated with a single input.');\n }\n this.pickerInput = input;\n this._inputStateChanges = input._valueChange.subscribe(\n (value: string) => (this.selected = value)\n );\n }\n\n /** Open the panel. */\n open(): void {\n if (this._opened || this.disabled) {\n return;\n }\n if (!this.pickerInput) {\n throw Error('Attempted to open an Colorpicker with no associated input.');\n }\n\n if (this._document) {\n this._focusedElementBeforeOpen = this._document.activeElement;\n }\n\n this._openOverlay();\n this._opened = true;\n this.openedStream.emit();\n }\n\n /** Close the panel. */\n close(): void {\n if (!this._opened) {\n return;\n }\n\n if (this._componentRef) {\n const instance = this._componentRef.instance;\n instance._startExitAnimation();\n instance._animationDone.pipe(take(1)).subscribe(() => this._destroyOverlay());\n }\n\n const completeClose = () => {\n // The `_opened` could've been reset already if\n // we got two events in quick succession.\n if (this._opened) {\n this._opened = false;\n this.closedStream.emit();\n this._focusedElementBeforeOpen = null;\n }\n };\n\n if (\n this.restoreFocus &&\n this._focusedElementBeforeOpen &&\n typeof this._focusedElementBeforeOpen.focus === 'function'\n ) {\n // Because IE moves focus asynchronously, we can't count on it being restored before we've\n // marked the colorpicker as closed. If the event fires out of sequence and the element that\n // we're refocusing opens the colorpicker on focus, the user could be stuck with not being\n // able to close the panel at all. We work around it by making the logic, that marks\n // the colorpicker as closed, async as well.\n this._focusedElementBeforeOpen.focus();\n setTimeout(completeClose);\n } else {\n completeClose();\n }\n }\n\n /** Forwards relevant values from the colorpicker to the colorpicker content inside the overlay. */\n protected _forwardContentValues(instance: MtxColorpickerContent) {\n instance.picker = this;\n instance.color = this.color;\n }\n\n /** Open the colopicker as a popup. */\n private _openOverlay(): void {\n this._destroyOverlay();\n\n const labelId = this.pickerInput.getOverlayLabelId();\n const portal = new ComponentPortal<MtxColorpickerContent>(\n MtxColorpickerContent,\n this._viewContainerRef\n );\n const overlayRef = (this._overlayRef = this._overlay.create(\n new OverlayConfig({\n positionStrategy: this._getDropdownStrategy(),\n hasBackdrop: true,\n backdropClass: ['mat-overlay-transparent-backdrop', this._backdropHarnessClass],\n direction: this._dir,\n scrollStrategy: this._scrollStrategy(),\n panelClass: `mtx-colorpicker-popup`,\n })\n ));\n const overlayElement = overlayRef.overlayElement;\n overlayElement.setAttribute('role', 'dialog');\n\n if (labelId) {\n overlayElement.setAttribute('aria-labelledby', labelId);\n }\n\n this._getCloseStream(overlayRef).subscribe(event => {\n if (event) {\n event.preventDefault();\n }\n this.close();\n });\n\n this._componentRef = overlayRef.attach(portal);\n this._forwardContentValues(this._componentRef.instance);\n\n // Update the position once the panel has rendered. Only relevant in dropdown mode.\n afterNextRender(\n () => {\n overlayRef.updatePosition();\n },\n { injector: this._injector }\n );\n }\n\n /** Destroys the current overlay. */\n private _destroyOverlay() {\n if (this._overlayRef) {\n this._overlayRef.dispose();\n this._overlayRef = this._componentRef = null;\n }\n }\n\n /** Gets a position strategy that will open the panel as a dropdown. */\n private _getDropdownStrategy() {\n const strategy = this._overlay\n .position()\n .flexibleConnectedTo(this.pickerInput.getConnectedOverlayOrigin())\n .withTransformOriginOn('.mtx-colorpicker-content')\n .withFlexibleDimensions(false)\n .withViewportMargin(8)\n .withLockedPosition();\n\n return this._setConnectedPositions(strategy);\n }\n\n /** Sets the positions of the colorpicker in dropdown mode based on the current configuration. */\n private _setConnectedPositions(strategy: FlexibleConnectedPositionStrategy) {\n const primaryX = this.xPosition === 'end' ? 'end' : 'start';\n const secondaryX = primaryX === 'start' ? 'end' : 'start';\n const primaryY = this.yPosition === 'above' ? 'bottom' : 'top';\n const secondaryY = primaryY === 'top' ? 'bottom' : 'top';\n\n return strategy.withPositions([\n {\n originX: primaryX,\n originY: secondaryY,\n overlayX: primaryX,\n overlayY: primaryY,\n },\n {\n originX: primaryX,\n originY: primaryY,\n overlayX: primaryX,\n overlayY: secondaryY,\n },\n {\n originX: secondaryX,\n originY: secondaryY,\n overlayX: secondaryX,\n overlayY: primaryY,\n },\n {\n originX: secondaryX,\n originY: primaryY,\n overlayX: secondaryX,\n overlayY: secondaryY,\n },\n ]);\n }\n\n /** Gets an observable that will emit when the overlay is supposed to be closed. */\n private _getCloseStream(overlayRef: OverlayRef) {\n return merge(\n overlayRef.backdropClick(),\n overlayRef.detachments(),\n overlayRef.keydownEvents().pipe(\n filter(event => {\n // Closing on alt + up is only valid when there's an input associated with the colorpicker.\n return (\n (event.keyCode === ESCAPE && !hasModifierKey(event)) ||\n (this.pickerInput && hasModifierKey(event, 'altKey') && event.keyCode === UP_ARROW)\n );\n })\n )\n );\n }\n}\n","@if (picker.content) {\n <ng-template [ngTemplateOutlet]=\"picker.content\"></ng-template>\n} @else {\n <color-picker\n [format]=\"picker.format\"\n [color]=\"picker.selected\"\n (colorChange)=\"picker.select($event)\"\n />\n}\n","import { DOWN_ARROW } from '@angular/cdk/keycodes';\nimport {\n AfterViewInit,\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n Optional,\n Output,\n booleanAttribute,\n forwardRef,\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n ValidatorFn,\n Validators,\n} from '@angular/forms';\nimport { ThemePalette } from '@angular/material/core';\nimport { MatFormField } from '@angular/material/form-field';\nimport { MAT_INPUT_VALUE_ACCESSOR } from '@angular/material/input';\nimport { Subscription } from 'rxjs';\n\nimport { ColorFormat } from '@acrodata/color-picker';\nimport { MtxColorpicker } from './colorpicker';\n\nexport class MtxColorPickerInputEvent {\n /** The new value for the target colorpicker input. */\n value: string | null;\n\n constructor(\n /** Reference to the colorpicker input component that emitted the event. */\n public target: MtxColorpickerInput,\n /** Reference to the native input element associated with the colorpicker input. */\n public targetElement: HTMLElement\n ) {\n this.value = this.target.value;\n }\n}\n\nexport const MTX_COLORPICKER_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => MtxColorpickerInput),\n multi: true,\n};\n\nexport const MTX_COLORPICKER_VALIDATORS: any = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => MtxColorpickerInput),\n multi: true,\n};\n\n@Directive({\n selector: 'input[mtxColorpicker]',\n providers: [\n MTX_COLORPICKER_VALUE_ACCESSOR,\n MTX_COLORPICKER_VALIDATORS,\n { provide: MAT_INPUT_VALUE_ACCESSOR, useExisting: MtxColorpickerInput },\n ],\n host: {\n 'class': 'mtx-colorpicker-input',\n '[attr.aria-haspopup]': '_picker ? \"dialog\" : null',\n '[attr.aria-owns]': '(_picker?.opened && _picker.id) || null',\n '[disabled]': 'disabled',\n '(input)': '_onInput($event)',\n '(change)': '_onChange()',\n '(blur)': '_onBlur()',\n '(keydown)': '_onKeydown($event)',\n },\n exportAs: 'mtxColorpickerInput',\n standalone: true,\n})\nexport class MtxColorpickerInput implements ControlValueAccessor, AfterViewInit, OnDestroy {\n /** Whether the component has been initialized. */\n private _isInitialized!: boolean;\n\n @Input()\n set mtxColorpicker(value: MtxColorpicker) {\n if (!value) {\n return;\n }\n\n this._picker = value;\n this._picker.registerInput(this);\n this._pickerSubscription.unsubscribe();\n\n this._pickerSubscription = this._picker._selectedChanged.subscribe((selected: string) => {\n this.value = selected;\n this._cvaOnChange(selected);\n this._onTouched();\n this.colorInput.emit(new MtxColorPickerInputEvent(this, this._elementRef.nativeElement));\n this.colorChange.emit(new MtxColorPickerInputEvent(this, this._elementRef.nativeElement));\n });\n }\n _picker!: MtxColorpicker;\n\n /** Whether the colorpicker-input is disabled. */\n @Input({ transform: booleanAttribute })\n get disabled(): boolean {\n return !!this._disabled;\n }\n set disabled(value: boolean) {\n const element = this._elementRef.nativeElement;\n\n if (this._disabled !== value) {\n this._disabled = value;\n this._disabledChange.emit(value);\n }\n\n // We need to null check the `blur` method, because it's undefined during SSR.\n // In Ivy static bindings are invoked earlier, before the element is attached to the DOM.\n // This can cause an error to be thrown in some browsers (IE/Edge) which assert that the\n // element has been inserted.\n if (value && this._isInitialized && element.blur) {\n // Normally, native input elements automatically blur if they turn disabled. This behavior\n // is problematic, because it would mean that it triggers another change detection cycle,\n // which then causes a changed after checked error if the input element was focused before.\n element.blur();\n }\n }\n private _disabled!: boolean;\n\n /** The value of the input. */\n @Input()\n get value(): string | null {\n return this._value;\n }\n set value(value: string | null) {\n const oldValue = this.value;\n this._value = value;\n this._formatValue(value);\n\n this._valueChange.emit(value);\n }\n private _value!: string | null;\n\n /** The input and output color format. */\n @Input() format?: ColorFormat;\n\n /** Emits when a `change` event is fired on this `<input>`. */\n @Output() readonly colorChange: EventEmitter<MtxColorPickerInputEvent> =\n new EventEmitter<MtxColorPickerInputEvent>();\n\n /** Emits when an `input` event is fired on this `<input>`. */\n @Output() readonly colorInput: EventEmitter<MtxColorPickerInputEvent> =\n new EventEmitter<MtxColorPickerInputEvent>();\n\n /** Emits when the disabled state has changed */\n _disabledChange = new EventEmitter<boolean>();\n\n /** Emits when the value changes (either due to user input or programmatic change). */\n _valueChange = new EventEmitter<string | null>();\n\n _onTouched = () => {};\n\n _validatorOnChange = () => {};\n\n private _cvaOnChange: (value: any) => void = () => {};\n\n private _pickerSubscription = Subscription.EMPTY;\n\n /** The combined form control validator for this input. */\n private _validator: ValidatorFn | null = Validators.compose([]);\n\n /** Whether the last value set on the input was valid. */\n private _lastValueValid = false;\n\n constructor(\n private _elementRef: ElementRef<HTMLInputElement>,\n @Optional() private _formField: MatFormField\n ) {}\n\n ngAfterViewInit() {\n this._isInitialized = true;\n }\n\n ngOnDestroy() {\n this._pickerSubscription.unsubscribe();\n this._valueChange.complete();\n this._disabledChange.complete();\n }\n\n registerOnValidatorChange(fn: () => void): void {\n this._validatorOnChange = fn;\n }\n\n /** @docs-private */\n validate(c: AbstractControl): ValidationErrors | null {\n return this._validator ? this._validator(c) : null;\n }\n\n /**\n * @deprecated\n * @breaking-change 8.0.0 Use `getConnectedOverlayOrigin` instead\n */\n getPopupConnectionElementRef(): ElementRef {\n return this.getConnectedOverlayOrigin();\n }\n\n /**\n * Gets the element that the colorpicker popup should be connected to.\n * @return The element to connect the popup to.\n */\n getConnectedOverlayOrigin(): ElementRef {\n return this._formField ? this._formField.getConnectedOverlayOrigin() : this._elementRef;\n }\n\n /** Gets the ID of an element that should be used a description for the overlay. */\n getOverlayLabelId(): string | null {\n if (this._formField) {\n return this._formField.getLabelId();\n }\n\n return this._elementRef.nativeElement.getAttribute('aria-labelledby');\n }\n\n // Implemented as part of ControlValueAccessor.\n writeValue(value: string): void {\n this.value = value;\n }\n\n // Implemented as part of ControlValueAccessor.\n registerOnChange(fn: (value: any) => void): void {\n this._cvaOnChange = fn;\n }\n\n // Implemented as part of ControlValueAccessor.\n registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n // Implemented as part of ControlValueAccessor.\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n _onKeydown(event: KeyboardEvent) {\n const isAltDownArrow = event.altKey && event.keyCode === DOWN_ARROW;\n\n if (this._picker && isAltDownArrow && !this._elementRef.nativeElement.readOnly) {\n this._picker.open();\n event.preventDefault();\n }\n }\n\n /** Handles blur events on the input. */\n _onBlur() {\n // Reformat the input only if we have a valid value.\n if (this.value) {\n this._formatValue(this.value);\n }\n\n this._onTouched();\n }\n\n _onInput(event: Event) {\n const value = (event.target as HTMLInputElement).value;\n const nextValue = value;\n\n this._value = nextValue;\n this._cvaOnChange(nextValue);\n this._valueChange.emit(nextValue);\n this.colorInput.emit(new MtxColorPickerInputEvent(this, this._elementRef.nativeElement));\n }\n\n _onChange() {\n this.colorChange.emit(new MtxColorPickerInputEvent(this, this._elementRef.nativeElement));\n }\n\n /** Returns the palette used by the input's form field, if any. */\n getThemePalette(): ThemePalette {\n return this._formField ? this._formField.color : undefined;\n }\n\n /** TODO: Formats a value and sets it on the input element. */\n private _formatValue(value: string | null) {\n this._elementRef.nativeElement.value = value ? value : '';\n }\n}\n","import {\n AfterContentInit,\n Attribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n Directive,\n Input,\n OnChanges,\n OnDestroy,\n SimpleChanges,\n ViewChild,\n ViewEncapsulation,\n booleanAttribute,\n} from '@angular/core';\nimport { MatButton, MatIconButton } from '@angular/material/button';\nimport { Observable, Subscription, merge, of as observableOf } from 'rxjs';\n\nimport { MtxColorpicker } from './colorpicker';\n\n/** Can be used to override the icon of a `mtxColorpickerToggle`. */\n@Directive({\n selector: '[mtxColorpickerToggleIcon]',\n standalone: true,\n})\nexport class MtxColorpickerToggleIcon {}\n\n@Component({\n selector: 'mtx-colorpicker-toggle',\n templateUrl: './colorpicker-toggle.html',\n styleUrl: './colorpicker-toggle.scss',\n host: {\n 'class': 'mtx-colorpicker-toggle',\n '[attr.tabindex]': 'null',\n '[class.mtx-colorpicker-toggle-active]': 'picker && picker.opened',\n '[class.mat-accent]': 'picker && picker.color === \"accent\"',\n '[class.mat-warn]': 'picker && picker.color === \"warn\"',\n // Bind the `click` on the host, rather than the inner `button`, so that we can call\n // `stopPropagation` on it without affecting the user's `click` handlers. We need to stop\n // it so that the input doesn't get focused automatically by the form field (See #21836).\n '(click)': '_open($event)',\n },\n exportAs: 'mtxColorpickerToggle',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: [MatIconButton],\n})\nexport class MtxColorpickerToggle implements AfterContentInit, OnChanges, OnDestroy {\n private _stateChanges = Subscription.EMPTY;\n\n /** Colorpicker instance that the button will toggle. */\n @Input('for') picker!: MtxColorpicker;\n\n /** Tabindex for the toggle. */\n @Input() tabIndex: number | null;\n\n /** Screen-reader label for the button. */\n @Input('aria-label') ariaLabel!: string;\n\n /** Whether the toggle button is disabled. */\n @Input({ transform: booleanAttribute })\n get disabled(): boolean {\n if (this._disabled == null && this.picker) {\n return this.picker.disabled;\n }\n\n return !!this._disabled;\n }\n set disabled(value: boolean) {\n this._disabled = value;\n }\n private _disabled!: boolean;\n\n /** Whether ripples on the toggle should be disabled. */\n @Input({ transform: booleanAttribute }) disableRipple!: boolean;\n\n /** Custom icon set by the consumer. */\n @ContentChild(MtxColorpickerToggleIcon) _customIcon!: MtxColorpickerToggleIcon;\n\n /** Underlying button element. */\n @ViewChild('button') _button!: MatButton;\n\n constructor(\n private _changeDetectorRef: ChangeDetectorRef,\n @Attribute('tabindex') defaultTabIndex: string\n ) {\n const parsedTabIndex = Number(defaultTabIndex);\n this.tabIndex = parsedTabIndex || parsedTabIndex === 0 ? parsedTabIndex : null;\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.picker) {\n this._watchStateChanges();\n }\n }\n\n ngOnDestroy() {\n this._stateChanges.unsubscribe();\n }\n\n ngAfterContentInit() {\n this._watchStateChanges();\n }\n\n _open(event: Event): void {\n if (this.picker && !this.disabled) {\n this.picker.open();\n event.stopPropagation();\n }\n }\n\n private _watchStateChanges() {\n const pickerDisabled = this.picker ? this.picker._disabledChange : observableOf();\n const inputDisabled =\n this.picker && this.picker.pickerInput\n ? this.picker.pickerInput._disabledChange\n : observableOf();\n const pickerToggled = this.picker\n ? merge(this.picker.openedStream, this.picker.closedStream)\n : observableOf();\n\n this._stateChanges.unsubscribe();\n this._stateChanges = merge(\n pickerDisabled as Observable<void>,\n inputDisabled as Observable<void>,\n pickerToggled\n ).subscribe(() => this._changeDetectorRef.markForCheck());\n }\n}\n","<button #button\n mat-icon-button\n type=\"button\"\n [attr.aria-haspopup]=\"picker ? 'dialog' : null\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.tabindex]=\"disabled ? -1 : tabIndex\"\n [disabled]=\"disabled\"\n [disableRipple]=\"disableRipple\">\n\n @if (!_customIcon) {\n <svg\n class=\"mtx-colorpicker-toggle-default-icon\"\n viewBox=\"0 0 24 24\"\n width=\"24px\"\n height=\"24px\"\n fill=\"currentColor\"\n focusable=\"false\">\n <path d=\"M17.5,12A1.5,1.5 0 0,1 16,10.5A1.5,1.5 0 0,1 17.5,9A1.5,1.5 0 0,1 19,10.5A1.5,1.5 0 0,1 17.5,12M14.5,8A1.5,1.5 0 0,1 13,6.5A1.5,1.5 0 0,1 14.5,5A1.5,1.5 0 0,1 16,6.5A1.5,1.5 0 0,1 14.5,8M9.5,8A1.5,1.5 0 0,1 8,6.5A1.5,1.5 0 0,1 9.5,5A1.5,1.5 0 0,1 11,6.5A1.5,1.5 0 0,1 9.5,8M6.5,12A1.5,1.5 0 0,1 5,10.5A1.5,1.5 0 0,1 6.5,9A1.5,1.5 0 0,1 8,10.5A1.5,1.5 0 0,1 6.5,12M12,3A9,9 0 0,0 3,12A9,9 0 0,0 12,21A1.5,1.5 0 0,0 13.5,19.5C13.5,19.11 13.35,18.76 13.11,18.5C12.88,18.23 12.73,17.88 12.73,17.5A1.5,1.5 0 0,1 14.23,16H16A5,5 0 0,0 21,11C21,6.58 16.97,3 12,3Z\" />\n </svg>\n }\n\n <ng-content select=\"[mtxColorpickerToggleIcon]\"></ng-content>\n</button>\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\n\nimport { ColorPicker } from '@acrodata/color-picker';\nimport {\n MTX_COLORPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER,\n MtxColorpicker,\n MtxColorpickerContent,\n} from './colorpicker';\nimport { MtxColorpickerInput } from './colorpicker-input';\nimport { MtxColorpickerToggle, MtxColorpickerToggleIcon } from './colorpicker-toggle';\n\n@NgModule({\n imports: [\n CommonModule,\n OverlayModule,\n A11yModule,\n PortalModule,\n MatButtonModule,\n MtxColorpicker,\n MtxColorpickerContent,\n MtxColorpickerInput,\n MtxColorpickerToggle,\n MtxColorpickerToggleIcon,\n ColorPicker,\n ],\n exports: [\n MtxColorpicker,\n MtxColorpickerContent,\n MtxColorpickerInput,\n MtxColorpickerToggle,\n MtxColorpickerToggleIcon,\n ],\n providers: [MTX_COLORPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER],\n})\nexport class MtxColorpickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","observableOf"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ng-matero/extensions",
|
|
3
|
-
"version": "18.
|
|
3
|
+
"version": "18.6.0",
|
|
4
4
|
"description": "Angular Material Extensions",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -84,6 +84,12 @@
|
|
|
84
84
|
"esm": "./esm2022/button/mtxButton.mjs",
|
|
85
85
|
"default": "./fesm2022/mtxButton.mjs"
|
|
86
86
|
},
|
|
87
|
+
"./colorpicker": {
|
|
88
|
+
"types": "./colorpicker/index.d.ts",
|
|
89
|
+
"esm2022": "./esm2022/colorpicker/mtxColorpicker.mjs",
|
|
90
|
+
"esm": "./esm2022/colorpicker/mtxColorpicker.mjs",
|
|
91
|
+
"default": "./fesm2022/mtxColorpicker.mjs"
|
|
92
|
+
},
|
|
87
93
|
"./checkbox-group": {
|
|
88
94
|
"types": "./checkbox-group/index.d.ts",
|
|
89
95
|
"esm2022": "./esm2022/checkbox-group/mtxCheckboxGroup.mjs",
|
|
@@ -96,12 +102,6 @@
|
|
|
96
102
|
"esm": "./esm2022/column-resize/mtxColumnResize.mjs",
|
|
97
103
|
"default": "./fesm2022/mtxColumnResize.mjs"
|
|
98
104
|
},
|
|
99
|
-
"./colorpicker": {
|
|
100
|
-
"types": "./colorpicker/index.d.ts",
|
|
101
|
-
"esm2022": "./esm2022/colorpicker/mtxColorpicker.mjs",
|
|
102
|
-
"esm": "./esm2022/colorpicker/mtxColorpicker.mjs",
|
|
103
|
-
"default": "./fesm2022/mtxColorpicker.mjs"
|
|
104
|
-
},
|
|
105
105
|
"./core": {
|
|
106
106
|
"types": "./core/index.d.ts",
|
|
107
107
|
"esm2022": "./esm2022/core/mtxCore.mjs",
|
|
@@ -126,18 +126,18 @@
|
|
|
126
126
|
"esm": "./esm2022/drawer/mtxDrawer.mjs",
|
|
127
127
|
"default": "./fesm2022/mtxDrawer.mjs"
|
|
128
128
|
},
|
|
129
|
-
"./grid": {
|
|
130
|
-
"types": "./grid/index.d.ts",
|
|
131
|
-
"esm2022": "./esm2022/grid/mtxGrid.mjs",
|
|
132
|
-
"esm": "./esm2022/grid/mtxGrid.mjs",
|
|
133
|
-
"default": "./fesm2022/mtxGrid.mjs"
|
|
134
|
-
},
|
|
135
129
|
"./loader": {
|
|
136
130
|
"types": "./loader/index.d.ts",
|
|
137
131
|
"esm2022": "./esm2022/loader/mtxLoader.mjs",
|
|
138
132
|
"esm": "./esm2022/loader/mtxLoader.mjs",
|
|
139
133
|
"default": "./fesm2022/mtxLoader.mjs"
|
|
140
134
|
},
|
|
135
|
+
"./grid": {
|
|
136
|
+
"types": "./grid/index.d.ts",
|
|
137
|
+
"esm2022": "./esm2022/grid/mtxGrid.mjs",
|
|
138
|
+
"esm": "./esm2022/grid/mtxGrid.mjs",
|
|
139
|
+
"default": "./fesm2022/mtxGrid.mjs"
|
|
140
|
+
},
|
|
141
141
|
"./photoviewer": {
|
|
142
142
|
"types": "./photoviewer/index.d.ts",
|
|
143
143
|
"esm2022": "./esm2022/photoviewer/mtxPhotoviewer.mjs",
|
|
@@ -176,8 +176,8 @@
|
|
|
176
176
|
}
|
|
177
177
|
},
|
|
178
178
|
"dependencies": {
|
|
179
|
+
"@acrodata/color-picker": "^1.0.0",
|
|
179
180
|
"@ng-select/ng-select": "^13.7.0",
|
|
180
|
-
"ngx-color": "^9.0.0",
|
|
181
181
|
"photoviewer": "^3.10.0",
|
|
182
182
|
"tslib": "^2.4.0"
|
|
183
183
|
},
|