ngx-tethys 16.1.5 → 16.1.7

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 (38) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/cascader/cascader-li.component.d.ts +2 -1
  3. package/cascader/cascader.component.d.ts +13 -3
  4. package/cascader/types.d.ts +2 -0
  5. package/core/overlay/abstract-overlay.config.d.ts +4 -0
  6. package/dialog/dialog.config.d.ts +3 -0
  7. package/esm2022/cascader/cascader-li.component.mjs +15 -6
  8. package/esm2022/cascader/cascader.component.mjs +92 -35
  9. package/esm2022/cascader/types.mjs +1 -1
  10. package/esm2022/core/overlay/abstract-overlay.config.mjs +5 -1
  11. package/esm2022/dialog/dialog-container.component.mjs +2 -2
  12. package/esm2022/dialog/dialog.config.mjs +4 -1
  13. package/esm2022/input-number/input-number.component.mjs +12 -15
  14. package/esm2022/radio/button/radio-button.component.mjs +11 -3
  15. package/esm2022/radio/group/radio-group.component.mjs +12 -3
  16. package/esm2022/select/custom-select/custom-select.component.mjs +13 -4
  17. package/esm2022/version.mjs +2 -2
  18. package/fesm2022/ngx-tethys-cascader.mjs +97 -32
  19. package/fesm2022/ngx-tethys-cascader.mjs.map +1 -1
  20. package/fesm2022/ngx-tethys-core.mjs +4 -0
  21. package/fesm2022/ngx-tethys-core.mjs.map +1 -1
  22. package/fesm2022/ngx-tethys-dialog.mjs +4 -1
  23. package/fesm2022/ngx-tethys-dialog.mjs.map +1 -1
  24. package/fesm2022/ngx-tethys-input-number.mjs +9 -12
  25. package/fesm2022/ngx-tethys-input-number.mjs.map +1 -1
  26. package/fesm2022/ngx-tethys-radio.mjs +21 -4
  27. package/fesm2022/ngx-tethys-radio.mjs.map +1 -1
  28. package/fesm2022/ngx-tethys-select.mjs +12 -3
  29. package/fesm2022/ngx-tethys-select.mjs.map +1 -1
  30. package/fesm2022/ngx-tethys.mjs +1 -1
  31. package/fesm2022/ngx-tethys.mjs.map +1 -1
  32. package/form/styles/form-check.scss +1 -0
  33. package/input-number/input-number.component.d.ts +0 -2
  34. package/package.json +1 -1
  35. package/radio/button/radio-button.component.d.ts +1 -0
  36. package/radio/group/radio-group.component.d.ts +5 -2
  37. package/schematics/version.d.ts +1 -1
  38. package/schematics/version.js +1 -1
