ngx-tethys 15.3.8 → 15.3.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,21 @@
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
+ ## [15.3.9](https://github.com/atinc/ngx-tethys/compare/15.3.5...15.3.9) (2023-06-08)
6
+
7
+
8
+ ### Bug Fixes
9
+
10
+ * **form:** fix defaultRemoveError removeChild error #INFR-8240 ([c856d80](https://github.com/atinc/ngx-tethys/commit/c856d80c2633f2af4fb710e3254b536d79caf6f8)), closes [#INFR-8240](https://github.com/atinc/ngx-tethys/issues/INFR-8240)
11
+ * **table:** thyTheme值为bordered且可拖拽时,拖拽图标和文字之间的间距过大 #INFR-8217 ([#2705](https://github.com/atinc/ngx-tethys/issues/2705)) ([f2ac471](https://github.com/atinc/ngx-tethys/commit/f2ac471cb2e92d4297e5f03308eb828b741a47db)), closes [#INFR-8217](https://github.com/atinc/ngx-tethys/issues/INFR-8217) [#INFR-8217](https://github.com/atinc/ngx-tethys/issues/INFR-8217) [#INFR-8217](https://github.com/atinc/ngx-tethys/issues/INFR-8217)
12
+
13
+
14
+ ### Features
15
+
16
+ * **action:** supports success and error feedback #INFR-8234 ([#2706](https://github.com/atinc/ngx-tethys/issues/2706)) ([62edb36](https://github.com/atinc/ngx-tethys/commit/62edb3633e73032d2ce378a87bf45fe3abd88842)), closes [#INFR-8234](https://github.com/atinc/ngx-tethys/issues/INFR-8234)
17
+
18
+
19
+
5
20
  ## [15.3.8](https://github.com/atinc/ngx-tethys/compare/15.3.5...15.3.8) (2023-06-06)
6
21
 
7
22
 
@@ -1,17 +1,27 @@
1
- import { OnInit, AfterViewInit, OnChanges, ElementRef, Renderer2, SimpleChanges } from '@angular/core';
1
+ import { OnInit, AfterViewInit, OnChanges, ElementRef, Renderer2, SimpleChanges, ChangeDetectorRef, OnDestroy } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  export type ThyActionType = 'primary' | 'success' | 'danger' | 'warning';
4
+ export type ThyActionFeedback = 'success' | 'error';
5
+ export interface ThyActionFeedbackOptions {
6
+ icon?: string;
7
+ class?: string;
8
+ duration?: number;
9
+ }
4
10
  /**
5
11
  * 立即操作组件
6
12
  * @name thy-action,[thyAction]
7
13
  */
