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.
Files changed (37) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/carousel/carousel.component.d.ts +8 -2
  3. package/carousel/styles/carousel.scss +5 -0
  4. package/carousel/typings.d.ts +1 -0
  5. package/color-picker/color-picker-custom-panel.component.d.ts +17 -0
  6. package/color-picker/color-picker.component.d.ts +6 -1
  7. package/color-picker/index.d.ts +1 -1
  8. package/color-picker/module.d.ts +2 -2
  9. package/color-picker/styles/{picker-panel.scss → color-picker-custom-panel.scss} +1 -1
  10. package/color-picker/styles/color-picker.scss +1 -1
  11. package/esm2020/carousel/carousel.component.mjs +22 -6
  12. package/esm2020/carousel/typings.mjs +1 -1
  13. package/esm2020/color-picker/color-picker-custom-panel.component.mjs +38 -0
  14. package/esm2020/color-picker/color-picker-panel.component.mjs +8 -8
  15. package/esm2020/color-picker/color-picker.component.mjs +31 -3
  16. package/esm2020/color-picker/index.mjs +2 -2
  17. package/esm2020/color-picker/module.mjs +4 -4
  18. package/esm2020/version.mjs +2 -2
  19. package/fesm2015/ngx-tethys-carousel.mjs +21 -5
  20. package/fesm2015/ngx-tethys-carousel.mjs.map +1 -1
  21. package/fesm2015/ngx-tethys-color-picker.mjs +44 -16
  22. package/fesm2015/ngx-tethys-color-picker.mjs.map +1 -1
  23. package/fesm2015/ngx-tethys.mjs +1 -1
  24. package/fesm2015/ngx-tethys.mjs.map +1 -1
  25. package/fesm2020/ngx-tethys-carousel.mjs +21 -5
  26. package/fesm2020/ngx-tethys-carousel.mjs.map +1 -1
  27. package/fesm2020/ngx-tethys-color-picker.mjs +44 -16
  28. package/fesm2020/ngx-tethys-color-picker.mjs.map +1 -1
  29. package/fesm2020/ngx-tethys.mjs +1 -1
  30. package/fesm2020/ngx-tethys.mjs.map +1 -1
  31. package/form/styles/form-check.scss +3 -2
  32. package/package.json +1 -1
  33. package/schematics/version.d.ts +1 -1
  34. package/schematics/version.js +1 -1
  35. package/shared/select/styles/select.mixin.scss +1 -1
  36. package/color-picker/custom-color-picker-panel.component.d.ts +0 -17
  37. 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
  }
@@ -60,6 +60,11 @@
60
60
  display: inline-block;
61
61
  padding: 0 4px;
62
62
  cursor: pointer;
63
+ &:hover {
64
+ thy-dot {
65
+ opacity: 1;
66
+ }
67
+ }
63
68
  thy-dot {
64
69
  transition: 0.3s opacity;
65
70
  color: variables.$white;
@@ -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
  }
@@ -1,6 +1,6 @@
1
1
  export * from './module';
2
2
  export * from './color-picker.component';
3
- export * from './custom-color-picker-panel.component';
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';
@@ -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 "./custom-color-picker-panel.component";
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.ThyPickerPanelComponent, 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]>;
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
  }