package/CHANGELOG.md CHANGED
@@ -2,6 +2,33 @@
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
+ ## [16.1.7](https://github.com/atinc/ngx-tethys/compare/16.1.6...16.1.7) (2023-11-02)
6
+
7
+
8
+ ### Features
9
+
10
+ * **cascader:** search and select all nodes when isOnlySelectLeaf is false #INFR-10101 ([#2873](https://github.com/atinc/ngx-tethys/issues/2873)) ([f0d6751](https://github.com/atinc/ngx-tethys/commit/f0d67511309a092e9d7364009c9082d471e58517)), closes [#INFR-10101](https://github.com/atinc/ngx-tethys/issues/INFR-10101)
11
+ * **select:** #INFR-10094 dispatch toggle select panel not close when thyShowSearch is true ([#2872](https://github.com/atinc/ngx-tethys/issues/2872)) ([10c2ec1](https://github.com/atinc/ngx-tethys/commit/10c2ec19d8d6ff0024283d8a4f6c3a243eac717b))
12
+
13
+
14
+
15
+ ## [16.1.6](https://github.com/atinc/ngx-tethys/compare/16.2.0-next...16.1.6) (2023-10-27)
16
+
17
+
18
+ ### Bug Fixes
19
+
20
+ * **check:** fix form-check style(#INFR-9102) ([#2837](https://github.com/atinc/ngx-tethys/issues/2837)) ([40eddcf](https://github.com/atinc/ngx-tethys/commit/40eddcf66038b8bd52db1ec9fe7c81b89ab3dc02)), closes [#INFR-9102](https://github.com/atinc/ngx-tethys/issues/INFR-9102)
21
+ * **input-number:** fix input non-number show error #INFR-10053 ([#2862](https://github.com/atinc/ngx-tethys/issues/2862)) ([7749771](https://github.com/atinc/ngx-tethys/commit/7749771ea63659961121aa25f381f15ac0d67970)), closes [#INFR-10053](https://github.com/atinc/ngx-tethys/issues/INFR-10053)
22
+ * **input-number:** fix input number suffix not effect #INFR-10053 ([#2859](https://github.com/atinc/ngx-tethys/issues/2859)) ([b411b5a](https://github.com/atinc/ngx-tethys/commit/b411b5ab769360c50c37667f907a9d5a56047e3f)), closes [#INFR-10053](https://github.com/atinc/ngx-tethys/issues/INFR-10053)
23
+ * **radio:** fix radio group thyDisabled #INFR-9788 ([#2858](https://github.com/atinc/ngx-tethys/issues/2858)) ([1569e3c](https://github.com/atinc/ngx-tethys/commit/1569e3cbbfcadcceca804baf37c5deea71461be1)), closes [#INFR-9788](https://github.com/atinc/ngx-tethys/issues/INFR-9788)
24
+
25
+
26
+ ### Features
27
+
28
+ * add restoreFocusOptions to control previously element focusing #INFR-9782 ([#2860](https://github.com/atinc/ngx-tethys/issues/2860)) ([da6ef88](https://github.com/atinc/ngx-tethys/commit/da6ef88cbe8ed135651628106e4084015803de6a)), closes [#INFR-9782](https://github.com/atinc/ngx-tethys/issues/INFR-9782)
29
+
30
+
31
+
5
32
  ## [16.1.5](https://github.com/atinc/ngx-tethys/compare/16.1.4...16.1.5) (2023-10-12)
6
33
 
7
34
 
@@ -11,6 +11,7 @@ export declare class ThyCascaderOptionComponent implements OnInit {
11
11
  class: string;
12
12
  item: boolean;
13
13
  active: boolean;
14
+ selected: boolean;
14
15
  get disabled(): boolean;
15
16
  get expand(): boolean;
16
17
  labelProperty: string;
@@ -19,5 +20,5 @@ export declare class ThyCascaderOptionComponent implements OnInit {
19
20
  ngOnInit(): void;
20
21
  toggleOption(value: boolean): void;
21
22
  static ɵfac: i0.ɵɵFactoryDeclaration<ThyCascaderOptionComponent, never>;
22
- static ɵcmp: i0.ɵɵComponentDeclaration<ThyCascaderOptionComponent, "[thy-cascader-option]", never, { "option": { "alias": "option"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "isOnlySelectLeaf": { "alias": "isOnlySelectLeaf"; "required": false; }; "active": { "alias": "active"; "required": false; }; "labelProperty": { "alias": "labelProperty"; "required": false; }; }, { "toggleSelectChange": "toggleSelectChange"; }, never, never, true, never>;
23
+ static ɵcmp: i0.ɵɵComponentDeclaration<ThyCascaderOptionComponent, "[thy-cascader-option]", never, { "option": { "alias": "option"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "isOnlySelectLeaf": { "alias": "isOnlySelectLeaf"; "required": false; }; "active": { "alias": "active"; "required": false; }; "selected": { "alias": "selected"; "required": false; }; "labelProperty": { "alias": "labelProperty"; "required": false; }; }, { "toggleSelectChange": "toggleSelectChange"; }, never, never, true, never>;
23
24
  }
@@ -114,7 +114,8 @@ export declare class ThyCascaderComponent extends TabIndexDisabledControlValueAc
114
114
  */
115
115
  thyMaxTagCount: number;
116
116
  /**
117
- * @private 当多选时是否只能选择叶子项, 暂无实现
117
+ * 是否仅允许选择叶子项
118
+ * @default true
118
119
  */
119
120
  thyIsOnlySelectLeaf: boolean;
120
121
  /**
@@ -150,6 +151,10 @@ export declare class ThyCascaderComponent extends TabIndexDisabledControlValueAc
150
151
  * 清空选项时触发
151
152
  */
152
153
  thyClear: EventEmitter<void>;
154
+ /**
155
+ * 下拉选项展开和折叠状态事件
156
+ */
157
+ thyExpandStatusChange: EventEmitter<boolean>;
153
158
  cascaderOptions: QueryList<ElementRef>;
154
159
  cascaderOptionContainers: QueryList<ElementRef>;
155
160
  cdkConnectedOverlay: CdkConnectedOverlay;
@@ -196,6 +201,8 @@ export declare class ThyCascaderComponent extends TabIndexDisabledControlValueAc
196
201
  * 会导致恢复级联状态再变为搜索状态
197
202
  */
198
203
  private isSelectingSearchState;
204
+ private flattenOptions;
205
+ private leafNodes;
199
206
  ngOnInit(): void;
200
207
  private initSelectionModel;
201
208
  private initPosition;
@@ -211,6 +218,7 @@ export declare class ThyCascaderComponent extends TabIndexDisabledControlValueAc
211
218
  getOptionLabel(option: ThyCascaderOption): any;
212
219
  getOptionValue(option: ThyCascaderOption): any;
213
220
  isActivatedOption(option: ThyCascaderOption, index: number): boolean;
221
+ isSelectedOption(option: ThyCascaderOption, index: number): boolean;
214
222
  attached(): void;
215
223
  private scrollActiveElementIntoView;
216
224
  private findOption;
@@ -230,7 +238,7 @@ export declare class ThyCascaderComponent extends TabIndexDisabledControlValueAc
230
238
  private isHoverExpandTriggerAction;
231
239
  toggleClick($event: Event): void;
232
240
  toggleHover($event: Event): void;
233
- clickOption(option: ThyCascaderOption, index: number, event: Event): void;
241
+ clickOption(option: ThyCascaderOption, index: number, event: Event | boolean): void;
234
242
  mouseoverOption(option: ThyCascaderOption, index: number, event: Event): void;
235
243
  mouseleaveMenu(event: Event): void;
236
244
  onBlur(event?: FocusEvent): void;
@@ -255,10 +263,12 @@ export declare class ThyCascaderComponent extends TabIndexDisabledControlValueAc
255
263
  trackByFn(index: number, item: ThyCascaderOption): any;
256
264
  searchFilter(searchText: string): void;
257
265
  private initSearch;
266
+ private forEachColumns;
267
+ private setSearchResultList;
258
268
  private searchInLocal;
259
269
  private resetSearch;
260
270
  selectSearchResult(selectOptionData: ThyCascaderSearchOption): void;
261
271
  ngOnDestroy(): void;
262
272
  static ɵfac: i0.ɵɵFactoryDeclaration<ThyCascaderComponent, never>;
263
- static ɵcmp: i0.ɵɵComponentDeclaration<ThyCascaderComponent, "thy-cascader,[thy-cascader]", never, { "thyValueProperty": { "alias": "thyValueProperty"; "required": false; }; "thyLabelProperty": { "alias": "thyLabelProperty"; "required": false; }; "thyPlaceholder": { "alias": "thyPlaceholder"; "required": false; }; "thySize": { "alias": "thySize"; "required": false; }; "thyOptions": { "alias": "thyOptions"; "required": false; }; "thyChangeOn": { "alias": "thyChangeOn"; "required": false; }; "thyChangeOnSelect": { "alias": "thyChangeOnSelect"; "required": false; }; "thyShowInput": { "alias": "thyShowInput"; "required": false; }; "thyLabelRender": { "alias": "thyLabelRender"; "required": false; }; "thyLoadData": { "alias": "thyLoadData"; "required": false; }; "thyTriggerAction": { "alias": "thyTriggerAction"; "required": false; }; "thyExpandTriggerAction": { "alias": "thyExpandTriggerAction"; "required": false; }; "thyMenuStyle": { "alias": "thyMenuStyle"; "required": false; }; "thyMenuClassName": { "alias": "thyMenuClassName"; "required": false; }; "thyColumnClassName": { "alias": "thyColumnClassName"; "required": false; }; "thyDisabled": { "alias": "thyDisabled"; "required": false; }; "thyEmptyStateText": { "alias": "thyEmptyStateText"; "required": false; }; "thyMultiple": { "alias": "thyMultiple"; "required": false; }; "thyMaxTagCount": { "alias": "thyMaxTagCount"; "required": false; }; "thyIsOnlySelectLeaf": { "alias": "thyIsOnlySelectLeaf"; "required": false; }; "thyShowSearch": { "alias": "thyShowSearch"; "required": false; }; }, { "thyChange": "thyChange"; "thySelectionChange": "thySelectionChange"; "thySelect": "thySelect"; "thyDeselect": "thyDeselect"; "thyClear": "thyClear"; }, never, never, true, never>;
273
+ static ɵcmp: i0.ɵɵComponentDeclaration<ThyCascaderComponent, "thy-cascader,[thy-cascader]", never, { "thyValueProperty": { "alias": "thyValueProperty"; "required": false; }; "thyLabelProperty": { "alias": "thyLabelProperty"; "required": false; }; "thyPlaceholder": { "alias": "thyPlaceholder"; "required": false; }; "thySize": { "alias": "thySize"; "required": false; }; "thyOptions": { "alias": "thyOptions"; "required": false; }; "thyChangeOn": { "alias": "thyChangeOn"; "required": false; }; "thyChangeOnSelect": { "alias": "thyChangeOnSelect"; "required": false; }; "thyShowInput": { "alias": "thyShowInput"; "required": false; }; "thyLabelRender": { "alias": "thyLabelRender"; "required": false; }; "thyLoadData": { "alias": "thyLoadData"; "required": false; }; "thyTriggerAction": { "alias": "thyTriggerAction"; "required": false; }; "thyExpandTriggerAction": { "alias": "thyExpandTriggerAction"; "required": false; }; "thyMenuStyle": { "alias": "thyMenuStyle"; "required": false; }; "thyMenuClassName": { "alias": "thyMenuClassName"; "required": false; }; "thyColumnClassName": { "alias": "thyColumnClassName"; "required": false; }; "thyDisabled": { "alias": "thyDisabled"; "required": false; }; "thyEmptyStateText": { "alias": "thyEmptyStateText"; "required": false; }; "thyMultiple": { "alias": "thyMultiple"; "required": false; }; "thyMaxTagCount": { "alias": "thyMaxTagCount"; "required": false; }; "thyIsOnlySelectLeaf": { "alias": "thyIsOnlySelectLeaf"; "required": false; }; "thyShowSearch": { "alias": "thyShowSearch"; "required": false; }; }, { "thyChange": "thyChange"; "thySelectionChange": "thySelectionChange"; "thySelect": "thySelect"; "thyDeselect": "thyDeselect"; "thyClear": "thyClear"; "thyExpandStatusChange": "thyExpandStatusChange"; }, never, never, true, never>;
264
274
  }
@@ -17,4 +17,6 @@ export interface ThyCascaderSearchOption {
17
17
  valueList: Id[];
18
18
  selected: boolean;
19
19
  thyRowValue: ThyCascaderOption[];
20
+ isLeaf?: boolean;
21
+ disabled?: boolean;
20
22
  }
@@ -96,6 +96,10 @@ export declare class ThyAbstractOverlayConfig<TData = unknown> {
96
96
  * previously-focused element, after it's closed.
97
97
  */
98
98
  restoreFocus?: boolean;
99
+ /**
100
+ * Control the previously-focused element focusing process.
101
+ */
102
+ restoreFocusOptions?: FocusOptions;
99
103
  /**
100
104
  * 切换浏览器导航是否自动关闭弹出框
101
105
  * @description.en-us Whether the overlay should close when the user goes backwards/forwards in history.Note that this usually doesn't include clicking on links (unless the user is using the `HashLocationStrategy`).
@@ -58,6 +58,9 @@ export declare const THY_DIALOG_DEFAULT_OPTIONS_PROVIDER: {
58
58
  closeOnNavigation: boolean;
59
59
  autoFocus: boolean;
60
60
  restoreFocus: boolean;
61
+ restoreFocusOptions: {
62
+ preventScroll: boolean;
63
+ };
61
64
  hostClass: string;
62
65
  };
63
66
  };
@@ -1,10 +1,12 @@
1
1
  import { __decorate, __metadata } from "tslib";
2
- import { InputBoolean } from 'ngx-tethys/core';
3
- import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, Output, ViewEncapsulation } from '@angular/core';
4
- import { FormsModule } from '@angular/forms';
5
2
  import { ThyCheckboxComponent } from 'ngx-tethys/checkbox';
3
+ import { InputBoolean } from 'ngx-tethys/core';
6
4
  import { ThyFlexibleTextComponent } from 'ngx-tethys/flexible-text';
5
+ import { ThyRadioComponent } from 'ngx-tethys/radio';
6
+ import { ThyStopPropagationDirective } from 'ngx-tethys/shared';
7
7
  import { NgIf } from '@angular/common';
8
+ import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, Output, ViewEncapsulation } from '@angular/core';
9
+ import { FormsModule } from '@angular/forms';
8
10
  import * as i0 from "@angular/core";
9
11
  import * as i1 from "@angular/forms";
10
12
  /**
@@ -23,6 +25,7 @@ export class ThyCascaderOptionComponent {
23
25
  this.class = 'd-flex';
24
26
  this.item = true;
25
27
  this.active = false;
28
+ this.selected = false;
26
29
  this.labelProperty = 'label';
27
30
  this.toggleSelectChange = new EventEmitter();
28
31
  }
@@ -31,7 +34,7 @@ export class ThyCascaderOptionComponent {
31
34
  this.toggleSelectChange.emit(value);
32
35
  }
33
36
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: ThyCascaderOptionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
34
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.0", type: ThyCascaderOptionComponent, isStandalone: true, selector: "[thy-cascader-option]", inputs: { option: "option", multiple: "multiple", isOnlySelectLeaf: "isOnlySelectLeaf", active: "active", labelProperty: "labelProperty" }, outputs: { toggleSelectChange: "toggleSelectChange" }, host: { properties: { "class": "this.class", "class.thy-cascader-menu-item": "this.item", "class.thy-cascader-menu-item-active": "this.active", "class.thy-cascader-menu-item-disabled": "this.disabled", "class.thy-cascader-menu-item-expand": "this.expand" } }, ngImport: i0, template: "<span thyFlexibleText [thyTooltipContent]=\"option[labelProperty] || ''\" *ngIf=\"!multiple || !option.isLeaf\">\n {{ option[labelProperty] || '' }}</span\n>\n<ng-container *ngIf=\"multiple && option.isLeaf && isOnlySelectLeaf\">\n <label\n thyCheckbox\n class=\"w-100\"\n thyInline=\"true\"\n [disabled]=\"option.disabled\"\n [(ngModel)]=\"active\"\n (ngModelChange)=\"toggleOption(active)\"\n [name]=\"option.value || option._id\">\n <span thyFlexibleText [thyTooltipContent]=\"option[labelProperty] || ''\">{{ option[labelProperty] || '' }}</span>\n </label>\n</ng-container>\n\n<span\n *ngIf=\"!option.isLeaf || (option.children && option.children.length) || option.loading\"\n class=\"wtf wtf-angle-right thy-cascader-menu-item-expand-icon\">\n</span>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ThyFlexibleTextComponent, selector: "thy-flexible-text,[thyFlexibleText]", inputs: ["thyTooltipTrigger", "thyContainerClass", "thyTooltipContent", "thyTooltipPlacement", "thyTooltipOffset"], exportAs: ["thyFlexibleText"] }, { kind: "component", type: ThyCheckboxComponent, selector: "thy-checkbox,[thy-checkbox],[thyCheckbox]", inputs: ["thyIndeterminate"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
37
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.0", type: ThyCascaderOptionComponent, isStandalone: true, selector: "[thy-cascader-option]", inputs: { option: "option", multiple: "multiple", isOnlySelectLeaf: "isOnlySelectLeaf", active: "active", selected: "selected", labelProperty: "labelProperty" }, outputs: { toggleSelectChange: "toggleSelectChange" }, host: { properties: { "class": "this.class", "class.thy-cascader-menu-item": "this.item", "class.thy-cascader-menu-item-active": "this.active", "class.thy-cascader-menu-item-disabled": "this.disabled", "class.thy-cascader-menu-item-expand": "this.expand" } }, ngImport: i0, template: "<div thyStopPropagation>\n <label\n *ngIf=\"multiple && (!isOnlySelectLeaf || option.isLeaf)\"\n thyCheckbox\n [disabled]=\"option.disabled\"\n [name]=\"option.value || option._id\"\n [(ngModel)]=\"selected\"\n (ngModelChange)=\"toggleOption($event)\"></label>\n <label\n *ngIf=\"!multiple && !isOnlySelectLeaf\"\n thyRadio\n [disabled]=\"option.disabled\"\n [name]=\"option.value || option._id\"\n [(ngModel)]=\"selected\"\n (ngModelChange)=\"toggleOption($event)\"></label>\n</div>\n\n<span thyFlexibleText [thyTooltipContent]=\"option[labelProperty] || ''\"> {{ option[labelProperty] || '' }}</span>\n\n<span\n *ngIf=\"!option.isLeaf || (option.children && option.children.length) || option.loading\"\n class=\"wtf wtf-angle-right thy-cascader-menu-item-expand-icon\">\n</span>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ThyFlexibleTextComponent, selector: "thy-flexible-text,[thyFlexibleText]", inputs: ["thyTooltipTrigger", "thyContainerClass", "thyTooltipContent", "thyTooltipPlacement", "thyTooltipOffset"], exportAs: ["thyFlexibleText"] }, { kind: "component", type: ThyCheckboxComponent, selector: "thy-checkbox,[thy-checkbox],[thyCheckbox]", inputs: ["thyIndeterminate"] }, { kind: "component", type: ThyRadioComponent, selector: "[thy-radio],[thyRadio]", inputs: ["thyValue"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: ThyStopPropagationDirective, selector: "[thyStopPropagation]", inputs: ["thyStopPropagation"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
35
38
  }
36
39
  __decorate([
37
40
  InputBoolean(),
@@ -45,9 +48,13 @@ __decorate([
45
48
  InputBoolean(),
46
49
  __metadata("design:type", Boolean)
47
50
  ], ThyCascaderOptionComponent.prototype, "active", void 0);
51
+ __decorate([
52
+ InputBoolean(),
53
+ __metadata("design:type", Boolean)
54
+ ], ThyCascaderOptionComponent.prototype, "selected", void 0);
48
55
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImport: i0, type: ThyCascaderOptionComponent, decorators: [{
49
56
  type: Component,
50
- args: [{ changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, selector: '[thy-cascader-option]', standalone: true, imports: [NgIf, ThyFlexibleTextComponent, ThyCheckboxComponent, FormsModule], template: "<span thyFlexibleText [thyTooltipContent]=\"option[labelProperty] || ''\" *ngIf=\"!multiple || !option.isLeaf\">\n {{ option[labelProperty] || '' }}</span\n>\n<ng-container *ngIf=\"multiple && option.isLeaf && isOnlySelectLeaf\">\n <label\n thyCheckbox\n class=\"w-100\"\n thyInline=\"true\"\n [disabled]=\"option.disabled\"\n [(ngModel)]=\"active\"\n (ngModelChange)=\"toggleOption(active)\"\n [name]=\"option.value || option._id\">\n <span thyFlexibleText [thyTooltipContent]=\"option[labelProperty] || ''\">{{ option[labelProperty] || '' }}</span>\n </label>\n</ng-container>\n\n<span\n *ngIf=\"!option.isLeaf || (option.children && option.children.length) || option.loading\"\n class=\"wtf wtf-angle-right thy-cascader-menu-item-expand-icon\">\n</span>\n" }]
57
+ args: [{ changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, selector: '[thy-cascader-option]', standalone: true, imports: [NgIf, ThyFlexibleTextComponent, ThyCheckboxComponent, ThyRadioComponent, FormsModule, ThyStopPropagationDirective], template: "<div thyStopPropagation>\n <label\n *ngIf=\"multiple && (!isOnlySelectLeaf || option.isLeaf)\"\n thyCheckbox\n [disabled]=\"option.disabled\"\n [name]=\"option.value || option._id\"\n [(ngModel)]=\"selected\"\n (ngModelChange)=\"toggleOption($event)\"></label>\n <label\n *ngIf=\"!multiple && !isOnlySelectLeaf\"\n thyRadio\n [disabled]=\"option.disabled\"\n [name]=\"option.value || option._id\"\n [(ngModel)]=\"selected\"\n (ngModelChange)=\"toggleOption($event)\"></label>\n</div>\n\n<span thyFlexibleText [thyTooltipContent]=\"option[labelProperty] || ''\"> {{ option[labelProperty] || '' }}</span>\n\n<span\n *ngIf=\"!option.isLeaf || (option.children && option.children.length) || option.loading\"\n class=\"wtf wtf-angle-right thy-cascader-menu-item-expand-icon\">\n</span>\n" }]
51
58
  }], ctorParameters: function () { return []; }, propDecorators: { option: [{
52
59
  type: Input
53
60
  }], multiple: [{
@@ -65,6 +72,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImpor
65
72
  args: ['class.thy-cascader-menu-item-active']
66
73
  }, {
67
74
  type: Input
75
+ }], selected: [{
76
+ type: Input
68
77
  }], disabled: [{
69
78
  type: HostBinding,
70
79
  args: ['class.thy-cascader-menu-item-disabled']
@@ -76,4 +85,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.0", ngImpor
76
85
  }], toggleSelectChange: [{
77
86
  type: Output
78
87
  }] } });
79
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzY2FkZXItbGkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2Nhc2NhZGVyL2Nhc2NhZGVyLWxpLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9jYXNjYWRlci9jYXNjYWRlci1saS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXhJLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7OztBQUV2Qzs7R0FFRztBQVVILE1BQU0sT0FBTywwQkFBMEI7SUFvQm5DLElBQ0ksUUFBUTtRQUNSLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7SUFDaEMsQ0FBQztJQUVELElBQ0ksTUFBTTtRQUNOLE9BQU8sSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQzlDLENBQUM7SUFNRDtRQTdCQSxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBSWpCLHFCQUFnQixHQUFHLElBQUksQ0FBQztRQUVGLFVBQUssR0FBRyxRQUFRLENBQUM7UUFFTSxTQUFJLEdBQUcsSUFBSSxDQUFDO1FBS3pELFdBQU0sR0FBWSxLQUFLLENBQUM7UUFZZixrQkFBYSxHQUFXLE9BQU8sQ0FBQztRQUUvQix1QkFBa0IsR0FBMEIsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUUxRCxDQUFDO0lBRWhCLFFBQVEsS0FBSSxDQUFDO0lBRU4sWUFBWSxDQUFDLEtBQWM7UUFDOUIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QyxDQUFDOzhHQXhDUSwwQkFBMEI7a0dBQTFCLDBCQUEwQix3aEJDcEJ2QyxxeEJBb0JBLDRDREZjLElBQUksNkZBQUUsd0JBQXdCLG1PQUFFLG9CQUFvQixtSEFBRSxXQUFXOztBQUszRTtJQUNDLFlBQVksRUFBRTs7NERBQ0U7QUFFakI7SUFDQyxZQUFZLEVBQUU7O29FQUNTO0FBTXhCO0lBRUMsWUFBWSxFQUFFOzswREFDUzsyRkFsQmYsMEJBQTBCO2tCQVR0QyxTQUFTO3NDQUNXLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksWUFFM0IsdUJBQXVCLGNBRXJCLElBQUksV0FDUCxDQUFDLElBQUksRUFBRSx3QkFBd0IsRUFBRSxvQkFBb0IsRUFBRSxXQUFXLENBQUM7MEVBR25FLE1BQU07c0JBQWQsS0FBSztnQkFJTixRQUFRO3NCQUZQLEtBQUs7Z0JBTU4sZ0JBQWdCO3NCQUZmLEtBQUs7Z0JBSWdCLEtBQUs7c0JBQTFCLFdBQVc7dUJBQUMsT0FBTztnQkFFeUIsSUFBSTtzQkFBaEQsV0FBVzt1QkFBQyw4QkFBOEI7Z0JBSzNDLE1BQU07c0JBSEwsV0FBVzt1QkFBQyxxQ0FBcUM7O3NCQUNqRCxLQUFLO2dCQUtGLFFBQVE7c0JBRFgsV0FBVzt1QkFBQyx1Q0FBdUM7Z0JBTWhELE1BQU07c0JBRFQsV0FBVzt1QkFBQyxxQ0FBcUM7Z0JBS3pDLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRUksa0JBQWtCO3NCQUEzQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5wdXRCb29sZWFuIH0gZnJvbSAnbmd4LXRldGh5cy9jb3JlJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRoeUNhc2NhZGVyT3B0aW9uIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFRoeUNoZWNrYm94Q29tcG9uZW50IH0gZnJvbSAnbmd4LXRldGh5cy9jaGVja2JveCc7XG5pbXBvcnQgeyBUaHlGbGV4aWJsZVRleHRDb21wb25lbnQgfSBmcm9tICduZ3gtdGV0aHlzL2ZsZXhpYmxlLXRleHQnO1xuaW1wb3J0IHsgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbi8qKlxuICogQGludGVybmFsXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgICBzZWxlY3RvcjogJ1t0aHktY2FzY2FkZXItb3B0aW9uXScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2Nhc2NhZGVyLWxpLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtOZ0lmLCBUaHlGbGV4aWJsZVRleHRDb21wb25lbnQsIFRoeUNoZWNrYm94Q29tcG9uZW50LCBGb3Jtc01vZHVsZV1cbn0pXG5leHBvcnQgY2xhc3MgVGh5Q2FzY2FkZXJPcHRpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIEBJbnB1dCgpIG9wdGlvbjogVGh5Q2FzY2FkZXJPcHRpb247XG5cbiAgICBASW5wdXQoKVxuICAgIEBJbnB1dEJvb2xlYW4oKVxuICAgIG11bHRpcGxlID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIEBJbnB1dEJvb2xlYW4oKVxuICAgIGlzT25seVNlbGVjdExlYWYgPSB0cnVlO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcycpIGNsYXNzID0gJ2QtZmxleCc7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLnRoeS1jYXNjYWRlci1tZW51LWl0ZW0nKSBpdGVtID0gdHJ1ZTtcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MudGh5LWNhc2NhZGVyLW1lbnUtaXRlbS1hY3RpdmUnKVxuICAgIEBJbnB1dCgpXG4gICAgQElucHV0Qm9vbGVhbigpXG4gICAgYWN0aXZlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLnRoeS1jYXNjYWRlci1tZW51LWl0ZW0tZGlzYWJsZWQnKVxuICAgIGdldCBkaXNhYmxlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9uLmRpc2FibGVkO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MudGh5LWNhc2NhZGVyLW1lbnUtaXRlbS1leHBhbmQnKVxuICAgIGdldCBleHBhbmQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbiAmJiAhdGhpcy5vcHRpb24uaXNMZWFmO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIGxhYmVsUHJvcGVydHk6IHN0cmluZyA9ICdsYWJlbCc7XG5cbiAgICBAT3V0cHV0KCkgdG9nZ2xlU2VsZWN0Q2hhbmdlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgICBuZ09uSW5pdCgpIHt9XG5cbiAgICBwdWJsaWMgdG9nZ2xlT3B0aW9uKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMudG9nZ2xlU2VsZWN0Q2hhbmdlLmVtaXQodmFsdWUpO1xuICAgIH1cbn1cbiIsIjxzcGFuIHRoeUZsZXhpYmxlVGV4dCBbdGh5VG9vbHRpcENvbnRlbnRdPVwib3B0aW9uW2xhYmVsUHJvcGVydHldIHx8ICcnXCIgKm5nSWY9XCIhbXVsdGlwbGUgfHwgIW9wdGlvbi5pc0xlYWZcIj5cbiAge3sgb3B0aW9uW2xhYmVsUHJvcGVydHldIHx8ICcnIH19PC9zcGFuXG4+XG48bmctY29udGFpbmVyICpuZ0lmPVwibXVsdGlwbGUgJiYgb3B0aW9uLmlzTGVhZiAmJiBpc09ubHlTZWxlY3RMZWFmXCI+XG4gIDxsYWJlbFxuICAgIHRoeUNoZWNrYm94XG4gICAgY2xhc3M9XCJ3LTEwMFwiXG4gICAgdGh5SW5saW5lPVwidHJ1ZVwiXG4gICAgW2Rpc2FibGVkXT1cIm9wdGlvbi5kaXNhYmxlZFwiXG4gICAgWyhuZ01vZGVsKV09XCJhY3RpdmVcIlxuICAgIChuZ01vZGVsQ2hhbmdlKT1cInRvZ2dsZU9wdGlvbihhY3RpdmUpXCJcbiAgICBbbmFtZV09XCJvcHRpb24udmFsdWUgfHwgb3B0aW9uLl9pZFwiPlxuICAgIDxzcGFuIHRoeUZsZXhpYmxlVGV4dCBbdGh5VG9vbHRpcENvbnRlbnRdPVwib3B0aW9uW2xhYmVsUHJvcGVydHldIHx8ICcnXCI+e3sgb3B0aW9uW2xhYmVsUHJvcGVydHldIHx8ICcnIH19PC9zcGFuPlxuICA8L2xhYmVsPlxuPC9uZy1jb250YWluZXI+XG5cbjxzcGFuXG4gICpuZ0lmPVwiIW9wdGlvbi5pc0xlYWYgfHwgKG9wdGlvbi5jaGlsZHJlbiAmJiBvcHRpb24uY2hpbGRyZW4ubGVuZ3RoKSB8fCBvcHRpb24ubG9hZGluZ1wiXG4gIGNsYXNzPVwid3RmIHd0Zi1hbmdsZS1yaWdodCB0aHktY2FzY2FkZXItbWVudS1pdGVtLWV4cGFuZC1pY29uXCI+XG48L3NwYW4+XG4iXX0=
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzY2FkZXItbGkuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2Nhc2NhZGVyL2Nhc2NhZGVyLWxpLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9jYXNjYWRlci9jYXNjYWRlci1saS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3JELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRWhFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2QyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4SSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQUk3Qzs7R0FFRztBQVVILE1BQU0sT0FBTywwQkFBMEI7SUF3Qm5DLElBQ0ksUUFBUTtRQUNSLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7SUFDaEMsQ0FBQztJQUVELElBQ0ksTUFBTTtRQUNOLE9BQU8sSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQzlDLENBQUM7SUFNRDtRQWpDQSxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBSWpCLHFCQUFnQixHQUFHLElBQUksQ0FBQztRQUVGLFVBQUssR0FBRyxRQUFRLENBQUM7UUFFTSxTQUFJLEdBQUcsSUFBSSxDQUFDO1FBS3pELFdBQU0sR0FBWSxLQUFLLENBQUM7UUFJeEIsYUFBUSxHQUFZLEtBQUssQ0FBQztRQVlqQixrQkFBYSxHQUFXLE9BQU8sQ0FBQztRQUUvQix1QkFBa0IsR0FBMEIsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUUxRCxDQUFDO0lBRWhCLFFBQVEsS0FBSSxDQUFDO0lBRU4sWUFBWSxDQUFDLEtBQWM7UUFDOUIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QyxDQUFDOzhHQTVDUSwwQkFBMEI7a0dBQTFCLDBCQUEwQiw4aUJDeEJ2Qyx3ekJBdUJBLDRDRERjLElBQUksNkZBQUUsd0JBQXdCLG1PQUFFLG9CQUFvQixvSEFBRSxpQkFBaUIsd0ZBQUUsV0FBVywrVkFBRSwyQkFBMkI7O0FBSzNIO0lBQ0MsWUFBWSxFQUFFOzs0REFDRTtBQUVqQjtJQUNDLFlBQVksRUFBRTs7b0VBQ1M7QUFNeEI7SUFFQyxZQUFZLEVBQUU7OzBEQUNTO0FBRXhCO0lBQ0MsWUFBWSxFQUFFOzs0REFDVzsyRkF0QmpCLDBCQUEwQjtrQkFUdEMsU0FBUztzQ0FDVyx1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFlBRTNCLHVCQUF1QixjQUVyQixJQUFJLFdBQ1AsQ0FBQyxJQUFJLEVBQUUsd0JBQXdCLEVBQUUsb0JBQW9CLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLDJCQUEyQixDQUFDOzBFQUduSCxNQUFNO3NCQUFkLEtBQUs7Z0JBSU4sUUFBUTtzQkFGUCxLQUFLO2dCQU1OLGdCQUFnQjtzQkFGZixLQUFLO2dCQUlnQixLQUFLO3NCQUExQixXQUFXO3VCQUFDLE9BQU87Z0JBRXlCLElBQUk7c0JBQWhELFdBQVc7dUJBQUMsOEJBQThCO2dCQUszQyxNQUFNO3NCQUhMLFdBQVc7dUJBQUMscUNBQXFDOztzQkFDakQsS0FBSztnQkFNTixRQUFRO3NCQUZQLEtBQUs7Z0JBS0YsUUFBUTtzQkFEWCxXQUFXO3VCQUFDLHVDQUF1QztnQkFNaEQsTUFBTTtzQkFEVCxXQUFXO3VCQUFDLHFDQUFxQztnQkFLekMsYUFBYTtzQkFBckIsS0FBSztnQkFFSSxrQkFBa0I7c0JBQTNCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUaHlDaGVja2JveENvbXBvbmVudCB9IGZyb20gJ25neC10ZXRoeXMvY2hlY2tib3gnO1xuaW1wb3J0IHsgSW5wdXRCb29sZWFuIH0gZnJvbSAnbmd4LXRldGh5cy9jb3JlJztcbmltcG9ydCB7IFRoeUZsZXhpYmxlVGV4dENvbXBvbmVudCB9IGZyb20gJ25neC10ZXRoeXMvZmxleGlibGUtdGV4dCc7XG5pbXBvcnQgeyBUaHlSYWRpb0NvbXBvbmVudCB9IGZyb20gJ25neC10ZXRoeXMvcmFkaW8nO1xuaW1wb3J0IHsgVGh5U3RvcFByb3BhZ2F0aW9uRGlyZWN0aXZlIH0gZnJvbSAnbmd4LXRldGh5cy9zaGFyZWQnO1xuXG5pbXBvcnQgeyBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkluaXQsIE91dHB1dCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBUaHlDYXNjYWRlck9wdGlvbiB9IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gICAgc2VsZWN0b3I6ICdbdGh5LWNhc2NhZGVyLW9wdGlvbl0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jYXNjYWRlci1saS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbTmdJZiwgVGh5RmxleGlibGVUZXh0Q29tcG9uZW50LCBUaHlDaGVja2JveENvbXBvbmVudCwgVGh5UmFkaW9Db21wb25lbnQsIEZvcm1zTW9kdWxlLCBUaHlTdG9wUHJvcGFnYXRpb25EaXJlY3RpdmVdXG59KVxuZXhwb3J0IGNsYXNzIFRoeUNhc2NhZGVyT3B0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICBASW5wdXQoKSBvcHRpb246IFRoeUNhc2NhZGVyT3B0aW9uO1xuXG4gICAgQElucHV0KClcbiAgICBASW5wdXRCb29sZWFuKClcbiAgICBtdWx0aXBsZSA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBASW5wdXRCb29sZWFuKClcbiAgICBpc09ubHlTZWxlY3RMZWFmID0gdHJ1ZTtcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKSBjbGFzcyA9ICdkLWZsZXgnO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy50aHktY2FzY2FkZXItbWVudS1pdGVtJykgaXRlbSA9IHRydWU7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLnRoeS1jYXNjYWRlci1tZW51LWl0ZW0tYWN0aXZlJylcbiAgICBASW5wdXQoKVxuICAgIEBJbnB1dEJvb2xlYW4oKVxuICAgIGFjdGl2ZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBASW5wdXRCb29sZWFuKClcbiAgICBzZWxlY3RlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy50aHktY2FzY2FkZXItbWVudS1pdGVtLWRpc2FibGVkJylcbiAgICBnZXQgZGlzYWJsZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbi5kaXNhYmxlZDtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLnRoeS1jYXNjYWRlci1tZW51LWl0ZW0tZXhwYW5kJylcbiAgICBnZXQgZXhwYW5kKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb24gJiYgIXRoaXMub3B0aW9uLmlzTGVhZjtcbiAgICB9XG5cbiAgICBASW5wdXQoKSBsYWJlbFByb3BlcnR5OiBzdHJpbmcgPSAnbGFiZWwnO1xuXG4gICAgQE91dHB1dCgpIHRvZ2dsZVNlbGVjdENoYW5nZTogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgY29uc3RydWN0b3IoKSB7fVxuXG4gICAgbmdPbkluaXQoKSB7fVxuXG4gICAgcHVibGljIHRvZ2dsZU9wdGlvbih2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLnRvZ2dsZVNlbGVjdENoYW5nZS5lbWl0KHZhbHVlKTtcbiAgICB9XG59XG4iLCI8ZGl2IHRoeVN0b3BQcm9wYWdhdGlvbj5cbiAgPGxhYmVsXG4gICAgKm5nSWY9XCJtdWx0aXBsZSAmJiAoIWlzT25seVNlbGVjdExlYWYgfHwgb3B0aW9uLmlzTGVhZilcIlxuICAgIHRoeUNoZWNrYm94XG4gICAgW2Rpc2FibGVkXT1cIm9wdGlvbi5kaXNhYmxlZFwiXG4gICAgW25hbWVdPVwib3B0aW9uLnZhbHVlIHx8IG9wdGlvbi5faWRcIlxuICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWRcIlxuICAgIChuZ01vZGVsQ2hhbmdlKT1cInRvZ2dsZU9wdGlvbigkZXZlbnQpXCI+PC9sYWJlbD5cbiAgPGxhYmVsXG4gICAgKm5nSWY9XCIhbXVsdGlwbGUgJiYgIWlzT25seVNlbGVjdExlYWZcIlxuICAgIHRoeVJhZGlvXG4gICAgW2Rpc2FibGVkXT1cIm9wdGlvbi5kaXNhYmxlZFwiXG4gICAgW25hbWVdPVwib3B0aW9uLnZhbHVlIHx8IG9wdGlvbi5faWRcIlxuICAgIFsobmdNb2RlbCldPVwic2VsZWN0ZWRcIlxuICAgIChuZ01vZGVsQ2hhbmdlKT1cInRvZ2dsZU9wdGlvbigkZXZlbnQpXCI+PC9sYWJlbD5cbjwvZGl2PlxuXG48c3BhbiB0aHlGbGV4aWJsZVRleHQgW3RoeVRvb2x0aXBDb250ZW50XT1cIm9wdGlvbltsYWJlbFByb3BlcnR5XSB8fCAnJ1wiPiB7eyBvcHRpb25bbGFiZWxQcm9wZXJ0eV0gfHwgJycgfX08L3NwYW4+XG5cbjxzcGFuXG4gICpuZ0lmPVwiIW9wdGlvbi5pc0xlYWYgfHwgKG9wdGlvbi5jaGlsZHJlbiAmJiBvcHRpb24uY2hpbGRyZW4ubGVuZ3RoKSB8fCBvcHRpb24ubG9hZGluZ1wiXG4gIGNsYXNzPVwid3RmIHd0Zi1hbmdsZS1yaWdodCB0aHktY2FzY2FkZXItbWVudS1pdGVtLWV4cGFuZC1pY29uXCI+XG48L3NwYW4+XG4iXX0=