8
- export declare class ThyActionComponent implements OnInit, AfterViewInit, OnChanges {
14
+ export declare class ThyActionComponent implements OnInit, AfterViewInit, OnChanges, OnDestroy {
9
15
  private elementRef;
10
16
  private renderer;
17
+ private cdr;
11
18
  icon: string;
12
- private active;
19
+ feedback: ThyActionFeedback;
20
+ feedbackOptions: ThyActionFeedbackOptions;
21
+ active: boolean;
13
22
  private type;
14
23
  private hostRenderer;
24
+ private feedbackTimer;
15
25
  /**
16
26
  * 操作图标的类型
17
27
  * @type primary | success | danger | warning
@@ -50,14 +60,24 @@ export declare class ThyActionComponent implements OnInit, AfterViewInit, OnChan
50
60
  * @default false
51
61
  */
52
62
  thyDisabled: boolean;
53
- constructor(elementRef: ElementRef<HTMLElement>, renderer: Renderer2);
63
+ constructor(elementRef: ElementRef<HTMLElement>, renderer: Renderer2, cdr: ChangeDetectorRef);
54
64
  ngOnInit(): void;
55
65
  ngAfterViewInit(): void;
56
66
  ngOnChanges(changes: SimpleChanges): void;
57
67
  setMarginRight(marginRight: string): void;
68
+ /**
69
+ * 触发成功反馈操作
70
+ */
71
+ success(options?: ThyActionFeedbackOptions): void;
72
+ /**
73
+ * 触发失败反馈操作
74
+ */
75
+ error(options?: ThyActionFeedbackOptions): void;
76
+ private setFeedback;
58
77
  private wrapSpanForText;
59
78
  private setActionType;
60
79
  private updateClasses;
80
+ ngOnDestroy(): void;
61
81
  static ɵfac: i0.ɵɵFactoryDeclaration<ThyActionComponent, never>;
62
82
  static ɵcmp: i0.ɵɵComponentDeclaration<ThyActionComponent, "thy-action, [thyAction]", never, { "thyType": "thyType"; "thyIcon": "thyIcon"; "thyActionIcon": "thyActionIcon"; "thyActive": "thyActive"; "thyActionActive": "thyActionActive"; "thyTheme": "thyTheme"; "thyHoverIcon": "thyHoverIcon"; "thyDisabled": "thyDisabled"; }, {}, never, ["*"], true, never>;
63
83
  }
@@ -0,0 +1,3 @@
1
+ .thy-action {
2
+ margin-right: 8px;
3
+ }
@@ -1,7 +1,7 @@
1
- @use "../../styles/mixins/hover.scss";
2
- @use "../../styles/bootstrap/functions-variables";
3
- @use "../../styles/variables.scss";
4
- @use "./mixin.scss" as action-mixin;
1
+ @use '../../styles/mixins/hover.scss';
2
+ @use '../../styles/bootstrap/functions-variables';
3
+ @use '../../styles/variables.scss';
4
+ @use './mixin.scss' as action-mixin;
5
5
 
6
6
  .thy-action {
7
7
  padding: variables.$action-padding-y variables.$action-padding-x;
@@ -1,15 +1,17 @@
1
- @use "../../styles/mixins/hover.scss";
2
- @use "../../styles/variables.scss";
1
+ @use '../../styles/mixins/hover.scss';
2
+ @use '../../styles/variables.scss';
3
3
 
4
4
  @mixin action-variant($color, $hover-color, $hover-bg-color) {
5
5
  color: $color;
6
6
 
7
7
  @include hover.hover-active {
8
- color: $hover-color;
9
- background: $hover-bg-color;
10
-
11
- > span {
8
+ &:not(.thy-action-has-feedback) {
12
9
  color: $hover-color;
10
+ background: $hover-bg-color;
11
+
12
+ > span {
13
+ color: $hover-color;
14
+ }
13
15
  }
14
16
  }
15
17
  }
@@ -1,10 +1,23 @@
1
1
  import { __decorate, __metadata } from "tslib";
2
- import { ChangeDetectionStrategy, Component, Input, ElementRef, Renderer2 } from '@angular/core';
2
+ import { ChangeDetectionStrategy, Component, Input, ElementRef, Renderer2, ChangeDetectorRef } from '@angular/core';
3
3
  import { InputBoolean } from 'ngx-tethys/core';
4
4
  import { useHostRenderer } from '@tethys/cdk/dom';
5
5
  import { ThyIconComponent } from 'ngx-tethys/icon';
6
6
  import { NgIf } from '@angular/common';
7
+ import { timer } from 'rxjs';
7
8
  import * as i0 from "@angular/core";
9
+ const defaultFeedbackOptions = {
10
+ success: {
11
+ icon: 'check-circle-fill',
12
+ class: 'text-success',
13
+ duration: 3000
14
+ },
15
+ error: {
16
+ icon: 'close-circle-fill',
17
+ class: 'text-danger',
18
+ duration: 3000
19
+ }
20
+ };
8
21
  /**
9
22
  * 立即操作组件
10
23
  * @name thy-action,[thyAction]
@@ -44,9 +57,11 @@ export class ThyActionComponent {
44
57
  set thyActionActive(value) {
45
58
  this.active = value;
46
59
  }
47
- constructor(elementRef, renderer) {
60
+ constructor(elementRef, renderer, cdr) {
48
61
  this.elementRef = elementRef;
49
62
  this.renderer = renderer;
63
+ this.cdr = cdr;
64
+ this.feedback = null;
50
65
  this.active = false;
51
66
  this.type = 'primary';
52
67
  this.hostRenderer = useHostRenderer();
@@ -70,6 +85,37 @@ export class ThyActionComponent {
70
85
  setMarginRight(marginRight) {
71
86
  this.elementRef.nativeElement.style.marginRight = marginRight;
72
87
  }
88
+ /**
89
+ * 触发成功反馈操作
90
+ */
91
+ success(options) {
92
+ this.setFeedback('success', options);
93
+ }
94
+ /**
95
+ * 触发失败反馈操作
96
+ */
97
+ error(options) {
98
+ this.setFeedback('error', options);
99
+ }
100
+ setFeedback(feedback, options) {
101
+ if (this.thyDisabled) {
102
+ return;
103
+ }
104
+ options = Object.assign({}, defaultFeedbackOptions[feedback], options);
105
+ this.feedback = feedback;
106
+ this.feedbackOptions = options;
107
+ this.cdr.markForCheck();
108
+ if (options.duration) {
109
+ if (this.feedbackTimer) {
110
+ this.feedbackTimer.unsubscribe();
111
+ }
112
+ this.feedbackTimer = timer(options.duration).subscribe(() => {
113
+ this.feedback = null;
114
+ this.feedbackOptions = null;
115
+ this.cdr.markForCheck();
116
+ });
117
+ }
118
+ }
73
119
  wrapSpanForText(nodes) {
74
120
  nodes.forEach(node => {
75
121
  if (node.nodeName === '#text') {
@@ -92,9 +138,12 @@ export class ThyActionComponent {
92
138
  }
93
139
  this.hostRenderer.updateClass(classNames);
94
140
  }
141
+ ngOnDestroy() {
142
+ this.feedbackTimer?.unsubscribe();
143
+ }
95
144
  }
96
- ThyActionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ThyActionComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
97
- ThyActionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ThyActionComponent, isStandalone: true, selector: "thy-action, [thyAction]", inputs: { thyType: "thyType", thyIcon: "thyIcon", thyActionIcon: "thyActionIcon", thyActive: "thyActive", thyActionActive: "thyActionActive", thyTheme: "thyTheme", thyHoverIcon: "thyHoverIcon", thyDisabled: "thyDisabled" }, host: { properties: { "class.active": "active", "class.thy-action-hover-icon": "thyHoverIcon", "class.disabled": "thyDisabled" }, classAttribute: "thy-action" }, usesOnChanges: true, ngImport: i0, template: "<thy-icon *ngIf=\"icon\" [thyIconName]=\"icon\"></thy-icon>\n<thy-icon class=\"hover-icon\" *ngIf=\"thyHoverIcon\" [thyIconName]=\"thyHoverIcon\"></thy-icon>\n<ng-content></ng-content>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ThyIconComponent, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
145
+ ThyActionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ThyActionComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
146
+ ThyActionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ThyActionComponent, isStandalone: true, selector: "thy-action, [thyAction]", inputs: { thyType: "thyType", thyIcon: "thyIcon", thyActionIcon: "thyActionIcon", thyActive: "thyActive", thyActionActive: "thyActionActive", thyTheme: "thyTheme", thyHoverIcon: "thyHoverIcon", thyDisabled: "thyDisabled" }, host: { properties: { "class.active": "active", "class.thy-action-hover-icon": "thyHoverIcon", "class.thy-action-has-feedback": "!!feedback", "class.disabled": "thyDisabled" }, classAttribute: "thy-action" }, usesOnChanges: true, ngImport: i0, template: "<thy-icon *ngIf=\"icon && !feedback\" [thyIconName]=\"icon\"></thy-icon>\n<thy-icon *ngIf=\"feedbackOptions?.icon\" [class]=\"feedbackOptions.class\" [thyIconName]=\"feedbackOptions.icon\"></thy-icon>\n<thy-icon class=\"hover-icon\" *ngIf=\"thyHoverIcon\" [thyIconName]=\"thyHoverIcon\"></thy-icon>\n<ng-content></ng-content>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ThyIconComponent, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
98
147
  __decorate([
99
148
  InputBoolean(),
100
149
  __metadata("design:type", Boolean),
@@ -115,9 +164,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
115
164
  class: 'thy-action',
116
165
  '[class.active]': 'active',
117
166
  '[class.thy-action-hover-icon]': 'thyHoverIcon',
167
+ '[class.thy-action-has-feedback]': '!!feedback',
118
168
  '[class.disabled]': 'thyDisabled'
119
- }, standalone: true, imports: [NgIf, ThyIconComponent], template: "<thy-icon *ngIf=\"icon\" [thyIconName]=\"icon\"></thy-icon>\n<thy-icon class=\"hover-icon\" *ngIf=\"thyHoverIcon\" [thyIconName]=\"thyHoverIcon\"></thy-icon>\n<ng-content></ng-content>\n" }]
120
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { thyType: [{
169
+ }, standalone: true, imports: [NgIf, ThyIconComponent], template: "<thy-icon *ngIf=\"icon && !feedback\" [thyIconName]=\"icon\"></thy-icon>\n<thy-icon *ngIf=\"feedbackOptions?.icon\" [class]=\"feedbackOptions.class\" [thyIconName]=\"feedbackOptions.icon\"></thy-icon>\n<thy-icon class=\"hover-icon\" *ngIf=\"thyHoverIcon\" [thyIconName]=\"thyHoverIcon\"></thy-icon>\n<ng-content></ng-content>\n" }]
170
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { thyType: [{
121
171
  type: Input
122
172
  }], thyIcon: [{
123
173
  type: Input
@@ -134,4 +184,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
134
184
  }], thyDisabled: [{
135
185
  type: Input
136
186
  }] } });
137
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hY3Rpb24vYWN0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9hY3Rpb24vYWN0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxLQUFLLEVBSUwsVUFBVSxFQUNWLFNBQVMsRUFFWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFJdkM7OztHQUdHO0FBY0gsTUFBTSxPQUFPLGtCQUFrQjtJQVMzQjs7OztPQUlHO0lBQ0gsSUFDSSxPQUFPLENBQUMsS0FBb0I7UUFDNUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLElBQUksU0FBUyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFDSSxPQUFPLENBQUMsSUFBWTtRQUNwQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNyQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUNJLGFBQWEsQ0FBQyxJQUFZO1FBQzFCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUVJLFNBQVMsQ0FBQyxLQUFjO1FBQ3hCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ3hCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUVJLGVBQWUsQ0FBQyxLQUFjO1FBQzlCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxD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c0JBRFYsS0FBSztnQkFTRixPQUFPO3NCQURWLEtBQUs7Z0JBU0YsYUFBYTtzQkFEaEIsS0FBSztnQkFXRixTQUFTO3NCQUZaLEtBQUs7Z0JBWUYsZUFBZTtzQkFGbEIsS0FBSztnQkFVRyxRQUFRO3NCQUFoQixLQUFLO2dCQUtHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBUU4sV0FBVztzQkFGVixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgSW5wdXQsXG4gICAgT25Jbml0LFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgUmVuZGVyZXIyLFxuICAgIFNpbXBsZUNoYW5nZXNcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJbnB1dEJvb2xlYW4gfSBmcm9tICduZ3gtdGV0aHlzL2NvcmUnO1xuaW1wb3J0IHsgdXNlSG9zdFJlbmRlcmVyIH0gZnJvbSAnQHRldGh5cy9jZGsvZG9tJztcbmltcG9ydCB7IFRoeUljb25Db21wb25lbnQgfSBmcm9tICduZ3gtdGV0aHlzL2ljb24nO1xuaW1wb3J0IHsgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmV4cG9ydCB0eXBlIFRoeUFjdGlvblR5cGUgPSAncHJpbWFyeScgfCAnc3VjY2VzcycgfCAnZGFuZ2VyJyB8ICd3YXJuaW5nJztcblxuLyoqXG4gKiDnq4vljbPmk43kvZznu4Tku7ZcbiAqIEBuYW1lIHRoeS1hY3Rpb24sW3RoeUFjdGlvbl1cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd0aHktYWN0aW9uLCBbdGh5QWN0aW9uXScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2FjdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ3RoeS1hY3Rpb24nLFxuICAgICAgICAnW2NsYXNzLmFjdGl2ZV0nOiAnYWN0aXZlJyxcbiAgICAgICAgJ1tjbGFzcy50aHktYWN0aW9uLWhvdmVyLWljb25dJzogJ3RoeUhvdmVySWNvbicsXG4gICAgICAgICdbY2xhc3MuZGlzYWJsZWRdJzogJ3RoeURpc2FibGVkJ1xuICAgIH0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbTmdJZiwgVGh5SWNvbkNvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgVGh5QWN0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMge1xuICAgIGljb246IHN0cmluZztcblxuICAgIHByaXZhdGUgYWN0aXZlID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIHR5cGU6IHN0cmluZyA9ICdwcmltYXJ5JztcblxuICAgIHByaXZhdGUgaG9zdFJlbmRlcmVyID0gdXNlSG9zdFJlbmRlcmVyKCk7XG5cbiAgICAvKipcbiAgICAgKiDmk43kvZzlm77moIfnmoTnsbvlnotcbiAgICAgKiBAdHlwZSBwcmltYXJ5IHwgc3VjY2VzcyB8IGRhbmdlciB8IHdhcm5pbmdcbiAgICAgKiBAZGVmYXVsdCBwcmltYXJ5XG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgdGh5VHlwZSh2YWx1ZTogVGh5QWN0aW9uVHlwZSkge1xuICAgICAgICB0aGlzLnNldEFjdGlvblR5cGUodmFsdWUgfHwgJ3ByaW1hcnknKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDmk43kvZzlm77moIfvvIzmlK/mjIHkvKDlj4LlkIzml7bkuZ/mlK/mjIHlnKjmipXlvbHkuK3lhpkgdGh5LWljb24g57uE5Lu2XG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgdGh5SWNvbihpY29uOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5pY29uID0gaWNvbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDmk43kvZzlm77moIfvvIzlvZMgdGh5SWNvbiDlkozlhbbku5bmjIfku6Tlj4LmlbDlkI3mnInlhrLnqoHml7bkvb/nlKggdGh5QWN0aW9uSWNvblxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2V0IHRoeUFjdGlvbkljb24oaWNvbjogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuaWNvbiA9IGljb247XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5pON5L2c55qE5Zu+5qCHIEFjdGl2ZSDnirbmgIHvvIzorr7nva7kuLogdHJ1ZSDml7bkvJrlnKggSXRlbSDkuIrmt7vliqAgYWN0aXZlIGNsYXNzXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIEBJbnB1dEJvb2xlYW4oKVxuICAgIHNldCB0aHlBY3RpdmUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5hY3RpdmUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDmk43kvZznmoTlm77moIcgQWN0aXZlIOeKtuaAge+8jOW9kyB0aHlBY3RpdmUg5ZKM5YW25LuW5oyH5Luk5Y+C5pWw5ZCN5pyJ5Yay56qB5pe25L2/55SoIHRoeUFjdGlvbkFjdGl2ZVxuICAgICAqIEBkZWZhdWx0IGZhbHNlXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBASW5wdXRCb29sZWFuKClcbiAgICBzZXQgdGh5QWN0aW9uQWN0aXZlKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuYWN0aXZlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5pON5L2c5Zu+5qCH55qE5Li76aKYXG4gICAgICogQHR5cGUgZmlsbCjog4zmma/oibLloavlhYUpIHwgbGl0ZSjnroDljZXmlofmnKzpopzoibLlj5jljJYpXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5VGhlbWU6ICdmaWxsJyB8ICdsaXRlJyA9ICdmaWxsJztcblxuICAgIC8qKlxuICAgICAqIEhvdmVyIOWxleekuueahOWbvuagh1xuICAgICAqL1xuICAgIEBJbnB1dCgpIHRoeUhvdmVySWNvbjogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICog5piv5ZCm5aSE5LqO56aB55So54q25oCBXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIEBJbnB1dEJvb2xlYW4oKVxuICAgIHRoeURpc2FibGVkOiBib29sZWFuO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PiwgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyKSB7fVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXBkYXRlQ2xhc3NlcygpO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgdGhpcy53cmFwU3BhbkZvclRleHQodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2hpbGROb2Rlcyk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoKGNoYW5nZXMudGh5VHlwZSAmJiAhY2hhbmdlcy50aHlUeXBlLmZpcnN0Q2hhbmdlKSB8fCAoY2hhbmdlcy50aHlUaGVtZSAmJiAhY2hhbmdlcy50aHlUaGVtZS5maXJzdENoYW5nZSkpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlQ2xhc3NlcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2V0TWFyZ2luUmlnaHQobWFyZ2luUmlnaHQ6IHN0cmluZykge1xuICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zdHlsZS5tYXJnaW5SaWdodCA9IG1hcmdpblJpZ2h0O1xuICAgIH1cblxuICAgIHByaXZhdGUgd3JhcFNwYW5Gb3JUZXh0KG5vZGVzOiBOb2RlTGlzdCk6IHZvaWQge1xuICAgICAgICBub2Rlcy5mb3JFYWNoKG5vZGUgPT4ge1xuICAgICAgICAgICAgaWYgKG5vZGUubm9kZU5hbWUgPT09ICcjdGV4dCcpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzcGFuID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyZW50ID0gdGhpcy5yZW5kZXJlci5wYXJlbnROb2RlKG5vZGUpO1xuICAgICAgICAgICAgICAgIC8vIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3Moc3BhbiwgJ3RoeS1hY3Rpb24td3JhcC1zcGFuJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5pbnNlcnRCZWZvcmUocGFyZW50LCBzcGFuLCBub2RlKTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHNwYW4sIG5vZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldEFjdGlvblR5cGUodmFsdWU6IFRoeUFjdGlvblR5cGUpIHtcbiAgICAgICAgdGhpcy50eXBlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVDbGFzc2VzKCkge1xuICAgICAgICBsZXQgY2xhc3NOYW1lczogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgY2xhc3NOYW1lcy5wdXNoKGBhY3Rpb24tJHt0aGlzLnR5cGV9YCk7XG4gICAgICAgIGlmICh0aGlzLnRoeVRoZW1lID09PSAnbGl0ZScpIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZXMucHVzaCgndGh5LWFjdGlvbi1saXRlJyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ob3N0UmVuZGVyZXIudXBkYXRlQ2xhc3MoY2xhc3NOYW1lcyk7XG4gICAgfVxufVxuIiwiPHRoeS1pY29uICpuZ0lmPVwiaWNvblwiIFt0aHlJY29uTmFtZV09XCJpY29uXCI+PC90aHktaWNvbj5cbjx0aHktaWNvbiBjbGFzcz1cImhvdmVyLWljb25cIiAqbmdJZj1cInRoeUhvdmVySWNvblwiIFt0aHlJY29uTmFtZV09XCJ0aHlIb3Zlckljb25cIj48L3RoeS1pY29uPlxuPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuIl19
187
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hY3Rpb24vYWN0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9hY3Rpb24vYWN0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxLQUFLLEVBSUwsVUFBVSxFQUNWLFNBQVMsRUFFVCxpQkFBaUIsRUFFcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdkMsT0FBTyxFQUFnQixLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBWTNDLE1BQU0sc0JBQXNCLEdBQXdEO0lBQ2hGLE9BQU8sRUFBRTtRQUNMLElBQUksRUFBRSxtQkFBbUI7UUFDekIsS0FBSyxFQUFFLGNBQWM7UUFDckIsUUFBUSxFQUFFLElBQUk7S0FDakI7SUFDRCxLQUFLLEVBQUU7UUFDSCxJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLEtBQUssRUFBRSxhQUFhO1FBQ3BCLFFBQVEsRUFBRSxJQUFJO0tBQ2pCO0NBQ0osQ0FBQztBQUNGOzs7R0FHRztBQWVILE1BQU0sT0FBTyxrQkFBa0I7SUFlM0I7Ozs7T0FJRztJQUNILElBQ0ksT0FBTyxDQUFDLEtBQW9CO1FBQzVCLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxJQUFJLFNBQVMsQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRDs7T0FFRztJQUNILElBQ0ksT0FBTyxDQUFDLElBQVk7UUFDcEIsSUFBSSxDQUFDLElBQUksR0FB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LEVBQUU7OzttREFHZDtBQU1EO0lBQ0MsWUFBWSxFQUFFOzs7eURBR2Q7QUFpQkQ7SUFDQyxZQUFZLEVBQUU7O3VEQUNNOzJGQTlFWixrQkFBa0I7a0JBZDlCLFNBQVM7K0JBQ0kseUJBQXlCLG1CQUVsQix1QkFBdUIsQ0FBQyxNQUFNLFFBQ3pDO3dCQUNGLEtBQUssRUFBRSxZQUFZO3dCQUNuQixnQkFBZ0IsRUFBRSxRQUFRO3dCQUMxQiwrQkFBK0IsRUFBRSxjQUFjO3dCQUMvQyxpQ0FBaUMsRUFBRSxZQUFZO3dCQUMvQyxrQkFBa0IsRUFBRSxhQUFhO3FCQUNwQyxjQUNXLElBQUksV0FDUCxDQUFDLElBQUksRUFBRSxnQkFBZ0IsQ0FBQzt5SkF1QjdCLE9BQU87c0JBRFYsS0FBSztnQkFTRixPQUFPO3NCQURWLEtBQUs7Z0JBU0YsYUFBYTtzQkFEaEIsS0FBSztnQkFXRixTQUFTO3NCQUZaLEtBQUs7Z0JBWUYsZUFBZTtzQkFGbEIsS0FBSztnQkFVRyxRQUFRO3NCQUFoQixLQUFLO2dCQUtHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBUU4sV0FBVztzQkFGVixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgSW5wdXQsXG4gICAgT25Jbml0LFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgUmVuZGVyZXIyLFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgT25EZXN0cm95XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW5wdXRCb29sZWFuIH0gZnJvbSAnbmd4LXRldGh5cy9jb3JlJztcbmltcG9ydCB7IHVzZUhvc3RSZW5kZXJlciB9IGZyb20gJ0B0ZXRoeXMvY2RrL2RvbSc7XG5pbXBvcnQgeyBUaHlJY29uQ29tcG9uZW50IH0gZnJvbSAnbmd4LXRldGh5cy9pY29uJztcbmltcG9ydCB7IE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uLCB0aW1lciB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgdHlwZSBUaHlBY3Rpb25UeXBlID0gJ3ByaW1hcnknIHwgJ3N1Y2Nlc3MnIHwgJ2RhbmdlcicgfCAnd2FybmluZyc7XG5cbmV4cG9ydCB0eXBlIFRoeUFjdGlvbkZlZWRiYWNrID0gJ3N1Y2Nlc3MnIHwgJ2Vycm9yJztcblxuZXhwb3J0IGludGVyZmFjZSBUaHlBY3Rpb25GZWVkYmFja09wdGlvbnMge1xuICAgIGljb24/OiBzdHJpbmc7XG4gICAgY2xhc3M/OiBzdHJpbmc7XG4gICAgZHVyYXRpb24/OiBudW1iZXI7XG59XG5cbmNvbnN0IGRlZmF1bHRGZWVkYmFja09wdGlvbnM6IFJlY29yZDxUaHlBY3Rpb25GZWVkYmFjaywgVGh5QWN0aW9uRmVlZGJhY2tPcHRpb25zPiA9IHtcbiAgICBzdWNjZXNzOiB7XG4gICAgICAgIGljb246ICdjaGVjay1jaXJjbGUtZmlsbCcsXG4gICAgICAgIGNsYXNzOiAndGV4dC1zdWNjZXNzJyxcbiAgICAgICAgZHVyYXRpb246IDMwMDBcbiAgICB9LFxuICAgIGVycm9yOiB7XG4gICAgICAgIGljb246ICdjbG9zZS1jaXJjbGUtZmlsbCcsXG4gICAgICAgIGNsYXNzOiAndGV4dC1kYW5nZXInLFxuICAgICAgICBkdXJhdGlvbjogMzAwMFxuICAgIH1cbn07XG4vKipcbiAqIOeri+WNs+aTjeS9nOe7hOS7tlxuICogQG5hbWUgdGh5LWFjdGlvbixbdGh5QWN0aW9uXVxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3RoeS1hY3Rpb24sIFt0aHlBY3Rpb25dJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYWN0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAndGh5LWFjdGlvbicsXG4gICAgICAgICdbY2xhc3MuYWN0aXZlXSc6ICdhY3RpdmUnLFxuICAgICAgICAnW2NsYXNzLnRoeS1hY3Rpb24taG92ZXItaWNvbl0nOiAndGh5SG92ZXJJY29uJyxcbiAgICAgICAgJ1tjbGFzcy50aHktYWN0aW9uLWhhcy1mZWVkYmFja10nOiAnISFmZWVkYmFjaycsXG4gICAgICAgICdbY2xhc3MuZGlzYWJsZWRdJzogJ3RoeURpc2FibGVkJ1xuICAgIH0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbTmdJZiwgVGh5SWNvbkNvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgVGh5QWN0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gICAgaWNvbjogc3RyaW5nO1xuXG4gICAgZmVlZGJhY2s6IFRoeUFjdGlvbkZlZWRiYWNrID0gbnVsbDtcblxuICAgIGZlZWRiYWNrT3B0aW9uczogVGh5QWN0aW9uRmVlZGJhY2tPcHRpb25zO1xuXG4gICAgYWN0aXZlID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIHR5cGU6IHN0cmluZyA9ICdwcmltYXJ5JztcblxuICAgIHByaXZhdGUgaG9zdFJlbmRlcmVyID0gdXNlSG9zdFJlbmRlcmVyKCk7XG5cbiAgICBwcml2YXRlIGZlZWRiYWNrVGltZXI6IFN1YnNjcmlwdGlvbjtcblxuICAgIC8qKlxuICAgICAqIOaTjeS9nOWbvuagh+eahOexu+Wei1xuICAgICAqIEB0eXBlIHByaW1hcnkgfCBzdWNjZXNzIHwgZGFuZ2VyIHwgd2FybmluZ1xuICAgICAqIEBkZWZhdWx0IHByaW1hcnlcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCB0aHlUeXBlKHZhbHVlOiBUaHlBY3Rpb25UeXBlKSB7XG4gICAgICAgIHRoaXMuc2V0QWN0aW9uVHlwZSh2YWx1ZSB8fCAncHJpbWFyeScpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOaTjeS9nOWbvuagh++8jOaUr+aMgeS8oOWPguWQjOaXtuS5n+aUr+aMgeWcqOaKleW9seS4reWGmSB0aHktaWNvbiDnu4Tku7ZcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHNldCB0aHlJY29uKGljb246IHN0cmluZykge1xuICAgICAgICB0aGlzLmljb24gPSBpY29uO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOaTjeS9nOWbvuagh++8jOW9kyB0aHlJY29uIOWSjOWFtuS7luaMh+S7pOWPguaVsOWQjeacieWGsueqgeaXtuS9v+eUqCB0aHlBY3Rpb25JY29uXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBzZXQgdGh5QWN0aW9uSWNvbihpY29uOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5pY29uID0gaWNvbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDmk43kvZznmoTlm77moIcgQWN0aXZlIOeKtuaAge+8jOiuvue9ruS4uiB0cnVlIOaXtuS8muWcqCBJdGVtIOS4iua3u+WKoCBhY3RpdmUgY2xhc3NcbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgQElucHV0Qm9vbGVhbigpXG4gICAgc2V0IHRoeUFjdGl2ZSh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmFjdGl2ZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOaTjeS9nOeahOWbvuaghyBBY3RpdmUg54q25oCB77yM5b2TIHRoeUFjdGl2ZSDlkozlhbbku5bmjIfku6Tlj4LmlbDlkI3mnInlhrLnqoHml7bkvb/nlKggdGh5QWN0aW9uQWN0aXZlXG4gICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIEBJbnB1dEJvb2xlYW4oKVxuICAgIHNldCB0aHlBY3Rpb25BY3RpdmUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5hY3RpdmUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDmk43kvZzlm77moIfnmoTkuLvpophcbiAgICAgKiBAdHlwZSBmaWxsKOiDjOaZr+iJsuWhq+WFhSkgfCBsaXRlKOeugOWNleaWh+acrOminOiJsuWPmOWMlilcbiAgICAgKi9cbiAgICBASW5wdXQoKSB0aHlUaGVtZTogJ2ZpbGwnIHwgJ2xpdGUnID0gJ2ZpbGwnO1xuXG4gICAgLyoqXG4gICAgICogSG92ZXIg5bGV56S655qE5Zu+5qCHXG4gICAgICovXG4gICAgQElucHV0KCkgdGh5SG92ZXJJY29uOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiDmmK/lkKblpITkuo7npoHnlKjnirbmgIFcbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgQElucHV0Qm9vbGVhbigpXG4gICAgdGh5RGlzYWJsZWQ6IGJvb2xlYW47XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LCBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnVwZGF0ZUNsYXNzZXMoKTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIHRoaXMud3JhcFNwYW5Gb3JUZXh0KHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNoaWxkTm9kZXMpO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKChjaGFuZ2VzLnRoeVR5cGUgJiYgIWNoYW5nZXMudGh5VHlwZS5maXJzdENoYW5nZSkgfHwgKGNoYW5nZXMudGh5VGhlbWUgJiYgIWNoYW5nZXMudGh5VGhlbWUuZmlyc3RDaGFuZ2UpKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUNsYXNzZXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNldE1hcmdpblJpZ2h0KG1hcmdpblJpZ2h0OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUubWFyZ2luUmlnaHQgPSBtYXJnaW5SaWdodDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDop6blj5HmiJDlip/lj43ppojmk43kvZxcbiAgICAgKi9cbiAgICBzdWNjZXNzKG9wdGlvbnM/OiBUaHlBY3Rpb25GZWVkYmFja09wdGlvbnMpIHtcbiAgICAgICAgdGhpcy5zZXRGZWVkYmFjaygnc3VjY2VzcycsIG9wdGlvbnMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOinpuWPkeWksei0peWPjemmiOaTjeS9nFxuICAgICAqL1xuICAgIGVycm9yKG9wdGlvbnM/OiBUaHlBY3Rpb25GZWVkYmFja09wdGlvbnMpIHtcbiAgICAgICAgdGhpcy5zZXRGZWVkYmFjaygnZXJyb3InLCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldEZlZWRiYWNrKGZlZWRiYWNrOiBUaHlBY3Rpb25GZWVkYmFjaywgb3B0aW9uczogVGh5QWN0aW9uRmVlZGJhY2tPcHRpb25zKSB7XG4gICAgICAgIGlmICh0aGlzLnRoeURpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgb3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe30sIGRlZmF1bHRGZWVkYmFja09wdGlvbnNbZmVlZGJhY2tdLCBvcHRpb25zKTtcbiAgICAgICAgdGhpcy5mZWVkYmFjayA9IGZlZWRiYWNrO1xuICAgICAgICB0aGlzLmZlZWRiYWNrT3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICBpZiAob3B0aW9ucy5kdXJhdGlvbikge1xuICAgICAgICAgICAgaWYgKHRoaXMuZmVlZGJhY2tUaW1lcikge1xuICAgICAgICAgICAgICAgIHRoaXMuZmVlZGJhY2tUaW1lci51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5mZWVkYmFja1RpbWVyID0gdGltZXIob3B0aW9ucy5kdXJhdGlvbikuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmZlZWRiYWNrID0gbnVsbDtcbiAgICAgICAgICAgICAgICB0aGlzLmZlZWRiYWNrT3B0aW9ucyA9IG51bGw7XG4gICAgICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgd3JhcFNwYW5Gb3JUZXh0KG5vZGVzOiBOb2RlTGlzdCk6IHZvaWQge1xuICAgICAgICBub2Rlcy5mb3JFYWNoKG5vZGUgPT4ge1xuICAgICAgICAgICAgaWYgKG5vZGUubm9kZU5hbWUgPT09ICcjdGV4dCcpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzcGFuID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gICAgICAgICAgICAgICAgY29uc3QgcGFyZW50ID0gdGhpcy5yZW5kZXJlci5wYXJlbnROb2RlKG5vZGUpO1xuICAgICAgICAgICAgICAgIC8vIHRoaXMucmVuZGVyZXIuYWRkQ2xhc3Moc3BhbiwgJ3RoeS1hY3Rpb24td3JhcC1zcGFuJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5pbnNlcnRCZWZvcmUocGFyZW50LCBzcGFuLCBub2RlKTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHNwYW4sIG5vZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldEFjdGlvblR5cGUodmFsdWU6IFRoeUFjdGlvblR5cGUpIHtcbiAgICAgICAgdGhpcy50eXBlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVDbGFzc2VzKCkge1xuICAgICAgICBsZXQgY2xhc3NOYW1lczogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgY2xhc3NOYW1lcy5wdXNoKGBhY3Rpb24tJHt0aGlzLnR5cGV9YCk7XG4gICAgICAgIGlmICh0aGlzLnRoeVRoZW1lID09PSAnbGl0ZScpIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZXMucHVzaCgndGh5LWFjdGlvbi1saXRlJyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ob3N0UmVuZGVyZXIudXBkYXRlQ2xhc3MoY2xhc3NOYW1lcyk7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZmVlZGJhY2tUaW1lcj8udW5zdWJzY3JpYmUoKTtcbiAgICB9XG59XG4iLCI8dGh5LWljb24gKm5nSWY9XCJpY29uICYmICFmZWVkYmFja1wiIFt0aHlJY29uTmFtZV09XCJpY29uXCI+PC90aHktaWNvbj5cbjx0aHktaWNvbiAqbmdJZj1cImZlZWRiYWNrT3B0aW9ucz8uaWNvblwiIFtjbGFzc109XCJmZWVkYmFja09wdGlvbnMuY2xhc3NcIiBbdGh5SWNvbk5hbWVdPVwiZmVlZGJhY2tPcHRpb25zLmljb25cIj48L3RoeS1pY29uPlxuPHRoeS1pY29uIGNsYXNzPVwiaG92ZXItaWNvblwiICpuZ0lmPVwidGh5SG92ZXJJY29uXCIgW3RoeUljb25OYW1lXT1cInRoeUhvdmVySWNvblwiPjwvdGh5LWljb24+XG48bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4iXX0=
@@ -81,7 +81,9 @@ export class ThyFormValidatorLoader {
81
81
  defaultRemoveError(element) {
82
82
  if (element && element.parentElement) {
83
83
  const invalidFeedback = element.parentElement.querySelector('.invalid-feedback');
84
- element.parentElement.removeChild(invalidFeedback);
84
+ if (invalidFeedback) {
85
+ element.parentElement.removeChild(invalidFeedback);
86
+ }
85
87
  }
86
88
  }
87
89
  removeError(element) {
@@ -127,4 +129,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
127
129
  type: Inject,
128
130
  args: [THY_VALIDATOR_CONFIG]
129
131
  }] }]; } });