@@ -1,4 +1,4 @@
1
- .thy-picker-panel {
1
+ .thy-color-picker-custom-panel {
2
2
  display: block;
3
3
  padding: 16px;
4
4
  }
@@ -2,6 +2,6 @@
2
2
  @forward './color-picker-panel.scss';
3
3
  @forward './hue.scss';
4
4
  @forward './indicator.scss';
5
- @forward './picker-panel.scss';
5
+ @forward './color-picker-custom-panel.scss';
6
6
  @forward './inputs.scss';
7
7
  @forward './saturation.scss';
@@ -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.thyTrigger === 'hover') {
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(200)).subscribe(index => {
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwaW5ncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jYXJvdXNlbC90eXBpbmdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBUaHlDYXJvdXNlbEl0ZW1EaXJlY3RpdmUgfSBmcm9tICcuL2Nhcm91c2VsLWl0ZW0uZGlyZWN0aXZlJztcbmltcG9ydCB7IFF1ZXJ5TGlzdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRoeURpc3RhbmNlVmVjdG9yIHtcbiAgICB4OiBudW1iZXI7XG4gICAgeTogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRoeUNhcm91c2VsU3dpdGNoRGF0YSB7XG4gICAgZnJvbTogbnVtYmVyO1xuICAgIHRvOiBudW1iZXI7XG59XG5cbmV4cG9ydCB0eXBlIFRoeUNhcm91c2VsRWZmZWN0ID0gJ3NsaWRlJyB8ICdmYWRlJyB8ICdub29wJztcblxuZXhwb3J0IHR5cGUgVGh5Q2Fyb3VzZWxUcmlnZ2VyID0gJ2NsaWNrJyB8ICdob3Zlcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGh5Q2Fyb3VzZWxFbmdpbmUge1xuICAgIC8vIEluaXRpYWxpemUgZHJhZ2dpbmcgc2VxdWVuY2VzLlxuICAgIGluaXRpYWxpemVDYXJvdXNlbENvbnRlbnRzKGNvbnRlbnRzOiBRdWVyeUxpc3Q8VGh5Q2Fyb3VzZWxJdGVtRGlyZWN0aXZlPiB8IG51bGwpOiB2b2lkO1xuICAgIC8vIHN3aXRjaCBpdGVtXG4gICAgc3dpdGNoKHRvOiBudW1iZXIsIGZyb206IG51bWJlcik6IE9ic2VydmFibGU8dm9pZD47XG4gICAgLy8gZHJhZ2dpbmcgZXZlbnRzXG4gICAgZHJhZ2dpbmcocG9pbnRlclZlY3RvcjogVGh5RGlzdGFuY2VWZWN0b3IsIHJlY3Q6IERPTVJlY3QpOiB2b2lkO1xuICAgIC8vIHdoZW4gd2luZG93IHJlc2l6ZVxuICAgIGNvcnJlY3Rpb25PZmZzZXQoKTogdm9pZDtcbn1cbiJdfQ==
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 { ThyPickerPanelComponent } from './custom-color-picker-panel.component';
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(ThyPickerPanelComponent, {
34
+ const popoverRef = this.thyPopover.open(ThyColorPickerCustomPanelComponent, {
35
35
  origin: event.currentTarget,
36
- offset: 0,
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3ItcGlja2VyLXBhbmVsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb2xvci1waWNrZXIvY29sb3ItcGlja2VyLXBhbmVsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9jb2xvci1waWNrZXIvY29sb3ItcGlja2VyLXBhbmVsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBVSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RixPQUFPLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQy9ELE9BQU8sUUFBUSxNQUFNLHVCQUF1QixDQUFDO0FBQzdDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDNUMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sdUNBQXVDLENBQUM7Ozs7O0FBRWhGOztHQUVHO0FBS0gsTUFBTSxPQUFPLDRCQUE0QjtJQWFyQyxZQUNZLFVBQXNCLEVBQ3RCLGdCQUFrQyxFQUNsQyxhQUEwRDtRQUYxRCxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsa0JBQWEsR0FBYixhQUFhLENBQTZDO1FBZnpCLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFNOUQsa0JBQWEsR0FBRyxjQUFjLENBQUM7UUFFL0IsaUJBQVksR0FBYSxFQUFFLENBQUM7SUFRekIsQ0FBQztJQUVKLFFBQVE7UUFDSixNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3BELElBQUksTUFBTSxFQUFFO1lBQ1IsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQzFDO0lBQ0wsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFhO1FBQ3JCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELGFBQWEsQ0FBQyxLQUFZO1FBQ3RCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLHVCQUF1QixFQUFFO1lBQzdELE1BQU0sRUFBRSxLQUFLLENBQUMsYUFBNEI7WUFDMUMsTUFBTSxFQUFFLENBQUM7WUFDVCxTQUFTLEVBQUUsYUFBYTtZQUN4QixhQUFhLEVBQUUsSUFBSTtZQUNuQixLQUFLLEVBQUUsT0FBTztZQUNkLFdBQVcsRUFBRSxLQUFLO1lBQ2xCLGdCQUFnQixFQUFFLElBQUksQ0FBQyxnQkFBZ0I7WUFDdkMsaUJBQWlCLEVBQUUseUJBQXlCO1lBQzVDLFlBQVksRUFBRTtnQkFDVixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7Z0JBQ2pCLGlCQUFpQixFQUFFLENBQUMsS0FBYSxFQUFFLEVBQUU7b0JBQ2pDLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO2dCQUMxQixDQUFDO2FBQ0o7U0FDSixDQUFDLENBQUM7UUFFSCxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNwQyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7Z0JBQ2YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ2hDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDMUUsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDLEVBQUU7b0JBQ2QsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO2lCQUN0QztnQkFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3pDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUNuRCxZQUFZLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO2FBQzNFO1lBQ0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMvQixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxZQUFZLENBQUMsSUFBWTtRQUNyQixNQUFNLElBQUksR0FBRyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDckMsTUFBTSxHQUFHLEdBQUcsS0FBSyxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDdEUsT0FBTyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztJQUN6QyxDQUFDOzt5SEFyRVEsNEJBQTRCOzZHQUE1Qiw0QkFBNEIsa01DYnpDLG14REE2Q0E7MkZEaENhLDRCQUE0QjtrQkFKeEMsU0FBUzsrQkFDSSx3QkFBd0I7NEpBSVcsU0FBUztzQkFBckQsV0FBVzt1QkFBQyw4QkFBOEI7Z0JBRWxDLEtBQUs7c0JBQWIsS0FBSztnQkFFRyxXQUFXO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBIb3N0QmluZGluZywgSW5wdXQsIE9uSW5pdCwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGh5UG9wb3ZlciwgVGh5UG9wb3ZlclJlZiB9IGZyb20gJ25neC10ZXRoeXMvcG9wb3Zlcic7XG5pbXBvcnQgVGh5Q29sb3IgZnJvbSAnLi9oZWxwZXJzL2NvbG9yLmNsYXNzJztcbmltcG9ydCB7IERFRkFVTFRfQ09MT1JTIH0gZnJvbSAnLi9jb25zdGFudCc7XG5pbXBvcnQgeyBUaHlQaWNrZXJQYW5lbENvbXBvbmVudCB9IGZyb20gJy4vY3VzdG9tLWNvbG9yLXBpY2tlci1wYW5lbC5jb21wb25lbnQnO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RoeS1jb2xvci1waWNrZXItcGFuZWwnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jb2xvci1waWNrZXItcGFuZWwuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFRoeUNvbG9yUGlja2VyUGFuZWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MudGh5LWNvbG9yLXBpY2tlci1wYW5lbCcpIGNsYXNzTmFtZSA9IHRydWU7XG5cbiAgICBASW5wdXQoKSBjb2xvcjogc3RyaW5nO1xuXG4gICAgQElucHV0KCkgY29sb3JDaGFuZ2U6IChjb2xvcjogc3RyaW5nKSA9PiB7fTtcblxuICAgIGRlZmF1bHRDb2xvcnMgPSBERUZBVUxUX0NPTE9SUztcblxuICAgIHJlY2VudENvbG9yczogc3RyaW5nW10gPSBbXTtcblxuICAgIG5ld0NvbG9yOiBzdHJpbmc7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSB0aHlQb3BvdmVyOiBUaHlQb3BvdmVyLFxuICAgICAgICBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgICAgIHByaXZhdGUgdGh5UG9wb3ZlclJlZjogVGh5UG9wb3ZlclJlZjxUaHlDb2xvclBpY2tlclBhbmVsQ29tcG9uZW50PlxuICAgICkge31cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBjb25zdCBjb2xvcnMgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgncmVjZW50Q29sb3JzJyk7XG4gICAgICAgIGlmIChjb2xvcnMpIHtcbiAgICAgICAgICAgIHRoaXMucmVjZW50Q29sb3JzID0gSlNPTi5wYXJzZShjb2xvcnMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2VsZWN0Q29sb3IoY29sb3I6IHN0cmluZykge1xuICAgICAgICB0aGlzLmNvbG9yID0gY29sb3I7XG4gICAgICAgIHRoaXMuY29sb3JDaGFuZ2UodGhpcy5jb2xvcik7XG4gICAgICAgIHRoaXMudGh5UG9wb3ZlclJlZi5jbG9zZSgpO1xuICAgIH1cblxuICAgIHNob3dNb3JlQ29sb3IoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGNvbnN0IHBvcG92ZXJSZWYgPSB0aGlzLnRoeVBvcG92ZXIub3BlbihUaHlQaWNrZXJQYW5lbENvbXBvbmVudCwge1xuICAgICAgICAgICAgb3JpZ2luOiBldmVudC5jdXJyZW50VGFyZ2V0IGFzIEhUTUxFbGVtZW50LFxuICAgICAgICAgICAgb2Zmc2V0OiAwLFxuICAgICAgICAgICAgcGxhY2VtZW50OiAncmlnaHRCb3R0b20nLFxuICAgICAgICAgICAgbWFudWFsQ2xvc3VyZTogdHJ1ZSxcbiAgICAgICAgICAgIHdpZHRoOiAnMjYwcHgnLFxuICAgICAgICAgICAgaGFzQmFja2Ryb3A6IGZhbHNlLFxuICAgICAgICAgICAgdmlld0NvbnRhaW5lclJlZjogdGhpcy52aWV3Q29udGFpbmVyUmVmLFxuICAgICAgICAgICAgb3JpZ2luQWN0aXZlQ2xhc3M6ICd0aHktY29sb3ItcGlja2VyLWFjdGl2ZScsXG4gICAgICAgICAgICBpbml0aWFsU3RhdGU6IHtcbiAgICAgICAgICAgICAgICBjb2xvcjogdGhpcy5jb2xvcixcbiAgICAgICAgICAgICAgICBwaWNrZXJDb2xvckNoYW5nZTogKHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5uZXdDb2xvciA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcG9wb3ZlclJlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5uZXdDb2xvcikge1xuICAgICAgICAgICAgICAgIHRoaXMuY29sb3JDaGFuZ2UodGhpcy5uZXdDb2xvcik7XG4gICAgICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnJlY2VudENvbG9ycy5maW5kSW5kZXgoaXRlbSA9PiBpdGVtID09PSB0aGlzLm5ld0NvbG9yKTtcbiAgICAgICAgICAgICAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVjZW50Q29sb3JzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMucmVjZW50Q29sb3JzLnVuc2hpZnQodGhpcy5uZXdDb2xvcik7XG4gICAgICAgICAgICAgICAgdGhpcy5yZWNlbnRDb2xvcnMgPSB0aGlzLnJlY2VudENvbG9ycy5zbGljZSgwLCAxMCk7XG4gICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3JlY2VudENvbG9ycycsIEpTT04uc3RyaW5naWZ5KHRoaXMucmVjZW50Q29sb3JzKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnRoeVBvcG92ZXJSZWYuY2xvc2UoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0SWNvbkNvbG9yKGl0ZW06IHN0cmluZykge1xuICAgICAgICBjb25zdCByZ2JhID0gbmV3IFRoeUNvbG9yKGl0ZW0pLnJnYmE7XG4gICAgICAgIGNvbnN0IGhzcCA9IDAuMjk5ICogcmdiYS5yZWQgKyAwLjU4NyAqIHJnYmEuZ3JlZW4gKyAwLjExNCAqIHJnYmEuYmx1ZTtcbiAgICAgICAgcmV0dXJuIGhzcCA+IDE5MiA/ICdibGFjaycgOiAnd2hpdGUnO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJuby1jb2xvclwiIChjbGljayk9XCJzZWxlY3RDb2xvcigndHJhbnNwYXJlbnQnKVwiPlxuICA8ZGl2IGNsYXNzPVwiY29sb3ItYmxvY2tcIj48L2Rpdj5cbiAgPHNwYW4gY2xhc3M9XCJuby1jb2xvci10ZXh0IGZvbnQtc2l6ZS1zbSB0ZXh0LXNlY29uZGFyeVwiPuaXoOWhq+WFheiJsjwvc3Bhbj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cIm1haW4tY29udGVudFwiPlxuICA8ZGl2IGNsYXNzPVwiZGVmYXVsdC1jb2xvclwiPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiY29sb3ItaXRlbVwiXG4gICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBkZWZhdWx0Q29sb3JzXCJcbiAgICAgIFtuZ1N0eWxlXT1cInsgYmFja2dyb3VuZDogaXRlbSB9XCJcbiAgICAgIFtuZ0NsYXNzXT1cIml0ZW0gPT09ICcjRkZGRkZGJyA/ICdpdGVtLWJvcmRlcicgOiAnJ1wiXG4gICAgICAoY2xpY2spPVwic2VsZWN0Q29sb3IoaXRlbSlcIlxuICAgID5cbiAgICAgIDx0aHktaWNvblxuICAgICAgICB0aHlJY29uTmFtZT1cImNoZWNrLXRoaWNrXCJcbiAgICAgICAgY2xhc3M9XCJjaGVjay1pY29uXCJcbiAgICAgICAgW25nQ2xhc3NdPVwiY29sb3IgPT09IGl0ZW0gPyAoZ2V0SWNvbkNvbG9yKGl0ZW0pID09PSAnd2hpdGUnID8gJ2NoZWNrZWQgd2hpdGUtY2hlY2snIDogJ2NoZWNrZWQgYmxhY2stY2hlY2snKSA6ICcnXCJcbiAgICAgID48L3RoeS1pY29uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPHAgY2xhc3M9XCJmb250LXNpemUtc20gdGV4dC1zZWNvbmRhcnkgcmVjZW50LXRleHRcIj7mnIDov5Hkvb/nlKjoh6rlrprkuYnpopzoibI8L3A+XG4gIDxkaXYgY2xhc3M9XCJyZWNlbnQtY29sb3ItY29udGFpbmVyXCI+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJjb2xvci1pdGVtXCJcbiAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIHJlY2VudENvbG9yc1wiXG4gICAgICBbbmdTdHlsZV09XCJ7IGJhY2tncm91bmQ6IGl0ZW0gfVwiXG4gICAgICBbbmdDbGFzc109XCJpdGVtID09PSAnI0ZGRkZGRicgPyAnaXRlbS1ib3JkZXInIDogJydcIlxuICAgICAgKGNsaWNrKT1cInNlbGVjdENvbG9yKGl0ZW0pXCJcbiAgICA+XG4gICAgICA8dGh5LWljb25cbiAgICAgICAgdGh5SWNvbk5hbWU9XCJjaGVjay10aGlja1wiXG4gICAgICAgIGNsYXNzPVwiY2hlY2staWNvblwiXG4gICAgICAgIFtuZ0NsYXNzXT1cImNvbG9yID09PSBpdGVtID8gKGdldEljb25Db2xvcihpdGVtKSA9PT0gJ3doaXRlJyA/ICdjaGVja2VkIHdoaXRlLWNoZWNrJyA6ICdjaGVja2VkIGJsYWNrLWNoZWNrJykgOiAnJ1wiXG4gICAgICA+PC90aHktaWNvbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZm9udC1zaXplLXNtIHB4LTEgdGV4dC1tdXRlZFwiICpuZ0lmPVwicmVjZW50Q29sb3JzLmxlbmd0aCA9PT0gMFwiPlxuICAgICAg5pqC5pegXG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwibW9yZS1jb2xvclwiIChjbGljayk9XCJzaG93TW9yZUNvbG9yKCRldmVudClcIj5cbiAgPHRoeS1pY29uIHRoeUljb25OYW1lPVwicGFsZXR0ZVwiIGNsYXNzPVwibXItMlwiPjwvdGh5LWljb24+XG4gIDxzcGFuIGNsYXNzPVwiZm9udC1zaXplLXNtIGN1c3RvbS10ZXh0XCI+6Ieq5a6a5LmJ6aKc6ImyPC9zcGFuPlxuICA8dGh5LWljb24gdGh5RHJvcGRvd25NZW51SXRlbUV4dGVuZEljb24gdGh5SWNvbk5hbWU9XCJhbmdsZS1yaWdodFwiPjwvdGh5LWljb24+XG48L2Rpdj5cbiJdfQ==
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sb3ItcGlja2VyLXBhbmVsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb2xvci1waWNrZXIvY29sb3ItcGlja2VyLXBhbmVsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9jb2xvci1waWNrZXIvY29sb3ItcGlja2VyLXBhbmVsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBVSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqSCxPQUFPLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQy9ELE9BQU8sUUFBUSxNQUFNLHVCQUF1QixDQUFDO0FBQzdDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDNUMsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sdUNBQXVDLENBQUM7Ozs7O0FBRTNGOztHQUVHO0FBTUgsTUFBTSxPQUFPLDRCQUE0QjtJQWFyQyxZQUNZLFVBQXNCLEVBQ3RCLGdCQUFrQyxFQUNsQyxhQUEwRDtRQUYxRCxlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsa0JBQWEsR0FBYixhQUFhLENBQTZDO1FBZnpCLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFNOUQsa0JBQWEsR0FBRyxjQUFjLENBQUM7UUFFL0IsaUJBQVksR0FBYSxFQUFFLENBQUM7SUFRekIsQ0FBQztJQUVKLFFBQVE7UUFDSixNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ3BELElBQUksTUFBTSxFQUFFO1lBQ1IsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQzFDO0lBQ0wsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFhO1FBQ3JCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVELGFBQWEsQ0FBQyxLQUFZO1FBQ3RCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGtDQUFrQyxFQUFFO1lBQ3hFLE1BQU0sRUFBRSxLQUFLLENBQUMsYUFBNEI7WUFDMUMsTUFBTSxFQUFFLENBQUMsQ0FBQztZQUNWLFNBQVMsRUFBRSxhQUFhO1lBQ3hCLGFBQWEsRUFBRSxJQUFJO1lBQ25CLEtBQUssRUFBRSxPQUFPO1lBQ2QsV0FBVyxFQUFFLEtBQUs7WUFDbEIsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGdCQUFnQjtZQUN2QyxpQkFBaUIsRUFBRSx5QkFBeUI7WUFDNUMsWUFBWSxFQUFFO2dCQUNWLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztnQkFDakIsaUJBQWlCLEVBQUUsQ0FBQyxLQUFhLEVBQUUsRUFBRTtvQkFDakMsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7b0JBQ3RCLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzVCLENBQUM7YUFDSjtTQUNKLENBQUMsQ0FBQztRQUVILFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ3BDLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDZixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQzFFLElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQyxFQUFFO29CQUNkLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztpQkFDdEM7Z0JBQ0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUN6QyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDbkQsWUFBWSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQzthQUMzRTtZQUNELElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDL0IsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsWUFBWSxDQUFDLElBQVk7UUFDckIsTUFBTSxJQUFJLEdBQUcsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQ3JDLE1BQU0sR0FBRyxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3RFLE9BQU8sR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7SUFDekMsQ0FBQzs7eUhBckVRLDRCQUE0Qjs2R0FBNUIsNEJBQTRCLGtNQ2R6QyxteERBNkNBOzJGRC9CYSw0QkFBNEI7a0JBTHhDLFNBQVM7K0JBQ0ksd0JBQXdCLG1CQUVqQix1QkFBdUIsQ0FBQyxNQUFNOzRKQUdGLFNBQVM7c0JBQXJELFdBQVc7dUJBQUMsOEJBQThCO2dCQUVsQyxLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsV0FBVztzQkFBbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25Jbml0LCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUaHlQb3BvdmVyLCBUaHlQb3BvdmVyUmVmIH0gZnJvbSAnbmd4LXRldGh5cy9wb3BvdmVyJztcbmltcG9ydCBUaHlDb2xvciBmcm9tICcuL2hlbHBlcnMvY29sb3IuY2xhc3MnO1xuaW1wb3J0IHsgREVGQVVMVF9DT0xPUlMgfSBmcm9tICcuL2NvbnN0YW50JztcbmltcG9ydCB7IFRoeUNvbG9yUGlja2VyQ3VzdG9tUGFuZWxDb21wb25lbnQgfSBmcm9tICcuL2NvbG9yLXBpY2tlci1jdXN0b20tcGFuZWwuY29tcG9uZW50JztcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0aHktY29sb3ItcGlja2VyLXBhbmVsJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY29sb3ItcGlja2VyLXBhbmVsLmNvbXBvbmVudC5odG1sJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBUaHlDb2xvclBpY2tlclBhbmVsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLnRoeS1jb2xvci1waWNrZXItcGFuZWwnKSBjbGFzc05hbWUgPSB0cnVlO1xuXG4gICAgQElucHV0KCkgY29sb3I6IHN0cmluZztcblxuICAgIEBJbnB1dCgpIGNvbG9yQ2hhbmdlOiAoY29sb3I6IHN0cmluZykgPT4ge307XG5cbiAgICBkZWZhdWx0Q29sb3JzID0gREVGQVVMVF9DT0xPUlM7XG5cbiAgICByZWNlbnRDb2xvcnM6IHN0cmluZ1tdID0gW107XG5cbiAgICBuZXdDb2xvcjogc3RyaW5nO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgdGh5UG9wb3ZlcjogVGh5UG9wb3ZlcixcbiAgICAgICAgcHJpdmF0ZSB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmLFxuICAgICAgICBwcml2YXRlIHRoeVBvcG92ZXJSZWY6IFRoeVBvcG92ZXJSZWY8VGh5Q29sb3JQaWNrZXJQYW5lbENvbXBvbmVudD5cbiAgICApIHt9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY29sb3JzID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3JlY2VudENvbG9ycycpO1xuICAgICAgICBpZiAoY29sb3JzKSB7XG4gICAgICAgICAgICB0aGlzLnJlY2VudENvbG9ycyA9IEpTT04ucGFyc2UoY29sb3JzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNlbGVjdENvbG9yKGNvbG9yOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5jb2xvciA9IGNvbG9yO1xuICAgICAgICB0aGlzLmNvbG9yQ2hhbmdlKHRoaXMuY29sb3IpO1xuICAgICAgICB0aGlzLnRoeVBvcG92ZXJSZWYuY2xvc2UoKTtcbiAgICB9XG5cbiAgICBzaG93TW9yZUNvbG9yKGV2ZW50OiBFdmVudCkge1xuICAgICAgICBjb25zdCBwb3BvdmVyUmVmID0gdGhpcy50aHlQb3BvdmVyLm9wZW4oVGh5Q29sb3JQaWNrZXJDdXN0b21QYW5lbENvbXBvbmVudCwge1xuICAgICAgICAgICAgb3JpZ2luOiBldmVudC5jdXJyZW50VGFyZ2V0IGFzIEhUTUxFbGVtZW50LFxuICAgICAgICAgICAgb2Zmc2V0OiAtNCxcbiAgICAgICAgICAgIHBsYWNlbWVudDogJ3JpZ2h0Qm90dG9tJyxcbiAgICAgICAgICAgIG1hbnVhbENsb3N1cmU6IHRydWUsXG4gICAgICAgICAgICB3aWR0aDogJzI2MHB4JyxcbiAgICAgICAgICAgIGhhc0JhY2tkcm9wOiBmYWxzZSxcbiAgICAgICAgICAgIHZpZXdDb250YWluZXJSZWY6IHRoaXMudmlld0NvbnRhaW5lclJlZixcbiAgICAgICAgICAgIG9yaWdpbkFjdGl2ZUNsYXNzOiAndGh5LWNvbG9yLXBpY2tlci1hY3RpdmUnLFxuICAgICAgICAgICAgaW5pdGlhbFN0YXRlOiB7XG4gICAgICAgICAgICAgICAgY29sb3I6IHRoaXMuY29sb3IsXG4gICAgICAgICAgICAgICAgcGlja2VyQ29sb3JDaGFuZ2U6ICh2YWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubmV3Q29sb3IgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb2xvckNoYW5nZSh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBwb3BvdmVyUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLm5ld0NvbG9yKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLnJlY2VudENvbG9ycy5maW5kSW5kZXgoaXRlbSA9PiBpdGVtID09PSB0aGlzLm5ld0NvbG9yKTtcbiAgICAgICAgICAgICAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVjZW50Q29sb3JzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMucmVjZW50Q29sb3JzLnVuc2hpZnQodGhpcy5uZXdDb2xvcik7XG4gICAgICAgICAgICAgICAgdGhpcy5yZWNlbnRDb2xvcnMgPSB0aGlzLnJlY2VudENvbG9ycy5zbGljZSgwLCAxMCk7XG4gICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3JlY2VudENvbG9ycycsIEpTT04uc3RyaW5naWZ5KHRoaXMucmVjZW50Q29sb3JzKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnRoeVBvcG92ZXJSZWYuY2xvc2UoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0SWNvbkNvbG9yKGl0ZW06IHN0cmluZykge1xuICAgICAgICBjb25zdCByZ2JhID0gbmV3IFRoeUNvbG9yKGl0ZW0pLnJnYmE7XG4gICAgICAgIGNvbnN0IGhzcCA9IDAuMjk5ICogcmdiYS5yZWQgKyAwLjU4NyAqIHJnYmEuZ3JlZW4gKyAwLjExNCAqIHJnYmEuYmx1ZTtcbiAgICAgICAgcmV0dXJuIGhzcCA+IDE5MiA/ICdibGFjaycgOiAnd2hpdGUnO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJuby1jb2xvclwiIChjbGljayk9XCJzZWxlY3RDb2xvcigndHJhbnNwYXJlbnQnKVwiPlxuICA8ZGl2IGNsYXNzPVwiY29sb3ItYmxvY2tcIj48L2Rpdj5cbiAgPHNwYW4gY2xhc3M9XCJuby1jb2xvci10ZXh0IGZvbnQtc2l6ZS1zbSB0ZXh0LXNlY29uZGFyeVwiPuaXoOWhq+WFheiJsjwvc3Bhbj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cIm1haW4tY29udGVudFwiPlxuICA8ZGl2IGNsYXNzPVwiZGVmYXVsdC1jb2xvclwiPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiY29sb3ItaXRlbVwiXG4gICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBkZWZhdWx0Q29sb3JzXCJcbiAgICAgIFtuZ1N0eWxlXT1cInsgYmFja2dyb3VuZDogaXRlbSB9XCJcbiAgICAgIFtuZ0NsYXNzXT1cIml0ZW0gPT09ICcjRkZGRkZGJyA/ICdpdGVtLWJvcmRlcicgOiAnJ1wiXG4gICAgICAoY2xpY2spPVwic2VsZWN0Q29sb3IoaXRlbSlcIlxuICAgID5cbiAgICAgIDx0aHktaWNvblxuICAgICAgICB0aHlJY29uTmFtZT1cImNoZWNrLXRoaWNrXCJcbiAgICAgICAgY2xhc3M9XCJjaGVjay1pY29uXCJcbiAgICAgICAgW25nQ2xhc3NdPVwiY29sb3IgPT09IGl0ZW0gPyAoZ2V0SWNvbkNvbG9yKGl0ZW0pID09PSAnd2hpdGUnID8gJ2NoZWNrZWQgd2hpdGUtY2hlY2snIDogJ2NoZWNrZWQgYmxhY2stY2hlY2snKSA6ICcnXCJcbiAgICAgID48L3RoeS1pY29uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPHAgY2xhc3M9XCJmb250LXNpemUtc20gdGV4dC1zZWNvbmRhcnkgcmVjZW50LXRleHRcIj7mnIDov5Hkvb/nlKjoh6rlrprkuYnpopzoibI8L3A+XG4gIDxkaXYgY2xhc3M9XCJyZWNlbnQtY29sb3ItY29udGFpbmVyXCI+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJjb2xvci1pdGVtXCJcbiAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIHJlY2VudENvbG9yc1wiXG4gICAgICBbbmdTdHlsZV09XCJ7IGJhY2tncm91bmQ6IGl0ZW0gfVwiXG4gICAgICBbbmdDbGFzc109XCJpdGVtID09PSAnI0ZGRkZGRicgPyAnaXRlbS1ib3JkZXInIDogJydcIlxuICAgICAgKGNsaWNrKT1cInNlbGVjdENvbG9yKGl0ZW0pXCJcbiAgICA+XG4gICAgICA8dGh5LWljb25cbiAgICAgICAgdGh5SWNvbk5hbWU9XCJjaGVjay10aGlja1wiXG4gICAgICAgIGNsYXNzPVwiY2hlY2staWNvblwiXG4gICAgICAgIFtuZ0NsYXNzXT1cImNvbG9yID09PSBpdGVtID8gKGdldEljb25Db2xvcihpdGVtKSA9PT0gJ3doaXRlJyA/ICdjaGVja2VkIHdoaXRlLWNoZWNrJyA6ICdjaGVja2VkIGJsYWNrLWNoZWNrJykgOiAnJ1wiXG4gICAgICA+PC90aHktaWNvbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZm9udC1zaXplLXNtIHB4LTEgdGV4dC1tdXRlZFwiICpuZ0lmPVwicmVjZW50Q29sb3JzLmxlbmd0aCA9PT0gMFwiPlxuICAgICAg5pqC5pegXG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwibW9yZS1jb2xvclwiIChjbGljayk9XCJzaG93TW9yZUNvbG9yKCRldmVudClcIj5cbiAgPHRoeS1pY29uIHRoeUljb25OYW1lPVwicGFsZXR0ZVwiIGNsYXNzPVwibXItMlwiPjwvdGh5LWljb24+XG4gIDxzcGFuIGNsYXNzPVwiZm9udC1zaXplLXNtIGN1c3RvbS10ZXh0XCI+6Ieq5a6a5LmJ6aKc6ImyPC9zcGFuPlxuICA8dGh5LWljb24gdGh5RHJvcGRvd25NZW51SXRlbUV4dGVuZEljb24gdGh5SWNvbk5hbWU9XCJhbmdsZS1yaWdodFwiPjwvdGh5LWljb24+XG48L2Rpdj5cbiJdfQ==