ngx-tethys 14.0.13 → 14.0.15
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/CHANGELOG.md +25 -0
- package/carousel/carousel.component.d.ts +8 -2
- package/carousel/styles/carousel.scss +5 -0
- package/carousel/typings.d.ts +1 -0
- package/color-picker/color-picker-custom-panel.component.d.ts +17 -0
- package/color-picker/color-picker.component.d.ts +6 -1
- package/color-picker/index.d.ts +1 -1
- package/color-picker/module.d.ts +2 -2
- package/color-picker/styles/{picker-panel.scss → color-picker-custom-panel.scss} +1 -1
- package/color-picker/styles/color-picker.scss +1 -1
- package/esm2020/carousel/carousel.component.mjs +22 -6
- package/esm2020/carousel/typings.mjs +1 -1
- package/esm2020/color-picker/color-picker-custom-panel.component.mjs +38 -0
- package/esm2020/color-picker/color-picker-panel.component.mjs +8 -8
- package/esm2020/color-picker/color-picker.component.mjs +31 -3
- package/esm2020/color-picker/index.mjs +2 -2
- package/esm2020/color-picker/module.mjs +4 -4
- package/esm2020/version.mjs +2 -2
- package/fesm2015/ngx-tethys-carousel.mjs +21 -5
- package/fesm2015/ngx-tethys-carousel.mjs.map +1 -1
- package/fesm2015/ngx-tethys-color-picker.mjs +44 -16
- package/fesm2015/ngx-tethys-color-picker.mjs.map +1 -1
- package/fesm2015/ngx-tethys.mjs +1 -1
- package/fesm2015/ngx-tethys.mjs.map +1 -1
- package/fesm2020/ngx-tethys-carousel.mjs +21 -5
- package/fesm2020/ngx-tethys-carousel.mjs.map +1 -1
- package/fesm2020/ngx-tethys-color-picker.mjs +44 -16
- package/fesm2020/ngx-tethys-color-picker.mjs.map +1 -1
- package/fesm2020/ngx-tethys.mjs +1 -1
- package/fesm2020/ngx-tethys.mjs.map +1 -1
- package/form/styles/form-check.scss +3 -2
- package/package.json +1 -1
- package/schematics/version.d.ts +1 -1
- package/schematics/version.js +1 -1
- package/shared/select/styles/select.mixin.scss +1 -1
- package/color-picker/custom-color-picker-panel.component.d.ts +0 -17
- package/esm2020/color-picker/custom-color-picker-panel.component.mjs +0 -38
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,31 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
4
4
|
|
|
5
|
+
## [14.0.15](https://github.com/atinc/ngx-tethys/compare/14.0.14...14.0.15) (2022-10-14)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
* **carousel:** carousel component add thyPause #INFR-4861 ([#2250](https://github.com/atinc/ngx-tethys/issues/2250)) ([6e78892](https://github.com/atinc/ngx-tethys/commit/6e78892f8f22ff4bd20d8944b74963e400580c7a)), closes [#INFR-4861](https://github.com/atinc/ngx-tethys/issues/INFR-4861)
|
|
11
|
+
* **color-picker:** add thyHasBackdrop and close popover inside #INFR-4899 ([#2258](https://github.com/atinc/ngx-tethys/issues/2258)) ([9902fae](https://github.com/atinc/ngx-tethys/commit/9902fae87b4a13013fe8696c86ef33e23230fc94)), closes [#INFR-4899](https://github.com/atinc/ngx-tethys/issues/INFR-4899)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
## [14.0.14](https://github.com/atinc/ngx-tethys/compare/14.0.13...14.0.14) (2022-10-13)
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
### Bug Fixes
|
|
19
|
+
|
|
20
|
+
* **form:** checkbox align center zd/#INFR-4881 ([#2248](https://github.com/atinc/ngx-tethys/issues/2248)) ([fb637ed](https://github.com/atinc/ngx-tethys/commit/fb637ed0766f1a58ebf91f54fdf2a32160d33b51)), closes [zd/#INFR-4881](https://github.com/atinc/ngx-tethys/issues/INFR-4881)
|
|
21
|
+
* **select:** change select-options padding#INFR-4893 ([#2251](https://github.com/atinc/ngx-tethys/issues/2251)) ([6089a0b](https://github.com/atinc/ngx-tethys/commit/6089a0bc432f52f7b94cc3d33bf47eb593db9be1)), closes [padding#INFR-4893](https://github.com/padding/issues/INFR-4893)
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
### Features
|
|
25
|
+
|
|
26
|
+
* **color-picker:** change color true time in custiom-color-picker-panel #INFR-4897 ([#2253](https://github.com/atinc/ngx-tethys/issues/2253)) ([d49f013](https://github.com/atinc/ngx-tethys/commit/d49f01309152c916481794c107f7744259c23704)), closes [#INFR-4897](https://github.com/atinc/ngx-tethys/issues/INFR-4897)
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
5
30
|
## [14.0.13](https://github.com/atinc/ngx-tethys/compare/14.0.12...14.0.13) (2022-10-11)
|
|
6
31
|
|
|
7
32
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { AfterViewInit, ChangeDetectorRef, ElementRef, EventEmitter, OnInit, QueryList, Renderer2, TemplateRef, AfterContentInit, OnChanges, SimpleChanges, NgZone, OnDestroy } from '@angular/core';
|
|
2
2
|
import { Platform } from '@angular/cdk/platform';
|
|
3
3
|
import { ThyCarouselItemDirective } from './carousel-item.directive';
|
|
4
|
-
import { ThyCarouselSwitchData, ThyCarouselEffect, ThyCarouselTrigger } from './typings';
|
|
4
|
+
import { ThyCarouselSwitchData, ThyCarouselEffect, ThyCarouselTrigger, ThyCarouselPause } from './typings';
|
|
5
5
|
import { ThyCarouselService } from './carousel.service';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
export declare class ThyCarouselComponent implements OnInit, AfterViewInit, AfterContentInit, OnChanges, OnDestroy {
|
|
@@ -61,6 +61,10 @@ export declare class ThyCarouselComponent implements OnInit, AfterViewInit, Afte
|
|
|
61
61
|
* 指示点切换的触发条件, 默认为 'click', 支持 `click` | `hover`
|
|
62
62
|
*/
|
|
63
63
|
thyTrigger: ThyCarouselTrigger;
|
|
64
|
+
/**
|
|
65
|
+
* 鼠标移动到指示器时是否暂停播放, 默认 `hover`, 支持 `false` | `hover`
|
|
66
|
+
*/
|
|
67
|
+
thyPause: ThyCarouselPause;
|
|
64
68
|
/**
|
|
65
69
|
* 触发切换帧之前,返回 `{from: number, to: number}`
|
|
66
70
|
*/
|
|
@@ -80,6 +84,7 @@ export declare class ThyCarouselComponent implements OnInit, AfterViewInit, Afte
|
|
|
80
84
|
wrapperEl: HTMLElement;
|
|
81
85
|
transitionTimer: any;
|
|
82
86
|
playTime: number;
|
|
87
|
+
isPause: boolean;
|
|
83
88
|
constructor(renderer: Renderer2, cdr: ChangeDetectorRef, ngZone: NgZone, carouselService: ThyCarouselService, platform: Platform);
|
|
84
89
|
private moveTo;
|
|
85
90
|
private switchEngine;
|
|
@@ -90,6 +95,7 @@ export declare class ThyCarouselComponent implements OnInit, AfterViewInit, Afte
|
|
|
90
95
|
onDrag(event: TouchEvent | MouseEvent): void;
|
|
91
96
|
indicatorHandleClick(index: number): void;
|
|
92
97
|
indicatorHandleTrigger(index: number): void;
|
|
98
|
+
indicatorHandleLeave(): void;
|
|
93
99
|
next(): void;
|
|
94
100
|
pre(): void;
|
|
95
101
|
ngOnInit(): void;
|
|
@@ -98,5 +104,5 @@ export declare class ThyCarouselComponent implements OnInit, AfterViewInit, Afte
|
|
|
98
104
|
ngAfterContentInit(): void;
|
|
99
105
|
ngOnDestroy(): void;
|
|
100
106
|
static ɵfac: i0.ɵɵFactoryDeclaration<ThyCarouselComponent, never>;
|
|
101
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<ThyCarouselComponent, "thy-carousel", never, { "thyAutoPlay": "thyAutoPlay"; "thyAutoPlayInterval": "thyAutoPlayInterval"; "thyEffect": "thyEffect"; "thyIndicators": "thyIndicators"; "thyIndicatorRender": "thyIndicatorRender"; "thyControls": "thyControls"; "thyControlPrev": "thyControlPrev"; "thyControlNext": "thyControlNext"; "thyTouchable": "thyTouchable"; "thyTrigger": "thyTrigger"; }, { "thyBeforeChange": "thyBeforeChange"; "thyAfterChange": "thyAfterChange"; }, ["carouselItems"], ["*"], false>;
|
|
107
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ThyCarouselComponent, "thy-carousel", never, { "thyAutoPlay": "thyAutoPlay"; "thyAutoPlayInterval": "thyAutoPlayInterval"; "thyEffect": "thyEffect"; "thyIndicators": "thyIndicators"; "thyIndicatorRender": "thyIndicatorRender"; "thyControls": "thyControls"; "thyControlPrev": "thyControlPrev"; "thyControlNext": "thyControlNext"; "thyTouchable": "thyTouchable"; "thyTrigger": "thyTrigger"; "thyPause": "thyPause"; }, { "thyBeforeChange": "thyBeforeChange"; "thyAfterChange": "thyAfterChange"; }, ["carouselItems"], ["*"], false>;
|
|
102
108
|
}
|
package/carousel/typings.d.ts
CHANGED
|
@@ -11,6 +11,7 @@ export interface ThyCarouselSwitchData {
|
|
|
11
11
|
}
|
|
12
12
|
export declare type ThyCarouselEffect = 'slide' | 'fade' | 'noop';
|
|
13
13
|
export declare type ThyCarouselTrigger = 'click' | 'hover';
|
|
14
|
+
export declare type ThyCarouselPause = 'false' | 'hover';
|
|
14
15
|
export interface ThyCarouselEngine {
|
|
15
16
|
initializeCarouselContents(contents: QueryList<ThyCarouselItemDirective> | null): void;
|
|
16
17
|
switch(to: number, from: number): Observable<void>;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { OnInit } from '@angular/core';
|
|
2
|
+
import ThyColor from './helpers/color.class';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
/**
|
|
5
|
+
* @internal
|
|
6
|
+
*/
|
|
7
|
+
export declare class ThyColorPickerCustomPanelComponent implements OnInit {
|
|
8
|
+
className: boolean;
|
|
9
|
+
colorInstance: ThyColor;
|
|
10
|
+
color?: string;
|
|
11
|
+
pickerColorChange: (color: string) => {};
|
|
12
|
+
constructor();
|
|
13
|
+
ngOnInit(): void;
|
|
14
|
+
colorChangeEvent($event: ThyColor): void;
|
|
15
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ThyColorPickerCustomPanelComponent, never>;
|
|
16
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ThyColorPickerCustomPanelComponent, "thy-color-picker-custom-panel", never, { "color": "color"; "pickerColorChange": "pickerColorChange"; }, {}, never, never, false>;
|
|
17
|
+
}
|
|
@@ -15,6 +15,11 @@ export declare class ThyColorPickerDirective implements OnInit, OnDestroy {
|
|
|
15
15
|
* @default 0
|
|
16
16
|
*/
|
|
17
17
|
thyOffset: number;
|
|
18
|
+
/**
|
|
19
|
+
* 颜色选择面板是否有幕布。
|
|
20
|
+
* @default true
|
|
21
|
+
*/
|
|
22
|
+
thyHasBackdrop: boolean;
|
|
18
23
|
private onChangeFn;
|
|
19
24
|
private onTouchFn;
|
|
20
25
|
color: string;
|
|
@@ -29,5 +34,5 @@ export declare class ThyColorPickerDirective implements OnInit, OnDestroy {
|
|
|
29
34
|
onModelChange(value: string): void;
|
|
30
35
|
ngOnDestroy(): void;
|
|
31
36
|
static ɵfac: i0.ɵɵFactoryDeclaration<ThyColorPickerDirective, never>;
|
|
32
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<ThyColorPickerDirective, "[thyColorPicker]", never, { "thyOffset": "thyOffset"; }, {}, never, never, false>;
|
|
37
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<ThyColorPickerDirective, "[thyColorPicker]", never, { "thyOffset": "thyOffset"; "thyHasBackdrop": "thyHasBackdrop"; }, {}, never, never, false>;
|
|
33
38
|
}
|
package/color-picker/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export * from './module';
|
|
2
2
|
export * from './color-picker.component';
|
|
3
|
-
export * from './
|
|
3
|
+
export * from './color-picker-custom-panel.component';
|
|
4
4
|
export * from './color-picker-panel.component';
|
|
5
5
|
export * from './parts/saturation/saturation.component';
|
|
6
6
|
export * from './parts/hue/hue.component';
|
package/color-picker/module.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as i0 from "@angular/core";
|
|
2
2
|
import * as i1 from "./color-picker.component";
|
|
3
|
-
import * as i2 from "./
|
|
3
|
+
import * as i2 from "./color-picker-custom-panel.component";
|
|
4
4
|
import * as i3 from "./parts/saturation/saturation.component";
|
|
5
5
|
import * as i4 from "./parts/hue/hue.component";
|
|
6
6
|
import * as i5 from "./parts/alpha/alpha.component";
|
|
@@ -17,6 +17,6 @@ import * as i15 from "ngx-tethys/input-number";
|
|
|
17
17
|
import * as i16 from "ngx-tethys/shared";
|
|
18
18
|
export declare class ThyColorPickerModule {
|
|
19
19
|
static ɵfac: i0.ɵɵFactoryDeclaration<ThyColorPickerModule, never>;
|
|
20
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<ThyColorPickerModule, [typeof i1.ThyColorPickerDirective, typeof i2.
|
|
20
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<ThyColorPickerModule, [typeof i1.ThyColorPickerDirective, typeof i2.ThyColorPickerCustomPanelComponent, typeof i3.ThySaturationComponent, typeof i4.ThyHueComponent, typeof i5.ThyAlphaComponent, typeof i6.ThyIndicatorComponent, typeof i7.ThyCoordinatesDirective, typeof i8.ThyColorPickerPanelComponent, typeof i9.ThyColorInputsComponent], [typeof i10.CommonModule, typeof i11.ThyDialogModule, typeof i12.ThyInputModule, typeof i13.ThyIconModule, typeof i14.FormsModule, typeof i15.ThyInputNumberModule, typeof i16.ThySharedModule], [typeof i1.ThyColorPickerDirective]>;
|
|
21
21
|
static ɵinj: i0.ɵɵInjectorDeclaration<ThyColorPickerModule>;
|
|
22
22
|
}
|
|
@@ -49,6 +49,10 @@ export class ThyCarouselComponent {
|
|
|
49
49
|
* 指示点切换的触发条件, 默认为 'click', 支持 `click` | `hover`
|
|
50
50
|
*/
|
|
51
51
|
this.thyTrigger = 'click';
|
|
52
|
+
/**
|
|
53
|
+
* 鼠标移动到指示器时是否暂停播放, 默认 `hover`, 支持 `false` | `hover`
|
|
54
|
+
*/
|
|
55
|
+
this.thyPause = 'hover';
|
|
52
56
|
/**
|
|
53
57
|
* 触发切换帧之前,返回 `{from: number, to: number}`
|
|
54
58
|
*/
|
|
@@ -65,6 +69,7 @@ export class ThyCarouselComponent {
|
|
|
65
69
|
this.activeIndex = 0;
|
|
66
70
|
this.transitionTimer = null;
|
|
67
71
|
this.playTime = 400;
|
|
72
|
+
this.isPause = false;
|
|
68
73
|
}
|
|
69
74
|
moveTo(index) {
|
|
70
75
|
if (this.carouselItems && this.carouselItems.length && !this.isTransitioning) {
|
|
@@ -111,7 +116,7 @@ export class ThyCarouselComponent {
|
|
|
111
116
|
}
|
|
112
117
|
scheduleNextTransition() {
|
|
113
118
|
this.clearScheduledTransition();
|
|
114
|
-
if (this.thyAutoPlay) {
|
|
119
|
+
if (this.thyAutoPlay && !this.isPause) {
|
|
115
120
|
this.transitionTimer = setTimeout(() => {
|
|
116
121
|
this.moveTo(this.activeIndex + 1);
|
|
117
122
|
}, this.thyAutoPlayInterval);
|
|
@@ -160,11 +165,20 @@ export class ThyCarouselComponent {
|
|
|
160
165
|
}
|
|
161
166
|
}
|
|
162
167
|
indicatorHandleTrigger(index) {
|
|
163
|
-
if (this.
|
|
168
|
+
if (this.thyPause === 'hover') {
|
|
169
|
+
this.isPause = true;
|
|
164
170
|
this.clearScheduledTransition();
|
|
171
|
+
}
|
|
172
|
+
if (this.thyTrigger === 'hover') {
|
|
165
173
|
this._trigger$.next(index);
|
|
166
174
|
}
|
|
167
175
|
}
|
|
176
|
+
indicatorHandleLeave() {
|
|
177
|
+
if (this.thyPause === 'hover') {
|
|
178
|
+
this.isPause = false;
|
|
179
|
+
this.scheduleNextTransition();
|
|
180
|
+
}
|
|
181
|
+
}
|
|
168
182
|
next() {
|
|
169
183
|
this.moveTo(this.activeIndex + 1);
|
|
170
184
|
}
|
|
@@ -211,7 +225,7 @@ export class ThyCarouselComponent {
|
|
|
211
225
|
}
|
|
212
226
|
}
|
|
213
227
|
ngAfterContentInit() {
|
|
214
|
-
this._trigger$.pipe(takeUntil(this._destroy$), debounceTime(
|
|
228
|
+
this._trigger$.pipe(takeUntil(this._destroy$), debounceTime(this.playTime)).subscribe(index => {
|
|
215
229
|
this.moveTo(index);
|
|
216
230
|
});
|
|
217
231
|
}
|
|
@@ -224,7 +238,7 @@ export class ThyCarouselComponent {
|
|
|
224
238
|
}
|
|
225
239
|
}
|
|
226
240
|
ThyCarouselComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: ThyCarouselComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i1.ThyCarouselService }, { token: i2.Platform }], target: i0.ɵɵFactoryTarget.Component });
|
|
227
|
-
ThyCarouselComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: ThyCarouselComponent, selector: "thy-carousel", inputs: { thyAutoPlay: "thyAutoPlay", thyAutoPlayInterval: "thyAutoPlayInterval", thyEffect: "thyEffect", thyIndicators: "thyIndicators", thyIndicatorRender: "thyIndicatorRender", thyControls: "thyControls", thyControlPrev: "thyControlPrev", thyControlNext: "thyControlNext", thyTouchable: "thyTouchable", thyTrigger: "thyTrigger" }, outputs: { thyBeforeChange: "thyBeforeChange", thyAfterChange: "thyAfterChange" }, host: { classAttribute: "thy-carousel" }, queries: [{ propertyName: "carouselItems", predicate: ThyCarouselItemDirective }], viewQueries: [{ propertyName: "carouselWrapper", first: true, predicate: ["carouselWrapper"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"thy-carousel thy-carousel-initialized thy-carousel-point-events\">\n <div #carouselWrapper class=\"thy-carousel-wrapper\" (mousedown)=\"onDrag($event)\" (touchstart)=\"onDrag($event)\">\n <ng-content></ng-content>\n </div>\n <ng-container *ngIf=\"thyControls && carouselItems.length > 1\">\n <div class=\"thy-carousel-control-pre-wrapper\" (click)=\"pre()\">\n <ng-container *ngTemplateOutlet=\"thyControlPrev || defaultControlPrev\"></ng-container>\n </div>\n <div class=\"thy-carousel-control-next-wrapper\" (click)=\"next()\">\n <ng-container *ngTemplateOutlet=\"thyControlNext || defaultControlNext\"></ng-container>\n </div>\n </ng-container>\n <ng-container *ngIf=\"thyIndicators\">\n <div class=\"thy-carousel-indicators\">\n <span\n *ngFor=\"let content of carouselItems; let i = index\"\n class=\"thy-carousel-indicator\"\n (mouseenter)=\"indicatorHandleTrigger(i)\"\n (click)=\"indicatorHandleClick(i)\"\n >\n <ng-template\n [ngTemplateOutlet]=\"thyIndicatorRender || defaultIndicatorRender\"\n [ngTemplateOutletContext]=\"{ $implicit: i === activeIndex }\"\n ></ng-template>\n </span>\n </div>\n </ng-container>\n</div>\n\n<ng-template #defaultIndicatorRender let-active>\n <thy-dot thyColor=\"#fff\" [class.active]=\"active\"></thy-dot>\n</ng-template>\n\n<ng-template #defaultControlPrev>\n <div class=\"thy-carousel-control thy-carousel-control-pre\">\n <thy-icon thyIconName=\"angle-left-bold\"></thy-icon>\n </div>\n</ng-template>\n\n<ng-template #defaultControlNext>\n <div class=\"thy-carousel-control thy-carousel-control-next\">\n <thy-icon thyIconName=\"angle-right-bold\"></thy-icon>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.ThyDotComponent, selector: "thy-dot,[thy-dot],[thyDot]", inputs: ["thyColor", "thySize", "thyTheme", "thyShape"] }, { kind: "component", type: i5.ThyIconComponent, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
241
|
+
ThyCarouselComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: ThyCarouselComponent, selector: "thy-carousel", inputs: { thyAutoPlay: "thyAutoPlay", thyAutoPlayInterval: "thyAutoPlayInterval", thyEffect: "thyEffect", thyIndicators: "thyIndicators", thyIndicatorRender: "thyIndicatorRender", thyControls: "thyControls", thyControlPrev: "thyControlPrev", thyControlNext: "thyControlNext", thyTouchable: "thyTouchable", thyTrigger: "thyTrigger", thyPause: "thyPause" }, outputs: { thyBeforeChange: "thyBeforeChange", thyAfterChange: "thyAfterChange" }, host: { classAttribute: "thy-carousel" }, queries: [{ propertyName: "carouselItems", predicate: ThyCarouselItemDirective }], viewQueries: [{ propertyName: "carouselWrapper", first: true, predicate: ["carouselWrapper"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"thy-carousel thy-carousel-initialized thy-carousel-point-events\">\n <div #carouselWrapper class=\"thy-carousel-wrapper\" (mousedown)=\"onDrag($event)\" (touchstart)=\"onDrag($event)\">\n <ng-content></ng-content>\n </div>\n <ng-container *ngIf=\"thyControls && carouselItems.length > 1\">\n <div class=\"thy-carousel-control-pre-wrapper\" (click)=\"pre()\">\n <ng-container *ngTemplateOutlet=\"thyControlPrev || defaultControlPrev\"></ng-container>\n </div>\n <div class=\"thy-carousel-control-next-wrapper\" (click)=\"next()\">\n <ng-container *ngTemplateOutlet=\"thyControlNext || defaultControlNext\"></ng-container>\n </div>\n </ng-container>\n <ng-container *ngIf=\"thyIndicators\">\n <div class=\"thy-carousel-indicators\">\n <span\n *ngFor=\"let content of carouselItems; let i = index\"\n class=\"thy-carousel-indicator\"\n (mouseenter)=\"indicatorHandleTrigger(i)\"\n (mouseleave)=\"indicatorHandleLeave()\"\n (click)=\"indicatorHandleClick(i)\"\n >\n <ng-template\n [ngTemplateOutlet]=\"thyIndicatorRender || defaultIndicatorRender\"\n [ngTemplateOutletContext]=\"{ $implicit: i === activeIndex }\"\n ></ng-template>\n </span>\n </div>\n </ng-container>\n</div>\n\n<ng-template #defaultIndicatorRender let-active>\n <thy-dot thyColor=\"#fff\" [class.active]=\"active\"></thy-dot>\n</ng-template>\n\n<ng-template #defaultControlPrev>\n <div class=\"thy-carousel-control thy-carousel-control-pre\">\n <thy-icon thyIconName=\"angle-left-bold\"></thy-icon>\n </div>\n</ng-template>\n\n<ng-template #defaultControlNext>\n <div class=\"thy-carousel-control thy-carousel-control-next\">\n <thy-icon thyIconName=\"angle-right-bold\"></thy-icon>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.ThyDotComponent, selector: "thy-dot,[thy-dot],[thyDot]", inputs: ["thyColor", "thySize", "thyTheme", "thyShape"] }, { kind: "component", type: i5.ThyIconComponent, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
228
242
|
__decorate([
|
|
229
243
|
InputBoolean(),
|
|
230
244
|
__metadata("design:type", Boolean)
|
|
@@ -249,7 +263,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
|
|
|
249
263
|
type: Component,
|
|
250
264
|
args: [{ selector: 'thy-carousel', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, preserveWhitespaces: false, host: {
|
|
251
265
|
class: 'thy-carousel'
|
|
252
|
-
}, template: "<div class=\"thy-carousel thy-carousel-initialized thy-carousel-point-events\">\n <div #carouselWrapper class=\"thy-carousel-wrapper\" (mousedown)=\"onDrag($event)\" (touchstart)=\"onDrag($event)\">\n <ng-content></ng-content>\n </div>\n <ng-container *ngIf=\"thyControls && carouselItems.length > 1\">\n <div class=\"thy-carousel-control-pre-wrapper\" (click)=\"pre()\">\n <ng-container *ngTemplateOutlet=\"thyControlPrev || defaultControlPrev\"></ng-container>\n </div>\n <div class=\"thy-carousel-control-next-wrapper\" (click)=\"next()\">\n <ng-container *ngTemplateOutlet=\"thyControlNext || defaultControlNext\"></ng-container>\n </div>\n </ng-container>\n <ng-container *ngIf=\"thyIndicators\">\n <div class=\"thy-carousel-indicators\">\n <span\n *ngFor=\"let content of carouselItems; let i = index\"\n class=\"thy-carousel-indicator\"\n (mouseenter)=\"indicatorHandleTrigger(i)\"\n (click)=\"indicatorHandleClick(i)\"\n >\n <ng-template\n [ngTemplateOutlet]=\"thyIndicatorRender || defaultIndicatorRender\"\n [ngTemplateOutletContext]=\"{ $implicit: i === activeIndex }\"\n ></ng-template>\n </span>\n </div>\n </ng-container>\n</div>\n\n<ng-template #defaultIndicatorRender let-active>\n <thy-dot thyColor=\"#fff\" [class.active]=\"active\"></thy-dot>\n</ng-template>\n\n<ng-template #defaultControlPrev>\n <div class=\"thy-carousel-control thy-carousel-control-pre\">\n <thy-icon thyIconName=\"angle-left-bold\"></thy-icon>\n </div>\n</ng-template>\n\n<ng-template #defaultControlNext>\n <div class=\"thy-carousel-control thy-carousel-control-next\">\n <thy-icon thyIconName=\"angle-right-bold\"></thy-icon>\n </div>\n</ng-template>\n" }]
|
|
266
|
+
}, template: "<div class=\"thy-carousel thy-carousel-initialized thy-carousel-point-events\">\n <div #carouselWrapper class=\"thy-carousel-wrapper\" (mousedown)=\"onDrag($event)\" (touchstart)=\"onDrag($event)\">\n <ng-content></ng-content>\n </div>\n <ng-container *ngIf=\"thyControls && carouselItems.length > 1\">\n <div class=\"thy-carousel-control-pre-wrapper\" (click)=\"pre()\">\n <ng-container *ngTemplateOutlet=\"thyControlPrev || defaultControlPrev\"></ng-container>\n </div>\n <div class=\"thy-carousel-control-next-wrapper\" (click)=\"next()\">\n <ng-container *ngTemplateOutlet=\"thyControlNext || defaultControlNext\"></ng-container>\n </div>\n </ng-container>\n <ng-container *ngIf=\"thyIndicators\">\n <div class=\"thy-carousel-indicators\">\n <span\n *ngFor=\"let content of carouselItems; let i = index\"\n class=\"thy-carousel-indicator\"\n (mouseenter)=\"indicatorHandleTrigger(i)\"\n (mouseleave)=\"indicatorHandleLeave()\"\n (click)=\"indicatorHandleClick(i)\"\n >\n <ng-template\n [ngTemplateOutlet]=\"thyIndicatorRender || defaultIndicatorRender\"\n [ngTemplateOutletContext]=\"{ $implicit: i === activeIndex }\"\n ></ng-template>\n </span>\n </div>\n </ng-container>\n</div>\n\n<ng-template #defaultIndicatorRender let-active>\n <thy-dot thyColor=\"#fff\" [class.active]=\"active\"></thy-dot>\n</ng-template>\n\n<ng-template #defaultControlPrev>\n <div class=\"thy-carousel-control thy-carousel-control-pre\">\n <thy-icon thyIconName=\"angle-left-bold\"></thy-icon>\n </div>\n</ng-template>\n\n<ng-template #defaultControlNext>\n <div class=\"thy-carousel-control thy-carousel-control-next\">\n <thy-icon thyIconName=\"angle-right-bold\"></thy-icon>\n </div>\n</ng-template>\n" }]
|
|
253
267
|
}], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i1.ThyCarouselService }, { type: i2.Platform }]; }, propDecorators: { carouselItems: [{
|
|
254
268
|
type: ContentChildren,
|
|
255
269
|
args: [ThyCarouselItemDirective]
|
|
@@ -276,9 +290,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
|
|
|
276
290
|
type: Input
|
|
277
291
|
}], thyTrigger: [{
|
|
278
292
|
type: Input
|
|
293
|
+
}], thyPause: [{
|
|
294
|
+
type: Input
|
|
279
295
|
}], thyBeforeChange: [{
|
|
280
296
|
type: Output
|
|
281
297
|
}], thyAfterChange: [{
|
|
282
298
|
type: Output
|
|
283
299
|
}] } });
|
|
284
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Fyb3VzZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2Nhcm91c2VsL2Nhcm91c2VsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9jYXJvdXNlbC9jYXJvdXNlbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUVILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULGVBQWUsRUFDZixVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxFQUNULFNBQVMsRUFDVCxTQUFTLEVBQ1QsV0FBVyxFQUNYLGlCQUFpQixFQUlqQixNQUFNLEVBRVQsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFckUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLHFCQUFxQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2hHLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7Ozs7QUFXeEQsTUFBTSxPQUFPLG9CQUFvQjtJQThGN0IsWUFDYyxRQUFtQixFQUNyQixHQUFzQixFQUN0QixNQUFjLEVBQ0wsZUFBbUMsRUFDbkMsUUFBa0I7UUFKekIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNyQixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixXQUFNLEdBQU4sTUFBTSxD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QyxRQUFRLEVBQUUsQ0FBQztJQUM5QixDQUFDOztpSEExUlEsb0JBQW9CO3FHQUFwQixvQkFBb0IsNmhCQUlaLHdCQUF3QixvTEM1QzdDLDB1REE0Q0E7O0lEV2MsWUFBWSxFQUFFOzt5REFBOEI7O0lBSzVDLFdBQVcsRUFBRTs7aUVBQW9DOztJQVVqRCxZQUFZLEVBQUU7OzJEQUFzQjs7SUFVcEMsWUFBWSxFQUFFOzt5REFBb0I7O0lBZWxDLFlBQVksRUFBRTs7MERBQXFCOzJGQXZEcEMsb0JBQW9CO2tCQVZoQyxTQUFTOytCQUNJLGNBQWMsbUJBRVAsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSx1QkFDaEIsS0FBSyxRQUNwQjt3QkFDRixLQUFLLEVBQUUsY0FBYztxQkFDeEI7Nk1BTTBDLGFBQWE7c0JBQXZELGVBQWU7dUJBQUMsd0JBQXdCO2dCQUtPLGVBQWU7c0JBQTlELFNBQVM7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQU1yQixXQUFXO3NCQUFuQyxLQUFLO2dCQUtrQixtQkFBbUI7c0JBQTFDLEtBQUs7Z0JBS0csU0FBUztzQkFBakIsS0FBSztnQkFLbUIsYUFBYTtzQkFBckMsS0FBSztnQkFLRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBS21CLFdBQVc7c0JBQW5DLEtBQUs7Z0JBS0csY0FBYztzQkFBdEIsS0FBSztnQkFLRyxjQUFjO3NCQUF0QixLQUFLO2dCQUttQixZQUFZO3NCQUFwQyxLQUFLO2dCQUtHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBS2EsZUFBZTtzQkFBakMsTUFBTTtnQkFLWSxjQUFjO3NCQUFoQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgUmVuZGVyZXIyLFxuICAgIFZpZXdDaGlsZCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIE5nWm9uZSxcbiAgICBPbkRlc3Ryb3lcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBQbGF0Zm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wbGF0Zm9ybSc7XG5pbXBvcnQgeyBJbnB1dEJvb2xlYW4sIElucHV0TnVtYmVyIH0gZnJvbSAnbmd4LXRldGh5cy9jb3JlJztcbmltcG9ydCB7IFRoeUNhcm91c2VsSXRlbURpcmVjdGl2ZSB9IGZyb20gJy4vY2Fyb3VzZWwtaXRlbS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgVGh5Q2Fyb3VzZWxFbmdpbmUsIFRoeURpc3RhbmNlVmVjdG9yLCBUaHlDYXJvdXNlbFN3aXRjaERhdGEsIFRoeUNhcm91c2VsRWZmZWN0LCBUaHlDYXJvdXNlbFRyaWdnZXIgfSBmcm9tICcuL3R5cGluZ3MnO1xuaW1wb3J0IHsgVGh5Q2Fyb3VzZWxTbGlkZUVuZ2luZSwgVGh5Q2Fyb3VzZWxOb29wRW5naW5lLCBUaHlDYXJvdXNlbEZhZGVFbmdpbmUgfSBmcm9tICcuL2VuZ2luZSc7XG5pbXBvcnQgeyBmcm9tRXZlbnQsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgVGh5Q2Fyb3VzZWxTZXJ2aWNlIH0gZnJvbSAnLi9jYXJvdXNlbC5zZXJ2aWNlJztcbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndGh5LWNhcm91c2VsJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY2Fyb3VzZWwuY29tcG9uZW50Lmh0bWwnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgcHJlc2VydmVXaGl0ZXNwYWNlczogZmFsc2UsXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ3RoeS1jYXJvdXNlbCdcbiAgICB9XG59KVxuZXhwb3J0IGNsYXNzIFRoeUNhcm91c2VsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBBZnRlckNvbnRlbnRJbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gICAgLyoqXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkcmVuKFRoeUNhcm91c2VsSXRlbURpcmVjdGl2ZSkgY2Fyb3VzZWxJdGVtcyE6IFF1ZXJ5TGlzdDxUaHlDYXJvdXNlbEl0ZW1EaXJlY3RpdmU+O1xuXG4gICAgLyoqXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBAVmlld0NoaWxkKCdjYXJvdXNlbFdyYXBwZXInLCB7IHN0YXRpYzogdHJ1ZSB9KSBjYXJvdXNlbFdyYXBwZXI6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgLyoqXG4gICAgICog5piv5ZCm6Ieq5Yqo5YiH5o2iLOm7mOiupCBmYWxzZVxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIHRoeUF1dG9QbGF5OiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiDoh6rliqjliIfmjaLml7bpl7Tpl7TpmpQo5q+r56eSKVxuICAgICAqL1xuICAgIEBJbnB1dCgpIEBJbnB1dE51bWJlcigpIHRoeUF1dG9QbGF5SW50ZXJ2YWw6IG51bWJlciA9IDMwMDA7XG5cbiAgICAvKipcbiAgICAgKiDliIfmjaLliqjnlLvmoLflvI8sIOm7mOiupOS4uiAnc2xpZGUnLCDmlK/mjIEgYHNsaWRlYCB8IGBmYWRlYCB8IGBub29wYFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeUVmZmVjdDogVGh5Q2Fyb3VzZWxFZmZlY3QgPSAnc2xpZGUnO1xuXG4gICAgLyoqXG4gICAgICog5piv5ZCm5pi+56S65YiH5o2i5oyH56S65ZmoXG4gICAgICovXG4gICAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIHRoeUluZGljYXRvcnMgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICog5oyH56S65ZmoIEl0ZW0g55qE5riy5p+T5qih5p2/XG4gICAgICovXG4gICAgQElucHV0KCkgdGh5SW5kaWNhdG9yUmVuZGVyPzogVGVtcGxhdGVSZWY8eyAkaW1wbGljaXQ6IGJvb2xlYW4gfT47XG5cbiAgICAvKipcbiAgICAgKiDmmK/lkKbmmL7npLrlt6blj7PliIfmjaLvvIzmlK/mjIEgYm9vbGVhblxuICAgICAqL1xuICAgIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSB0aHlDb250cm9scyA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiDkuIrkuIDkuKrmjqfliLblmajmuLLmn5PmqKHmnb9cbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlDb250cm9sUHJldj86IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKipcbiAgICAgKiDkuIvkuIDkuKrmjqfliLblmajmuLLmn5PmqKHmnb9cbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlDb250cm9sTmV4dD86IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvKipcbiAgICAgKiDmmK/lkKbmlK/mjIHmiYvlir/mu5HliqhcbiAgICAgKi9cbiAgICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgdGh5VG91Y2hhYmxlID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIOaMh+ekuueCueWIh+aNoueahOinpuWPkeadoeS7tiwg6buY6K6k5Li6ICdjbGljaycsIOaUr+aMgSBgY2xpY2tgIHwgYGhvdmVyYFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeVRyaWdnZXI6IFRoeUNhcm91c2VsVHJpZ2dlciA9ICdjbGljayc7XG5cbiAgICAvKipcbiAgICAgKiDop6blj5HliIfmjaLluKfkuYvliY0s6L+U5ZueIGB7ZnJvbTogbnVtYmVyLCB0bzogbnVtYmVyfWBcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgdGh5QmVmb3JlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxUaHlDYXJvdXNlbFN3aXRjaERhdGE+KCk7XG5cbiAgICAvKipcbiAgICAgKiDliIfmjaLluKfkuYvlkI7nmoTlm57osIMs6L+U5Zue5b2T5YmN5bin57Si5byVXG4gICAgICovXG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IHRoeUFmdGVyQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgICBwcml2YXRlIGlzRHJhZ2dpbmcgPSBmYWxzZTtcblxuICAgIHByaXZhdGUgaXNUcmFuc2l0aW9uaW5nID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIHBvaW50ZXJWZWN0b3I6IFRoeURpc3RhbmNlVmVjdG9yID0geyB4OiAwLCB5OiAwIH07XG5cbiAgICBwcml2YXRlIGVuZ2luZTogVGh5Q2Fyb3VzZWxFbmdpbmU7XG5cbiAgICBwcml2YXRlIF90cmlnZ2VyJCA9IG5ldyBTdWJqZWN0PG51bWJlcj4oKTtcblxuICAgIHByaXZhdGUgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIHdyYXBwZXJEb21SZWN0OiBET01SZWN0O1xuXG4gICAgYWN0aXZlSW5kZXggPSAwO1xuXG4gICAgd3JhcHBlckVsOiBIVE1MRWxlbWVudDtcblxuICAgIHRyYW5zaXRpb25UaW1lcjogYW55ID0gbnVsbDtcblxuICAgIHBsYXlUaW1lOiBudW1iZXIgPSA0MDA7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJvdGVjdGVkIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBjYXJvdXNlbFNlcnZpY2U6IFRoeUNhcm91c2VsU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBwbGF0Zm9ybTogUGxhdGZvcm1cbiAgICApIHt9XG5cbiAgICBwcml2YXRlIG1vdmVUbyhpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmNhcm91c2VsSXRlbXMgJiYgdGhpcy5jYXJvdXNlbEl0ZW1zLmxlbmd0aCAmJiAhdGhpcy5pc1RyYW5zaXRpb25pbmcpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0SW5pdGlhbFZhbHVlKCk7XG4gICAgICAgICAgICBjb25zdCBsZW4gPSB0aGlzLmNhcm91c2VsSXRlbXMubGVuZ3RoO1xuICAgICAgICAgICAgY29uc3QgZnJvbSA9IHRoaXMuYWN0aXZlSW5kZXg7XG4gICAgICAgICAgICBjb25zdCB0byA9IChpbmRleCArIGxlbikgJSBsZW47XG4gICAgICAgICAgICB0aGlzLnRoeUJlZm9yZUNoYW5nZS5lbWl0KHsgZnJvbSwgdG8gfSk7XG4gICAgICAgICAgICB0aGlzLmlzVHJhbnNpdGlvbmluZyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmVuZ2luZT8uc3dpdGNoKGluZGV4LCB0aGlzLmFjdGl2ZUluZGV4KS5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZUluZGV4ID0gdG87XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWFya0NvbnRlbnRBY3RpdmUodGhpcy5hY3RpdmVJbmRleCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2NoZWR1bGVOZXh0VHJhbnNpdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRoeUFmdGVyQ2hhbmdlLmVtaXQodGhpcy5hY3RpdmVJbmRleCk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAoKSA9PiB7fSxcbiAgICAgICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNUcmFuc2l0aW9uaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzd2l0Y2hFbmdpbmUoKTogdm9pZCB7XG4gICAgICAgIHN3aXRjaCAodGhpcy50aHlFZmZlY3QpIHtcbiAgICAgICAgICAgIGNhc2UgJ3NsaWRlJzpcbiAgICAgICAgICAgICAgICB0aGlzLmVuZ2luZSA9IG5ldyBUaHlDYXJvdXNlbFNsaWRlRW5naW5lKHRoaXMsIHRoaXMuY2RyLCB0aGlzLnJlbmRlcmVyLCB0aGlzLnBsYXRmb3JtKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2ZhZGUnOlxuICAgICAgICAgICAgICAgIHRoaXMuZW5naW5lID0gbmV3IFRoeUNhcm91c2VsRmFkZUVuZ2luZSh0aGlzLCB0aGlzLmNkciwgdGhpcy5yZW5kZXJlciwgdGhpcy5wbGF0Zm9ybSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRoaXMuZW5naW5lID0gbmV3IFRoeUNhcm91c2VsTm9vcEVuZ2luZSh0aGlzLCB0aGlzLmNkciwgdGhpcy5yZW5kZXJlciwgdGhpcy5wbGF0Zm9ybSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG1hcmtDb250ZW50QWN0aXZlKGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5hY3RpdmVJbmRleCA9IGluZGV4O1xuICAgICAgICB0aGlzLmNhcm91c2VsSXRlbXMuZm9yRWFjaCgoY2Fyb3VzZWxDb250ZW50OiBUaHlDYXJvdXNlbEl0ZW1EaXJlY3RpdmUsIGk6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgY2Fyb3VzZWxDb250ZW50LmlzQWN0aXZlID0gaW5kZXggPT09IGk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRJbml0aWFsVmFsdWUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmVuZ2luZSkge1xuICAgICAgICAgICAgdGhpcy5lbmdpbmUuaW5pdGlhbGl6ZUNhcm91c2VsQ29udGVudHModGhpcy5jYXJvdXNlbEl0ZW1zKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2NoZWR1bGVOZXh0VHJhbnNpdGlvbigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jbGVhclNjaGVkdWxlZFRyYW5zaXRpb24oKTtcbiAgICAgICAgaWYgKHRoaXMudGh5QXV0b1BsYXkpIHtcbiAgICAgICAgICAgIHRoaXMudHJhbnNpdGlvblRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5tb3ZlVG8odGhpcy5hY3RpdmVJbmRleCArIDEpO1xuICAgICAgICAgICAgfSwgdGhpcy50aHlBdXRvUGxheUludGVydmFsKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgY2xlYXJTY2hlZHVsZWRUcmFuc2l0aW9uKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy50cmFuc2l0aW9uVGltZXIpIHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRyYW5zaXRpb25UaW1lcik7XG4gICAgICAgICAgICB0aGlzLnRyYW5zaXRpb25UaW1lciA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkRyYWcoZXZlbnQ6IFRvdWNoRXZlbnQgfCBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5pc0RyYWdnaW5nICYmICF0aGlzLmlzVHJhbnNpdGlvbmluZyAmJiB0aGlzLnRoeVRvdWNoYWJsZSkge1xuICAgICAgICAgICAgY29uc3QgbW91c2VEb3duVGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgICAgICAgbGV0IG1vdXNlVXBUaW1lOiBudW1iZXI7XG4gICAgICAgICAgICB0aGlzLmNsZWFyU2NoZWR1bGVkVHJhbnNpdGlvbigpO1xuICAgICAgICAgICAgdGhpcy53cmFwcGVyRG9tUmVjdCA9IHRoaXMud3JhcHBlckVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgICAgdGhpcy5jYXJvdXNlbFNlcnZpY2UucmVnaXN0ZXJEcmFnKGV2ZW50KS5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgICAgcG9pbnRlclZlY3RvciA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy53cmFwcGVyRWwsICdjdXJzb3InLCAnZ3JhYmJpbmcnKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wb2ludGVyVmVjdG9yID0gcG9pbnRlclZlY3RvcjtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0RyYWdnaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbmdpbmU/LmRyYWdnaW5nKHRoaXMucG9pbnRlclZlY3RvciwgdGhpcy53cmFwcGVyRG9tUmVjdCk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAoKSA9PiB7fSxcbiAgICAgICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzRHJhZ2dpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vdXNlVXBUaW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBob2xkRG93blRpbWUgPSBtb3VzZVVwVGltZSAtIG1vdXNlRG93blRpbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBGYXN0IGVub3VnaCB0byBzd2l0Y2ggdG8gdGhlIG5leHQgZnJhbWVcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9yXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgcG9pbnRlclZlY3RvciBpcyBtb3JlIHRoYW4gb25lIHRoaXJkIHN3aXRjaCB0byB0aGUgbmV4dCBmcmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGguYWJzKHRoaXMucG9pbnRlclZlY3Rvci54KSA+IHRoaXMud3JhcHBlckRvbVJlY3Qud2lkdGggLyAzIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0aC5hYnModGhpcy5wb2ludGVyVmVjdG9yLngpIC8gaG9sZERvd25UaW1lID49IDFcbiAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW92ZVRvKHRoaXMucG9pbnRlclZlY3Rvci54ID4gMCA/IHRoaXMuYWN0aXZlSW5kZXggLSAxIDogdGhpcy5hY3RpdmVJbmRleCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1vdmVUbyh0aGlzLmFjdGl2ZUluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzRHJhZ2dpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLndyYXBwZXJFbCwgJ2N1cnNvcicsICdncmFiJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGluZGljYXRvckhhbmRsZUNsaWNrKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMudGh5VHJpZ2dlciA9PT0gJ2NsaWNrJykge1xuICAgICAgICAgICAgdGhpcy5tb3ZlVG8oaW5kZXgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaW5kaWNhdG9ySGFuZGxlVHJpZ2dlcihpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnRoeVRyaWdnZXIgPT09ICdob3ZlcicpIHtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJTY2hlZHVsZWRUcmFuc2l0aW9uKCk7XG4gICAgICAgICAgICB0aGlzLl90cmlnZ2VyJC5uZXh0KGluZGV4KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5leHQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubW92ZVRvKHRoaXMuYWN0aXZlSW5kZXggKyAxKTtcbiAgICB9XG5cbiAgICBwcmUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubW92ZVRvKHRoaXMuYWN0aXZlSW5kZXggLSAxKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy53cmFwcGVyRWwgPSB0aGlzLmNhcm91c2VsV3JhcHBlciEubmF0aXZlRWxlbWVudDtcbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgZnJvbUV2ZW50KHdpbmRvdywgJ3Jlc2l6ZScpXG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSwgZGVib3VuY2VUaW1lKDEwMCkpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZW5naW5lPy5jb3JyZWN0aW9uT2Zmc2V0KCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgICAgIGNvbnN0IHsgdGh5RWZmZWN0LCB0aHlUb3VjaGFibGUgfSA9IGNoYW5nZXM7XG4gICAgICAgIGlmICh0aHlFZmZlY3QgJiYgIXRoeUVmZmVjdC5pc0ZpcnN0Q2hhbmdlKCkpIHtcbiAgICAgICAgICAgIHRoaXMuc3dpdGNoRW5naW5lKCk7XG4gICAgICAgICAgICB0aGlzLm1hcmtDb250ZW50QWN0aXZlKDApO1xuICAgICAgICAgICAgdGhpcy5zZXRJbml0aWFsVmFsdWUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aHlUb3VjaGFibGUgJiYgIXRoeVRvdWNoYWJsZS5pc0ZpcnN0Q2hhbmdlKCkpIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy53cmFwcGVyRWwsICdjdXJzb3InLCB0aHlUb3VjaGFibGUuY3VycmVudFZhbHVlID8gJ2dyYWInIDogJ2RlZmF1bHQnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy50aHlBdXRvUGxheSB8fCAhdGhpcy50aHlBdXRvUGxheUludGVydmFsKSB7XG4gICAgICAgICAgICB0aGlzLmNsZWFyU2NoZWR1bGVkVHJhbnNpdGlvbigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zY2hlZHVsZU5leHRUcmFuc2l0aW9uKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2Fyb3VzZWxJdGVtcy5jaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm1hcmtDb250ZW50QWN0aXZlKDApO1xuICAgICAgICAgICAgdGhpcy5zZXRJbml0aWFsVmFsdWUoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuc3dpdGNoRW5naW5lKCk7XG4gICAgICAgIHRoaXMubWFya0NvbnRlbnRBY3RpdmUoMCk7XG4gICAgICAgIHRoaXMuc2V0SW5pdGlhbFZhbHVlKCk7XG5cbiAgICAgICAgaWYgKCF0aGlzLnRoeVRvdWNoYWJsZSkge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLndyYXBwZXJFbCwgJ2N1cnNvcicsICdkZWZhdWx0Jyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgICAgIHRoaXMuX3RyaWdnZXIkLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSwgZGVib3VuY2VUaW1lKDIwMCkpLnN1YnNjcmliZShpbmRleCA9PiB7XG4gICAgICAgICAgICB0aGlzLm1vdmVUbyhpbmRleCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLmNsZWFyU2NoZWR1bGVkVHJhbnNpdGlvbigpO1xuICAgICAgICB0aGlzLl90cmlnZ2VyJC5uZXh0KCk7XG4gICAgICAgIHRoaXMuX3RyaWdnZXIkLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcbiAgICAgICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwidGh5LWNhcm91c2VsIHRoeS1jYXJvdXNlbC1pbml0aWFsaXplZCB0aHktY2Fyb3VzZWwtcG9pbnQtZXZlbnRzXCI+XG4gIDxkaXYgI2Nhcm91c2VsV3JhcHBlciBjbGFzcz1cInRoeS1jYXJvdXNlbC13cmFwcGVyXCIgKG1vdXNlZG93bik9XCJvbkRyYWcoJGV2ZW50KVwiICh0b3VjaHN0YXJ0KT1cIm9uRHJhZygkZXZlbnQpXCI+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRoeUNvbnRyb2xzICYmIGNhcm91c2VsSXRlbXMubGVuZ3RoID4gMVwiPlxuICAgIDxkaXYgY2xhc3M9XCJ0aHktY2Fyb3VzZWwtY29udHJvbC1wcmUtd3JhcHBlclwiIChjbGljayk9XCJwcmUoKVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRoeUNvbnRyb2xQcmV2IHx8IGRlZmF1bHRDb250cm9sUHJldlwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJ0aHktY2Fyb3VzZWwtY29udHJvbC1uZXh0LXdyYXBwZXJcIiAoY2xpY2spPVwibmV4dCgpXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGh5Q29udHJvbE5leHQgfHwgZGVmYXVsdENvbnRyb2xOZXh0XCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwidGh5SW5kaWNhdG9yc1wiPlxuICAgIDxkaXYgY2xhc3M9XCJ0aHktY2Fyb3VzZWwtaW5kaWNhdG9yc1wiPlxuICAgICAgPHNwYW5cbiAgICAgICAgKm5nRm9yPVwibGV0IGNvbnRlbnQgb2YgY2Fyb3VzZWxJdGVtczsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgIGNsYXNzPVwidGh5LWNhcm91c2VsLWluZGljYXRvclwiXG4gICAgICAgIChtb3VzZWVudGVyKT1cImluZGljYXRvckhhbmRsZVRyaWdnZXIoaSlcIlxuICAgICAgICAoY2xpY2spPVwiaW5kaWNhdG9ySGFuZGxlQ2xpY2soaSlcIlxuICAgICAgPlxuICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJ0aHlJbmRpY2F0b3JSZW5kZXIgfHwgZGVmYXVsdEluZGljYXRvclJlbmRlclwiXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBpID09PSBhY3RpdmVJbmRleCB9XCJcbiAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdEluZGljYXRvclJlbmRlciBsZXQtYWN0aXZlPlxuICA8dGh5LWRvdCB0aHlDb2xvcj1cIiNmZmZcIiBbY2xhc3MuYWN0aXZlXT1cImFjdGl2ZVwiPjwvdGh5LWRvdD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdENvbnRyb2xQcmV2PlxuICA8ZGl2IGNsYXNzPVwidGh5LWNhcm91c2VsLWNvbnRyb2wgdGh5LWNhcm91c2VsLWNvbnRyb2wtcHJlXCI+XG4gICAgPHRoeS1pY29uIHRoeUljb25OYW1lPVwiYW5nbGUtbGVmdC1ib2xkXCI+PC90aHktaWNvbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2RlZmF1bHRDb250cm9sTmV4dD5cbiAgPGRpdiBjbGFzcz1cInRoeS1jYXJvdXNlbC1jb250cm9sIHRoeS1jYXJvdXNlbC1jb250cm9sLW5leHRcIj5cbiAgICA8dGh5LWljb24gdGh5SWNvbk5hbWU9XCJhbmdsZS1yaWdodC1ib2xkXCI+PC90aHktaWNvbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
300
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Fyb3VzZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2Nhcm91c2VsL2Nhcm91c2VsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9jYXJvdXNlbC9jYXJvdXNlbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUVILHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULGVBQWUsRUFDZixVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxFQUNULFNBQVMsRUFDVCxTQUFTLEVBQ1QsV0FBVyxFQUNYLGlCQUFpQixFQUlqQixNQUFNLEVBRVQsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDNUQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFTckUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLHFCQUFxQixFQUFFLHFCQUFxQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ2hHLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7Ozs7QUFXeEQsTUFBTSxPQUFPLG9CQUFvQjtJQXFHN0IsWUFDYyxRQUFtQixFQUNyQixHQUFzQixFQUN0QixNQUFjLEVBQ0wsZUFBbUMsRUFDbkMsUUFBa0I7UUFKekIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNyQixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixXQUFNLEdBQU4sTUFBTSxD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QkFBbkMsS0FBSztnQkFLRyxjQUFjO3NCQUF0QixLQUFLO2dCQUtHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBS21CLFlBQVk7c0JBQXBDLEtBQUs7Z0JBS0csVUFBVTtzQkFBbEIsS0FBSztnQkFLRyxRQUFRO3NCQUFoQixLQUFLO2dCQUthLGVBQWU7c0JBQWpDLE1BQU07Z0JBS1ksY0FBYztzQkFBaEMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIElucHV0LFxuICAgIE9uSW5pdCxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFJlbmRlcmVyMixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBPbkNoYW5nZXMsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBOZ1pvbmUsXG4gICAgT25EZXN0cm95XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUGxhdGZvcm0gfSBmcm9tICdAYW5ndWxhci9jZGsvcGxhdGZvcm0nO1xuaW1wb3J0IHsgSW5wdXRCb29sZWFuLCBJbnB1dE51bWJlciB9IGZyb20gJ25neC10ZXRoeXMvY29yZSc7XG5pbXBvcnQgeyBUaHlDYXJvdXNlbEl0ZW1EaXJlY3RpdmUgfSBmcm9tICcuL2Nhcm91c2VsLWl0ZW0uZGlyZWN0aXZlJztcbmltcG9ydCB7XG4gICAgVGh5Q2Fyb3VzZWxFbmdpbmUsXG4gICAgVGh5RGlzdGFuY2VWZWN0b3IsXG4gICAgVGh5Q2Fyb3VzZWxTd2l0Y2hEYXRhLFxuICAgIFRoeUNhcm91c2VsRWZmZWN0LFxuICAgIFRoeUNhcm91c2VsVHJpZ2dlcixcbiAgICBUaHlDYXJvdXNlbFBhdXNlXG59IGZyb20gJy4vdHlwaW5ncyc7XG5pbXBvcnQgeyBUaHlDYXJvdXNlbFNsaWRlRW5naW5lLCBUaHlDYXJvdXNlbE5vb3BFbmdpbmUsIFRoeUNhcm91c2VsRmFkZUVuZ2luZSB9IGZyb20gJy4vZW5naW5lJztcbmltcG9ydCB7IGZyb21FdmVudCwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBUaHlDYXJvdXNlbFNlcnZpY2UgfSBmcm9tICcuL2Nhcm91c2VsLnNlcnZpY2UnO1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0aHktY2Fyb3VzZWwnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jYXJvdXNlbC5jb21wb25lbnQuaHRtbCcsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBwcmVzZXJ2ZVdoaXRlc3BhY2VzOiBmYWxzZSxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAndGh5LWNhcm91c2VsJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgVGh5Q2Fyb3VzZWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIEFmdGVyQ29udGVudEluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgICAvKipcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oVGh5Q2Fyb3VzZWxJdGVtRGlyZWN0aXZlKSBjYXJvdXNlbEl0ZW1zITogUXVlcnlMaXN0PFRoeUNhcm91c2VsSXRlbURpcmVjdGl2ZT47XG5cbiAgICAvKipcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoJ2Nhcm91c2VsV3JhcHBlcicsIHsgc3RhdGljOiB0cnVlIH0pIGNhcm91c2VsV3JhcHBlcjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgICAvKipcbiAgICAgKiDmmK/lkKboh6rliqjliIfmjaIs6buY6K6kIGZhbHNlXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgdGh5QXV0b1BsYXk6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIOiHquWKqOWIh+aNouaXtumXtOmXtOmalCjmr6vnp5IpXG4gICAgICovXG4gICAgQElucHV0KCkgQElucHV0TnVtYmVyKCkgdGh5QXV0b1BsYXlJbnRlcnZhbDogbnVtYmVyID0gMzAwMDtcblxuICAgIC8qKlxuICAgICAqIOWIh+aNouWKqOeUu+agt+W8jywg6buY6K6k5Li6ICdzbGlkZScsIOaUr+aMgSBgc2xpZGVgIHwgYGZhZGVgIHwgYG5vb3BgXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5RWZmZWN0OiBUaHlDYXJvdXNlbEVmZmVjdCA9ICdzbGlkZSc7XG5cbiAgICAvKipcbiAgICAgKiDmmK/lkKbmmL7npLrliIfmjaLmjIfnpLrlmahcbiAgICAgKi9cbiAgICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgdGh5SW5kaWNhdG9ycyA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiDmjIfnpLrlmaggSXRlbSDnmoTmuLLmn5PmqKHmnb9cbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlJbmRpY2F0b3JSZW5kZXI/OiBUZW1wbGF0ZVJlZjx7ICRpbXBsaWNpdDogYm9vbGVhbiB9PjtcblxuICAgIC8qKlxuICAgICAqIOaYr+WQpuaYvuekuuW3puWPs+WIh+aNou+8jOaUr+aMgSBib29sZWFuXG4gICAgICovXG4gICAgQElucHV0KCkgQElucHV0Qm9vbGVhbigpIHRoeUNvbnRyb2xzID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqIOS4iuS4gOS4quaOp+WItuWZqOa4suafk+aooeadv1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeUNvbnRyb2xQcmV2PzogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKlxuICAgICAqIOS4i+S4gOS4quaOp+WItuWZqOa4suafk+aooeadv1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeUNvbnRyb2xOZXh0PzogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKlxuICAgICAqIOaYr+WQpuaUr+aMgeaJi+WKv+a7keWKqFxuICAgICAqL1xuICAgIEBJbnB1dCgpIEBJbnB1dEJvb2xlYW4oKSB0aHlUb3VjaGFibGUgPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICog5oyH56S654K55YiH5o2i55qE6Kem5Y+R5p2h5Lu2LCDpu5jorqTkuLogJ2NsaWNrJywg5pSv5oyBIGBjbGlja2AgfCBgaG92ZXJgXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5VHJpZ2dlcjogVGh5Q2Fyb3VzZWxUcmlnZ2VyID0gJ2NsaWNrJztcblxuICAgIC8qKlxuICAgICAqIOm8oOagh+enu+WKqOWIsOaMh+ekuuWZqOaXtuaYr+WQpuaaguWBnOaSreaUviwg6buY6K6kIGBob3ZlcmAsICDmlK/mjIEgYGZhbHNlYCB8IGBob3ZlcmBcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlQYXVzZTogVGh5Q2Fyb3VzZWxQYXVzZSA9ICdob3Zlcic7XG5cbiAgICAvKipcbiAgICAgKiDop6blj5HliIfmjaLluKfkuYvliY0s6L+U5ZueIGB7ZnJvbTogbnVtYmVyLCB0bzogbnVtYmVyfWBcbiAgICAgKi9cbiAgICBAT3V0cHV0KCkgcmVhZG9ubHkgdGh5QmVmb3JlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxUaHlDYXJvdXNlbFN3aXRjaERhdGE+KCk7XG5cbiAgICAvKipcbiAgICAgKiDliIfmjaLluKfkuYvlkI7nmoTlm57osIMs6L+U5Zue5b2T5YmN5bin57Si5byVXG4gICAgICovXG4gICAgQE91dHB1dCgpIHJlYWRvbmx5IHRoeUFmdGVyQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgICBwcml2YXRlIGlzRHJhZ2dpbmcgPSBmYWxzZTtcblxuICAgIHByaXZhdGUgaXNUcmFuc2l0aW9uaW5nID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIHBvaW50ZXJWZWN0b3I6IFRoeURpc3RhbmNlVmVjdG9yID0geyB4OiAwLCB5OiAwIH07XG5cbiAgICBwcml2YXRlIGVuZ2luZTogVGh5Q2Fyb3VzZWxFbmdpbmU7XG5cbiAgICBwcml2YXRlIF90cmlnZ2VyJCA9IG5ldyBTdWJqZWN0PG51bWJlcj4oKTtcblxuICAgIHByaXZhdGUgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIHdyYXBwZXJEb21SZWN0OiBET01SZWN0O1xuXG4gICAgYWN0aXZlSW5kZXggPSAwO1xuXG4gICAgd3JhcHBlckVsOiBIVE1MRWxlbWVudDtcblxuICAgIHRyYW5zaXRpb25UaW1lcjogYW55ID0gbnVsbDtcblxuICAgIHBsYXlUaW1lOiBudW1iZXIgPSA0MDA7XG5cbiAgICBpc1BhdXNlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJvdGVjdGVkIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBjYXJvdXNlbFNlcnZpY2U6IFRoeUNhcm91c2VsU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBwbGF0Zm9ybTogUGxhdGZvcm1cbiAgICApIHt9XG5cbiAgICBwcml2YXRlIG1vdmVUbyhpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmNhcm91c2VsSXRlbXMgJiYgdGhpcy5jYXJvdXNlbEl0ZW1zLmxlbmd0aCAmJiAhdGhpcy5pc1RyYW5zaXRpb25pbmcpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0SW5pdGlhbFZhbHVlKCk7XG4gICAgICAgICAgICBjb25zdCBsZW4gPSB0aGlzLmNhcm91c2VsSXRlbXMubGVuZ3RoO1xuICAgICAgICAgICAgY29uc3QgZnJvbSA9IHRoaXMuYWN0aXZlSW5kZXg7XG4gICAgICAgICAgICBjb25zdCB0byA9IChpbmRleCArIGxlbikgJSBsZW47XG4gICAgICAgICAgICB0aGlzLnRoeUJlZm9yZUNoYW5nZS5lbWl0KHsgZnJvbSwgdG8gfSk7XG4gICAgICAgICAgICB0aGlzLmlzVHJhbnNpdGlvbmluZyA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmVuZ2luZT8uc3dpdGNoKGluZGV4LCB0aGlzLmFjdGl2ZUluZGV4KS5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZUluZGV4ID0gdG87XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWFya0NvbnRlbnRBY3RpdmUodGhpcy5hY3RpdmVJbmRleCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2NoZWR1bGVOZXh0VHJhbnNpdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRoeUFmdGVyQ2hhbmdlLmVtaXQodGhpcy5hY3RpdmVJbmRleCk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAoKSA9PiB7fSxcbiAgICAgICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNUcmFuc2l0aW9uaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzd2l0Y2hFbmdpbmUoKTogdm9pZCB7XG4gICAgICAgIHN3aXRjaCAodGhpcy50aHlFZmZlY3QpIHtcbiAgICAgICAgICAgIGNhc2UgJ3NsaWRlJzpcbiAgICAgICAgICAgICAgICB0aGlzLmVuZ2luZSA9IG5ldyBUaHlDYXJvdXNlbFNsaWRlRW5naW5lKHRoaXMsIHRoaXMuY2RyLCB0aGlzLnJlbmRlcmVyLCB0aGlzLnBsYXRmb3JtKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2ZhZGUnOlxuICAgICAgICAgICAgICAgIHRoaXMuZW5naW5lID0gbmV3IFRoeUNhcm91c2VsRmFkZUVuZ2luZSh0aGlzLCB0aGlzLmNkciwgdGhpcy5yZW5kZXJlciwgdGhpcy5wbGF0Zm9ybSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRoaXMuZW5naW5lID0gbmV3IFRoeUNhcm91c2VsTm9vcEVuZ2luZSh0aGlzLCB0aGlzLmNkciwgdGhpcy5yZW5kZXJlciwgdGhpcy5wbGF0Zm9ybSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIG1hcmtDb250ZW50QWN0aXZlKGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5hY3RpdmVJbmRleCA9IGluZGV4O1xuICAgICAgICB0aGlzLmNhcm91c2VsSXRlbXMuZm9yRWFjaCgoY2Fyb3VzZWxDb250ZW50OiBUaHlDYXJvdXNlbEl0ZW1EaXJlY3RpdmUsIGk6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgY2Fyb3VzZWxDb250ZW50LmlzQWN0aXZlID0gaW5kZXggPT09IGk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRJbml0aWFsVmFsdWUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmVuZ2luZSkge1xuICAgICAgICAgICAgdGhpcy5lbmdpbmUuaW5pdGlhbGl6ZUNhcm91c2VsQ29udGVudHModGhpcy5jYXJvdXNlbEl0ZW1zKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc2NoZWR1bGVOZXh0VHJhbnNpdGlvbigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jbGVhclNjaGVkdWxlZFRyYW5zaXRpb24oKTtcbiAgICAgICAgaWYgKHRoaXMudGh5QXV0b1BsYXkgJiYgIXRoaXMuaXNQYXVzZSkge1xuICAgICAgICAgICAgdGhpcy50cmFuc2l0aW9uVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLm1vdmVUbyh0aGlzLmFjdGl2ZUluZGV4ICsgMSk7XG4gICAgICAgICAgICB9LCB0aGlzLnRoeUF1dG9QbGF5SW50ZXJ2YWwpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjbGVhclNjaGVkdWxlZFRyYW5zaXRpb24oKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnRyYW5zaXRpb25UaW1lcikge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudHJhbnNpdGlvblRpbWVyKTtcbiAgICAgICAgICAgIHRoaXMudHJhbnNpdGlvblRpbWVyID0gbnVsbDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uRHJhZyhldmVudDogVG91Y2hFdmVudCB8IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzRHJhZ2dpbmcgJiYgIXRoaXMuaXNUcmFuc2l0aW9uaW5nICYmIHRoaXMudGh5VG91Y2hhYmxlKSB7XG4gICAgICAgICAgICBjb25zdCBtb3VzZURvd25UaW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgICAgICAgICBsZXQgbW91c2VVcFRpbWU6IG51bWJlcjtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJTY2hlZHVsZWRUcmFuc2l0aW9uKCk7XG4gICAgICAgICAgICB0aGlzLndyYXBwZXJEb21SZWN0ID0gdGhpcy53cmFwcGVyRWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgICAgICB0aGlzLmNhcm91c2VsU2VydmljZS5yZWdpc3RlckRyYWcoZXZlbnQpLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgICBwb2ludGVyVmVjdG9yID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLndyYXBwZXJFbCwgJ2N1cnNvcicsICdncmFiYmluZycpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBvaW50ZXJWZWN0b3IgPSBwb2ludGVyVmVjdG9yO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzRHJhZ2dpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVuZ2luZT8uZHJhZ2dpbmcodGhpcy5wb2ludGVyVmVjdG9yLCB0aGlzLndyYXBwZXJEb21SZWN0KTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICgpID0+IHt9LFxuICAgICAgICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNEcmFnZ2luZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgbW91c2VVcFRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGhvbGREb3duVGltZSA9IG1vdXNlVXBUaW1lIC0gbW91c2VEb3duVGltZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZhc3QgZW5vdWdoIHRvIHN3aXRjaCB0byB0aGUgbmV4dCBmcmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3JcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBwb2ludGVyVmVjdG9yIGlzIG1vcmUgdGhhbiBvbmUgdGhpcmQgc3dpdGNoIHRvIHRoZSBuZXh0IGZyYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0aC5hYnModGhpcy5wb2ludGVyVmVjdG9yLngpID4gdGhpcy53cmFwcGVyRG9tUmVjdC53aWR0aCAvIDMgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRoLmFicyh0aGlzLnBvaW50ZXJWZWN0b3IueCkgLyBob2xkRG93blRpbWUgPj0gMVxuICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5tb3ZlVG8odGhpcy5wb2ludGVyVmVjdG9yLnggPiAwID8gdGhpcy5hY3RpdmVJbmRleCAtIDEgOiB0aGlzLmFjdGl2ZUluZGV4ICsgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubW92ZVRvKHRoaXMuYWN0aXZlSW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNEcmFnZ2luZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMud3JhcHBlckVsLCAnY3Vyc29yJywgJ2dyYWInKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaW5kaWNhdG9ySGFuZGxlQ2xpY2soaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy50aHlUcmlnZ2VyID09PSAnY2xpY2snKSB7XG4gICAgICAgICAgICB0aGlzLm1vdmVUbyhpbmRleCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpbmRpY2F0b3JIYW5kbGVUcmlnZ2VyKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMudGh5UGF1c2UgPT09ICdob3ZlcicpIHtcbiAgICAgICAgICAgIHRoaXMuaXNQYXVzZSA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmNsZWFyU2NoZWR1bGVkVHJhbnNpdGlvbigpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnRoeVRyaWdnZXIgPT09ICdob3ZlcicpIHtcbiAgICAgICAgICAgIHRoaXMuX3RyaWdnZXIkLm5leHQoaW5kZXgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaW5kaWNhdG9ySGFuZGxlTGVhdmUoKSB7XG4gICAgICAgIGlmICh0aGlzLnRoeVBhdXNlID09PSAnaG92ZXInKSB7XG4gICAgICAgICAgICB0aGlzLmlzUGF1c2UgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuc2NoZWR1bGVOZXh0VHJhbnNpdGlvbigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmV4dCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tb3ZlVG8odGhpcy5hY3RpdmVJbmRleCArIDEpO1xuICAgIH1cblxuICAgIHByZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5tb3ZlVG8odGhpcy5hY3RpdmVJbmRleCAtIDEpO1xuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLndyYXBwZXJFbCA9IHRoaXMuY2Fyb3VzZWxXcmFwcGVyIS5uYXRpdmVFbGVtZW50O1xuICAgICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgICAgICBmcm9tRXZlbnQod2luZG93LCAncmVzaXplJylcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLCBkZWJvdW5jZVRpbWUoMTAwKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbmdpbmU/LmNvcnJlY3Rpb25PZmZzZXQoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAgICAgY29uc3QgeyB0aHlFZmZlY3QsIHRoeVRvdWNoYWJsZSB9ID0gY2hhbmdlcztcbiAgICAgICAgaWYgKHRoeUVmZmVjdCAmJiAhdGh5RWZmZWN0LmlzRmlyc3RDaGFuZ2UoKSkge1xuICAgICAgICAgICAgdGhpcy5zd2l0Y2hFbmdpbmUoKTtcbiAgICAgICAgICAgIHRoaXMubWFya0NvbnRlbnRBY3RpdmUoMCk7XG4gICAgICAgICAgICB0aGlzLnNldEluaXRpYWxWYWx1ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoeVRvdWNoYWJsZSAmJiAhdGh5VG91Y2hhYmxlLmlzRmlyc3RDaGFuZ2UoKSkge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLndyYXBwZXJFbCwgJ2N1cnNvcicsIHRoeVRvdWNoYWJsZS5jdXJyZW50VmFsdWUgPyAnZ3JhYicgOiAnZGVmYXVsdCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0aGlzLnRoeUF1dG9QbGF5IHx8ICF0aGlzLnRoeUF1dG9QbGF5SW50ZXJ2YWwpIHtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJTY2hlZHVsZWRUcmFuc2l0aW9uKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNjaGVkdWxlTmV4dFRyYW5zaXRpb24oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jYXJvdXNlbEl0ZW1zLmNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMubWFya0NvbnRlbnRBY3RpdmUoMCk7XG4gICAgICAgICAgICB0aGlzLnNldEluaXRpYWxWYWx1ZSgpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zd2l0Y2hFbmdpbmUoKTtcbiAgICAgICAgdGhpcy5tYXJrQ29udGVudEFjdGl2ZSgwKTtcbiAgICAgICAgdGhpcy5zZXRJbml0aWFsVmFsdWUoKTtcblxuICAgICAgICBpZiAoIXRoaXMudGh5VG91Y2hhYmxlKSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMud3JhcHBlckVsLCAnY3Vyc29yJywgJ2RlZmF1bHQnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgdGhpcy5fdHJpZ2dlciQucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLCBkZWJvdW5jZVRpbWUodGhpcy5wbGF5VGltZSkpLnN1YnNjcmliZShpbmRleCA9PiB7XG4gICAgICAgICAgICB0aGlzLm1vdmVUbyhpbmRleCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLmNsZWFyU2NoZWR1bGVkVHJhbnNpdGlvbigpO1xuICAgICAgICB0aGlzLl90cmlnZ2VyJC5uZXh0KCk7XG4gICAgICAgIHRoaXMuX3RyaWdnZXIkLmNvbXBsZXRlKCk7XG4gICAgICAgIHRoaXMuX2Rlc3Ryb3kkLm5leHQoKTtcbiAgICAgICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwidGh5LWNhcm91c2VsIHRoeS1jYXJvdXNlbC1pbml0aWFsaXplZCB0aHktY2Fyb3VzZWwtcG9pbnQtZXZlbnRzXCI+XG4gIDxkaXYgI2Nhcm91c2VsV3JhcHBlciBjbGFzcz1cInRoeS1jYXJvdXNlbC13cmFwcGVyXCIgKG1vdXNlZG93bik9XCJvbkRyYWcoJGV2ZW50KVwiICh0b3VjaHN0YXJ0KT1cIm9uRHJhZygkZXZlbnQpXCI+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRoeUNvbnRyb2xzICYmIGNhcm91c2VsSXRlbXMubGVuZ3RoID4gMVwiPlxuICAgIDxkaXYgY2xhc3M9XCJ0aHktY2Fyb3VzZWwtY29udHJvbC1wcmUtd3JhcHBlclwiIChjbGljayk9XCJwcmUoKVwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRoeUNvbnRyb2xQcmV2IHx8IGRlZmF1bHRDb250cm9sUHJldlwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJ0aHktY2Fyb3VzZWwtY29udHJvbC1uZXh0LXdyYXBwZXJcIiAoY2xpY2spPVwibmV4dCgpXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGh5Q29udHJvbE5leHQgfHwgZGVmYXVsdENvbnRyb2xOZXh0XCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwidGh5SW5kaWNhdG9yc1wiPlxuICAgIDxkaXYgY2xhc3M9XCJ0aHktY2Fyb3VzZWwtaW5kaWNhdG9yc1wiPlxuICAgICAgPHNwYW5cbiAgICAgICAgKm5nRm9yPVwibGV0IGNvbnRlbnQgb2YgY2Fyb3VzZWxJdGVtczsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgIGNsYXNzPVwidGh5LWNhcm91c2VsLWluZGljYXRvclwiXG4gICAgICAgIChtb3VzZWVudGVyKT1cImluZGljYXRvckhhbmRsZVRyaWdnZXIoaSlcIlxuICAgICAgICAobW91c2VsZWF2ZSk9XCJpbmRpY2F0b3JIYW5kbGVMZWF2ZSgpXCJcbiAgICAgICAgKGNsaWNrKT1cImluZGljYXRvckhhbmRsZUNsaWNrKGkpXCJcbiAgICAgID5cbiAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwidGh5SW5kaWNhdG9yUmVuZGVyIHx8IGRlZmF1bHRJbmRpY2F0b3JSZW5kZXJcIlxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogaSA9PT0gYWN0aXZlSW5kZXggfVwiXG4gICAgICAgID48L25nLXRlbXBsYXRlPlxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2RlZmF1bHRJbmRpY2F0b3JSZW5kZXIgbGV0LWFjdGl2ZT5cbiAgPHRoeS1kb3QgdGh5Q29sb3I9XCIjZmZmXCIgW2NsYXNzLmFjdGl2ZV09XCJhY3RpdmVcIj48L3RoeS1kb3Q+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2RlZmF1bHRDb250cm9sUHJldj5cbiAgPGRpdiBjbGFzcz1cInRoeS1jYXJvdXNlbC1jb250cm9sIHRoeS1jYXJvdXNlbC1jb250cm9sLXByZVwiPlxuICAgIDx0aHktaWNvbiB0aHlJY29uTmFtZT1cImFuZ2xlLWxlZnQtYm9sZFwiPjwvdGh5LWljb24+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNkZWZhdWx0Q29udHJvbE5leHQ+XG4gIDxkaXYgY2xhc3M9XCJ0aHktY2Fyb3VzZWwtY29udHJvbCB0aHktY2Fyb3VzZWwtY29udHJvbC1uZXh0XCI+XG4gICAgPHRoeS1pY29uIHRoeUljb25OYW1lPVwiYW5nbGUtcmlnaHQtYm9sZFwiPjwvdGh5LWljb24+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwaW5ncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jYXJvdXNlbC90eXBpbmdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBUaHlDYXJvdXNlbEl0ZW1EaXJlY3RpdmUgfSBmcm9tICcuL2Nhcm91c2VsLWl0ZW0uZGlyZWN0aXZlJztcbmltcG9ydCB7IFF1ZXJ5TGlzdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRoeURpc3RhbmNlVmVjdG9yIHtcbiAgICB4OiBudW1iZXI7XG4gICAgeTogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRoeUNhcm91c2VsU3dpdGNoRGF0YSB7XG4gICAgZnJvbTogbnVtYmVyO1xuICAgIHRvOiBudW1iZXI7XG59XG5cbmV4cG9ydCB0eXBlIFRoeUNhcm91c2VsRWZmZWN0ID0gJ3NsaWRlJyB8ICdmYWRlJyB8ICdub29wJztcblxuZXhwb3J0IHR5cGUgVGh5Q2Fyb3VzZWxUcmlnZ2VyID0gJ2NsaWNrJyB8ICdob3Zlcic7XG5cbmV4cG9ydCB0eXBlIFRoeUNhcm91c2VsUGF1c2UgPSAnZmFsc2UnIHwgJ2hvdmVyJztcblxuZXhwb3J0IGludGVyZmFjZSBUaHlDYXJvdXNlbEVuZ2luZSB7XG4gICAgLy8gSW5pdGlhbGl6ZSBkcmFnZ2luZyBzZXF1ZW5jZXMuXG4gICAgaW5pdGlhbGl6ZUNhcm91c2VsQ29udGVudHMoY29udGVudHM6IFF1ZXJ5TGlzdDxUaHlDYXJvdXNlbEl0ZW1EaXJlY3RpdmU+IHwgbnVsbCk6IHZvaWQ7XG4gICAgLy8gc3dpdGNoIGl0ZW1cbiAgICBzd2l0Y2godG86IG51bWJlciwgZnJvbTogbnVtYmVyKTogT2JzZXJ2YWJsZTx2b2lkPjtcbiAgICAvLyBkcmFnZ2luZyBldmVudHNcbiAgICBkcmFnZ2luZyhwb2ludGVyVmVjdG9yOiBUaHlEaXN0YW5jZVZlY3RvciwgcmVjdDogRE9NUmVjdCk6IHZvaWQ7XG4gICAgLy8gd2hlbiB3aW5kb3cgcmVzaXplXG4gICAgY29ycmVjdGlvbk9mZnNldCgpOiB2b2lkO1xufVxuIl19
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, HostBinding, Input } from '@angular/core';
|
|
2
|
+
import ThyColor from './helpers/color.class';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "./parts/saturation/saturation.component";
|
|
5
|
+
import * as i2 from "./parts/hue/hue.component";
|
|
6
|
+
import * as i3 from "./parts/alpha/alpha.component";
|
|
7
|
+
import * as i4 from "./parts/indicator/indicator.component";
|
|
8
|
+
import * as i5 from "./parts/inputs/inputs.component";
|
|
9
|
+
/**
|
|
10
|
+
* @internal
|
|
11
|
+
*/
|
|
12
|
+
export class ThyColorPickerCustomPanelComponent {
|
|
13
|
+
constructor() {
|
|
14
|
+
this.className = true;
|
|
15
|
+
}
|
|
16
|
+
ngOnInit() {
|
|
17
|
+
this.colorInstance = new ThyColor(this.color);
|
|
18
|
+
}
|
|
19
|
+
colorChangeEvent($event) {
|
|
20
|
+
this.colorInstance = $event;
|
|
21
|
+
this.color = this.colorInstance.displayValue;
|
|
22
|
+
this.pickerColorChange(this.color);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
ThyColorPickerCustomPanelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: ThyColorPickerCustomPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
26
|
+
ThyColorPickerCustomPanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: ThyColorPickerCustomPanelComponent, selector: "thy-color-picker-custom-panel", inputs: { color: "color", pickerColorChange: "pickerColorChange" }, host: { properties: { "class.thy-color-picker-custom-panel": "this.className" } }, ngImport: i0, template: "<thy-saturation [color]=\"colorInstance\" (colorChange)=\"colorChangeEvent($event)\"></thy-saturation>\n<div class=\"controls\">\n <div class=\"indicator-hue-alp\">\n <div class=\"rows\">\n <thy-hue [color]=\"colorInstance\" (colorChange)=\"colorChangeEvent($event)\"></thy-hue>\n <thy-alpha [color]=\"colorInstance\" (colorChange)=\"colorChangeEvent($event)\"></thy-alpha>\n </div>\n <thy-indicator [color]=\"colorInstance\" (colorChange)=\"colorChangeEvent($event)\"></thy-indicator>\n </div>\n</div>\n<thy-color-inputs [color]=\"colorInstance\" (colorChange)=\"colorChangeEvent($event)\"></thy-color-inputs>\n", dependencies: [{ kind: "component", type: i1.ThySaturationComponent, selector: "thy-saturation", inputs: ["color"], outputs: ["colorChange"] }, { kind: "component", type: i2.ThyHueComponent, selector: "thy-hue", inputs: ["color"], outputs: ["colorChange"] }, { kind: "component", type: i3.ThyAlphaComponent, selector: "thy-alpha", inputs: ["color"], outputs: ["colorChange"] }, { kind: "component", type: i4.ThyIndicatorComponent, selector: "thy-indicator", inputs: ["color"] }, { kind: "component", type: i5.ThyColorInputsComponent, selector: "thy-color-inputs", inputs: ["color"], outputs: ["colorChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
27
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: ThyColorPickerCustomPanelComponent, decorators: [{
|
|
28
|
+
type: Component,
|
|
29
|
+
args: [{ selector: 'thy-color-picker-custom-panel', changeDetection: ChangeDetectionStrategy.OnPush, template: "<thy-saturation [color]=\"colorInstance\" (colorChange)=\"colorChangeEvent($event)\"></thy-saturation>\n<div class=\"controls\">\n <div class=\"indicator-hue-alp\">\n <div class=\"rows\">\n <thy-hue [color]=\"colorInstance\" (colorChange)=\"colorChangeEvent($event)\"></thy-hue>\n <thy-alpha [color]=\"colorInstance\" (colorChange)=\"colorChangeEvent($event)\"></thy-alpha>\n </div>\n <thy-indicator [color]=\"colorInstance\" (colorChange)=\"colorChangeEvent($event)\"></thy-indicator>\n </div>\n</div>\n<thy-color-inputs [color]=\"colorInstance\" (colorChange)=\"colorChangeEvent($event)\"></thy-color-inputs>\n" }]
|
|
30
|
+
}], ctorParameters: function () { return []; }, propDecorators: { className: [{
|
|
31
|
+
type: HostBinding,
|
|
32
|
+
args: ['class.thy-color-picker-custom-panel']
|
|
33
|
+
}], color: [{
|
|
34
|
+
type: Input
|
|
35
|
+
}], pickerColorChange: [{
|
|
36
|
+
type: Input
|
|
37
|
+
}] } });
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3ItcGlja2VyLWN1c3RvbS1wYW5lbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29sb3ItcGlja2VyL2NvbG9yLXBpY2tlci1jdXN0b20tcGFuZWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vc3JjL2NvbG9yLXBpY2tlci9jb2xvci1waWNrZXItY3VzdG9tLXBhbmVsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUMvRixPQUFPLFFBQVEsTUFBTSx1QkFBdUIsQ0FBQzs7Ozs7OztBQUU3Qzs7R0FFRztBQU1ILE1BQU0sT0FBTyxrQ0FBa0M7SUFTM0M7UUFSb0QsY0FBUyxHQUFHLElBQUksQ0FBQztJQVF0RCxDQUFDO0lBRWhCLFFBQVE7UUFDSixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsTUFBZ0I7UUFDN0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUM7UUFDNUIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQztRQUM3QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7OytIQW5CUSxrQ0FBa0M7bUhBQWxDLGtDQUFrQyw0TkNYL0MsMm5CQVdBOzJGREFhLGtDQUFrQztrQkFMOUMsU0FBUzsrQkFDSSwrQkFBK0IsbUJBRXhCLHVCQUF1QixDQUFDLE1BQU07MEVBR0ssU0FBUztzQkFBNUQsV0FBVzt1QkFBQyxxQ0FBcUM7Z0JBSXpDLEtBQUs7c0JBQWIsS0FBSztnQkFFRyxpQkFBaUI7c0JBQXpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBIb3N0QmluZGluZywgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IFRoeUNvbG9yIGZyb20gJy4vaGVscGVycy9jb2xvci5jbGFzcyc7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndGh5LWNvbG9yLXBpY2tlci1jdXN0b20tcGFuZWwnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jb2xvci1waWNrZXItY3VzdG9tLXBhbmVsLmNvbXBvbmVudC5odG1sJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBUaHlDb2xvclBpY2tlckN1c3RvbVBhbmVsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLnRoeS1jb2xvci1waWNrZXItY3VzdG9tLXBhbmVsJykgY2xhc3NOYW1lID0gdHJ1ZTtcblxuICAgIGNvbG9ySW5zdGFuY2U6IFRoeUNvbG9yO1xuXG4gICAgQElucHV0KCkgY29sb3I/OiBzdHJpbmc7XG5cbiAgICBASW5wdXQoKSBwaWNrZXJDb2xvckNoYW5nZTogKGNvbG9yOiBzdHJpbmcpID0+IHt9O1xuXG4gICAgY29uc3RydWN0b3IoKSB7fVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuY29sb3JJbnN0YW5jZSA9IG5ldyBUaHlDb2xvcih0aGlzLmNvbG9yKTtcbiAgICB9XG5cbiAgICBjb2xvckNoYW5nZUV2ZW50KCRldmVudDogVGh5Q29sb3IpIHtcbiAgICAgICAgdGhpcy5jb2xvckluc3RhbmNlID0gJGV2ZW50O1xuICAgICAgICB0aGlzLmNvbG9yID0gdGhpcy5jb2xvckluc3RhbmNlLmRpc3BsYXlWYWx1ZTtcbiAgICAgICAgdGhpcy5waWNrZXJDb2xvckNoYW5nZSh0aGlzLmNvbG9yKTtcbiAgICB9XG59XG4iLCI8dGh5LXNhdHVyYXRpb24gW2NvbG9yXT1cImNvbG9ySW5zdGFuY2VcIiAoY29sb3JDaGFuZ2UpPVwiY29sb3JDaGFuZ2VFdmVudCgkZXZlbnQpXCI+PC90aHktc2F0dXJhdGlvbj5cbjxkaXYgY2xhc3M9XCJjb250cm9sc1wiPlxuICA8ZGl2IGNsYXNzPVwiaW5kaWNhdG9yLWh1ZS1hbHBcIj5cbiAgICA8ZGl2IGNsYXNzPVwicm93c1wiPlxuICAgICAgPHRoeS1odWUgW2NvbG9yXT1cImNvbG9ySW5zdGFuY2VcIiAoY29sb3JDaGFuZ2UpPVwiY29sb3JDaGFuZ2VFdmVudCgkZXZlbnQpXCI+PC90aHktaHVlPlxuICAgICAgPHRoeS1hbHBoYSBbY29sb3JdPVwiY29sb3JJbnN0YW5jZVwiIChjb2xvckNoYW5nZSk9XCJjb2xvckNoYW5nZUV2ZW50KCRldmVudClcIj48L3RoeS1hbHBoYT5cbiAgICA8L2Rpdj5cbiAgICA8dGh5LWluZGljYXRvciBbY29sb3JdPVwiY29sb3JJbnN0YW5jZVwiIChjb2xvckNoYW5nZSk9XCJjb2xvckNoYW5nZUV2ZW50KCRldmVudClcIj48L3RoeS1pbmRpY2F0b3I+XG4gIDwvZGl2PlxuPC9kaXY+XG48dGh5LWNvbG9yLWlucHV0cyBbY29sb3JdPVwiY29sb3JJbnN0YW5jZVwiIChjb2xvckNoYW5nZSk9XCJjb2xvckNoYW5nZUV2ZW50KCRldmVudClcIj48L3RoeS1jb2xvci1pbnB1dHM+XG4iXX0=
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { Component, HostBinding, Input, ViewContainerRef } from '@angular/core';
|
|
1
|
+
import { ChangeDetectionStrategy, Component, HostBinding, Input, ViewContainerRef } from '@angular/core';
|
|
2
2
|
import { ThyPopover, ThyPopoverRef } from 'ngx-tethys/popover';
|
|
3
3
|
import ThyColor from './helpers/color.class';
|
|
4
4
|
import { DEFAULT_COLORS } from './constant';
|
|
5
|
-
import {
|
|
5
|
+
import { ThyColorPickerCustomPanelComponent } from './color-picker-custom-panel.component';
|
|
6
6
|
import * as i0 from "@angular/core";
|
|
7
7
|
import * as i1 from "ngx-tethys/popover";
|
|
8
8
|
import * as i2 from "@angular/common";
|
|
@@ -31,9 +31,9 @@ export class ThyColorPickerPanelComponent {
|
|
|
31
31
|
this.thyPopoverRef.close();
|
|
32
32
|
}
|
|
33
33
|
showMoreColor(event) {
|
|
34
|
-
const popoverRef = this.thyPopover.open(
|
|
34
|
+
const popoverRef = this.thyPopover.open(ThyColorPickerCustomPanelComponent, {
|
|
35
35
|
origin: event.currentTarget,
|
|
36
|
-
offset:
|
|
36
|
+
offset: -4,
|
|
37
37
|
placement: 'rightBottom',
|
|
38
38
|
manualClosure: true,
|
|
39
39
|
width: '260px',
|
|
@@ -44,12 +44,12 @@ export class ThyColorPickerPanelComponent {
|
|
|
44
44
|
color: this.color,
|
|
45
45
|
pickerColorChange: (value) => {
|
|
46
46
|
this.newColor = value;
|
|
47
|
+
this.colorChange(value);
|
|
47
48
|
}
|
|
48
49
|
}
|
|
49
50
|
});
|
|
50
51
|
popoverRef.afterClosed().subscribe(() => {
|
|
51
52
|
if (this.newColor) {
|
|
52
|
-
this.colorChange(this.newColor);
|
|
53
53
|
const index = this.recentColors.findIndex(item => item === this.newColor);
|
|
54
54
|
if (index !== -1) {
|
|
55
55
|
this.recentColors.splice(index, 1);
|
|
@@ -68,10 +68,10 @@ export class ThyColorPickerPanelComponent {
|
|
|
68
68
|
}
|
|
69
69
|
}
|
|
70
70
|
ThyColorPickerPanelComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: ThyColorPickerPanelComponent, deps: [{ token: i1.ThyPopover }, { token: i0.ViewContainerRef }, { token: i1.ThyPopoverRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
71
|
-
ThyColorPickerPanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: ThyColorPickerPanelComponent, selector: "thy-color-picker-panel", inputs: { color: "color", colorChange: "colorChange" }, host: { properties: { "class.thy-color-picker-panel": "this.className" } }, ngImport: i0, template: "<div class=\"no-color\" (click)=\"selectColor('transparent')\">\n <div class=\"color-block\"></div>\n <span class=\"no-color-text font-size-sm text-secondary\">\u65E0\u586B\u5145\u8272</span>\n</div>\n<div class=\"main-content\">\n <div class=\"default-color\">\n <div\n class=\"color-item\"\n *ngFor=\"let item of defaultColors\"\n [ngStyle]=\"{ background: item }\"\n [ngClass]=\"item === '#FFFFFF' ? 'item-border' : ''\"\n (click)=\"selectColor(item)\"\n >\n <thy-icon\n thyIconName=\"check-thick\"\n class=\"check-icon\"\n [ngClass]=\"color === item ? (getIconColor(item) === 'white' ? 'checked white-check' : 'checked black-check') : ''\"\n ></thy-icon>\n </div>\n </div>\n <p class=\"font-size-sm text-secondary recent-text\">\u6700\u8FD1\u4F7F\u7528\u81EA\u5B9A\u4E49\u989C\u8272</p>\n <div class=\"recent-color-container\">\n <div\n class=\"color-item\"\n *ngFor=\"let item of recentColors\"\n [ngStyle]=\"{ background: item }\"\n [ngClass]=\"item === '#FFFFFF' ? 'item-border' : ''\"\n (click)=\"selectColor(item)\"\n >\n <thy-icon\n thyIconName=\"check-thick\"\n class=\"check-icon\"\n [ngClass]=\"color === item ? (getIconColor(item) === 'white' ? 'checked white-check' : 'checked black-check') : ''\"\n ></thy-icon>\n </div>\n <div class=\"font-size-sm px-1 text-muted\" *ngIf=\"recentColors.length === 0\">\n \u6682\u65E0\n </div>\n </div>\n</div>\n<div class=\"more-color\" (click)=\"showMoreColor($event)\">\n <thy-icon thyIconName=\"palette\" class=\"mr-2\"></thy-icon>\n <span class=\"font-size-sm custom-text\">\u81EA\u5B9A\u4E49\u989C\u8272</span>\n <thy-icon thyDropdownMenuItemExtendIcon thyIconName=\"angle-right\"></thy-icon>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i3.ThyIconComponent, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }] });
|
|
71
|
+
ThyColorPickerPanelComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: ThyColorPickerPanelComponent, selector: "thy-color-picker-panel", inputs: { color: "color", colorChange: "colorChange" }, host: { properties: { "class.thy-color-picker-panel": "this.className" } }, ngImport: i0, template: "<div class=\"no-color\" (click)=\"selectColor('transparent')\">\n <div class=\"color-block\"></div>\n <span class=\"no-color-text font-size-sm text-secondary\">\u65E0\u586B\u5145\u8272</span>\n</div>\n<div class=\"main-content\">\n <div class=\"default-color\">\n <div\n class=\"color-item\"\n *ngFor=\"let item of defaultColors\"\n [ngStyle]=\"{ background: item }\"\n [ngClass]=\"item === '#FFFFFF' ? 'item-border' : ''\"\n (click)=\"selectColor(item)\"\n >\n <thy-icon\n thyIconName=\"check-thick\"\n class=\"check-icon\"\n [ngClass]=\"color === item ? (getIconColor(item) === 'white' ? 'checked white-check' : 'checked black-check') : ''\"\n ></thy-icon>\n </div>\n </div>\n <p class=\"font-size-sm text-secondary recent-text\">\u6700\u8FD1\u4F7F\u7528\u81EA\u5B9A\u4E49\u989C\u8272</p>\n <div class=\"recent-color-container\">\n <div\n class=\"color-item\"\n *ngFor=\"let item of recentColors\"\n [ngStyle]=\"{ background: item }\"\n [ngClass]=\"item === '#FFFFFF' ? 'item-border' : ''\"\n (click)=\"selectColor(item)\"\n >\n <thy-icon\n thyIconName=\"check-thick\"\n class=\"check-icon\"\n [ngClass]=\"color === item ? (getIconColor(item) === 'white' ? 'checked white-check' : 'checked black-check') : ''\"\n ></thy-icon>\n </div>\n <div class=\"font-size-sm px-1 text-muted\" *ngIf=\"recentColors.length === 0\">\n \u6682\u65E0\n </div>\n </div>\n</div>\n<div class=\"more-color\" (click)=\"showMoreColor($event)\">\n <thy-icon thyIconName=\"palette\" class=\"mr-2\"></thy-icon>\n <span class=\"font-size-sm custom-text\">\u81EA\u5B9A\u4E49\u989C\u8272</span>\n <thy-icon thyDropdownMenuItemExtendIcon thyIconName=\"angle-right\"></thy-icon>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i3.ThyIconComponent, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
72
72
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: ThyColorPickerPanelComponent, decorators: [{
|
|
73
73
|
type: Component,
|
|
74
|
-
args: [{ selector: 'thy-color-picker-panel', template: "<div class=\"no-color\" (click)=\"selectColor('transparent')\">\n <div class=\"color-block\"></div>\n <span class=\"no-color-text font-size-sm text-secondary\">\u65E0\u586B\u5145\u8272</span>\n</div>\n<div class=\"main-content\">\n <div class=\"default-color\">\n <div\n class=\"color-item\"\n *ngFor=\"let item of defaultColors\"\n [ngStyle]=\"{ background: item }\"\n [ngClass]=\"item === '#FFFFFF' ? 'item-border' : ''\"\n (click)=\"selectColor(item)\"\n >\n <thy-icon\n thyIconName=\"check-thick\"\n class=\"check-icon\"\n [ngClass]=\"color === item ? (getIconColor(item) === 'white' ? 'checked white-check' : 'checked black-check') : ''\"\n ></thy-icon>\n </div>\n </div>\n <p class=\"font-size-sm text-secondary recent-text\">\u6700\u8FD1\u4F7F\u7528\u81EA\u5B9A\u4E49\u989C\u8272</p>\n <div class=\"recent-color-container\">\n <div\n class=\"color-item\"\n *ngFor=\"let item of recentColors\"\n [ngStyle]=\"{ background: item }\"\n [ngClass]=\"item === '#FFFFFF' ? 'item-border' : ''\"\n (click)=\"selectColor(item)\"\n >\n <thy-icon\n thyIconName=\"check-thick\"\n class=\"check-icon\"\n [ngClass]=\"color === item ? (getIconColor(item) === 'white' ? 'checked white-check' : 'checked black-check') : ''\"\n ></thy-icon>\n </div>\n <div class=\"font-size-sm px-1 text-muted\" *ngIf=\"recentColors.length === 0\">\n \u6682\u65E0\n </div>\n </div>\n</div>\n<div class=\"more-color\" (click)=\"showMoreColor($event)\">\n <thy-icon thyIconName=\"palette\" class=\"mr-2\"></thy-icon>\n <span class=\"font-size-sm custom-text\">\u81EA\u5B9A\u4E49\u989C\u8272</span>\n <thy-icon thyDropdownMenuItemExtendIcon thyIconName=\"angle-right\"></thy-icon>\n</div>\n" }]
|
|
74
|
+
args: [{ selector: 'thy-color-picker-panel', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"no-color\" (click)=\"selectColor('transparent')\">\n <div class=\"color-block\"></div>\n <span class=\"no-color-text font-size-sm text-secondary\">\u65E0\u586B\u5145\u8272</span>\n</div>\n<div class=\"main-content\">\n <div class=\"default-color\">\n <div\n class=\"color-item\"\n *ngFor=\"let item of defaultColors\"\n [ngStyle]=\"{ background: item }\"\n [ngClass]=\"item === '#FFFFFF' ? 'item-border' : ''\"\n (click)=\"selectColor(item)\"\n >\n <thy-icon\n thyIconName=\"check-thick\"\n class=\"check-icon\"\n [ngClass]=\"color === item ? (getIconColor(item) === 'white' ? 'checked white-check' : 'checked black-check') : ''\"\n ></thy-icon>\n </div>\n </div>\n <p class=\"font-size-sm text-secondary recent-text\">\u6700\u8FD1\u4F7F\u7528\u81EA\u5B9A\u4E49\u989C\u8272</p>\n <div class=\"recent-color-container\">\n <div\n class=\"color-item\"\n *ngFor=\"let item of recentColors\"\n [ngStyle]=\"{ background: item }\"\n [ngClass]=\"item === '#FFFFFF' ? 'item-border' : ''\"\n (click)=\"selectColor(item)\"\n >\n <thy-icon\n thyIconName=\"check-thick\"\n class=\"check-icon\"\n [ngClass]=\"color === item ? (getIconColor(item) === 'white' ? 'checked white-check' : 'checked black-check') : ''\"\n ></thy-icon>\n </div>\n <div class=\"font-size-sm px-1 text-muted\" *ngIf=\"recentColors.length === 0\">\n \u6682\u65E0\n </div>\n </div>\n</div>\n<div class=\"more-color\" (click)=\"showMoreColor($event)\">\n <thy-icon thyIconName=\"palette\" class=\"mr-2\"></thy-icon>\n <span class=\"font-size-sm custom-text\">\u81EA\u5B9A\u4E49\u989C\u8272</span>\n <thy-icon thyDropdownMenuItemExtendIcon thyIconName=\"angle-right\"></thy-icon>\n</div>\n" }]
|
|
75
75
|
}], ctorParameters: function () { return [{ type: i1.ThyPopover }, { type: i0.ViewContainerRef }, { type: i1.ThyPopoverRef }]; }, propDecorators: { className: [{
|
|
76
76
|
type: HostBinding,
|
|
77
77
|
args: ['class.thy-color-picker-panel']
|
|
@@ -80,4 +80,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
|
|
|
80
80
|
}], colorChange: [{
|
|
81
81
|
type: Input
|
|
82
82
|
}] } });
|
|
83
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
83
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3ItcGlja2VyLXBhbmVsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb2xvci1waWNrZXIvY29sb3ItcGlja2VyLXBhbmVsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9jb2xvci1waWNrZXIvY29sb3ItcGlja2VyLXBhbmVsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBVSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqSCxPQUFPLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQy9ELE9BQU8sUUFBUSxNQUFNLHVCQUF1QixDQUFDO0FBQzdDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDNUMsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sdUNBQXVDLENBQUM7Ozs7O0FBRTNGOztHQUVHO0FBTUgsTUFBTSxPQUFPLDRCQUE0QjtJQWFyQyxZQUNZLFVBQXNCLEVBQ3RCLGdCQUFrQyxFQUNsQyxhQUEwRDtRQUYxRCxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsa0JBQWEsR0FBYixhQUFhLENBQTZDO1FBZnpCLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFNOUQsa0JBQWEsR0FBRyxjQUFjLENBQUM7UUFFL0IsaUJBQVksR0FBYSxFQUFFLENBQUM7SUFRekIsQ0FBQztJQUVKLFFBQVE7UUFDSixNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3BELElBQUksTUFBTSxFQUFFO1lBQ1IsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQzFDO0lBQ0wsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFhO1FBQ3JCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELGFBQWEsQ0FBQyxLQUFZO1FBQ3RCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGtDQUFrQyxFQUFFO1lBQ3hFLE1BQU0sRUFBRSxLQUFLLENBQUMsYUFBNEI7WUFDMUMsTUFBTSxFQUFFLENBQUMsQ0FBQztZQUNWLFNBQVMsRUFBRSxhQUFhO1lBQ3hCLGFBQWEsRUFBRSxJQUFJO1lBQ25CLEtBQUssRUFBRSxPQUFPO1lBQ2QsV0FBVyxFQUFFLEtBQUs7WUFDbEIsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGdCQUFnQjtZQUN2QyxpQkFBaUIsRUFBRSx5QkFBeUI7WUFDNUMsWUFBWSxFQUFFO2dCQUNWLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztnQkFDakIsaUJBQWlCLEVBQUUsQ0FBQyxLQUFhLEVBQUUsRUFBRTtvQkFDakMsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7b0JBQ3RCLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzVCLENBQUM7YUFDSjtTQUNKLENBQUMsQ0FBQztRQUVILFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ3BDLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDZixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzFFLElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQyxFQUFFO29CQUNkLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztpQkFDdEM7Z0JBQ0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUN6QyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDbkQsWUFBWSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQzthQUMzRTtZQUNELElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDL0IsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsWUFBWSxDQUFDLElBQVk7UUFDckIsTUFBTSxJQUFJLEdBQUcsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ3JDLE1BQU0sR0FBRyxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3RFLE9BQU8sR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7SUFDekMsQ0FBQzs7eUhBckVRLDRCQUE0Qjs2R0FBNUIsNEJBQTRCLGtNQ2R6QyxteERBNkNBOzJGRC9CYSw0QkFBNEI7a0JBTHhDLFNBQVM7K0JBQ0ksd0JBQXdCLG1CQUVqQix1QkFBdUIsQ0FBQyxNQUFNOzRKQUdGLFNBQVM7c0JBQXJELFdBQVc7dUJBQUMsOEJBQThCO2dCQUVsQyxLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsV0FBVztzQkFBbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25Jbml0LCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUaHlQb3BvdmVyLCBUaHlQb3BvdmVyUmVmIH0gZnJvbSAnbmd4LXRldGh5cy9wb3BvdmVyJztcbmltcG9ydCBUaHlDb2xvciBmcm9tICcuL2hlbHBlcnMvY29sb3IuY2xhc3MnO1xuaW1wb3J0IHsgREVGQVVMVF9DT0xPUlMgfSBmcm9tICcuL2NvbnN0YW50JztcbmltcG9ydCB7IFRoeUNvbG9yUGlja2VyQ3VzdG9tUGFuZWxDb21wb25lbnQgfSBmcm9tICcuL2NvbG9yLXBpY2tlci1jdXN0b20tcGFuZWwuY29tcG9uZW50JztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0aHktY29sb3ItcGlja2VyLXBhbmVsJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY29sb3ItcGlja2VyLXBhbmVsLmNvbXBvbmVudC5odG1sJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBUaHlDb2xvclBpY2tlclBhbmVsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLnRoeS1jb2xvci1waWNrZXItcGFuZWwnKSBjbGFzc05hbWUgPSB0cnVlO1xuXG4gICAgQElucHV0KCkgY29sb3I6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGNvbG9yQ2hhbmdlOiAoY29sb3I6IHN0cmluZykgPT4ge307XG5cbiAgICBkZWZhdWx0Q29sb3JzID0gREVGQVVMVF9DT0xPUlM7XG5cbiAgICByZWNlbnRDb2xvcnM6IHN0cmluZ1tdID0gW107XG5cbiAgICBuZXdDb2xvcjogc3RyaW5nO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgdGh5UG9wb3ZlcjogVGh5UG9wb3ZlcixcbiAgICAgICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgICAgICBwcml2YXRlIHRoeVBvcG92ZXJSZWY6IFRoeVBvcG92ZXJSZWY8VGh5Q29sb3JQaWNrZXJQYW5lbENvbXBvbmVudD5cbiAgICApIHt9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY29sb3JzID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3JlY2VudENvbG9ycycpO1xuICAgICAgICBpZiAoY29sb3JzKSB7XG4gICAgICAgICAgICB0aGlzLnJlY2VudENvbG9ycyA9IEpTT04ucGFyc2UoY29sb3JzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNlbGVjdENvbG9yKGNvbG9yOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5jb2xvciA9IGNvbG9yO1xuICAgICAgICB0aGlzLmNvbG9yQ2hhbmdlKHRoaXMuY29sb3IpO1xuICAgICAgICB0aGlzLnRoeVBvcG92ZXJSZWYuY2xvc2UoKTtcbiAgICB9XG5cbiAgICBzaG93TW9yZUNvbG9yKGV2ZW50OiBFdmVudCkge1xuICAgICAgICBjb25zdCBwb3BvdmVyUmVmID0gdGhpcy50aHlQb3BvdmVyLm9wZW4oVGh5Q29sb3JQaWNrZXJDdXN0b21QYW5lbENvbXBvbmVudCwge1xuICAgICAgICAgICAgb3JpZ2luOiBldmVudC5jdXJyZW50VGFyZ2V0IGFzIEhUTUxFbGVtZW50LFxuICAgICAgICAgICAgb2Zmc2V0OiAtNCxcbiAgICAgICAgICAgIHBsYWNlbWVudDogJ3JpZ2h0Qm90dG9tJyxcbiAgICAgICAgICAgIG1hbnVhbENsb3N1cmU6IHRydWUsXG4gICAgICAgICAgICB3aWR0aDogJzI2MHB4JyxcbiAgICAgICAgICAgIGhhc0JhY2tkcm9wOiBmYWxzZSxcbiAgICAgICAgICAgIHZpZXdDb250YWluZXJSZWY6IHRoaXMudmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgICAgIG9yaWdpbkFjdGl2ZUNsYXNzOiAndGh5LWNvbG9yLXBpY2tlci1hY3RpdmUnLFxuICAgICAgICAgICAgaW5pdGlhbFN0YXRlOiB7XG4gICAgICAgICAgICAgICAgY29sb3I6IHRoaXMuY29sb3IsXG4gICAgICAgICAgICAgICAgcGlja2VyQ29sb3JDaGFuZ2U6ICh2YWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubmV3Q29sb3IgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb2xvckNoYW5nZSh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBwb3BvdmVyUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLm5ld0NvbG9yKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnJlY2VudENvbG9ycy5maW5kSW5kZXgoaXRlbSA9PiBpdGVtID09PSB0aGlzLm5ld0NvbG9yKTtcbiAgICAgICAgICAgICAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVjZW50Q29sb3JzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMucmVjZW50Q29sb3JzLnVuc2hpZnQodGhpcy5uZXdDb2xvcik7XG4gICAgICAgICAgICAgICAgdGhpcy5yZWNlbnRDb2xvcnMgPSB0aGlzLnJlY2VudENvbG9ycy5zbGljZSgwLCAxMCk7XG4gICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3JlY2VudENvbG9ycycsIEpTT04uc3RyaW5naWZ5KHRoaXMucmVjZW50Q29sb3JzKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnRoeVBvcG92ZXJSZWYuY2xvc2UoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0SWNvbkNvbG9yKGl0ZW06IHN0cmluZykge1xuICAgICAgICBjb25zdCByZ2JhID0gbmV3IFRoeUNvbG9yKGl0ZW0pLnJnYmE7XG4gICAgICAgIGNvbnN0IGhzcCA9IDAuMjk5ICogcmdiYS5yZWQgKyAwLjU4NyAqIHJnYmEuZ3JlZW4gKyAwLjExNCAqIHJnYmEuYmx1ZTtcbiAgICAgICAgcmV0dXJuIGhzcCA+IDE5MiA/ICdibGFjaycgOiAnd2hpdGUnO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJuby1jb2xvclwiIChjbGljayk9XCJzZWxlY3RDb2xvcigndHJhbnNwYXJlbnQnKVwiPlxuICA8ZGl2IGNsYXNzPVwiY29sb3ItYmxvY2tcIj48L2Rpdj5cbiAgPHNwYW4gY2xhc3M9XCJuby1jb2xvci10ZXh0IGZvbnQtc2l6ZS1zbSB0ZXh0LXNlY29uZGFyeVwiPuaXoOWhq+WFheiJsjwvc3Bhbj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cIm1haW4tY29udGVudFwiPlxuICA8ZGl2IGNsYXNzPVwiZGVmYXVsdC1jb2xvclwiPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiY29sb3ItaXRlbVwiXG4gICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBkZWZhdWx0Q29sb3JzXCJcbiAgICAgIFtuZ1N0eWxlXT1cInsgYmFja2dyb3VuZDogaXRlbSB9XCJcbiAgICAgIFtuZ0NsYXNzXT1cIml0ZW0gPT09ICcjRkZGRkZGJyA/ICdpdGVtLWJvcmRlcicgOiAnJ1wiXG4gICAgICAoY2xpY2spPVwic2VsZWN0Q29sb3IoaXRlbSlcIlxuICAgID5cbiAgICAgIDx0aHktaWNvblxuICAgICAgICB0aHlJY29uTmFtZT1cImNoZWNrLXRoaWNrXCJcbiAgICAgICAgY2xhc3M9XCJjaGVjay1pY29uXCJcbiAgICAgICAgW25nQ2xhc3NdPVwiY29sb3IgPT09IGl0ZW0gPyAoZ2V0SWNvbkNvbG9yKGl0ZW0pID09PSAnd2hpdGUnID8gJ2NoZWNrZWQgd2hpdGUtY2hlY2snIDogJ2NoZWNrZWQgYmxhY2stY2hlY2snKSA6ICcnXCJcbiAgICAgID48L3RoeS1pY29uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPHAgY2xhc3M9XCJmb250LXNpemUtc20gdGV4dC1zZWNvbmRhcnkgcmVjZW50LXRleHRcIj7mnIDov5Hkvb/nlKjoh6rlrprkuYnpopzoibI8L3A+XG4gIDxkaXYgY2xhc3M9XCJyZWNlbnQtY29sb3ItY29udGFpbmVyXCI+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJjb2xvci1pdGVtXCJcbiAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIHJlY2VudENvbG9yc1wiXG4gICAgICBbbmdTdHlsZV09XCJ7IGJhY2tncm91bmQ6IGl0ZW0gfVwiXG4gICAgICBbbmdDbGFzc109XCJpdGVtID09PSAnI0ZGRkZGRicgPyAnaXRlbS1ib3JkZXInIDogJydcIlxuICAgICAgKGNsaWNrKT1cInNlbGVjdENvbG9yKGl0ZW0pXCJcbiAgICA+XG4gICAgICA8dGh5LWljb25cbiAgICAgICAgdGh5SWNvbk5hbWU9XCJjaGVjay10aGlja1wiXG4gICAgICAgIGNsYXNzPVwiY2hlY2staWNvblwiXG4gICAgICAgIFtuZ0NsYXNzXT1cImNvbG9yID09PSBpdGVtID8gKGdldEljb25Db2xvcihpdGVtKSA9PT0gJ3doaXRlJyA/ICdjaGVja2VkIHdoaXRlLWNoZWNrJyA6ICdjaGVja2VkIGJsYWNrLWNoZWNrJykgOiAnJ1wiXG4gICAgICA+PC90aHktaWNvbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZm9udC1zaXplLXNtIHB4LTEgdGV4dC1tdXRlZFwiICpuZ0lmPVwicmVjZW50Q29sb3JzLmxlbmd0aCA9PT0gMFwiPlxuICAgICAg5pqC5pegXG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwibW9yZS1jb2xvclwiIChjbGljayk9XCJzaG93TW9yZUNvbG9yKCRldmVudClcIj5cbiAgPHRoeS1pY29uIHRoeUljb25OYW1lPVwicGFsZXR0ZVwiIGNsYXNzPVwibXItMlwiPjwvdGh5LWljb24+XG4gIDxzcGFuIGNsYXNzPVwiZm9udC1zaXplLXNtIGN1c3RvbS10ZXh0XCI+6Ieq5a6a5LmJ6aKc6ImyPC9zcGFuPlxuICA8dGh5LWljb24gdGh5RHJvcGRvd25NZW51SXRlbUV4dGVuZEljb24gdGh5SWNvbk5hbWU9XCJhbmdsZS1yaWdodFwiPjwvdGh5LWljb24+XG48L2Rpdj5cbiJdfQ==
|