130
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS12YWxpZGF0b3ItbG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2Zvcm0vZm9ybS12YWxpZGF0b3ItbG9hZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUxQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHN0QsT0FBTyxFQUFFLG9CQUFvQixFQUEyRCxNQUFNLGNBQWMsQ0FBQzs7QUFFN0csTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsWUFBWSxDQUFDO0FBRXRELE1BQU0sYUFBYSxHQUFHLFlBQVksQ0FBQztBQUNuQyxNQUFNLHNCQUFzQixHQUFHLGtCQUFrQixDQUFDO0FBRWxELE1BQU0sc0JBQXNCLEdBQWlDO0lBQ3pELGdCQUFnQixFQUFFLElBQUk7SUFDdEIsa0JBQWtCLEVBQUUsSUFBSTtJQUN4QixrQkFBa0IsRUFBRSxFQUFFO0NBQ3pCLENBQUM7QUFFRixNQUFNLHdCQUF3QixHQUFHO0lBQzdCLFFBQVEsRUFBRSxTQUFTO0lBQ25CLFNBQVMsRUFBRSx5QkFBeUI7SUFDcEMsU0FBUyxFQUFFLHlCQUF5QjtJQUNwQyxjQUFjLEVBQUUsZUFBZTtJQUMvQixLQUFLLEVBQUUsWUFBWTtJQUNuQixPQUFPLEVBQUUsU0FBUztJQUNsQixPQUFPLEVBQUUsWUFBWTtJQUNyQixNQUFNLEVBQUUsUUFBUTtJQUNoQixHQUFHLEVBQUUsWUFBWTtJQUNqQixHQUFHLEVBQUUsaUJBQWlCO0lBQ3RCLEdBQUcsRUFBRSxpQkFBaUI7Q0FDekIsQ0FBQztBQUVGOztHQUVHO0FBRUgsTUFBTSxPQUFPLHNCQUFzQjtJQUd2QiwyQkFBMkIsQ0FBQyxHQUFXO1FBQzNDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyx3QkFBd0IsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLHdC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LENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxRQUFtQztRQUNyRCxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsa0JBQWtCLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELDJCQUEyQixDQUFDLGtCQUFzQztRQUM5RCxJQUFJLENBQUMsTUFBTSxDQUFDLHdCQUF3QixHQUFHLGtCQUFrQixDQUFDO0lBQzlELENBQUM7O21IQXBHUSxzQkFBc0Isa0JBWW5CLG9CQUFvQjt1SEFadkIsc0JBQXNCOzJGQUF0QixzQkFBc0I7a0JBRGxDLFVBQVU7OzBCQVlGLFFBQVE7OzBCQUNSLE1BQU07MkJBQUMsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGljdGlvbmFyeSB9IGZyb20gJ25neC10ZXRoeXMvdHlwZXMnO1xuaW1wb3J0IHsgaGVscGVycyB9IGZyb20gJ25neC10ZXRoeXMvdXRpbCc7XG5cbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFZhbGlkYXRpb25FcnJvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IFRIWV9WQUxJREFUT1JfQ09ORklHLCBUaHlGb3JtVmFsaWRhdGlvbk1lc3NhZ2VzLCBUaHlGb3JtVmFsaWRhdG9yR2xvYmFsQ29uZmlnIH0gZnJvbSAnLi9mb3JtLmNsYXNzJztcblxuZXhwb3J0IGNvbnN0IEVSUk9SX1ZBTFVFX1JFUExBQ0VfUkVHRVggPSAvXFx7KC4rPylcXH0vZztcblxuY29uc3QgSU5WQUxJRF9DTEFTUyA9ICdpcy1pbnZhbGlkJztcbmNvbnN0IElOVkFMSURfRkVFREJBQ0tfQ0xBU1MgPSAnaW52YWxpZC1mZWVkYmFjayc7XG5cbmNvbnN0IGRlZmF1bHRWYWxpZGF0b3JDb25maWc6IFRoeUZvcm1WYWxpZGF0b3JHbG9iYWxDb25maWcgPSB7XG4gICAgc2hvd0VsZW1lbnRFcnJvcjogdHJ1ZSxcbiAgICByZW1vdmVFbGVtZW50RXJyb3I6IHRydWUsXG4gICAgdmFsaWRhdGlvbk1lc3NhZ2VzOiB7fVxufTtcblxuY29uc3QgZ2xvYmFsVmFsaWRhdGlvbk1lc3NhZ2VzID0ge1xuICAgIHJlcXVpcmVkOiAn6K+l6YCJ6aG55LiN6IO95Li656m6JyxcbiAgICBtYXhsZW5ndGg6ICfor6XpgInpobnovpPlhaXlgLzplb/luqbkuI3og73lpKfkuo57bWF4bGVuZ3RofScsXG4gICAgbWlubGVuZ3RoOiAn6K+l6YCJ6aG56L6T5YWl5YC86ZW/5bqm5LiN6IO95bCP5LqOe21pbmxlbmd0aH0nLFxuICAgIHRoeVVuaXF1ZUNoZWNrOiAn6L6T5YWl5YC85bey57uP5a2Y5Zyo77yM6K+36YeN5paw6L6T5YWlJyxcbiAgICBlbWFpbDogJ+i+k+WFpemCruS7tueahOagvOW8j+S4jeato+ehricsXG4gICAgY29uZmlybTogJ+S4pOasoei+k+WFpeS4jeS4gOiHtCcsXG4gICAgcGF0dGVybjogJ+ivpemAiemhuei+k+WFpeagvOW8j+S4jeato+ehricsXG4gICAgbnVtYmVyOiAn5b+F6aG76L6T5YWl5pWw5a2XJyxcbiAgICB1cmw6ICfovpPlhaVVUkzmoLzlvI/kuI3mraPnoa4nLFxuICAgIG1heDogJ+ivpemAiemhuei+k+WFpeWAvOS4jeiDveWkp+S6jnttYXh9JyxcbiAgICBtaW46ICfor6XpgInpobnovpPlhaXlgLzkuI3og73lsI/kuo57bWlufSdcbn07XG5cbi8qKlxuICogQHByaXZhdGVcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFRoeUZvcm1WYWxpZGF0b3JMb2FkZXIge1xuICAgIHByaXZhdGUgY29uZmlnOiBUaHlGb3JtVmFsaWRhdG9yR2xvYmFsQ29uZmlnO1xuXG4gICAgcHJpdmF0ZSBnZXREZWZhdWx0VmFsaWRhdGlvbk1lc3NhZ2Uoa2V5OiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHRoaXMuY29uZmlnLmdsb2JhbFZhbGlkYXRpb25NZXNzYWdlcyAmJiB0aGlzLmNvbmZpZy5nbG9iYWxWYWxpZGF0aW9uTWVzc2FnZXNba2V5XSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlnLmdsb2JhbFZhbGlkYXRpb25NZXNzYWdlc1trZXldO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGdsb2JhbFZhbGlkYXRpb25NZXNzYWdlc1trZXldO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBAT3B0aW9uYWwoKVxuICAgICAgICBASW5qZWN0KFRIWV9WQUxJREFUT1JfQ09ORklHKVxuICAgICAgICBjb25maWc6IFRoeUZvcm1WYWxpZGF0b3JHbG9iYWxDb25maWdcbiAgICApIHtcbiAgICAgICAgdGhpcy5jb25maWcgPSBPYmplY3QuYXNzaWduKHt9LCBkZWZhdWx0VmFsaWRhdG9yQ29uZmlnLCBjb25maWcpO1xuICAgIH1cblxuICAgIGdldCB2YWxpZGF0aW9uTWVzc2FnZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbmZpZy52YWxpZGF0aW9uTWVzc2FnZXM7XG4gICAgfVxuXG4gICAgZ2V0IHZhbGlkYXRlT24oKSB7XG4gICAgICAgIGlmICghdGhpcy5jb25maWc/LnZhbGlkYXRlT24pIHtcbiAgICAgICAgICAgIHRoaXMuY29uZmlnLnZhbGlkYXRlT24gPSAnc3VibWl0JztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5jb25maWcudmFsaWRhdGVPbjtcbiAgICB9XG5cbiAgICBpc0VsZW1lbnRJbklucHV0R3JvdXAoZWxlbWVudDogSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuICEhKGVsZW1lbnQ/LnBhcmVudEVsZW1lbnQ/LnRhZ05hbWUudG9VcHBlckNhc2UoKSA9PT0gJ1RIWS1JTlBVVC1HUk9VUCcpO1xuICAgIH1cblxuICAgIGdldEVycm9yTWVzc2FnZShuYW1lOiBzdHJpbmcsIGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHRoaXMudmFsaWRhdGlvbk1lc3NhZ2VzW25hbWVdICYmIHRoaXMudmFsaWRhdGlvbk1lc3NhZ2VzW25hbWVdW2tleV0pIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnZhbGlkYXRpb25NZXNzYWdlc1tuYW1lXVtrZXldO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RGVmYXVsdFZhbGlkYXRpb25NZXNzYWdlKGtleSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRFcnJvck1lc3NhZ2VzKG5hbWU6IHN0cmluZywgdmFsaWRhdGlvbkVycm9yczogVmFsaWRhdGlvbkVycm9ycyk6IHN0cmluZ1tdIHtcbiAgICAgICAgY29uc3QgbWVzc2FnZXMgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCB2YWxpZGF0aW9uRXJyb3IgaW4gdmFsaWRhdGlvbkVycm9ycykge1xuICAgICAgICAgICAgaWYgKHZhbGlkYXRpb25FcnJvcnMuaGFzT3duUHJvcGVydHkodmFsaWRhdGlvbkVycm9yKSkge1xuICAgICAgICAgICAgICAgIG1lc3NhZ2VzLnB1c2godGhpcy5nZXRFcnJvck1lc3NhZ2UobmFtZSwgdmFsaWRhdGlvbkVycm9yKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1lc3NhZ2VzO1xuICAgIH1cblxuICAgIGRlZmF1bHRTaG93RXJyb3IoZWxlbWVudDogSFRNTEVsZW1lbnQsIGVycm9yTWVzc2FnZXM6IHN0cmluZ1tdKSB7XG4gICAgICAgIGlmIChlbGVtZW50ICYmIGVsZW1lbnQucGFyZW50RWxlbWVudCkge1xuICAgICAgICAgICAgY29uc3QgZG9jdW1lbnRGcmFnID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO1xuICAgICAgICAgICAgY29uc3QgZGl2Tm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ0RJVicpO1xuICAgICAgICAgICAgY29uc3QgdGV4dE5vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShlcnJvck1lc3NhZ2VzWzBdKTtcbiAgICAgICAgICAgIGRpdk5vZGUuYXBwZW5kQ2hpbGQodGV4dE5vZGUpO1xuICAgICAgICAgICAgZGl2Tm9kZS5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgSU5WQUxJRF9GRUVEQkFDS19DTEFTUyk7XG4gICAgICAgICAgICBkb2N1bWVudEZyYWcuYXBwZW5kQ2hpbGQoZGl2Tm9kZSk7XG4gICAgICAgICAgICBlbGVtZW50LnBhcmVudEVsZW1lbnQuYXBwZW5kKGRvY3VtZW50RnJhZyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkZWZhdWx0UmVtb3ZlRXJyb3IoZWxlbWVudDogSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgaWYgKGVsZW1lbnQgJiYgZWxlbWVudC5wYXJlbnRFbGVtZW50KSB7XG4gICAgICAgICAgICBjb25zdCBpbnZhbGlkRmVlZGJhY2sgPSBlbGVtZW50LnBhcmVudEVsZW1lbnQucXVlcnlTZWxlY3RvcignLmludmFsaWQtZmVlZGJhY2snKTtcbiAgICAgICAgICAgIGVsZW1lbnQucGFyZW50RWxlbWVudC5yZW1vdmVDaGlsZChpbnZhbGlkRmVlZGJhY2spO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVtb3ZlRXJyb3IoZWxlbWVudDogSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgZm9ybUNvbnRyb2xFbGVtZW50ID0gdGhpcy5pc0VsZW1lbnRJbklucHV0R3JvdXAoZWxlbWVudCkgPyBlbGVtZW50LnBhcmVudEVsZW1lbnQgOiBlbGVtZW50O1xuICAgICAgICBmb3JtQ29udHJvbEVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShJTlZBTElEX0NMQVNTKTtcbiAgICAgICAgaWYgKGhlbHBlcnMuaXNGdW5jdGlvbih0aGlzLmNvbmZpZy5yZW1vdmVFbGVtZW50RXJyb3IpKSB7XG4gICAgICAgICAgICB0aGlzLmNvbmZpZy5yZW1vdmVFbGVtZW50RXJyb3IoZm9ybUNvbnRyb2xFbGVtZW50KTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmNvbmZpZy5zaG93RWxlbWVudEVycm9yKSB7XG4gICAgICAgICAgICB0aGlzLmRlZmF1bHRSZW1vdmVFcnJvcihmb3JtQ29udHJvbEVsZW1lbnQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gZG8gbm90aGluZ3NcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNob3dFcnJvcihlbGVtZW50OiBIVE1MRWxlbWVudCwgZXJyb3JNZXNzYWdlczogc3RyaW5nW10pIHtcbiAgICAgICAgY29uc3QgZm9ybUNvbnRyb2xFbGVtZW50ID0gdGhpcy5pc0VsZW1lbnRJbklucHV0R3JvdXAoZWxlbWVudCkgPyBlbGVtZW50LnBhcmVudEVsZW1lbnQgOiBlbGVtZW50O1xuICAgICAgICBmb3JtQ29udHJvbEVsZW1lbnQuY2xhc3NMaXN0LmFkZChJTlZBTElEX0NMQVNTKTtcbiAgICAgICAgaWYgKGhlbHBlcnMuaXNGdW5jdGlvbih0aGlzLmNvbmZpZy5zaG93RWxlbWVudEVycm9yKSkge1xuICAgICAgICAgICAgdGhpcy5jb25maWcuc2hvd0VsZW1lbnRFcnJvcihmb3JtQ29udHJvbEVsZW1lbnQsIGVycm9yTWVzc2FnZXMpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY29uZmlnLnNob3dFbGVtZW50RXJyb3IpIHtcbiAgICAgICAgICAgIHRoaXMuZGVmYXVsdFNob3dFcnJvcihmb3JtQ29udHJvbEVsZW1lbnQsIGVycm9yTWVzc2FnZXMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gZG8gbm90aGluZ3NcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGFkZFZhbGlkYXRpb25NZXNzYWdlcyhtZXNzYWdlczogVGh5Rm9ybVZhbGlkYXRpb25NZXNzYWdlcykge1xuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMuY29uZmlnLnZhbGlkYXRpb25NZXNzYWdlcywgbWVzc2FnZXMpO1xuICAgIH1cblxuICAgIHNldEdsb2JhbFZhbGlkYXRpb25NZXNzYWdlcyh2YWxpZGF0aW9uTWVzc2FnZXM6IERpY3Rpb25hcnk8c3RyaW5nPikge1xuICAgICAgICB0aGlzLmNvbmZpZy5nbG9iYWxWYWxpZGF0aW9uTWVzc2FnZXMgPSB2YWxpZGF0aW9uTWVzc2FnZXM7XG4gICAgfVxufVxuIl19
132
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS12YWxpZGF0b3ItbG9hZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2Zvcm0vZm9ybS12YWxpZGF0b3ItbG9hZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUxQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHN0QsT0FBTyxFQUFFLG9CQUFvQixFQUEyRCxNQUFNLGNBQWMsQ0FBQzs7QUFFN0csTUFBTSxDQUFDLE1BQU0seUJBQXlCLEdBQUcsWUFBWSxDQUFDO0FBRXRELE1BQU0sYUFBYSxHQUFHLFlBQVksQ0FBQztBQUNuQyxNQUFNLHNCQUFzQixHQUFHLGtCQUFrQixDQUFDO0FBRWxELE1BQU0sc0JBQXNCLEdBQWlDO0lBQ3pELGdCQUFnQixFQUFFLElBQUk7SUFDdEIsa0JBQWtCLEVBQUUsSUFBSTtJQUN4QixrQkFBa0IsRUFBRSxFQUFFO0NBQ3pCLENBQUM7QUFFRixNQUFNLHdCQUF3QixHQUFHO0lBQzdCLFFBQVEsRUFBRSxTQUFTO0lBQ25CLFNBQVMsRUFBRSx5QkFBeUI7SUFDcEMsU0FBUyxFQUFFLHlCQUF5QjtJQUNwQyxjQUFjLEVBQUUsZUFBZTtJQUMvQixLQUFLLEVBQUUsWUFBWTtJQUNuQixPQUFPLEVBQUUsU0FBUztJQUNsQixPQUFPLEVBQUUsWUFBWTtJQUNyQixNQUFNLEVBQUUsUUFBUTtJQUNoQixHQUFHLEVBQUUsWUFBWTtJQUNqQixHQUFHLEVBQUUsaUJBQWlCO0lBQ3RCLEdBQUcsRUFBRSxpQkFBaUI7Q0FDekIsQ0FBQztBQUVGOztHQUVHO0FBRUgsTUFBTSxPQUFPLHNCQUFzQjtJQUd2QiwyQkFBMkIsQ0FBQyxHQUFXO1FBQzNDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyx3QkFBd0IsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLHdC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RDthQUFNO1lBQ0gsY0FBYztTQUNqQjtJQUNMLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxRQUFtQztRQUNyRCxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsa0JBQWtCLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELDJCQUEyQixDQUFDLGtCQUFzQztRQUM5RCxJQUFJLENBQUMsTUFBTSxDQUFDLHdCQUF3QixHQUFHLGtCQUFrQixDQUFDO0lBQzlELENBQUM7O21IQXRHUSxzQkFBc0Isa0JBWW5CLG9CQUFvQjt1SEFadkIsc0JBQXNCOzJGQUF0QixzQkFBc0I7a0JBRGxDLFVBQVU7OzBCQVlGLFFBQVE7OzBCQUNSLE1BQU07MkJBQUMsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGljdGlvbmFyeSB9IGZyb20gJ25neC10ZXRoeXMvdHlwZXMnO1xuaW1wb3J0IHsgaGVscGVycyB9IGZyb20gJ25neC10ZXRoeXMvdXRpbCc7XG5cbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFZhbGlkYXRpb25FcnJvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IFRIWV9WQUxJREFUT1JfQ09ORklHLCBUaHlGb3JtVmFsaWRhdGlvbk1lc3NhZ2VzLCBUaHlGb3JtVmFsaWRhdG9yR2xvYmFsQ29uZmlnIH0gZnJvbSAnLi9mb3JtLmNsYXNzJztcblxuZXhwb3J0IGNvbnN0IEVSUk9SX1ZBTFVFX1JFUExBQ0VfUkVHRVggPSAvXFx7KC4rPylcXH0vZztcblxuY29uc3QgSU5WQUxJRF9DTEFTUyA9ICdpcy1pbnZhbGlkJztcbmNvbnN0IElOVkFMSURfRkVFREJBQ0tfQ0xBU1MgPSAnaW52YWxpZC1mZWVkYmFjayc7XG5cbmNvbnN0IGRlZmF1bHRWYWxpZGF0b3JDb25maWc6IFRoeUZvcm1WYWxpZGF0b3JHbG9iYWxDb25maWcgPSB7XG4gICAgc2hvd0VsZW1lbnRFcnJvcjogdHJ1ZSxcbiAgICByZW1vdmVFbGVtZW50RXJyb3I6IHRydWUsXG4gICAgdmFsaWRhdGlvbk1lc3NhZ2VzOiB7fVxufTtcblxuY29uc3QgZ2xvYmFsVmFsaWRhdGlvbk1lc3NhZ2VzID0ge1xuICAgIHJlcXVpcmVkOiAn6K+l6YCJ6aG55LiN6IO95Li656m6JyxcbiAgICBtYXhsZW5ndGg6ICfor6XpgInpobnovpPlhaXlgLzplb/luqbkuI3og73lpKfkuo57bWF4bGVuZ3RofScsXG4gICAgbWlubGVuZ3RoOiAn6K+l6YCJ6aG56L6T5YWl5YC86ZW/5bqm5LiN6IO95bCP5LqOe21pbmxlbmd0aH0nLFxuICAgIHRoeVVuaXF1ZUNoZWNrOiAn6L6T5YWl5YC85bey57uP5a2Y5Zyo77yM6K+36YeN5paw6L6T5YWlJyxcbiAgICBlbWFpbDogJ+i+k+WFpemCruS7tueahOagvOW8j+S4jeato+ehricsXG4gICAgY29uZmlybTogJ+S4pOasoei+k+WFpeS4jeS4gOiHtCcsXG4gICAgcGF0dGVybjogJ+ivpemAiemhuei+k+WFpeagvOW8j+S4jeato+ehricsXG4gICAgbnVtYmVyOiAn5b+F6aG76L6T5YWl5pWw5a2XJyxcbiAgICB1cmw6ICfovpPlhaVVUkzmoLzlvI/kuI3mraPnoa4nLFxuICAgIG1heDogJ+ivpemAiemhuei+k+WFpeWAvOS4jeiDveWkp+S6jnttYXh9JyxcbiAgICBtaW46ICfor6XpgInpobnovpPlhaXlgLzkuI3og73lsI/kuo57bWlufSdcbn07XG5cbi8qKlxuICogQHByaXZhdGVcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFRoeUZvcm1WYWxpZGF0b3JMb2FkZXIge1xuICAgIHByaXZhdGUgY29uZmlnOiBUaHlGb3JtVmFsaWRhdG9yR2xvYmFsQ29uZmlnO1xuXG4gICAgcHJpdmF0ZSBnZXREZWZhdWx0VmFsaWRhdGlvbk1lc3NhZ2Uoa2V5OiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHRoaXMuY29uZmlnLmdsb2JhbFZhbGlkYXRpb25NZXNzYWdlcyAmJiB0aGlzLmNvbmZpZy5nbG9iYWxWYWxpZGF0aW9uTWVzc2FnZXNba2V5XSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlnLmdsb2JhbFZhbGlkYXRpb25NZXNzYWdlc1trZXldO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGdsb2JhbFZhbGlkYXRpb25NZXNzYWdlc1trZXldO1xuICAgICAgICB9XG4gICAgfVxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBAT3B0aW9uYWwoKVxuICAgICAgICBASW5qZWN0KFRIWV9WQUxJREFUT1JfQ09ORklHKVxuICAgICAgICBjb25maWc6IFRoeUZvcm1WYWxpZGF0b3JHbG9iYWxDb25maWdcbiAgICApIHtcbiAgICAgICAgdGhpcy5jb25maWcgPSBPYmplY3QuYXNzaWduKHt9LCBkZWZhdWx0VmFsaWRhdG9yQ29uZmlnLCBjb25maWcpO1xuICAgIH1cblxuICAgIGdldCB2YWxpZGF0aW9uTWVzc2FnZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbmZpZy52YWxpZGF0aW9uTWVzc2FnZXM7XG4gICAgfVxuXG4gICAgZ2V0IHZhbGlkYXRlT24oKSB7XG4gICAgICAgIGlmICghdGhpcy5jb25maWc/LnZhbGlkYXRlT24pIHtcbiAgICAgICAgICAgIHRoaXMuY29uZmlnLnZhbGlkYXRlT24gPSAnc3VibWl0JztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5jb25maWcudmFsaWRhdGVPbjtcbiAgICB9XG5cbiAgICBpc0VsZW1lbnRJbklucHV0R3JvdXAoZWxlbWVudDogSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuICEhKGVsZW1lbnQ/LnBhcmVudEVsZW1lbnQ/LnRhZ05hbWUudG9VcHBlckNhc2UoKSA9PT0gJ1RIWS1JTlBVVC1HUk9VUCcpO1xuICAgIH1cblxuICAgIGdldEVycm9yTWVzc2FnZShuYW1lOiBzdHJpbmcsIGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHRoaXMudmFsaWRhdGlvbk1lc3NhZ2VzW25hbWVdICYmIHRoaXMudmFsaWRhdGlvbk1lc3NhZ2VzW25hbWVdW2tleV0pIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnZhbGlkYXRpb25NZXNzYWdlc1tuYW1lXVtrZXldO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RGVmYXVsdFZhbGlkYXRpb25NZXNzYWdlKGtleSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRFcnJvck1lc3NhZ2VzKG5hbWU6IHN0cmluZywgdmFsaWRhdGlvbkVycm9yczogVmFsaWRhdGlvbkVycm9ycyk6IHN0cmluZ1tdIHtcbiAgICAgICAgY29uc3QgbWVzc2FnZXMgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCB2YWxpZGF0aW9uRXJyb3IgaW4gdmFsaWRhdGlvbkVycm9ycykge1xuICAgICAgICAgICAgaWYgKHZhbGlkYXRpb25FcnJvcnMuaGFzT3duUHJvcGVydHkodmFsaWRhdGlvbkVycm9yKSkge1xuICAgICAgICAgICAgICAgIG1lc3NhZ2VzLnB1c2godGhpcy5nZXRFcnJvck1lc3NhZ2UobmFtZSwgdmFsaWRhdGlvbkVycm9yKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1lc3NhZ2VzO1xuICAgIH1cblxuICAgIGRlZmF1bHRTaG93RXJyb3IoZWxlbWVudDogSFRNTEVsZW1lbnQsIGVycm9yTWVzc2FnZXM6IHN0cmluZ1tdKSB7XG4gICAgICAgIGlmIChlbGVtZW50ICYmIGVsZW1lbnQucGFyZW50RWxlbWVudCkge1xuICAgICAgICAgICAgY29uc3QgZG9jdW1lbnRGcmFnID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO1xuICAgICAgICAgICAgY29uc3QgZGl2Tm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ0RJVicpO1xuICAgICAgICAgICAgY29uc3QgdGV4dE5vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShlcnJvck1lc3NhZ2VzWzBdKTtcbiAgICAgICAgICAgIGRpdk5vZGUuYXBwZW5kQ2hpbGQodGV4dE5vZGUpO1xuICAgICAgICAgICAgZGl2Tm9kZS5zZXRBdHRyaWJ1dGUoJ2NsYXNzJywgSU5WQUxJRF9GRUVEQkFDS19DTEFTUyk7XG4gICAgICAgICAgICBkb2N1bWVudEZyYWcuYXBwZW5kQ2hpbGQoZGl2Tm9kZSk7XG4gICAgICAgICAgICBlbGVtZW50LnBhcmVudEVsZW1lbnQuYXBwZW5kKGRvY3VtZW50RnJhZyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBkZWZhdWx0UmVtb3ZlRXJyb3IoZWxlbWVudDogSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgaWYgKGVsZW1lbnQgJiYgZWxlbWVudC5wYXJlbnRFbGVtZW50KSB7XG4gICAgICAgICAgICBjb25zdCBpbnZhbGlkRmVlZGJhY2sgPSBlbGVtZW50LnBhcmVudEVsZW1lbnQucXVlcnlTZWxlY3RvcignLmludmFsaWQtZmVlZGJhY2snKTtcbiAgICAgICAgICAgIGlmIChpbnZhbGlkRmVlZGJhY2spIHtcbiAgICAgICAgICAgICAgICBlbGVtZW50LnBhcmVudEVsZW1lbnQucmVtb3ZlQ2hpbGQoaW52YWxpZEZlZWRiYWNrKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlbW92ZUVycm9yKGVsZW1lbnQ6IEhUTUxFbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IGZvcm1Db250cm9sRWxlbWVudCA9IHRoaXMuaXNFbGVtZW50SW5JbnB1dEdyb3VwKGVsZW1lbnQpID8gZWxlbWVudC5wYXJlbnRFbGVtZW50IDogZWxlbWVudDtcbiAgICAgICAgZm9ybUNvbnRyb2xFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoSU5WQUxJRF9DTEFTUyk7XG4gICAgICAgIGlmIChoZWxwZXJzLmlzRnVuY3Rpb24odGhpcy5jb25maWcucmVtb3ZlRWxlbWVudEVycm9yKSkge1xuICAgICAgICAgICAgdGhpcy5jb25maWcucmVtb3ZlRWxlbWVudEVycm9yKGZvcm1Db250cm9sRWxlbWVudCk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5jb25maWcuc2hvd0VsZW1lbnRFcnJvcikge1xuICAgICAgICAgICAgdGhpcy5kZWZhdWx0UmVtb3ZlRXJyb3IoZm9ybUNvbnRyb2xFbGVtZW50KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIGRvIG5vdGhpbmdzXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzaG93RXJyb3IoZWxlbWVudDogSFRNTEVsZW1lbnQsIGVycm9yTWVzc2FnZXM6IHN0cmluZ1tdKSB7XG4gICAgICAgIGNvbnN0IGZvcm1Db250cm9sRWxlbWVudCA9IHRoaXMuaXNFbGVtZW50SW5JbnB1dEdyb3VwKGVsZW1lbnQpID8gZWxlbWVudC5wYXJlbnRFbGVtZW50IDogZWxlbWVudDtcbiAgICAgICAgZm9ybUNvbnRyb2xFbGVtZW50LmNsYXNzTGlzdC5hZGQoSU5WQUxJRF9DTEFTUyk7XG4gICAgICAgIGlmIChoZWxwZXJzLmlzRnVuY3Rpb24odGhpcy5jb25maWcuc2hvd0VsZW1lbnRFcnJvcikpIHtcbiAgICAgICAgICAgIHRoaXMuY29uZmlnLnNob3dFbGVtZW50RXJyb3IoZm9ybUNvbnRyb2xFbGVtZW50LCBlcnJvck1lc3NhZ2VzKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmNvbmZpZy5zaG93RWxlbWVudEVycm9yKSB7XG4gICAgICAgICAgICB0aGlzLmRlZmF1bHRTaG93RXJyb3IoZm9ybUNvbnRyb2xFbGVtZW50LCBlcnJvck1lc3NhZ2VzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIGRvIG5vdGhpbmdzXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBhZGRWYWxpZGF0aW9uTWVzc2FnZXMobWVzc2FnZXM6IFRoeUZvcm1WYWxpZGF0aW9uTWVzc2FnZXMpIHtcbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLmNvbmZpZy52YWxpZGF0aW9uTWVzc2FnZXMsIG1lc3NhZ2VzKTtcbiAgICB9XG5cbiAgICBzZXRHbG9iYWxWYWxpZGF0aW9uTWVzc2FnZXModmFsaWRhdGlvbk1lc3NhZ2VzOiBEaWN0aW9uYXJ5PHN0cmluZz4pIHtcbiAgICAgICAgdGhpcy5jb25maWcuZ2xvYmFsVmFsaWRhdGlvbk1lc3NhZ2VzID0gdmFsaWRhdGlvbk1lc3NhZ2VzO1xuICAgIH1cbn1cbiJdfQ==
@@ -1,3 +1,3 @@
1
1
  import { Version } from '@angular/core';
