@xw-components/condition-editor 18.1.0 → 18.1.1
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/condition-editor-request.service.d.ts +63 -6
- package/condition-editor.component.d.ts +79 -0
- package/condition-editor.model.d.ts +4 -0
- package/condition-editor.service.d.ts +7 -4
- package/condition-group/condition-group.component.d.ts +3 -4
- package/condition-item/condition-item.component.d.ts +7 -9
- package/esm2022/condition-editor-request.service.mjs +31 -1
- package/esm2022/condition-editor.component.mjs +91 -16
- package/esm2022/condition-editor.model.mjs +1 -1
- package/esm2022/condition-editor.service.mjs +8 -6
- package/esm2022/condition-group/condition-group.component.mjs +9 -9
- package/esm2022/condition-item/condition-item.component.mjs +36 -27
- package/fesm2022/condition-editor.mjs +167 -52
- package/fesm2022/condition-editor.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -1,21 +1,78 @@
|
|
|
1
|
-
import { InjectionToken } from '@angular/core';
|
|
1
|
+
import { InjectionToken, WritableSignal } from '@angular/core';
|
|
2
2
|
import { SelectOption } from './condition-editor.model';
|
|
3
3
|
export declare const ConditionEditorRequestServiceToken: InjectionToken<ConditionEditorRequestService>;
|
|
4
4
|
/**
|
|
5
5
|
* 条件编辑器请求服务,用于获取选择框选项和操作符选项
|
|
6
6
|
* 实现类需要根据前n个选择框的值来动态获取下一个选择框的选项。以及获取操作符选项。
|
|
7
|
+
* 需要实现getSelectOptions和getOperatorOptions方法
|
|
8
|
+
* 如果想要替换逻辑门的选项,需要重写getLogicGatesOptions方法
|
|
7
9
|
*/
|
|
8
10
|
export declare abstract class ConditionEditorRequestService {
|
|
9
11
|
constructor();
|
|
10
12
|
/**
|
|
11
13
|
* 获取选择框选项
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
+
* 实现类需要根据前n个选择框的值来动态获取下一个选择框的选项
|
|
15
|
+
* 例如:
|
|
16
|
+
* ```typescript
|
|
17
|
+
* getSelectOptions(previousValue: string[], writeSignal: WritableSignal<SelectOption[]>) {
|
|
18
|
+
* if (previousValue.length === 0) {
|
|
19
|
+
* writeSignal.set([
|
|
20
|
+
* { label: '用户', value: 'user' },
|
|
21
|
+
* { label: '订单', value: 'order' }
|
|
22
|
+
* ]);
|
|
23
|
+
* } else if (previousValue[0] === 'user') {
|
|
24
|
+
* writeSignal.set([
|
|
25
|
+
* { label: '用户名', value: 'username' },
|
|
26
|
+
* { label: '邮箱', value: 'email' }
|
|
27
|
+
* ]);
|
|
28
|
+
* } else if (previousValue[0] === 'order') {
|
|
29
|
+
* writeSignal.set([
|
|
30
|
+
* { label: '订单号', value: 'orderNo' },
|
|
31
|
+
* { label: '金额', value: 'amount' }
|
|
32
|
+
* ]);
|
|
33
|
+
* }
|
|
34
|
+
* }
|
|
35
|
+
* ```
|
|
36
|
+
*
|
|
37
|
+
* @param previousValue 前n个选择框的值,用于动态获取下一个选择框的选项
|
|
38
|
+
* @param writeSignal 用于写入选择框选项的信号量,用于在获取到选项后更新选择框的选项列表
|
|
14
39
|
*/
|
|
15
|
-
abstract getSelectOptions(previousValue: string[]
|
|
40
|
+
abstract getSelectOptions(previousValue: string[], writeSignal: WritableSignal<SelectOption[]>): void;
|
|
16
41
|
/**
|
|
17
42
|
* 获取操作符选项
|
|
18
|
-
*
|
|
43
|
+
* 实现类使用入参信号的set方法设置操作符选项即可
|
|
44
|
+
* 例如:
|
|
45
|
+
* ```typescript
|
|
46
|
+
* getOperatorOptions(writeSignal: WritableSignal<SelectOption[]>) {
|
|
47
|
+
* writeSignal.set([
|
|
48
|
+
* { label: '等于', value: 'eq' },
|
|
49
|
+
* { label: '不等于', value: 'ne' },
|
|
50
|
+
* { label: '大于', value: 'gt' },
|
|
51
|
+
* { label: '小于', value: 'lt' },
|
|
52
|
+
* { label: '包含', value: 'contains' },
|
|
53
|
+
* { label: '不包含', value: 'notContains' }
|
|
54
|
+
* ]);
|
|
55
|
+
* }
|
|
56
|
+
* ```
|
|
57
|
+
*
|
|
58
|
+
* @param writeSignal 用于写入操作符选项的信号量,用于在获取到选项后更新操作符选择框的选项列表
|
|
19
59
|
*/
|
|
20
|
-
abstract getOperatorOptions(
|
|
60
|
+
abstract getOperatorOptions(writeSignal: WritableSignal<SelectOption[]>): void;
|
|
61
|
+
/**
|
|
62
|
+
* 获取逻辑门选项
|
|
63
|
+
* 重写方法使用入参信号的set方法设置逻辑门选项即可
|
|
64
|
+
* 例如:
|
|
65
|
+
* ```typescript
|
|
66
|
+
* getLogicGatesOptions(writeSignal: WritableSignal<SelectOption[]>) {
|
|
67
|
+
* writeSignal.set([
|
|
68
|
+
* { label: '且', value: 'AND' },
|
|
69
|
+
* { label: '或', value: 'OR' },
|
|
70
|
+
* { label: '非', value: 'NOT' }
|
|
71
|
+
* ]);
|
|
72
|
+
* }
|
|
73
|
+
* ```
|
|
74
|
+
*
|
|
75
|
+
* @param writeSignal 用于写入逻辑门选项的信号量,用于在获取到选项后更新逻辑门选择框的选项列表
|
|
76
|
+
*/
|
|
77
|
+
getLogicGatesOptions(writeSignal: WritableSignal<SelectOption[]>): void;
|
|
21
78
|
}
|
|
@@ -4,6 +4,85 @@ import * as i0 from "@angular/core";
|
|
|
4
4
|
/**
|
|
5
5
|
* 条件编辑器组件
|
|
6
6
|
* 用于编辑条件表达式,支持多个条件组的组合。
|
|
7
|
+
* 例如:
|
|
8
|
+
* ```typescript
|
|
9
|
+
* // 1. 首先实现 ConditionEditorRequestService
|
|
10
|
+
* @Injectable({ providedIn: 'root' })
|
|
11
|
+
* export class MyConditionRequestService extends ConditionEditorRequestService {
|
|
12
|
+
* getSelectOptions(previousValue: string[], writeSignal: WritableSignal<SelectOption[]>) {
|
|
13
|
+
* if (previousValue.length === 0) {
|
|
14
|
+
* writeSignal.set([
|
|
15
|
+
* { label: '用户', value: 'user' },
|
|
16
|
+
* { label: '订单', value: 'order' }
|
|
17
|
+
* ]);
|
|
18
|
+
* } else if (previousValue[0] === 'user') {
|
|
19
|
+
* writeSignal.set([
|
|
20
|
+
* { label: '用户名', value: 'username' },
|
|
21
|
+
* { label: '邮箱', value: 'email' }
|
|
22
|
+
* ]);
|
|
23
|
+
* }
|
|
24
|
+
* }
|
|
25
|
+
*
|
|
26
|
+
* getOperatorOptions(writeSignal: WritableSignal<SelectOption[]>) {
|
|
27
|
+
* writeSignal.set([
|
|
28
|
+
* { label: '等于', value: 'eq' },
|
|
29
|
+
* { label: '不等于', value: 'ne' },
|
|
30
|
+
* { label: '包含', value: 'contains' }
|
|
31
|
+
* ]);
|
|
32
|
+
* }
|
|
33
|
+
* }
|
|
34
|
+
*
|
|
35
|
+
* // 2. 在模块中提供服务
|
|
36
|
+
* providers: [
|
|
37
|
+
* { provide: ConditionEditorRequestServiceToken, useClass: MyConditionRequestService }
|
|
38
|
+
* ]
|
|
39
|
+
*
|
|
40
|
+
* // 3. 在父组件中使用
|
|
41
|
+
* @Component({
|
|
42
|
+
* template: `
|
|
43
|
+
* <app-condition-editor
|
|
44
|
+
* [conditionData]="conditionData"
|
|
45
|
+
* [showSelectNumber]="2"
|
|
46
|
+
* [getIconFunc]="getIconFunc"
|
|
47
|
+
* (dataChange)="onDataChange($event)">
|
|
48
|
+
* </app-condition-editor>
|
|
49
|
+
* `
|
|
50
|
+
* })
|
|
51
|
+
* export class ParentComponent {
|
|
52
|
+
* conditionData: ConditionGroup = {
|
|
53
|
+
* groupType: ConditionGroupType.AND,
|
|
54
|
+
* conditions: []
|
|
55
|
+
* };
|
|
56
|
+
*
|
|
57
|
+
* getIconFunc = (value: string) => {
|
|
58
|
+
* const iconMap: Record<string, string> = {
|
|
59
|
+
* 'user': 'icon-user',
|
|
60
|
+
* 'order': 'icon-order',
|
|
61
|
+
* 'username': 'icon-username',
|
|
62
|
+
* 'email': 'icon-email'
|
|
63
|
+
* };
|
|
64
|
+
* return iconMap[value] || 'icon-default';
|
|
65
|
+
* };
|
|
66
|
+
*
|
|
67
|
+
* onDataChange(data: ConditionGroup) {
|
|
68
|
+
* console.log('条件数据变化:', data);
|
|
69
|
+
* this.conditionData = data;
|
|
70
|
+
* }
|
|
71
|
+
*
|
|
72
|
+
* // 获取条件数据
|
|
73
|
+
* getConditions() {
|
|
74
|
+
* const editorComponent = this.conditionEditorRef;
|
|
75
|
+
* return editorComponent.getConditionData();
|
|
76
|
+
* }
|
|
77
|
+
*
|
|
78
|
+
* // 重新加载选项
|
|
79
|
+
* reloadOptions() {
|
|
80
|
+
* const editorComponent = this.conditionEditorRef;
|
|
81
|
+
* editorComponent.reloadFirstSelectOptions();
|
|
82
|
+
* editorComponent.reloadOperatorOptions();
|
|
83
|
+
* }
|
|
84
|
+
* }
|
|
85
|
+
* ```
|
|
7
86
|
*/
|
|
8
87
|
export declare class ConditionEditorComponent implements OnInit {
|
|
9
88
|
private readonly conditionEditorRequestService;
|
|
@@ -1,10 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { WritableSignal } from '@angular/core';
|
|
2
|
+
import { Subject } from 'rxjs';
|
|
2
3
|
import { SelectOption } from './condition-editor.model';
|
|
3
4
|
import * as i0 from "@angular/core";
|
|
4
5
|
export declare class ConditionEditorService {
|
|
5
|
-
operators: SelectOption[]
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
operators: WritableSignal<SelectOption[]>;
|
|
7
|
+
firstSelectOptions: WritableSignal<SelectOption[]>;
|
|
8
|
+
showSelectNumber: WritableSignal<number>;
|
|
9
|
+
logicGates: WritableSignal<SelectOption[]>;
|
|
10
|
+
changeSub: Subject<void>;
|
|
8
11
|
getIconFunc?: (value: string) => string;
|
|
9
12
|
static ɵfac: i0.ɵɵFactoryDeclaration<ConditionEditorService, never>;
|
|
10
13
|
static ɵprov: i0.ɵɵInjectableDeclaration<ConditionEditorService>;
|
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
import { ConditionGroup } from '../condition-editor.model';
|
|
2
|
+
import { ConditionEditorService } from '../condition-editor.service';
|
|
2
3
|
import * as i0 from "@angular/core";
|
|
3
4
|
export declare class ConditionGroupComponent {
|
|
5
|
+
readonly conditionEditorService: ConditionEditorService;
|
|
4
6
|
groupData: import("@angular/core").InputSignal<ConditionGroup>;
|
|
5
7
|
parentData: import("@angular/core").InputSignal<ConditionGroup | null>;
|
|
6
8
|
showLine: import("@angular/core").InputSignal<boolean>;
|
|
7
|
-
readonly dataChange: import("@angular/core").OutputEmitterRef<void>;
|
|
8
9
|
addConditionItem(): void;
|
|
9
10
|
addConditionGroup(): void;
|
|
10
11
|
removeConditionGroup(): void;
|
|
11
|
-
submitForm(): void;
|
|
12
|
-
handleOk(): void;
|
|
13
12
|
static ɵfac: i0.ɵɵFactoryDeclaration<ConditionGroupComponent, never>;
|
|
14
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<ConditionGroupComponent, "app-condition-group", never, { "groupData": { "alias": "groupData"; "required": false; "isSignal": true; }; "parentData": { "alias": "parentData"; "required": false; "isSignal": true; }; "showLine": { "alias": "showLine"; "required": false; "isSignal": true; }; }, {
|
|
13
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ConditionGroupComponent, "app-condition-group", never, { "groupData": { "alias": "groupData"; "required": false; "isSignal": true; }; "parentData": { "alias": "parentData"; "required": false; "isSignal": true; }; "showLine": { "alias": "showLine"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
15
14
|
}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { Subscription } from 'rxjs';
|
|
1
|
+
import { WritableSignal } from '@angular/core';
|
|
3
2
|
import { Condition, ConditionGroup, SelectOption } from '../condition-editor.model';
|
|
4
3
|
import { ConditionEditorService } from '../condition-editor.service';
|
|
5
4
|
import * as i0 from "@angular/core";
|
|
6
|
-
export declare class ConditionItemComponent
|
|
5
|
+
export declare class ConditionItemComponent {
|
|
7
6
|
readonly conditionEditorService: ConditionEditorService;
|
|
8
7
|
private readonly conditionEditorRequestService;
|
|
9
8
|
conditionData: import("@angular/core").InputSignal<Condition>;
|
|
@@ -11,16 +10,15 @@ export declare class ConditionItemComponent implements OnInit, OnDestroy {
|
|
|
11
10
|
dictOptions: never[];
|
|
12
11
|
selectNumbers: number[];
|
|
13
12
|
options: SelectOption[][];
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
ngOnInit(): void;
|
|
18
|
-
ngOnDestroy(): void;
|
|
13
|
+
optionsSignal: WritableSignal<SelectOption[]>;
|
|
14
|
+
changeIndex: number | null;
|
|
15
|
+
constructor();
|
|
19
16
|
getIconfontByValue(value: string, option: SelectOption[]): string;
|
|
20
17
|
hasIcon(option: SelectOption[]): boolean;
|
|
21
18
|
removeConditionItem(): void;
|
|
22
19
|
onSelectChange(index: number, event: any): void;
|
|
23
20
|
onSelectOpenChange(index: number): void;
|
|
21
|
+
onOperatorChange(): void;
|
|
24
22
|
static ɵfac: i0.ɵɵFactoryDeclaration<ConditionItemComponent, never>;
|
|
25
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<ConditionItemComponent, "app-condition-item", never, { "conditionData": { "alias": "conditionData"; "required": false; "isSignal": true; }; "parentData": { "alias": "parentData"; "required": false; "isSignal": true; }; }, {
|
|
23
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ConditionItemComponent, "app-condition-item", never, { "conditionData": { "alias": "conditionData"; "required": false; "isSignal": true; }; "parentData": { "alias": "parentData"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
26
24
|
}
|
|
@@ -3,8 +3,38 @@ export const ConditionEditorRequestServiceToken = new InjectionToken('ConditionE
|
|
|
3
3
|
/**
|
|
4
4
|
* 条件编辑器请求服务,用于获取选择框选项和操作符选项
|
|
5
5
|
* 实现类需要根据前n个选择框的值来动态获取下一个选择框的选项。以及获取操作符选项。
|
|
6
|
+
* 需要实现getSelectOptions和getOperatorOptions方法
|
|
7
|
+
* 如果想要替换逻辑门的选项,需要重写getLogicGatesOptions方法
|
|
6
8
|
*/
|
|
7
9
|
export class ConditionEditorRequestService {
|
|
8
10
|
constructor() { }
|
|
11
|
+
/**
|
|
12
|
+
* 获取逻辑门选项
|
|
13
|
+
* 重写方法使用入参信号的set方法设置逻辑门选项即可
|
|
14
|
+
* 例如:
|
|
15
|
+
* ```typescript
|
|
16
|
+
* getLogicGatesOptions(writeSignal: WritableSignal<SelectOption[]>) {
|
|
17
|
+
* writeSignal.set([
|
|
18
|
+
* { label: '且', value: 'AND' },
|
|
19
|
+
* { label: '或', value: 'OR' },
|
|
20
|
+
* { label: '非', value: 'NOT' }
|
|
21
|
+
* ]);
|
|
22
|
+
* }
|
|
23
|
+
* ```
|
|
24
|
+
*
|
|
25
|
+
* @param writeSignal 用于写入逻辑门选项的信号量,用于在获取到选项后更新逻辑门选择框的选项列表
|
|
26
|
+
*/
|
|
27
|
+
getLogicGatesOptions(writeSignal) {
|
|
28
|
+
writeSignal.set([
|
|
29
|
+
{
|
|
30
|
+
label: '且',
|
|
31
|
+
value: 'AND'
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
label: '或',
|
|
35
|
+
value: 'OR'
|
|
36
|
+
}
|
|
37
|
+
]);
|
|
38
|
+
}
|
|
9
39
|
}
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZGl0aW9uLWVkaXRvci1yZXF1ZXN0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb21wb25lbnRzL2NvbmRpdGlvbi1lZGl0b3IvY29uZGl0aW9uLWVkaXRvci1yZXF1ZXN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBa0IsTUFBTSxlQUFlLENBQUM7QUFJL0QsTUFBTSxDQUFDLE1BQU0sa0NBQWtDLEdBQUcsSUFBSSxjQUFjLENBQWdDLG9DQUFvQyxDQUFDLENBQUM7QUFFMUk7Ozs7O0dBS0c7QUFDSCxNQUFNLE9BQWdCLDZCQUE2QjtJQUNqRCxnQkFBZSxDQUFDO0lBbURoQjs7Ozs7Ozs7Ozs7Ozs7O09BZUc7SUFDSCxvQkFBb0IsQ0FBQyxXQUEyQztRQUM5RCxXQUFXLENBQUMsR0FBRyxDQUFDO1lBQ2Q7Z0JBQ0UsS0FBSyxFQUFFLEdBQUc7Z0JBQ1YsS0FBSyxFQUFFLEtBQUs7YUFDYjtZQUNEO2dCQUNFLEtBQUssRUFBRSxHQUFHO2dCQUNWLEtBQUssRUFBRSxJQUFJO2FBQ1o7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiwgV3JpdGFibGVTaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgU2VsZWN0T3B0aW9uIH0gZnJvbSAnLi9jb25kaXRpb24tZWRpdG9yLm1vZGVsJztcblxuZXhwb3J0IGNvbnN0IENvbmRpdGlvbkVkaXRvclJlcXVlc3RTZXJ2aWNlVG9rZW4gPSBuZXcgSW5qZWN0aW9uVG9rZW48Q29uZGl0aW9uRWRpdG9yUmVxdWVzdFNlcnZpY2U+KCdDb25kaXRpb25FZGl0b3JSZXF1ZXN0U2VydmljZVRva2VuJyk7XG5cbi8qKlxuICog5p2h5Lu257yW6L6R5Zmo6K+35rGC5pyN5Yqh77yM55So5LqO6I635Y+W6YCJ5oup5qGG6YCJ6aG55ZKM5pON5L2c56ym6YCJ6aG5XG4gKiDlrp7njrDnsbvpnIDopoHmoLnmja7liY1u5Liq6YCJ5oup5qGG55qE5YC85p2l5Yqo5oCB6I635Y+W5LiL5LiA5Liq6YCJ5oup5qGG55qE6YCJ6aG544CC5Lul5Y+K6I635Y+W5pON5L2c56ym6YCJ6aG544CCXG4gKiDpnIDopoHlrp7njrBnZXRTZWxlY3RPcHRpb25z5ZKMZ2V0T3BlcmF0b3JPcHRpb25z5pa55rOVXG4gKiDlpoLmnpzmg7PopoHmm7/mjaLpgLvovpHpl6jnmoTpgInpobnvvIzpnIDopoHph43lhplnZXRMb2dpY0dhdGVzT3B0aW9uc+aWueazlVxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQ29uZGl0aW9uRWRpdG9yUmVxdWVzdFNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcigpIHt9XG4gIC8qKlxuICAgKiDojrflj5bpgInmi6nmoYbpgInpoblcbiAgICog5a6e546w57G76ZyA6KaB5qC55o2u5YmNbuS4qumAieaLqeahhueahOWAvOadpeWKqOaAgeiOt+WPluS4i+S4gOS4qumAieaLqeahhueahOmAiemhuVxuICAgKiDkvovlpoLvvJpcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBnZXRTZWxlY3RPcHRpb25zKHByZXZpb3VzVmFsdWU6IHN0cmluZ1tdLCB3cml0ZVNpZ25hbDogV3JpdGFibGVTaWduYWw8U2VsZWN0T3B0aW9uW10+KSB7XG4gICAqICAgaWYgKHByZXZpb3VzVmFsdWUubGVuZ3RoID09PSAwKSB7XG4gICAqICAgICB3cml0ZVNpZ25hbC5zZXQoW1xuICAgKiAgICAgICB7IGxhYmVsOiAn55So5oi3JywgdmFsdWU6ICd1c2VyJyB9LFxuICAgKiAgICAgICB7IGxhYmVsOiAn6K6i5Y2VJywgdmFsdWU6ICdvcmRlcicgfVxuICAgKiAgICAgXSk7XG4gICAqICAgfSBlbHNlIGlmIChwcmV2aW91c1ZhbHVlWzBdID09PSAndXNlcicpIHtcbiAgICogICAgIHdyaXRlU2lnbmFsLnNldChbXG4gICAqICAgICAgIHsgbGFiZWw6ICfnlKjmiLflkI0nLCB2YWx1ZTogJ3VzZXJuYW1lJyB9LFxuICAgKiAgICAgICB7IGxhYmVsOiAn6YKu566xJywgdmFsdWU6ICdlbWFpbCcgfVxuICAgKiAgICAgXSk7XG4gICAqICAgfSBlbHNlIGlmIChwcmV2aW91c1ZhbHVlWzBdID09PSAnb3JkZXInKSB7XG4gICAqICAgICB3cml0ZVNpZ25hbC5zZXQoW1xuICAgKiAgICAgICB7IGxhYmVsOiAn6K6i5Y2V5Y+3JywgdmFsdWU6ICdvcmRlck5vJyB9LFxuICAgKiAgICAgICB7IGxhYmVsOiAn6YeR6aKdJywgdmFsdWU6ICdhbW91bnQnIH1cbiAgICogICAgIF0pO1xuICAgKiAgIH1cbiAgICogfVxuICAgKiBgYGBcbiAgICpcbiAgICogQHBhcmFtIHByZXZpb3VzVmFsdWUg5YmNbuS4qumAieaLqeahhueahOWAvO+8jOeUqOS6juWKqOaAgeiOt+WPluS4i+S4gOS4qumAieaLqeahhueahOmAiemhuVxuICAgKiBAcGFyYW0gd3JpdGVTaWduYWwg55So5LqO5YaZ5YWl6YCJ5oup5qGG6YCJ6aG555qE5L+h5Y+36YeP77yM55So5LqO5Zyo6I635Y+W5Yiw6YCJ6aG55ZCO5pu05paw6YCJ5oup5qGG55qE6YCJ6aG55YiX6KGoXG4gICAqL1xuICBhYnN0cmFjdCBnZXRTZWxlY3RPcHRpb25zKHByZXZpb3VzVmFsdWU6IHN0cmluZ1tdLCB3cml0ZVNpZ25hbDogV3JpdGFibGVTaWduYWw8U2VsZWN0T3B0aW9uW10+KTogdm9pZDtcbiAgLyoqXG4gICAqIOiOt+WPluaTjeS9nOespumAiemhuVxuICAgKiDlrp7njrDnsbvkvb/nlKjlhaXlj4Lkv6Hlj7fnmoRzZXTmlrnms5Xorr7nva7mk43kvZznrKbpgInpobnljbPlj69cbiAgICog5L6L5aaC77yaXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogZ2V0T3BlcmF0b3JPcHRpb25zKHdyaXRlU2lnbmFsOiBXcml0YWJsZVNpZ25hbDxTZWxlY3RPcHRpb25bXT4pIHtcbiAgICogICB3cml0ZVNpZ25hbC5zZXQoW1xuICAgKiAgICAgeyBsYWJlbDogJ+etieS6jicsIHZhbHVlOiAnZXEnIH0sXG4gICAqICAgICB7IGxhYmVsOiAn5LiN562J5LqOJywgdmFsdWU6ICduZScgfSxcbiAgICogICAgIHsgbGFiZWw6ICflpKfkuo4nLCB2YWx1ZTogJ2d0JyB9LFxuICAgKiAgICAgeyBsYWJlbDogJ+Wwj+S6jicsIHZhbHVlOiAnbHQnIH0sXG4gICAqICAgICB7IGxhYmVsOiAn5YyF5ZCrJywgdmFsdWU6ICdjb250YWlucycgfSxcbiAgICogICAgIHsgbGFiZWw6ICfkuI3ljIXlkKsnLCB2YWx1ZTogJ25vdENvbnRhaW5zJyB9XG4gICAqICAgXSk7XG4gICAqIH1cbiAgICogYGBgXG4gICAqXG4gICAqIEBwYXJhbSB3cml0ZVNpZ25hbCDnlKjkuo7lhpnlhaXmk43kvZznrKbpgInpobnnmoTkv6Hlj7fph4/vvIznlKjkuo7lnKjojrflj5bliLDpgInpobnlkI7mm7TmlrDmk43kvZznrKbpgInmi6nmoYbnmoTpgInpobnliJfooahcbiAgICovXG4gIGFic3RyYWN0IGdldE9wZXJhdG9yT3B0aW9ucyh3cml0ZVNpZ25hbDogV3JpdGFibGVTaWduYWw8U2VsZWN0T3B0aW9uW10+KTogdm9pZDtcblxuICAvKipcbiAgICog6I635Y+W6YC76L6R6Zeo6YCJ6aG5XG4gICAqIOmHjeWGmeaWueazleS9v+eUqOWFpeWPguS/oeWPt+eahHNldOaWueazleiuvue9rumAu+i+kemXqOmAiemhueWNs+WPr1xuICAgKiDkvovlpoLvvJpcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBnZXRMb2dpY0dhdGVzT3B0aW9ucyh3cml0ZVNpZ25hbDogV3JpdGFibGVTaWduYWw8U2VsZWN0T3B0aW9uW10+KSB7XG4gICAqICAgd3JpdGVTaWduYWwuc2V0KFtcbiAgICogICAgIHsgbGFiZWw6ICfkuJQnLCB2YWx1ZTogJ0FORCcgfSxcbiAgICogICAgIHsgbGFiZWw6ICfmiJYnLCB2YWx1ZTogJ09SJyB9LFxuICAgKiAgICAgeyBsYWJlbDogJ+mdnicsIHZhbHVlOiAnTk9UJyB9XG4gICAqICAgXSk7XG4gICAqIH1cbiAgICogYGBgXG4gICAqXG4gICAqIEBwYXJhbSB3cml0ZVNpZ25hbCDnlKjkuo7lhpnlhaXpgLvovpHpl6jpgInpobnnmoTkv6Hlj7fph4/vvIznlKjkuo7lnKjojrflj5bliLDpgInpobnlkI7mm7TmlrDpgLvovpHpl6jpgInmi6nmoYbnmoTpgInpobnliJfooahcbiAgICovXG4gIGdldExvZ2ljR2F0ZXNPcHRpb25zKHdyaXRlU2lnbmFsOiBXcml0YWJsZVNpZ25hbDxTZWxlY3RPcHRpb25bXT4pIHtcbiAgICB3cml0ZVNpZ25hbC5zZXQoW1xuICAgICAge1xuICAgICAgICBsYWJlbDogJ+S4lCcsXG4gICAgICAgIHZhbHVlOiAnQU5EJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgbGFiZWw6ICfmiJYnLFxuICAgICAgICB2YWx1ZTogJ09SJ1xuICAgICAgfVxuICAgIF0pO1xuICB9XG59XG4iXX0=
|
|
@@ -7,6 +7,85 @@ import * as i0 from "@angular/core";
|
|
|
7
7
|
/**
|
|
8
8
|
* 条件编辑器组件
|
|
9
9
|
* 用于编辑条件表达式,支持多个条件组的组合。
|
|
10
|
+
* 例如:
|
|
11
|
+
* ```typescript
|
|
12
|
+
* // 1. 首先实现 ConditionEditorRequestService
|
|
13
|
+
* @Injectable({ providedIn: 'root' })
|
|
14
|
+
* export class MyConditionRequestService extends ConditionEditorRequestService {
|
|
15
|
+
* getSelectOptions(previousValue: string[], writeSignal: WritableSignal<SelectOption[]>) {
|
|
16
|
+
* if (previousValue.length === 0) {
|
|
17
|
+
* writeSignal.set([
|
|
18
|
+
* { label: '用户', value: 'user' },
|
|
19
|
+
* { label: '订单', value: 'order' }
|
|
20
|
+
* ]);
|
|
21
|
+
* } else if (previousValue[0] === 'user') {
|
|
22
|
+
* writeSignal.set([
|
|
23
|
+
* { label: '用户名', value: 'username' },
|
|
24
|
+
* { label: '邮箱', value: 'email' }
|
|
25
|
+
* ]);
|
|
26
|
+
* }
|
|
27
|
+
* }
|
|
28
|
+
*
|
|
29
|
+
* getOperatorOptions(writeSignal: WritableSignal<SelectOption[]>) {
|
|
30
|
+
* writeSignal.set([
|
|
31
|
+
* { label: '等于', value: 'eq' },
|
|
32
|
+
* { label: '不等于', value: 'ne' },
|
|
33
|
+
* { label: '包含', value: 'contains' }
|
|
34
|
+
* ]);
|
|
35
|
+
* }
|
|
36
|
+
* }
|
|
37
|
+
*
|
|
38
|
+
* // 2. 在模块中提供服务
|
|
39
|
+
* providers: [
|
|
40
|
+
* { provide: ConditionEditorRequestServiceToken, useClass: MyConditionRequestService }
|
|
41
|
+
* ]
|
|
42
|
+
*
|
|
43
|
+
* // 3. 在父组件中使用
|
|
44
|
+
* @Component({
|
|
45
|
+
* template: `
|
|
46
|
+
* <app-condition-editor
|
|
47
|
+
* [conditionData]="conditionData"
|
|
48
|
+
* [showSelectNumber]="2"
|
|
49
|
+
* [getIconFunc]="getIconFunc"
|
|
50
|
+
* (dataChange)="onDataChange($event)">
|
|
51
|
+
* </app-condition-editor>
|
|
52
|
+
* `
|
|
53
|
+
* })
|
|
54
|
+
* export class ParentComponent {
|
|
55
|
+
* conditionData: ConditionGroup = {
|
|
56
|
+
* groupType: ConditionGroupType.AND,
|
|
57
|
+
* conditions: []
|
|
58
|
+
* };
|
|
59
|
+
*
|
|
60
|
+
* getIconFunc = (value: string) => {
|
|
61
|
+
* const iconMap: Record<string, string> = {
|
|
62
|
+
* 'user': 'icon-user',
|
|
63
|
+
* 'order': 'icon-order',
|
|
64
|
+
* 'username': 'icon-username',
|
|
65
|
+
* 'email': 'icon-email'
|
|
66
|
+
* };
|
|
67
|
+
* return iconMap[value] || 'icon-default';
|
|
68
|
+
* };
|
|
69
|
+
*
|
|
70
|
+
* onDataChange(data: ConditionGroup) {
|
|
71
|
+
* console.log('条件数据变化:', data);
|
|
72
|
+
* this.conditionData = data;
|
|
73
|
+
* }
|
|
74
|
+
*
|
|
75
|
+
* // 获取条件数据
|
|
76
|
+
* getConditions() {
|
|
77
|
+
* const editorComponent = this.conditionEditorRef;
|
|
78
|
+
* return editorComponent.getConditionData();
|
|
79
|
+
* }
|
|
80
|
+
*
|
|
81
|
+
* // 重新加载选项
|
|
82
|
+
* reloadOptions() {
|
|
83
|
+
* const editorComponent = this.conditionEditorRef;
|
|
84
|
+
* editorComponent.reloadFirstSelectOptions();
|
|
85
|
+
* editorComponent.reloadOperatorOptions();
|
|
86
|
+
* }
|
|
87
|
+
* }
|
|
88
|
+
* ```
|
|
10
89
|
*/
|
|
11
90
|
export class ConditionEditorComponent {
|
|
12
91
|
constructor() {
|
|
@@ -34,9 +113,9 @@ export class ConditionEditorComponent {
|
|
|
34
113
|
effect(() => {
|
|
35
114
|
const showSelectNumber = this.showSelectNumber();
|
|
36
115
|
if (showSelectNumber !== undefined) {
|
|
37
|
-
this.conditionEditorService.
|
|
116
|
+
this.conditionEditorService.showSelectNumber.set(showSelectNumber);
|
|
38
117
|
}
|
|
39
|
-
});
|
|
118
|
+
}, { allowSignalWrites: true });
|
|
40
119
|
effect(() => {
|
|
41
120
|
const getIconFunc = this.getIconFunc();
|
|
42
121
|
if (getIconFunc !== undefined) {
|
|
@@ -45,11 +124,11 @@ export class ConditionEditorComponent {
|
|
|
45
124
|
});
|
|
46
125
|
}
|
|
47
126
|
ngOnInit() {
|
|
48
|
-
this.conditionEditorRequestService.getOperatorOptions()
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
this.
|
|
52
|
-
this.
|
|
127
|
+
this.conditionEditorRequestService.getOperatorOptions(this.conditionEditorService.operators);
|
|
128
|
+
this.conditionEditorRequestService.getLogicGatesOptions(this.conditionEditorService.logicGates);
|
|
129
|
+
this.conditionEditorRequestService.getSelectOptions([], this.conditionEditorService.firstSelectOptions);
|
|
130
|
+
this.conditionEditorService.changeSub.subscribe(() => {
|
|
131
|
+
this.onDataChange();
|
|
53
132
|
});
|
|
54
133
|
}
|
|
55
134
|
onDataChange() {
|
|
@@ -66,23 +145,19 @@ export class ConditionEditorComponent {
|
|
|
66
145
|
* 重新加载第一个选择框的选项
|
|
67
146
|
*/
|
|
68
147
|
reloadFirstSelectOptions() {
|
|
69
|
-
this.conditionEditorRequestService.getSelectOptions([])
|
|
70
|
-
this.conditionEditorService.firstSelectOptionsSub.next(options || []);
|
|
71
|
-
});
|
|
148
|
+
this.conditionEditorRequestService.getSelectOptions([], this.conditionEditorService.firstSelectOptions);
|
|
72
149
|
}
|
|
73
150
|
/**
|
|
74
151
|
* 重新加载操作符选项
|
|
75
152
|
*/
|
|
76
153
|
reloadOperatorOptions() {
|
|
77
|
-
this.conditionEditorRequestService.getOperatorOptions()
|
|
78
|
-
this.conditionEditorService.operators = options || [];
|
|
79
|
-
});
|
|
154
|
+
this.conditionEditorRequestService.getOperatorOptions(this.conditionEditorService.operators);
|
|
80
155
|
}
|
|
81
156
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ConditionEditorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
82
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: ConditionEditorComponent, isStandalone: true, selector: "app-condition-editor", inputs: { conditionData: { classPropertyName: "conditionData", publicName: "conditionData", isSignal: true, isRequired: false, transformFunction: null }, showSelectNumber: { classPropertyName: "showSelectNumber", publicName: "showSelectNumber", isSignal: true, isRequired: false, transformFunction: null }, getIconFunc: { classPropertyName: "getIconFunc", publicName: "getIconFunc", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { dataChange: "dataChange" }, providers: [ConditionEditorService], ngImport: i0, template: "<div class=\"condition-editor\">\n <app-condition-group [showLine]=\"false\" [groupData]=\"conditionData()\"
|
|
157
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.2.14", type: ConditionEditorComponent, isStandalone: true, selector: "app-condition-editor", inputs: { conditionData: { classPropertyName: "conditionData", publicName: "conditionData", isSignal: true, isRequired: false, transformFunction: null }, showSelectNumber: { classPropertyName: "showSelectNumber", publicName: "showSelectNumber", isSignal: true, isRequired: false, transformFunction: null }, getIconFunc: { classPropertyName: "getIconFunc", publicName: "getIconFunc", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { dataChange: "dataChange" }, providers: [ConditionEditorService], ngImport: i0, template: "<div class=\"condition-editor\">\n <app-condition-group [showLine]=\"false\" [groupData]=\"conditionData()\"></app-condition-group>\n</div>\n", styles: [":host{display:block}:host .condition-editor{padding-bottom:12px}\n"], dependencies: [{ kind: "component", type: ConditionGroupComponent, selector: "app-condition-group", inputs: ["groupData", "parentData", "showLine"] }] }); }
|
|
83
158
|
}
|
|
84
159
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ConditionEditorComponent, decorators: [{
|
|
85
160
|
type: Component,
|
|
86
|
-
args: [{ selector: 'app-condition-editor', standalone: true, imports: [ConditionGroupComponent], providers: [ConditionEditorService], template: "<div class=\"condition-editor\">\n <app-condition-group [showLine]=\"false\" [groupData]=\"conditionData()\"
|
|
161
|
+
args: [{ selector: 'app-condition-editor', standalone: true, imports: [ConditionGroupComponent], providers: [ConditionEditorService], template: "<div class=\"condition-editor\">\n <app-condition-group [showLine]=\"false\" [groupData]=\"conditionData()\"></app-condition-group>\n</div>\n", styles: [":host{display:block}:host .condition-editor{padding-bottom:12px}\n"] }]
|
|
87
162
|
}], ctorParameters: () => [] });
|
|
88
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZGl0aW9uLWVkaXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb21wb25lbnRzL2NvbmRpdGlvbi1lZGl0b3IvY29uZGl0aW9uLWVkaXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb21wb25lbnRzL2NvbmRpdGlvbi1lZGl0b3IvY29uZGl0aW9uLWVkaXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFVLE1BQU0sRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFFdEcsT0FBTyxFQUFpQyxrQ0FBa0MsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3ZILE9BQU8sRUFBa0Isa0JBQWtCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM5RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQzs7QUFFdEY7OztHQUdHO0FBU0gsTUFBTSxPQUFPLHdCQUF3QjtJQXdCbkM7UUF2QmlCLGtDQUE2QixHQUFHLE1BQU0sQ0FBZ0Msa0NBQWtDLENBQUMsQ0FBQztRQUMxRywyQkFBc0IsR0FBRyxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUN6RTs7V0FFRztRQUNILGtCQUFhLEdBQUcsS0FBSyxDQUFpQjtZQUNwQyxTQUFTLEVBQUUsa0JBQWtCLENBQUMsR0FBRztZQUNqQyxVQUFVLEVBQUUsRUFBRTtTQUNmLENBQUMsQ0FBQztRQUNIOztXQUVHO1FBQ0gscUJBQWdCLEdBQUcsS0FBSyxFQUFVLENBQUM7UUFFbkM7O1dBRUc7UUFDSCxnQkFBVyxHQUFHLEtBQUssRUFBNkIsQ0FBQztRQUNqRDs7V0FFRztRQUNNLGVBQVUsR0FBRyxNQUFNLEVBQWtCLENBQUM7UUFHN0MsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNWLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDakQsSUFBSSxnQkFBZ0IsS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDbkMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQ3pFLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDVixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdkMsSUFBSSxXQUFXLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQzlCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1lBQ3hELENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLDZCQUE2QixDQUFDLGtCQUFrQixFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ3JFLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLEdBQUcsT0FBTyxJQUFJLEVBQUUsQ0FBQztRQUN4RCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDckUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLENBQUM7UUFDeEUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRDs7O09BR0c7SUFDSSxnQkFBZ0I7UUFDckIsT0FBTyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksd0JBQXdCO1FBQzdCLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDckUsSUFBSSxDQUFDLHNCQUFzQixDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLENBQUM7UUFDeEUsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxxQkFBcUI7UUFDMUIsSUFBSSxDQUFDLDZCQUE2QixDQUFDLGtCQUFrQixFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ3JFLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLEdBQUcsT0FBTyxJQUFJLEVBQUUsQ0FBQztRQUN4RCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7K0dBN0VVLHdCQUF3QjttR0FBeEIsd0JBQXdCLHlpQkFGeEIsQ0FBQyxzQkFBc0IsQ0FBQywwQkNqQnJDLGdMQUdBLDRIRFdZLHVCQUF1Qjs7NEZBS3RCLHdCQUF3QjtrQkFScEMsU0FBUzsrQkFDRSxzQkFBc0IsY0FDcEIsSUFBSSxXQUNQLENBQUMsdUJBQXVCLENBQUMsYUFHdkIsQ0FBQyxzQkFBc0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBpbnB1dCwgb3V0cHV0LCBPbkluaXQsIGVmZmVjdCwgdW50cmFja2VkLCBjb21wdXRlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBDb25kaXRpb25FZGl0b3JSZXF1ZXN0U2VydmljZSwgQ29uZGl0aW9uRWRpdG9yUmVxdWVzdFNlcnZpY2VUb2tlbiB9IGZyb20gJy4vY29uZGl0aW9uLWVkaXRvci1yZXF1ZXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29uZGl0aW9uR3JvdXAsIENvbmRpdGlvbkdyb3VwVHlwZSB9IGZyb20gJy4vY29uZGl0aW9uLWVkaXRvci5tb2RlbCc7XG5pbXBvcnQgeyBDb25kaXRpb25FZGl0b3JTZXJ2aWNlIH0gZnJvbSAnLi9jb25kaXRpb24tZWRpdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29uZGl0aW9uR3JvdXBDb21wb25lbnQgfSBmcm9tICcuL2NvbmRpdGlvbi1ncm91cC9jb25kaXRpb24tZ3JvdXAuY29tcG9uZW50JztcblxuLyoqXG4gKiDmnaHku7bnvJbovpHlmajnu4Tku7ZcbiAqIOeUqOS6jue8lui+keadoeS7tuihqOi+vuW8j++8jOaUr+aMgeWkmuS4quadoeS7tue7hOeahOe7hOWQiOOAglxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtY29uZGl0aW9uLWVkaXRvcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb25kaXRpb25Hcm91cENvbXBvbmVudF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9jb25kaXRpb24tZWRpdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2NvbmRpdGlvbi1lZGl0b3IuY29tcG9uZW50Lmxlc3MnLFxuICBwcm92aWRlcnM6IFtDb25kaXRpb25FZGl0b3JTZXJ2aWNlXVxufSlcbmV4cG9ydCBjbGFzcyBDb25kaXRpb25FZGl0b3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbmRpdGlvbkVkaXRvclJlcXVlc3RTZXJ2aWNlID0gaW5qZWN0PENvbmRpdGlvbkVkaXRvclJlcXVlc3RTZXJ2aWNlPihDb25kaXRpb25FZGl0b3JSZXF1ZXN0U2VydmljZVRva2VuKTtcbiAgcHJpdmF0ZSByZWFkb25seSBjb25kaXRpb25FZGl0b3JTZXJ2aWNlID0gaW5qZWN0KENvbmRpdGlvbkVkaXRvclNlcnZpY2UpO1xuICAvKipcbiAgICog5p2h5Lu25pWw5o2u6L6T5YWl77yM5YyF5ZCr5p2h5Lu257uE57G75Z6L5ZKM5p2h5Lu25pWw57uEXG4gICAqL1xuICBjb25kaXRpb25EYXRhID0gaW5wdXQ8Q29uZGl0aW9uR3JvdXA+KHtcbiAgICBncm91cFR5cGU6IENvbmRpdGlvbkdyb3VwVHlwZS5BTkQsXG4gICAgY29uZGl0aW9uczogW11cbiAgfSk7XG4gIC8qKlxuICAgKiDmmL7npLrpgInmi6nmoYbnmoTmlbDph4/ovpPlhaVcbiAgICovXG4gIHNob3dTZWxlY3ROdW1iZXIgPSBpbnB1dDxudW1iZXI+KCk7XG5cbiAgLyoqXG4gICAqIOWbvuagh+WHveaVsOi+k+WFpe+8jOeUqOS6juagueaNruWAvOi/lOWbnuWbvuagh+Wtl+S9k+WQjVxuICAgKi9cbiAgZ2V0SWNvbkZ1bmMgPSBpbnB1dDwodmFsdWU6IHN0cmluZykgPT4gc3RyaW5nPigpO1xuICAvKipcbiAgICog5p2h5Lu25pWw5o2u5Y+Y5YyW6L6T5Ye677yM5YyF5ZCr5pu05paw5ZCO55qE5p2h5Lu257uEXG4gICAqL1xuICByZWFkb25seSBkYXRhQ2hhbmdlID0gb3V0cHV0PENvbmRpdGlvbkdyb3VwPigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBzaG93U2VsZWN0TnVtYmVyID0gdGhpcy5zaG93U2VsZWN0TnVtYmVyKCk7XG4gICAgICBpZiAoc2hvd1NlbGVjdE51bWJlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuY29uZGl0aW9uRWRpdG9yU2VydmljZS5zaG93U2VsZWN0TnVtYmVyU3ViLm5leHQoc2hvd1NlbGVjdE51bWJlcik7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgZ2V0SWNvbkZ1bmMgPSB0aGlzLmdldEljb25GdW5jKCk7XG4gICAgICBpZiAoZ2V0SWNvbkZ1bmMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLmNvbmRpdGlvbkVkaXRvclNlcnZpY2UuZ2V0SWNvbkZ1bmMgPSBnZXRJY29uRnVuYztcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuY29uZGl0aW9uRWRpdG9yUmVxdWVzdFNlcnZpY2UuZ2V0T3BlcmF0b3JPcHRpb25zKCkudGhlbihvcHRpb25zID0+IHtcbiAgICAgIHRoaXMuY29uZGl0aW9uRWRpdG9yU2VydmljZS5vcGVyYXRvcnMgPSBvcHRpb25zIHx8IFtdO1xuICAgIH0pO1xuICAgIHRoaXMuY29uZGl0aW9uRWRpdG9yUmVxdWVzdFNlcnZpY2UuZ2V0U2VsZWN0T3B0aW9ucyhbXSkudGhlbihvcHRpb25zID0+IHtcbiAgICAgIHRoaXMuY29uZGl0aW9uRWRpdG9yU2VydmljZS5maXJzdFNlbGVjdE9wdGlvbnNTdWIubmV4dChvcHRpb25zIHx8IFtdKTtcbiAgICB9KTtcbiAgfVxuXG4gIG9uRGF0YUNoYW5nZSgpIHtcbiAgICB0aGlzLmRhdGFDaGFuZ2UuZW1pdCh0aGlzLmNvbmRpdGlvbkRhdGEoKSk7XG4gIH1cblxuICAvKipcbiAgICog6I635Y+W5b2T5YmN5p2h5Lu25pWw5o2uXG4gICAqIEByZXR1cm5zIOW9k+WJjeadoeS7tuaVsOaNrlxuICAgKi9cbiAgcHVibGljIGdldENvbmRpdGlvbkRhdGEoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29uZGl0aW9uRGF0YSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIOmHjeaWsOWKoOi9veesrOS4gOS4qumAieaLqeahhueahOmAiemhuVxuICAgKi9cbiAgcHVibGljIHJlbG9hZEZpcnN0U2VsZWN0T3B0aW9ucygpIHtcbiAgICB0aGlzLmNvbmRpdGlvbkVkaXRvclJlcXVlc3RTZXJ2aWNlLmdldFNlbGVjdE9wdGlvbnMoW10pLnRoZW4ob3B0aW9ucyA9PiB7XG4gICAgICB0aGlzLmNvbmRpdGlvbkVkaXRvclNlcnZpY2UuZmlyc3RTZWxlY3RPcHRpb25zU3ViLm5leHQob3B0aW9ucyB8fCBbXSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICog6YeN5paw5Yqg6L295pON5L2c56ym6YCJ6aG5XG4gICAqL1xuICBwdWJsaWMgcmVsb2FkT3BlcmF0b3JPcHRpb25zKCkge1xuICAgIHRoaXMuY29uZGl0aW9uRWRpdG9yUmVxdWVzdFNlcnZpY2UuZ2V0T3BlcmF0b3JPcHRpb25zKCkudGhlbihvcHRpb25zID0+IHtcbiAgICAgIHRoaXMuY29uZGl0aW9uRWRpdG9yU2VydmljZS5vcGVyYXRvcnMgPSBvcHRpb25zIHx8IFtdO1xuICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiY29uZGl0aW9uLWVkaXRvclwiPlxuICA8YXBwLWNvbmRpdGlvbi1ncm91cCBbc2hvd0xpbmVdPVwiZmFsc2VcIiBbZ3JvdXBEYXRhXT1cImNvbmRpdGlvbkRhdGEoKVwiIChkYXRhQ2hhbmdlKT1cIm9uRGF0YUNoYW5nZSgpXCI+PC9hcHAtY29uZGl0aW9uLWdyb3VwPlxuPC9kaXY+XG4iXX0=
|
|
163
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZGl0aW9uLWVkaXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9jb21wb25lbnRzL2NvbmRpdGlvbi1lZGl0b3IvY29uZGl0aW9uLWVkaXRvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9jb21wb25lbnRzL2NvbmRpdGlvbi1lZGl0b3IvY29uZGl0aW9uLWVkaXRvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFVLE1BQU0sRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFFdEcsT0FBTyxFQUFpQyxrQ0FBa0MsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3ZILE9BQU8sRUFBa0Isa0JBQWtCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM5RSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQzs7QUFFdEY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FrRkc7QUFTSCxNQUFNLE9BQU8sd0JBQXdCO0lBd0JuQztRQXZCaUIsa0NBQTZCLEdBQUcsTUFBTSxDQUFnQyxrQ0FBa0MsQ0FBQyxDQUFDO1FBQzFHLDJCQUFzQixHQUFHLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ3pFOztXQUVHO1FBQ0gsa0JBQWEsR0FBRyxLQUFLLENBQWlCO1lBQ3BDLFNBQVMsRUFBRSxrQkFBa0IsQ0FBQyxHQUFHO1lBQ2pDLFVBQVUsRUFBRSxFQUFFO1NBQ2YsQ0FBQyxDQUFDO1FBQ0g7O1dBRUc7UUFDSCxxQkFBZ0IsR0FBRyxLQUFLLEVBQVUsQ0FBQztRQUVuQzs7V0FFRztRQUNILGdCQUFXLEdBQUcsS0FBSyxFQUE2QixDQUFDO1FBQ2pEOztXQUVHO1FBQ00sZUFBVSxHQUFHLE1BQU0sRUFBa0IsQ0FBQztRQUc3QyxNQUFNLENBQ0osR0FBRyxFQUFFO1lBQ0gsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUNqRCxJQUFJLGdCQUFnQixLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUNuQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUM7WUFDckUsQ0FBQztRQUNILENBQUMsRUFDRCxFQUFFLGlCQUFpQixFQUFFLElBQUksRUFBRSxDQUM1QixDQUFDO1FBRUYsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNWLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN2QyxJQUFJLFdBQVcsS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDOUIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7WUFDeEQsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsNkJBQTZCLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzdGLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDaEcsSUFBSSxDQUFDLDZCQUE2QixDQUFDLGdCQUFnQixDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsc0JBQXNCLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUN4RyxJQUFJLENBQUMsc0JBQXNCLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDbkQsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3RCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFlBQVk7UUFDVixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksZ0JBQWdCO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRDs7T0FFRztJQUNJLHdCQUF3QjtRQUM3QixJQUFJLENBQUMsNkJBQTZCLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0lBQzFHLENBQUM7SUFFRDs7T0FFRztJQUNJLHFCQUFxQjtRQUMxQixJQUFJLENBQUMsNkJBQTZCLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQy9GLENBQUM7K0dBNUVVLHdCQUF3QjttR0FBeEIsd0JBQXdCLHlpQkFGeEIsQ0FBQyxzQkFBc0IsQ0FBQywwQkNoR3JDLGdKQUdBLDRIRDBGWSx1QkFBdUI7OzRGQUt0Qix3QkFBd0I7a0JBUnBDLFNBQVM7K0JBQ0Usc0JBQXNCLGNBQ3BCLElBQUksV0FDUCxDQUFDLHVCQUF1QixDQUFDLGFBR3ZCLENBQUMsc0JBQXNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGluamVjdCwgaW5wdXQsIG91dHB1dCwgT25Jbml0LCBlZmZlY3QsIHVudHJhY2tlZCwgY29tcHV0ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQ29uZGl0aW9uRWRpdG9yUmVxdWVzdFNlcnZpY2UsIENvbmRpdGlvbkVkaXRvclJlcXVlc3RTZXJ2aWNlVG9rZW4gfSBmcm9tICcuL2NvbmRpdGlvbi1lZGl0b3ItcmVxdWVzdC5zZXJ2aWNlJztcbmltcG9ydCB7IENvbmRpdGlvbkdyb3VwLCBDb25kaXRpb25Hcm91cFR5cGUgfSBmcm9tICcuL2NvbmRpdGlvbi1lZGl0b3IubW9kZWwnO1xuaW1wb3J0IHsgQ29uZGl0aW9uRWRpdG9yU2VydmljZSB9IGZyb20gJy4vY29uZGl0aW9uLWVkaXRvci5zZXJ2aWNlJztcbmltcG9ydCB7IENvbmRpdGlvbkdyb3VwQ29tcG9uZW50IH0gZnJvbSAnLi9jb25kaXRpb24tZ3JvdXAvY29uZGl0aW9uLWdyb3VwLmNvbXBvbmVudCc7XG5cbi8qKlxuICog5p2h5Lu257yW6L6R5Zmo57uE5Lu2XG4gKiDnlKjkuo7nvJbovpHmnaHku7booajovr7lvI/vvIzmlK/mjIHlpJrkuKrmnaHku7bnu4TnmoTnu4TlkIjjgIJcbiAqIOS+i+Wmgu+8mlxuICogYGBgdHlwZXNjcmlwdFxuICogLy8gMS4g6aaW5YWI5a6e546wIENvbmRpdGlvbkVkaXRvclJlcXVlc3RTZXJ2aWNlXG4gKiBASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuICogZXhwb3J0IGNsYXNzIE15Q29uZGl0aW9uUmVxdWVzdFNlcnZpY2UgZXh0ZW5kcyBDb25kaXRpb25FZGl0b3JSZXF1ZXN0U2VydmljZSB7XG4gKiAgIGdldFNlbGVjdE9wdGlvbnMocHJldmlvdXNWYWx1ZTogc3RyaW5nW10sIHdyaXRlU2lnbmFsOiBXcml0YWJsZVNpZ25hbDxTZWxlY3RPcHRpb25bXT4pIHtcbiAqICAgICBpZiAocHJldmlvdXNWYWx1ZS5sZW5ndGggPT09IDApIHtcbiAqICAgICAgIHdyaXRlU2lnbmFsLnNldChbXG4gKiAgICAgICAgIHsgbGFiZWw6ICfnlKjmiLcnLCB2YWx1ZTogJ3VzZXInIH0sXG4gKiAgICAgICAgIHsgbGFiZWw6ICforqLljZUnLCB2YWx1ZTogJ29yZGVyJyB9XG4gKiAgICAgICBdKTtcbiAqICAgICB9IGVsc2UgaWYgKHByZXZpb3VzVmFsdWVbMF0gPT09ICd1c2VyJykge1xuICogICAgICAgd3JpdGVTaWduYWwuc2V0KFtcbiAqICAgICAgICAgeyBsYWJlbDogJ+eUqOaIt+WQjScsIHZhbHVlOiAndXNlcm5hbWUnIH0sXG4gKiAgICAgICAgIHsgbGFiZWw6ICfpgq7nrrEnLCB2YWx1ZTogJ2VtYWlsJyB9XG4gKiAgICAgICBdKTtcbiAqICAgICB9XG4gKiAgIH1cbiAqXG4gKiAgIGdldE9wZXJhdG9yT3B0aW9ucyh3cml0ZVNpZ25hbDogV3JpdGFibGVTaWduYWw8U2VsZWN0T3B0aW9uW10+KSB7XG4gKiAgICAgd3JpdGVTaWduYWwuc2V0KFtcbiAqICAgICAgIHsgbGFiZWw6ICfnrYnkuo4nLCB2YWx1ZTogJ2VxJyB9LFxuICogICAgICAgeyBsYWJlbDogJ+S4jeetieS6jicsIHZhbHVlOiAnbmUnIH0sXG4gKiAgICAgICB7IGxhYmVsOiAn5YyF5ZCrJywgdmFsdWU6ICdjb250YWlucycgfVxuICogICAgIF0pO1xuICogICB9XG4gKiB9XG4gKlxuICogLy8gMi4g5Zyo5qih5Z2X5Lit5o+Q5L6b5pyN5YqhXG4gKiBwcm92aWRlcnM6IFtcbiAqICAgeyBwcm92aWRlOiBDb25kaXRpb25FZGl0b3JSZXF1ZXN0U2VydmljZVRva2VuLCB1c2VDbGFzczogTXlDb25kaXRpb25SZXF1ZXN0U2VydmljZSB9XG4gKiBdXG4gKlxuICogLy8gMy4g5Zyo54i257uE5Lu25Lit5L2/55SoXG4gKiBAQ29tcG9uZW50KHtcbiAqICAgdGVtcGxhdGU6IGBcbiAqICAgICA8YXBwLWNvbmRpdGlvbi1lZGl0b3JcbiAqICAgICAgIFtjb25kaXRpb25EYXRhXT1cImNvbmRpdGlvbkRhdGFcIlxuICogICAgICAgW3Nob3dTZWxlY3ROdW1iZXJdPVwiMlwiXG4gKiAgICAgICBbZ2V0SWNvbkZ1bmNdPVwiZ2V0SWNvbkZ1bmNcIlxuICogICAgICAgKGRhdGFDaGFuZ2UpPVwib25EYXRhQ2hhbmdlKCRldmVudClcIj5cbiAqICAgICA8L2FwcC1jb25kaXRpb24tZWRpdG9yPlxuICogICBgXG4gKiB9KVxuICogZXhwb3J0IGNsYXNzIFBhcmVudENvbXBvbmVudCB7XG4gKiAgIGNvbmRpdGlvbkRhdGE6IENvbmRpdGlvbkdyb3VwID0ge1xuICogICAgIGdyb3VwVHlwZTogQ29uZGl0aW9uR3JvdXBUeXBlLkFORCxcbiAqICAgICBjb25kaXRpb25zOiBbXVxuICogICB9O1xuICpcbiAqICAgZ2V0SWNvbkZ1bmMgPSAodmFsdWU6IHN0cmluZykgPT4ge1xuICogICAgIGNvbnN0IGljb25NYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gKiAgICAgICAndXNlcic6ICdpY29uLXVzZXInLFxuICogICAgICAgJ29yZGVyJzogJ2ljb24tb3JkZXInLFxuICogICAgICAgJ3VzZXJuYW1lJzogJ2ljb24tdXNlcm5hbWUnLFxuICogICAgICAgJ2VtYWlsJzogJ2ljb24tZW1haWwnXG4gKiAgICAgfTtcbiAqICAgICByZXR1cm4gaWNvbk1hcFt2YWx1ZV0gfHwgJ2ljb24tZGVmYXVsdCc7XG4gKiAgIH07XG4gKlxuICogICBvbkRhdGFDaGFuZ2UoZGF0YTogQ29uZGl0aW9uR3JvdXApIHtcbiAqICAgICBjb25zb2xlLmxvZygn5p2h5Lu25pWw5o2u5Y+Y5YyWOicsIGRhdGEpO1xuICogICAgIHRoaXMuY29uZGl0aW9uRGF0YSA9IGRhdGE7XG4gKiAgIH1cbiAqXG4gKiAgIC8vIOiOt+WPluadoeS7tuaVsOaNrlxuICogICBnZXRDb25kaXRpb25zKCkge1xuICogICAgIGNvbnN0IGVkaXRvckNvbXBvbmVudCA9IHRoaXMuY29uZGl0aW9uRWRpdG9yUmVmO1xuICogICAgIHJldHVybiBlZGl0b3JDb21wb25lbnQuZ2V0Q29uZGl0aW9uRGF0YSgpO1xuICogICB9XG4gKlxuICogICAvLyDph43mlrDliqDovb3pgInpoblcbiAqICAgcmVsb2FkT3B0aW9ucygpIHtcbiAqICAgICBjb25zdCBlZGl0b3JDb21wb25lbnQgPSB0aGlzLmNvbmRpdGlvbkVkaXRvclJlZjtcbiAqICAgICBlZGl0b3JDb21wb25lbnQucmVsb2FkRmlyc3RTZWxlY3RPcHRpb25zKCk7XG4gKiAgICAgZWRpdG9yQ29tcG9uZW50LnJlbG9hZE9wZXJhdG9yT3B0aW9ucygpO1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWNvbmRpdGlvbi1lZGl0b3InLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29uZGl0aW9uR3JvdXBDb21wb25lbnRdLFxuICB0ZW1wbGF0ZVVybDogJy4vY29uZGl0aW9uLWVkaXRvci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9jb25kaXRpb24tZWRpdG9yLmNvbXBvbmVudC5sZXNzJyxcbiAgcHJvdmlkZXJzOiBbQ29uZGl0aW9uRWRpdG9yU2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgQ29uZGl0aW9uRWRpdG9yQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHJpdmF0ZSByZWFkb25seSBjb25kaXRpb25FZGl0b3JSZXF1ZXN0U2VydmljZSA9IGluamVjdDxDb25kaXRpb25FZGl0b3JSZXF1ZXN0U2VydmljZT4oQ29uZGl0aW9uRWRpdG9yUmVxdWVzdFNlcnZpY2VUb2tlbik7XG4gIHByaXZhdGUgcmVhZG9ubHkgY29uZGl0aW9uRWRpdG9yU2VydmljZSA9IGluamVjdChDb25kaXRpb25FZGl0b3JTZXJ2aWNlKTtcbiAgLyoqXG4gICAqIOadoeS7tuaVsOaNrui+k+WFpe+8jOWMheWQq+adoeS7tue7hOexu+Wei+WSjOadoeS7tuaVsOe7hFxuICAgKi9cbiAgY29uZGl0aW9uRGF0YSA9IGlucHV0PENvbmRpdGlvbkdyb3VwPih7XG4gICAgZ3JvdXBUeXBlOiBDb25kaXRpb25Hcm91cFR5cGUuQU5ELFxuICAgIGNvbmRpdGlvbnM6IFtdXG4gIH0pO1xuICAvKipcbiAgICog5pi+56S66YCJ5oup5qGG55qE5pWw6YeP6L6T5YWlXG4gICAqL1xuICBzaG93U2VsZWN0TnVtYmVyID0gaW5wdXQ8bnVtYmVyPigpO1xuXG4gIC8qKlxuICAgKiDlm77moIflh73mlbDovpPlhaXvvIznlKjkuo7moLnmja7lgLzov5Tlm57lm77moIflrZfkvZPlkI1cbiAgICovXG4gIGdldEljb25GdW5jID0gaW5wdXQ8KHZhbHVlOiBzdHJpbmcpID0+IHN0cmluZz4oKTtcbiAgLyoqXG4gICAqIOadoeS7tuaVsOaNruWPmOWMlui+k+WHuu+8jOWMheWQq+abtOaWsOWQjueahOadoeS7tue7hFxuICAgKi9cbiAgcmVhZG9ubHkgZGF0YUNoYW5nZSA9IG91dHB1dDxDb25kaXRpb25Hcm91cD4oKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBlZmZlY3QoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHNob3dTZWxlY3ROdW1iZXIgPSB0aGlzLnNob3dTZWxlY3ROdW1iZXIoKTtcbiAgICAgICAgaWYgKHNob3dTZWxlY3ROdW1iZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRoaXMuY29uZGl0aW9uRWRpdG9yU2VydmljZS5zaG93U2VsZWN0TnVtYmVyLnNldChzaG93U2VsZWN0TnVtYmVyKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfVxuICAgICk7XG5cbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgZ2V0SWNvbkZ1bmMgPSB0aGlzLmdldEljb25GdW5jKCk7XG4gICAgICBpZiAoZ2V0SWNvbkZ1bmMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLmNvbmRpdGlvbkVkaXRvclNlcnZpY2UuZ2V0SWNvbkZ1bmMgPSBnZXRJY29uRnVuYztcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuY29uZGl0aW9uRWRpdG9yUmVxdWVzdFNlcnZpY2UuZ2V0T3BlcmF0b3JPcHRpb25zKHRoaXMuY29uZGl0aW9uRWRpdG9yU2VydmljZS5vcGVyYXRvcnMpO1xuICAgIHRoaXMuY29uZGl0aW9uRWRpdG9yUmVxdWVzdFNlcnZpY2UuZ2V0TG9naWNHYXRlc09wdGlvbnModGhpcy5jb25kaXRpb25FZGl0b3JTZXJ2aWNlLmxvZ2ljR2F0ZXMpO1xuICAgIHRoaXMuY29uZGl0aW9uRWRpdG9yUmVxdWVzdFNlcnZpY2UuZ2V0U2VsZWN0T3B0aW9ucyhbXSwgdGhpcy5jb25kaXRpb25FZGl0b3JTZXJ2aWNlLmZpcnN0U2VsZWN0T3B0aW9ucyk7XG4gICAgdGhpcy5jb25kaXRpb25FZGl0b3JTZXJ2aWNlLmNoYW5nZVN1Yi5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5vbkRhdGFDaGFuZ2UoKTtcbiAgICB9KTtcbiAgfVxuXG4gIG9uRGF0YUNoYW5nZSgpIHtcbiAgICB0aGlzLmRhdGFDaGFuZ2UuZW1pdCh0aGlzLmNvbmRpdGlvbkRhdGEoKSk7XG4gIH1cblxuICAvKipcbiAgICog6I635Y+W5b2T5YmN5p2h5Lu25pWw5o2uXG4gICAqIEByZXR1cm5zIOW9k+WJjeadoeS7tuaVsOaNrlxuICAgKi9cbiAgcHVibGljIGdldENvbmRpdGlvbkRhdGEoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29uZGl0aW9uRGF0YSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIOmHjeaWsOWKoOi9veesrOS4gOS4qumAieaLqeahhueahOmAiemhuVxuICAgKi9cbiAgcHVibGljIHJlbG9hZEZpcnN0U2VsZWN0T3B0aW9ucygpIHtcbiAgICB0aGlzLmNvbmRpdGlvbkVkaXRvclJlcXVlc3RTZXJ2aWNlLmdldFNlbGVjdE9wdGlvbnMoW10sIHRoaXMuY29uZGl0aW9uRWRpdG9yU2VydmljZS5maXJzdFNlbGVjdE9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIOmHjeaWsOWKoOi9veaTjeS9nOespumAiemhuVxuICAgKi9cbiAgcHVibGljIHJlbG9hZE9wZXJhdG9yT3B0aW9ucygpIHtcbiAgICB0aGlzLmNvbmRpdGlvbkVkaXRvclJlcXVlc3RTZXJ2aWNlLmdldE9wZXJhdG9yT3B0aW9ucyh0aGlzLmNvbmRpdGlvbkVkaXRvclNlcnZpY2Uub3BlcmF0b3JzKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImNvbmRpdGlvbi1lZGl0b3JcIj5cbiAgPGFwcC1jb25kaXRpb24tZ3JvdXAgW3Nob3dMaW5lXT1cImZhbHNlXCIgW2dyb3VwRGF0YV09XCJjb25kaXRpb25EYXRhKClcIj48L2FwcC1jb25kaXRpb24tZ3JvdXA+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -3,4 +3,4 @@ export var ConditionGroupType;
|
|
|
3
3
|
ConditionGroupType["AND"] = "AND";
|
|
4
4
|
ConditionGroupType["OR"] = "OR";
|
|
5
5
|
})(ConditionGroupType || (ConditionGroupType = {}));
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZGl0aW9uLWVkaXRvci5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvbXBvbmVudHMvY29uZGl0aW9uLWVkaXRvci9jb25kaXRpb24tZWRpdG9yLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLGtCQUdYO0FBSEQsV0FBWSxrQkFBa0I7SUFDNUIsaUNBQVcsQ0FBQTtJQUNYLCtCQUFTLENBQUE7QUFDWCxDQUFDLEVBSFcsa0JBQWtCLEtBQWxCLGtCQUFrQixRQUc3QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIENvbmRpdGlvbkdyb3VwVHlwZSB7XG4gIEFORCA9ICdBTkQnLFxuICBPUiA9ICdPUidcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb25kaXRpb25Hcm91cCB7XG4gIGdyb3VwVHlwZTogQ29uZGl0aW9uR3JvdXBUeXBlO1xuICBjb25kaXRpb25zOiBBcnJheTxDb25kaXRpb24gfCBDb25kaXRpb25Hcm91cD47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29uZGl0aW9uIHtcbiAga2V5czogQXJyYXk8eyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH0+
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZGl0aW9uLWVkaXRvci5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvbXBvbmVudHMvY29uZGl0aW9uLWVkaXRvci9jb25kaXRpb24tZWRpdG9yLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLGtCQUdYO0FBSEQsV0FBWSxrQkFBa0I7SUFDNUIsaUNBQVcsQ0FBQTtJQUNYLCtCQUFTLENBQUE7QUFDWCxDQUFDLEVBSFcsa0JBQWtCLEtBQWxCLGtCQUFrQixRQUc3QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIENvbmRpdGlvbkdyb3VwVHlwZSB7XG4gIEFORCA9ICdBTkQnLFxuICBPUiA9ICdPUidcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb25kaXRpb25Hcm91cCB7XG4gIGdyb3VwVHlwZTogQ29uZGl0aW9uR3JvdXBUeXBlO1xuICBjb25kaXRpb25zOiBBcnJheTxDb25kaXRpb24gfCBDb25kaXRpb25Hcm91cD47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29uZGl0aW9uIHtcbiAga2V5czogQXJyYXk8eyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH0+O1xuICBvcGVyYXRvcjogc3RyaW5nO1xuICB2YWx1ZTogYW55O1xufVxuXG4vKipcbiAqIOmAieaLqeahhumAiemhuVxuICog55So5LqO5p2h5Lu257yW6L6R5Zmo5Lit55qE6YCJ5oup5qGGXG4gKiDkvovlpoLvvJpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIHsgbGFiZWw6ICfnlKjmiLcnLCB2YWx1ZTogJ3VzZXInLCBmaWVsZFR5cGU6ICd1c2VyJyB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZWxlY3RPcHRpb24ge1xuICBsYWJlbDogc3RyaW5nO1xuICB2YWx1ZTogc3RyaW5nO1xuICBmaWVsZFR5cGU/OiBzdHJpbmc7XG59XG4iXX0=
|
|
@@ -1,11 +1,13 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import {
|
|
1
|
+
import { Injectable, signal } from '@angular/core';
|
|
2
|
+
import { Subject } from 'rxjs';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
export class ConditionEditorService {
|
|
5
5
|
constructor() {
|
|
6
|
-
this.operators = [];
|
|
7
|
-
this.
|
|
8
|
-
this.
|
|
6
|
+
this.operators = signal([]);
|
|
7
|
+
this.firstSelectOptions = signal([]);
|
|
8
|
+
this.showSelectNumber = signal(1);
|
|
9
|
+
this.logicGates = signal([]);
|
|
10
|
+
this.changeSub = new Subject();
|
|
9
11
|
}
|
|
10
12
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ConditionEditorService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
11
13
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ConditionEditorService }); }
|
|
@@ -13,4 +15,4 @@ export class ConditionEditorService {
|
|
|
13
15
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ConditionEditorService, decorators: [{
|
|
14
16
|
type: Injectable
|
|
15
17
|
}] });
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZGl0aW9uLWVkaXRvci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vY29tcG9uZW50cy9jb25kaXRpb24tZWRpdG9yL2NvbmRpdGlvbi1lZGl0b3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBa0IsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFtQixPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBS2hELE1BQU0sT0FBTyxzQkFBc0I7SUFEbkM7UUFFRSxjQUFTLEdBQW1DLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUV2RCx1QkFBa0IsR0FBbUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRWhFLHFCQUFnQixHQUEyQixNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFckQsZUFBVSxHQUFtQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFeEQsY0FBUyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7S0FHakM7K0dBWlksc0JBQXNCO21IQUF0QixzQkFBc0I7OzRGQUF0QixzQkFBc0I7a0JBRGxDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBzaWduYWwsIFdyaXRhYmxlU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgU2VsZWN0T3B0aW9uIH0gZnJvbSAnLi9jb25kaXRpb24tZWRpdG9yLm1vZGVsJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIENvbmRpdGlvbkVkaXRvclNlcnZpY2Uge1xuICBvcGVyYXRvcnM6IFdyaXRhYmxlU2lnbmFsPFNlbGVjdE9wdGlvbltdPiA9IHNpZ25hbChbXSk7XG5cbiAgZmlyc3RTZWxlY3RPcHRpb25zOiBXcml0YWJsZVNpZ25hbDxTZWxlY3RPcHRpb25bXT4gPSBzaWduYWwoW10pO1xuXG4gIHNob3dTZWxlY3ROdW1iZXI6IFdyaXRhYmxlU2lnbmFsPG51bWJlcj4gPSBzaWduYWwoMSk7XG5cbiAgbG9naWNHYXRlczogV3JpdGFibGVTaWduYWw8U2VsZWN0T3B0aW9uW10+ID0gc2lnbmFsKFtdKTtcblxuICBjaGFuZ2VTdWIgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGdldEljb25GdW5jPzogKHZhbHVlOiBzdHJpbmcpID0+IHN0cmluZztcbn1cbiJdfQ==
|