2
- export const VERSION = new Version('15.3.8');
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFeEMsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmVyc2lvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgY29uc3QgVkVSU0lPTiA9IG5ldyBWZXJzaW9uKCcxNS4zLjgnKTtcbiJdfQ==
2
+ export const VERSION = new Version('15.3.9');
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFeEMsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVmVyc2lvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgY29uc3QgVkVSU0lPTiA9IG5ldyBWZXJzaW9uKCcxNS4zLjknKTtcbiJdfQ==
@@ -5,7 +5,20 @@ import { InputBoolean, getNumericSize } from 'ngx-tethys/core';
5
5
  import { useHostRenderer } from '@tethys/cdk/dom';
6
6
  import { ThyIconComponent, ThyIconModule } from 'ngx-tethys/icon';
7
7
  import { NgIf, CommonModule } from '@angular/common';
8
+ import { timer } from 'rxjs';
8
9
 
10
+ const defaultFeedbackOptions = {
11
+ success: {
12
+ icon: 'check-circle-fill',
13
+ class: 'text-success',
14
+ duration: 3000
15
+ },
16
+ error: {
17
+ icon: 'close-circle-fill',
18
+ class: 'text-danger',
19
+ duration: 3000
20
+ }
21
+ };
9
22
  /**
10
23
  * 立即操作组件
11
24
  * @name thy-action,[thyAction]
@@ -45,9 +58,11 @@ class ThyActionComponent {
45
58
  set thyActionActive(value) {
46
59
  this.active = value;
47
60
  }
48
- constructor(elementRef, renderer) {
61
+ constructor(elementRef, renderer, cdr) {
49
62
  this.elementRef = elementRef;
50
63
  this.renderer = renderer;
64
+ this.cdr = cdr;
65
+ this.feedback = null;
51
66
  this.active = false;
52
67
  this.type = 'primary';
53
68
  this.hostRenderer = useHostRenderer();
@@ -71,6 +86,37 @@ class ThyActionComponent {
71
86
  setMarginRight(marginRight) {
72
87
  this.elementRef.nativeElement.style.marginRight = marginRight;
73
88
  }
89
+ /**
90
+ * 触发成功反馈操作
91
+ */
92
+ success(options) {
93
+ this.setFeedback('success', options);
94
+ }
95
+ /**
96
+ * 触发失败反馈操作
97
+ */
98
+ error(options) {
99
+ this.setFeedback('error', options);
100
+ }
101
+ setFeedback(feedback, options) {
102
+ if (this.thyDisabled) {
103
+ return;
104
+ }
105
+ options = Object.assign({}, defaultFeedbackOptions[feedback], options);
106
+ this.feedback = feedback;
107
+ this.feedbackOptions = options;
108
+ this.cdr.markForCheck();
109
+ if (options.duration) {
110
+ if (this.feedbackTimer) {
111
+ this.feedbackTimer.unsubscribe();
112
+ }
113
+ this.feedbackTimer = timer(options.duration).subscribe(() => {
114
+ this.feedback = null;
115
+ this.feedbackOptions = null;
116
+ this.cdr.markForCheck();
117
+ });
118
+ }
119
+ }
74
120
  wrapSpanForText(nodes) {
75
121
  nodes.forEach(node => {
76
122
  if (node.nodeName === '#text') {
@@ -93,9 +139,13 @@ class ThyActionComponent {
93
139
  }
94
140
  this.hostRenderer.updateClass(classNames);
95
141
  }
142
+ ngOnDestroy() {
143
+ var _a;
144
+ (_a = this.feedbackTimer) === null || _a === void 0 ? void 0 : _a.unsubscribe();
145
+ }
96
146
  }
97
- ThyActionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ThyActionComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
98
- ThyActionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ThyActionComponent, isStandalone: true, selector: "thy-action, [thyAction]", inputs: { thyType: "thyType", thyIcon: "thyIcon", thyActionIcon: "thyActionIcon", thyActive: "thyActive", thyActionActive: "thyActionActive", thyTheme: "thyTheme", thyHoverIcon: "thyHoverIcon", thyDisabled: "thyDisabled" }, host: { properties: { "class.active": "active", "class.thy-action-hover-icon": "thyHoverIcon", "class.disabled": "thyDisabled" }, classAttribute: "thy-action" }, usesOnChanges: true, ngImport: i0, template: "<thy-icon *ngIf=\"icon\" [thyIconName]=\"icon\"></thy-icon>\n<thy-icon class=\"hover-icon\" *ngIf=\"thyHoverIcon\" [thyIconName]=\"thyHoverIcon\"></thy-icon>\n<ng-content></ng-content>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ThyIconComponent, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
147
+ ThyActionComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ThyActionComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
148
+ ThyActionComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", type: ThyActionComponent, isStandalone: true, selector: "thy-action, [thyAction]", inputs: { thyType: "thyType", thyIcon: "thyIcon", thyActionIcon: "thyActionIcon", thyActive: "thyActive", thyActionActive: "thyActionActive", thyTheme: "thyTheme", thyHoverIcon: "thyHoverIcon", thyDisabled: "thyDisabled" }, host: { properties: { "class.active": "active", "class.thy-action-hover-icon": "thyHoverIcon", "class.thy-action-has-feedback": "!!feedback", "class.disabled": "thyDisabled" }, classAttribute: "thy-action" }, usesOnChanges: true, ngImport: i0, template: "<thy-icon *ngIf=\"icon && !feedback\" [thyIconName]=\"icon\"></thy-icon>\n<thy-icon *ngIf=\"feedbackOptions?.icon\" [class]=\"feedbackOptions.class\" [thyIconName]=\"feedbackOptions.icon\"></thy-icon>\n<thy-icon class=\"hover-icon\" *ngIf=\"thyHoverIcon\" [thyIconName]=\"thyHoverIcon\"></thy-icon>\n<ng-content></ng-content>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ThyIconComponent, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
99
149
  __decorate([
100
150
  InputBoolean(),
101
151
  __metadata("design:type", Boolean),
@@ -116,9 +166,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
116
166
  class: 'thy-action',
117
167
  '[class.active]': 'active',
118
168
  '[class.thy-action-hover-icon]': 'thyHoverIcon',
169
+ '[class.thy-action-has-feedback]': '!!feedback',
119
170
  '[class.disabled]': 'thyDisabled'
120
- }, standalone: true, imports: [NgIf, ThyIconComponent], template: "<thy-icon *ngIf=\"icon\" [thyIconName]=\"icon\"></thy-icon>\n<thy-icon class=\"hover-icon\" *ngIf=\"thyHoverIcon\" [thyIconName]=\"thyHoverIcon\"></thy-icon>\n<ng-content></ng-content>\n" }]
121
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }]; }, propDecorators: { thyType: [{
171
+ }, standalone: true, imports: [NgIf, ThyIconComponent], template: "<thy-icon *ngIf=\"icon && !feedback\" [thyIconName]=\"icon\"></thy-icon>\n<thy-icon *ngIf=\"feedbackOptions?.icon\" [class]=\"feedbackOptions.class\" [thyIconName]=\"feedbackOptions.icon\"></thy-icon>\n<thy-icon class=\"hover-icon\" *ngIf=\"thyHoverIcon\" [thyIconName]=\"thyHoverIcon\"></thy-icon>\n<ng-content></ng-content>\n" }]
172
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { thyType: [{
122
173
  type: Input
123
174
  }], thyIcon: [{
124
175
  type: Input
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-tethys-action.mjs","sources":["../../../src/action/action.component.ts","../../../src/action/action.component.html","../../../src/action/actions.component.ts","../../../src/action/action.module.ts","../../../src/action/ngx-tethys-action.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnInit,\n AfterViewInit,\n OnChanges,\n ElementRef,\n Renderer2,\n SimpleChanges\n} from '@angular/core';\nimport { InputBoolean } from 'ngx-tethys/core';\nimport { useHostRenderer } from '@tethys/cdk/dom';\nimport { ThyIconComponent } from 'ngx-tethys/icon';\nimport { NgIf } from '@angular/common';\n\nexport type ThyActionType = 'primary' | 'success' | 'danger' | 'warning';\n\n/**\n * 立即操作组件\n * @name thy-action,[thyAction]\n */\n@Component({\n selector: 'thy-action, [thyAction]',\n templateUrl: './action.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'thy-action',\n '[class.active]': 'active',\n '[class.thy-action-hover-icon]': 'thyHoverIcon',\n '[class.disabled]': 'thyDisabled'\n },\n standalone: true,\n imports: [NgIf, ThyIconComponent]\n})\nexport class ThyActionComponent implements OnInit, AfterViewInit, OnChanges {\n icon: string;\n\n private active = false;\n\n private type: string = 'primary';\n\n private hostRenderer = useHostRenderer();\n\n /**\n * 操作图标的类型\n * @type primary | success | danger | warning\n * @default primary\n */\n @Input()\n set thyType(value: ThyActionType) {\n this.setActionType(value || 'primary');\n }\n\n /**\n * 操作图标,支持传参同时也支持在投影中写 thy-icon 组件\n */\n @Input()\n set thyIcon(icon: string) {\n this.icon = icon;\n }\n\n /**\n * 操作图标,当 thyIcon 和其他指令参数名有冲突时使用 thyActionIcon\n */\n @Input()\n set thyActionIcon(icon: string) {\n this.icon = icon;\n }\n\n /**\n * 操作的图标 Active 状态,设置为 true 时会在 Item 上添加 active class\n * @default false\n */\n @Input()\n @InputBoolean()\n set thyActive(value: boolean) {\n this.active = value;\n }\n\n /**\n * 操作的图标 Active 状态,当 thyActive 和其他指令参数名有冲突时使用 thyActionActive\n * @default false\n */\n @Input()\n @InputBoolean()\n set thyActionActive(value: boolean) {\n this.active = value;\n }\n\n /**\n * 操作图标的主题\n * @type fill(背景色填充) | lite(简单文本颜色变化)\n */\n @Input() thyTheme: 'fill' | 'lite' = 'fill';\n\n /**\n * Hover 展示的图标\n */\n @Input() thyHoverIcon: string;\n\n /**\n * 是否处于禁用状态\n * @default false\n */\n @Input()\n @InputBoolean()\n thyDisabled: boolean;\n\n constructor(private elementRef: ElementRef<HTMLElement>, private renderer: Renderer2) {}\n\n ngOnInit(): void {\n this.updateClasses();\n }\n\n ngAfterViewInit() {\n this.wrapSpanForText(this.elementRef.nativeElement.childNodes);\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if ((changes.thyType && !changes.thyType.firstChange) || (changes.thyTheme && !changes.thyTheme.firstChange)) {\n this.updateClasses();\n }\n }\n\n setMarginRight(marginRight: string) {\n this.elementRef.nativeElement.style.marginRight = marginRight;\n }\n\n private wrapSpanForText(nodes: NodeList): void {\n nodes.forEach(node => {\n if (node.nodeName === '#text') {\n const span = this.renderer.createElement('span');\n const parent = this.renderer.parentNode(node);\n // this.renderer.addClass(span, 'thy-action-wrap-span');\n this.renderer.insertBefore(parent, span, node);\n this.renderer.appendChild(span, node);\n }\n });\n }\n\n private setActionType(value: ThyActionType) {\n this.type = value;\n }\n\n private updateClasses() {\n let classNames: string[] = [];\n classNames.push(`action-${this.type}`);\n if (this.thyTheme === 'lite') {\n classNames.push('thy-action-lite');\n }\n this.hostRenderer.updateClass(classNames);\n }\n}\n","<thy-icon *ngIf=\"icon\" [thyIconName]=\"icon\"></thy-icon>\n<thy-icon class=\"hover-icon\" *ngIf=\"thyHoverIcon\" [thyIconName]=\"thyHoverIcon\"></thy-icon>\n<ng-content></ng-content>\n","import {\n Component,\n OnInit,\n OnChanges,\n ChangeDetectionStrategy,\n Input,\n ContentChildren,\n QueryList,\n AfterContentInit,\n SimpleChanges\n} from '@angular/core';\nimport { ThySpacingSize, getNumericSize } from 'ngx-tethys/core';\nimport { ThyActionComponent } from './action.component';\n\n/**\n * Actions 组件\n * @name thy-actions\n */\n@Component({\n selector: 'thy-actions',\n template: ` <ng-content></ng-content> `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'thy-actions'\n },\n standalone: true\n})\nexport class ThyActionsComponent implements OnInit, AfterContentInit, OnChanges {\n @ContentChildren(ThyActionComponent) actions: QueryList<ThyActionComponent>;\n\n /**\n * 大小,支持 `zero` | `xxs` | `xs` | `sm` | `md` | `lg` | `xlg` 和自定义数字大小\n * @type string | number\n */\n @Input() thySize: ThySpacingSize = 'md';\n\n constructor() {}\n\n ngOnInit(): void {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.thySize && !changes.thySize.firstChange && this.actions) {\n this.setActionsSize(this.actions.toArray());\n }\n }\n\n ngAfterContentInit(): void {\n this.actions.changes.subscribe((actions: ThyActionComponent[]) => {\n this.setActionsSize(actions);\n });\n this.setActionsSize(this.actions.toArray());\n }\n\n private setActionsSize(actions: ThyActionComponent[]) {\n actions.forEach((action: ThyActionComponent, index) => {\n // can't set marginRight value for last item\n if (index !== actions.length - 1) {\n action.setMarginRight(getNumericSize(this.thySize, 'md') + 'px');\n }\n });\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { ThyIconModule } from 'ngx-tethys/icon';\nimport { ThyActionComponent } from './action.component';\nimport { ThyActionsComponent } from './actions.component';\n\n@NgModule({\n imports: [CommonModule, ThyIconModule, ThyActionComponent, ThyActionsComponent],\n exports: [ThyActionComponent, ThyActionsComponent]\n})\nexport class ThyActionModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ngx-tethys-action.mjs","sources":["../../../src/action/action.component.ts","../../../src/action/action.component.html","../../../src/action/actions.component.ts","../../../src/action/action.module.ts","../../../src/action/ngx-tethys-action.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n Input,\n OnInit,\n AfterViewInit,\n OnChanges,\n ElementRef,\n Renderer2,\n SimpleChanges,\n ChangeDetectorRef,\n OnDestroy\n} from '@angular/core';\nimport { InputBoolean } from 'ngx-tethys/core';\nimport { useHostRenderer } from '@tethys/cdk/dom';\nimport { ThyIconComponent } from 'ngx-tethys/icon';\nimport { NgIf } from '@angular/common';\nimport { Subscription, timer } from 'rxjs';\n\nexport type ThyActionType = 'primary' | 'success' | 'danger' | 'warning';\n\nexport type ThyActionFeedback = 'success' | 'error';\n\nexport interface ThyActionFeedbackOptions {\n icon?: string;\n class?: string;\n duration?: number;\n}\n\nconst defaultFeedbackOptions: Record<ThyActionFeedback, ThyActionFeedbackOptions> = {\n success: {\n icon: 'check-circle-fill',\n class: 'text-success',\n duration: 3000\n },\n error: {\n icon: 'close-circle-fill',\n class: 'text-danger',\n duration: 3000\n }\n};\n/**\n * 立即操作组件\n * @name thy-action,[thyAction]\n */\n@Component({\n selector: 'thy-action, [thyAction]',\n templateUrl: './action.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'thy-action',\n '[class.active]': 'active',\n '[class.thy-action-hover-icon]': 'thyHoverIcon',\n '[class.thy-action-has-feedback]': '!!feedback',\n '[class.disabled]': 'thyDisabled'\n },\n standalone: true,\n imports: [NgIf, ThyIconComponent]\n})\nexport class ThyActionComponent implements OnInit, AfterViewInit, OnChanges, OnDestroy {\n icon: string;\n\n feedback: ThyActionFeedback = null;\n\n feedbackOptions: ThyActionFeedbackOptions;\n\n active = false;\n\n private type: string = 'primary';\n\n private hostRenderer = useHostRenderer();\n\n private feedbackTimer: Subscription;\n\n /**\n * 操作图标的类型\n * @type primary | success | danger | warning\n * @default primary\n */\n @Input()\n set thyType(value: ThyActionType) {\n this.setActionType(value || 'primary');\n }\n\n /**\n * 操作图标,支持传参同时也支持在投影中写 thy-icon 组件\n */\n @Input()\n set thyIcon(icon: string) {\n this.icon = icon;\n }\n\n /**\n * 操作图标,当 thyIcon 和其他指令参数名有冲突时使用 thyActionIcon\n */\n @Input()\n set thyActionIcon(icon: string) {\n this.icon = icon;\n }\n\n /**\n * 操作的图标 Active 状态,设置为 true 时会在 Item 上添加 active class\n * @default false\n */\n @Input()\n @InputBoolean()\n set thyActive(value: boolean) {\n this.active = value;\n }\n\n /**\n * 操作的图标 Active 状态,当 thyActive 和其他指令参数名有冲突时使用 thyActionActive\n * @default false\n */\n @Input()\n @InputBoolean()\n set thyActionActive(value: boolean) {\n this.active = value;\n }\n\n /**\n * 操作图标的主题\n * @type fill(背景色填充) | lite(简单文本颜色变化)\n */\n @Input() thyTheme: 'fill' | 'lite' = 'fill';\n\n /**\n * Hover 展示的图标\n */\n @Input() thyHoverIcon: string;\n\n /**\n * 是否处于禁用状态\n * @default false\n */\n @Input()\n @InputBoolean()\n thyDisabled: boolean;\n\n constructor(private elementRef: ElementRef<HTMLElement>, private renderer: Renderer2, private cdr: ChangeDetectorRef) {}\n\n ngOnInit(): void {\n this.updateClasses();\n }\n\n ngAfterViewInit() {\n this.wrapSpanForText(this.elementRef.nativeElement.childNodes);\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if ((changes.thyType && !changes.thyType.firstChange) || (changes.thyTheme && !changes.thyTheme.firstChange)) {\n this.updateClasses();\n }\n }\n\n setMarginRight(marginRight: string) {\n this.elementRef.nativeElement.style.marginRight = marginRight;\n }\n\n /**\n * 触发成功反馈操作\n */\n success(options?: ThyActionFeedbackOptions) {\n this.setFeedback('success', options);\n }\n\n /**\n * 触发失败反馈操作\n */\n error(options?: ThyActionFeedbackOptions) {\n this.setFeedback('error', options);\n }\n\n private setFeedback(feedback: ThyActionFeedback, options: ThyActionFeedbackOptions) {\n if (this.thyDisabled) {\n return;\n }\n options = Object.assign({}, defaultFeedbackOptions[feedback], options);\n this.feedback = feedback;\n this.feedbackOptions = options;\n this.cdr.markForCheck();\n if (options.duration) {\n if (this.feedbackTimer) {\n this.feedbackTimer.unsubscribe();\n }\n this.feedbackTimer = timer(options.duration).subscribe(() => {\n this.feedback = null;\n this.feedbackOptions = null;\n this.cdr.markForCheck();\n });\n }\n }\n\n private wrapSpanForText(nodes: NodeList): void {\n nodes.forEach(node => {\n if (node.nodeName === '#text') {\n const span = this.renderer.createElement('span');\n const parent = this.renderer.parentNode(node);\n // this.renderer.addClass(span, 'thy-action-wrap-span');\n this.renderer.insertBefore(parent, span, node);\n this.renderer.appendChild(span, node);\n }\n });\n }\n\n private setActionType(value: ThyActionType) {\n this.type = value;\n }\n\n private updateClasses() {\n let classNames: string[] = [];\n classNames.push(`action-${this.type}`);\n if (this.thyTheme === 'lite') {\n classNames.push('thy-action-lite');\n }\n this.hostRenderer.updateClass(classNames);\n }\n\n ngOnDestroy(): void {\n this.feedbackTimer?.unsubscribe();\n }\n}\n","<thy-icon *ngIf=\"icon && !feedback\" [thyIconName]=\"icon\"></thy-icon>\n<thy-icon *ngIf=\"feedbackOptions?.icon\" [class]=\"feedbackOptions.class\" [thyIconName]=\"feedbackOptions.icon\"></thy-icon>\n<thy-icon class=\"hover-icon\" *ngIf=\"thyHoverIcon\" [thyIconName]=\"thyHoverIcon\"></thy-icon>\n<ng-content></ng-content>\n","import {\n Component,\n OnInit,\n OnChanges,\n ChangeDetectionStrategy,\n Input,\n ContentChildren,\n QueryList,\n AfterContentInit,\n SimpleChanges\n} from '@angular/core';\nimport { ThySpacingSize, getNumericSize } from 'ngx-tethys/core';\nimport { ThyActionComponent } from './action.component';\n\n/**\n * Actions 组件\n * @name thy-actions\n */\n@Component({\n selector: 'thy-actions',\n template: ` <ng-content></ng-content> `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'thy-actions'\n },\n standalone: true\n})\nexport class ThyActionsComponent implements OnInit, AfterContentInit, OnChanges {\n @ContentChildren(ThyActionComponent) actions: QueryList<ThyActionComponent>;\n\n /**\n * 大小,支持 `zero` | `xxs` | `xs` | `sm` | `md` | `lg` | `xlg` 和自定义数字大小\n * @type string | number\n */\n @Input() thySize: ThySpacingSize = 'md';\n\n constructor() {}\n\n ngOnInit(): void {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes.thySize && !changes.thySize.firstChange && this.actions) {\n this.setActionsSize(this.actions.toArray());\n }\n }\n\n ngAfterContentInit(): void {\n this.actions.changes.subscribe((actions: ThyActionComponent[]) => {\n this.setActionsSize(actions);\n });\n this.setActionsSize(this.actions.toArray());\n }\n\n private setActionsSize(actions: ThyActionComponent[]) {\n actions.forEach((action: ThyActionComponent, index) => {\n // can't set marginRight value for last item\n if (index !== actions.length - 1) {\n action.setMarginRight(getNumericSize(this.thySize, 'md') + 'px');\n }\n });\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { ThyIconModule } from 'ngx-tethys/icon';\nimport { ThyActionComponent } from './action.component';\nimport { ThyActionsComponent } from './actions.component';\n\n@NgModule({\n imports: [CommonModule, ThyIconModule, ThyActionComponent, ThyActionsComponent],\n exports: [ThyActionComponent, ThyActionsComponent]\n})\nexport class ThyActionModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -103,7 +103,9 @@ class ThyFormValidatorLoader {
103
103
  defaultRemoveError(element) {
104
104
  if (element && element.parentElement) {
105
105
  const invalidFeedback = element.parentElement.querySelector('.invalid-feedback');
106
- element.parentElement.removeChild(invalidFeedback);
106
+ if (invalidFeedback) {
107
+ element.parentElement.removeChild(invalidFeedback);
108
+ }
107
109
  }
108
110
  }
109
111
  removeError(element) {