@progressio_resources/gravity-design-system 3.1.8 → 3.1.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/esm2022/lib/components/gravity-tree-view/service/tree-service.mjs +53 -37
- package/fesm2022/progressio_resources-gravity-design-system.mjs +52 -36
- package/fesm2022/progressio_resources-gravity-design-system.mjs.map +1 -1
- package/lib/components/gravity-tree-view/service/tree-service.d.ts +1 -2
- package/package.json +1 -1
|
@@ -71,7 +71,11 @@ export class TreeService {
|
|
|
71
71
|
return;
|
|
72
72
|
}
|
|
73
73
|
if (state.selectedState === NodeSelectedState.unChecked) {
|
|
74
|
-
|
|
74
|
+
state.selectedState = NodeSelectedState.checked;
|
|
75
|
+
state.selected = true;
|
|
76
|
+
if (state.showCheckbox) {
|
|
77
|
+
this.addSelected(state);
|
|
78
|
+
}
|
|
75
79
|
}
|
|
76
80
|
else if (state.selectedState === NodeSelectedState.checked) {
|
|
77
81
|
this.setUnchecked(state, true, ignoreDisabled);
|
|
@@ -81,41 +85,33 @@ export class TreeService {
|
|
|
81
85
|
this.setUnchecked(state, true, ignoreDisabled);
|
|
82
86
|
}
|
|
83
87
|
else {
|
|
84
|
-
|
|
88
|
+
state.selectedState = NodeSelectedState.checked;
|
|
89
|
+
state.selected = true;
|
|
90
|
+
if (state.showCheckbox) {
|
|
91
|
+
this.addSelected(state);
|
|
92
|
+
}
|
|
85
93
|
}
|
|
86
94
|
}
|
|
87
95
|
if (state.parent) {
|
|
88
96
|
this.childStateChanged(state.parent);
|
|
89
97
|
}
|
|
90
|
-
|
|
91
|
-
setChecked(state, propagate, ignoreDisabled) {
|
|
92
|
-
if (state.disabled && !ignoreDisabled) {
|
|
93
|
-
return;
|
|
94
|
-
}
|
|
95
|
-
state.selectedState = NodeSelectedState.checked;
|
|
96
|
-
state.selected = true;
|
|
97
|
-
if (TreeService.hasNoChildren(state)) {
|
|
98
|
-
this.addSelected(state);
|
|
99
|
-
}
|
|
100
|
-
else if (propagate) {
|
|
101
|
-
for (const child of state.children) {
|
|
102
|
-
this.setChecked(child, propagate, ignoreDisabled);
|
|
103
|
-
}
|
|
104
|
-
}
|
|
98
|
+
this.selectedItemsSubject.next(this.selectedItems);
|
|
105
99
|
}
|
|
106
100
|
setUnchecked(state, propagate, ignoreDisabled) {
|
|
107
101
|
if (state.disabled && !ignoreDisabled) {
|
|
108
102
|
return;
|
|
109
103
|
}
|
|
110
|
-
state.
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
this.callbacks
|
|
104
|
+
if (state.showCheckbox) {
|
|
105
|
+
state.selectedState = NodeSelectedState.unChecked;
|
|
106
|
+
state.selected = false;
|
|
107
|
+
if (TreeService.hasNoChildren(state)) {
|
|
108
|
+
this.removeSelected(state.nodeItem.item);
|
|
109
|
+
if (this.callbacks?.unSelect) {
|
|
110
|
+
this.callbacks.unSelect(state.nodeItem);
|
|
111
|
+
}
|
|
116
112
|
}
|
|
117
113
|
}
|
|
118
|
-
|
|
114
|
+
if (propagate) {
|
|
119
115
|
for (const child of state.children) {
|
|
120
116
|
this.setUnchecked(child, propagate, ignoreDisabled);
|
|
121
117
|
}
|
|
@@ -128,17 +124,31 @@ export class TreeService {
|
|
|
128
124
|
let index = this.selectedItems.indexOf(item);
|
|
129
125
|
if (index !== -1) {
|
|
130
126
|
this.selectedItems.splice(index, 1);
|
|
127
|
+
this.selectedItemsSubject.next(this.selectedItems);
|
|
131
128
|
}
|
|
132
129
|
}
|
|
133
130
|
static hasNoChildren(state) {
|
|
134
131
|
return !state.children || state.children.length === 0;
|
|
135
132
|
}
|
|
136
133
|
addSelected(state) {
|
|
137
|
-
|
|
138
|
-
this.
|
|
139
|
-
|
|
140
|
-
this.
|
|
134
|
+
// Add the current node to selectedItems
|
|
135
|
+
if (this.selectedItems.indexOf(state.nodeItem.item) === -1) {
|
|
136
|
+
this.selectedItems.push(state.nodeItem.item);
|
|
137
|
+
this.selectedStates.push(state);
|
|
138
|
+
if (this.callbacks?.select) {
|
|
139
|
+
this.callbacks.select(state.nodeItem);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
// Add all ancestors (parent, grandparent, etc.) to selectedItems
|
|
143
|
+
let current = state.parent;
|
|
144
|
+
while (current) {
|
|
145
|
+
if (this.selectedItems.indexOf(current.nodeItem.item) === -1) {
|
|
146
|
+
this.selectedItems.push(current.nodeItem.item);
|
|
147
|
+
this.selectedStates.push(current);
|
|
148
|
+
}
|
|
149
|
+
current = current.parent;
|
|
141
150
|
}
|
|
151
|
+
this.selectedItemsSubject.next(this.selectedItems);
|
|
142
152
|
}
|
|
143
153
|
reEvaluateSelectedState(state) {
|
|
144
154
|
if (!TreeService.hasNoChildren(state)) {
|
|
@@ -150,26 +160,32 @@ export class TreeService {
|
|
|
150
160
|
}
|
|
151
161
|
childStateChanged(state) {
|
|
152
162
|
if (this.anyChildSelected(state)) {
|
|
153
|
-
if (state.nodeItem.id != '0') {
|
|
154
|
-
let itemIndex = this.selectedItems.indexOf(state.nodeItem.item);
|
|
155
|
-
if (itemIndex === -1) {
|
|
156
|
-
this.selectedItems.push(state.nodeItem.item);
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
163
|
if (this.allChildrenSelected(state)) {
|
|
160
|
-
|
|
164
|
+
if (state.showCheckbox) {
|
|
165
|
+
state.selectedState = NodeSelectedState.checked;
|
|
166
|
+
state.selected = true;
|
|
167
|
+
if (state.nodeItem.id !== '0' && this.selectedItems.indexOf(state.nodeItem.item) === -1) {
|
|
168
|
+
this.selectedItems.push(state.nodeItem.item);
|
|
169
|
+
this.selectedStates.push(state);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
state.selectedState = NodeSelectedState.indeterminate;
|
|
174
|
+
state.selected = false;
|
|
175
|
+
}
|
|
161
176
|
}
|
|
162
177
|
else {
|
|
163
178
|
state.selectedState = NodeSelectedState.indeterminate;
|
|
164
179
|
state.selected = false;
|
|
165
180
|
}
|
|
166
181
|
}
|
|
167
|
-
else {
|
|
182
|
+
else if (!state.selected) {
|
|
168
183
|
this.setUnchecked(state, false);
|
|
169
184
|
}
|
|
170
185
|
if (state.parent) {
|
|
171
186
|
this.childStateChanged(state.parent);
|
|
172
187
|
}
|
|
188
|
+
this.selectedItemsSubject.next(this.selectedItems);
|
|
173
189
|
}
|
|
174
190
|
anyChildSelected(state) {
|
|
175
191
|
return state.children.find((item) => item.selectedState === NodeSelectedState.checked || item.selectedState === NodeSelectedState.indeterminate) != null;
|
|
@@ -215,4 +231,4 @@ export class TreeService {
|
|
|
215
231
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TreeService, decorators: [{
|
|
216
232
|
type: Injectable
|
|
217
233
|
}], ctorParameters: function () { return []; } });
|
|
218
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ3Jhdml0eS1kZXNpZ24tc3lzdGVtL3NyYy9saWIvY29tcG9uZW50cy9ncmF2aXR5LXRyZWUtdmlldy9zZXJ2aWNlL3RyZWUtc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ3BELE9BQU8sRUFBQyxlQUFlLEVBQTJCLE1BQU0sTUFBTSxDQUFDO0FBQy9ELE9BQU8sRUFBQyxZQUFZLEVBQUUsb0JBQW9CLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUdsRSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQzs7QUFJaEUsTUFBTSxPQUFPLFdBQVc7SUFhdEI7UUFUTyxnQkFBVyxHQUFXLEVBQUUsQ0FBQztRQUV6QixrQkFBYSxHQUFVLEVBQUUsQ0FBQztRQUd6Qix3QkFBbUIsR0FBRyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDNUQseUJBQW9CLEdBQUcsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQy9ELG1CQUFjLEdBQWdCLEVBQUUsQ0FBQztRQUd2QyxJQUFJLENBQUMsK0JBQStCLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQUUsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDN0gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN4RCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLCtCQUErQixDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JELENB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O2dCQUN0RSxNQUFNLEdBQUcsSUFBSSxDQUFDO2FBQ2Y7U0FDRjtRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxhQUFhLENBQUMsS0FBYTtRQUNoQyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztRQUN6QixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7K0dBeFBVLFdBQVc7bUhBQVgsV0FBVzs7NEZBQVgsV0FBVztrQkFEdkIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZSwgT25EZXN0cm95fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge05vZGVJdGVtfSBmcm9tICcuLi9tb2RlbHMvbm9kZS1pdGVtJztcbmltcG9ydCB7Tm9kZVN0YXRlfSBmcm9tICcuLi9tb2RlbHMvbm9kZS1zdGF0ZSc7XG5pbXBvcnQge05vZGVTZWxlY3RlZFN0YXRlfSBmcm9tICcuLi9tb2RlbHMvbm9kZS1zZWxlY3RlZC1zdGF0ZSc7XG5pbXBvcnQge1RyZWVDYWxsYmFja3N9IGZyb20gJy4uL21vZGVscy90cmVlLWNhbGxiYWNrcyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBUcmVlU2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgZmlsdGVyQ2hhbmdlU3ViamVjdFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gIHB1YmxpYyBjYWxsYmFja3M6IFRyZWVDYWxsYmFja3M7XG4gIHB1YmxpYyBmaWx0ZXJWYWx1ZTogc3RyaW5nID0gJyc7XG4gIHB1YmxpYyBub2RlSXRlbXM6IE5vZGVJdGVtPGFueT5bXTtcbiAgcHVibGljIHNlbGVjdGVkSXRlbXM6IGFueVtdID0gW107XG4gIHB1YmxpYyB0cmVlU3RhdGU6IE5vZGVTdGF0ZVtdO1xuXG4gIHByaXZhdGUgZmlsdGVyQ2hhbmdlU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3QodGhpcy5maWx0ZXJWYWx1ZSk7XG4gIHByaXZhdGUgc2VsZWN0ZWRJdGVtc1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHRoaXMuc2VsZWN0ZWRJdGVtcyk7XG4gIHByaXZhdGUgc2VsZWN0ZWRTdGF0ZXM6IE5vZGVTdGF0ZVtdID0gW107XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5maWx0ZXJDaGFuZ2VTdWJqZWN0U3Vic2NyaXB0aW9uID0gdGhpcy5maWx0ZXJDaGFuZ2VTdWJqZWN0LnBpcGUoZGVib3VuY2VUaW1lKDMwMCksIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmZpbHRlclRyYXZlcnNlKHRoaXMudHJlZVN0YXRlLCB0aGlzLmZpbHRlclZhbHVlKTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZmlsdGVyQ2hhbmdlU3ViamVjdFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIGNvbm5lY3QoKTogT2JzZXJ2YWJsZTxhbnlbXT4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkSXRlbXNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIHNldEluaXRpYWxTdGF0ZSgpOiB2b2lkIHtcbiAgICB0aGlzLnNldEluaXRpYWxTZWxlY3RlZFN0YXRlKHRoaXMudHJlZVN0YXRlKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0SW5pdGlhbFNlbGVjdGVkU3RhdGUobm9kZVN0YXRlczogTm9kZVN0YXRlW10pOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IHN0YXRlIG9mIG5vZGVTdGF0ZXMpIHtcbiAgICAgIGlmIChzdGF0ZS5ub2RlSXRlbS5zZWxlY3RlZCAmJiAoIXN0YXRlLmNoaWxkcmVuIHx8IHN0YXRlLmNoaWxkcmVuLmxlbmd0aCA9PT0gMCkpIHtcbiAgICAgICAgdGhpcy50b2dnbGVTZWxlY3RlZFN0YXRlKHN0YXRlLCB0cnVlKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5zZXRJbml0aWFsU2VsZWN0ZWRTdGF0ZShzdGF0ZS5jaGlsZHJlbik7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNsZWFyKCk6IHZvaWQge1xuICAgIGZvciAobGV0IHN0YXRlIG9mIHRoaXMuc2VsZWN0ZWRTdGF0ZXMpIHtcbiAgICAgIHN0YXRlLnNlbGVjdGVkID0gZmFsc2U7XG4gICAgICBzdGF0ZS5zZWxlY3RlZFN0YXRlID0gTm9kZVNlbGVjdGVkU3RhdGUudW5DaGVja2VkO1xuICAgIH1cblxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5sZW5ndGggPSAwO1xuICAgIHRoaXMuc2VsZWN0ZWRTdGF0ZXMubGVuZ3RoID0gMDtcbiAgfVxuXG4gIHByaXZhdGUgZmlsdGVyVHJhdmVyc2Uoc3RhdGVzOiBOb2RlU3RhdGVbXSwgZmlsdGVyOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBsZXQgcmVzdWx0czogYm9vbGVhbltdID0gW107XG5cbiAgICBmb3IgKGxldCBzdGF0ZSBvZiBzdGF0ZXMpIHtcbiAgICAgIGlmIChzdGF0ZS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgIHN0YXRlLmhhc0ZpbHRlcmVkQ2hpbGRyZW4gPSBmYWxzZTtcbiAgICAgICAgc3RhdGUuaGFzRmlsdGVyZWRDaGlsZHJlbiA9IHRoaXMuZmlsdGVyVHJhdmVyc2Uoc3RhdGUuY2hpbGRyZW4sIGZpbHRlcik7XG5cbiAgICAgICAgaWYgKHRoaXMuYXBwbHlGaWx0ZXIoc3RhdGUsIGZpbHRlcikpIHtcbiAgICAgICAgICBzdGF0ZS5oYXNGaWx0ZXJlZENoaWxkcmVuID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlc3VsdHMucHVzaChzdGF0ZS5oYXNGaWx0ZXJlZENoaWxkcmVuKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0cy5zb21lKChpdGVtOiBib29sZWFuKSA9PiBpdGVtKTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlGaWx0ZXIoc3RhdGU6IE5vZGVTdGF0ZSwgZmlsdGVyOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBzdGF0ZS5maWx0ZXJlZENoaWxkcmVuID0gdGhpcy5maWx0ZXIoc3RhdGUuY2hpbGRyZW4sIGZpbHRlcik7XG4gICAgcmV0dXJuIHN0YXRlLmZpbHRlcmVkQ2hpbGRyZW4ubGVuZ3RoID4gMDtcbiAgfVxuXG4gIHByaXZhdGUgZmlsdGVyKHN0YXRlczogTm9kZVN0YXRlW10sIHZhbHVlOiBzdHJpbmcpOiBOb2RlU3RhdGVbXSB7XG4gICAgcmV0dXJuIHN0YXRlcy5maWx0ZXIoKG5vZGVTdGF0ZTogTm9kZVN0YXRlKSA9PiBub2RlU3RhdGUuaGFzRmlsdGVyZWRDaGlsZHJlbiB8fCB2YWx1ZSA9PT0gJycgfHwgbm9kZVN0YXRlLm5vZGVJdGVtLm5hbWUudG9Mb3dlckNhc2UoKS5pbmRleE9mKHZhbHVlKSAhPT0gLTEpO1xuICB9XG5cbiAgcHVibGljIGNoZWNrYm94Q2xpY2soc3RhdGU6IE5vZGVTdGF0ZSk6IHZvaWQge1xuICAgIHRoaXMudG9nZ2xlU2VsZWN0ZWRTdGF0ZShzdGF0ZSwgZmFsc2UpO1xuXG4gICAgaWYgKHRoaXMuY2FsbGJhY2tzPy50b2dnbGUpIHtcbiAgICAgIHRoaXMuY2FsbGJhY2tzLnRvZ2dsZShzdGF0ZS5ub2RlSXRlbSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB0b2dnbGVTZWxlY3RlZFN0YXRlKHN0YXRlOiBOb2RlU3RhdGUsIGlnbm9yZURpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKHN0YXRlLmRpc2FibGVkICYmICFpZ25vcmVEaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChzdGF0ZS5zZWxlY3RlZFN0YXRlID09PSBOb2RlU2VsZWN0ZWRTdGF0ZS51bkNoZWNrZWQpIHtcbiAgICAgIHRoaXMuc2V0Q2hlY2tlZChzdGF0ZSwgdHJ1ZSwgaWdub3JlRGlzYWJsZWQpO1xuICAgIH0gZWxzZSBpZiAoc3RhdGUuc2VsZWN0ZWRTdGF0ZSA9PT0gTm9kZVNlbGVjdGVkU3RhdGUuY2hlY2tlZCkge1xuICAgICAgdGhpcy5zZXRVbmNoZWNrZWQoc3RhdGUsIHRydWUsIGlnbm9yZURpc2FibGVkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuYW55QWN0aXZlU2VsZWN0ZWQoc3RhdGUpICYmICFzdGF0ZS5zZWxlY3RlZCkge1xuICAgICAgICB0aGlzLnNldFVuY2hlY2tlZChzdGF0ZSwgdHJ1ZSwgaWdub3JlRGlzYWJsZWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZXRDaGVja2VkKHN0YXRlLCB0cnVlLCBpZ25vcmVEaXNhYmxlZCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHN0YXRlLnBhcmVudCkge1xuICAgICAgdGhpcy5jaGlsZFN0YXRlQ2hhbmdlZChzdGF0ZS5wYXJlbnQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0Q2hlY2tlZChzdGF0ZTogTm9kZVN0YXRlLCBwcm9wYWdhdGU6IGJvb2xlYW4sIGlnbm9yZURpc2FibGVkPzogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmIChzdGF0ZS5kaXNhYmxlZCAmJiAhaWdub3JlRGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzdGF0ZS5zZWxlY3RlZFN0YXRlID0gTm9kZVNlbGVjdGVkU3RhdGUuY2hlY2tlZDtcbiAgICBzdGF0ZS5zZWxlY3RlZCA9IHRydWU7XG5cbiAgICBpZiAoVHJlZVNlcnZpY2UuaGFzTm9DaGlsZHJlbihzdGF0ZSkpIHtcbiAgICAgIHRoaXMuYWRkU2VsZWN0ZWQoc3RhdGUpO1xuICAgIH0gZWxzZSBpZiAocHJvcGFnYXRlKSB7XG4gICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIHN0YXRlLmNoaWxkcmVuKSB7XG4gICAgICAgIHRoaXMuc2V0Q2hlY2tlZChjaGlsZCwgcHJvcGFnYXRlLCBpZ25vcmVEaXNhYmxlZCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRVbmNoZWNrZWQoc3RhdGU6IE5vZGVTdGF0ZSwgcHJvcGFnYXRlOiBib29sZWFuLCBpZ25vcmVEaXNhYmxlZD86IGJvb2xlYW4pIHtcbiAgICBpZiAoc3RhdGUuZGlzYWJsZWQgJiYgIWlnbm9yZURpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc3RhdGUuc2VsZWN0ZWRTdGF0ZSA9IE5vZGVTZWxlY3RlZFN0YXRlLnVuQ2hlY2tlZDtcbiAgICBzdGF0ZS5zZWxlY3RlZCA9IGZhbHNlO1xuXG4gICAgaWYgKFRyZWVTZXJ2aWNlLmhhc05vQ2hpbGRyZW4oc3RhdGUpKSB7XG4gICAgICB0aGlzLnJlbW92ZVNlbGVjdGVkKHN0YXRlLm5vZGVJdGVtLml0ZW0pO1xuXG4gICAgICBpZiAodGhpcy5jYWxsYmFja3M/LnVuU2VsZWN0KSB7XG4gICAgICAgIHRoaXMuY2FsbGJhY2tzLnVuU2VsZWN0KHN0YXRlLm5vZGVJdGVtKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHByb3BhZ2F0ZSkge1xuICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBzdGF0ZS5jaGlsZHJlbikge1xuICAgICAgICB0aGlzLnNldFVuY2hlY2tlZChjaGlsZCwgcHJvcGFnYXRlLCBpZ25vcmVEaXNhYmxlZCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmFueUNoaWxkU2VsZWN0ZWQoc3RhdGUpKSB7XG4gICAgICB0aGlzLnJlbW92ZVNlbGVjdGVkKHN0YXRlLm5vZGVJdGVtLml0ZW0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlU2VsZWN0ZWQoaXRlbTogYW55KTogdm9pZCB7XG4gICAgbGV0IGluZGV4ID0gdGhpcy5zZWxlY3RlZEl0ZW1zLmluZGV4T2YoaXRlbSk7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnNwbGljZShpbmRleCwgMSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgaGFzTm9DaGlsZHJlbihzdGF0ZTogTm9kZVN0YXRlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICFzdGF0ZS5jaGlsZHJlbiB8fCBzdGF0ZS5jaGlsZHJlbi5sZW5ndGggPT09IDA7XG4gIH1cblxuICBwcml2YXRlIGFkZFNlbGVjdGVkKHN0YXRlOiBOb2RlU3RhdGUpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkSXRlbXMucHVzaChzdGF0ZS5ub2RlSXRlbS5pdGVtKTtcbiAgICB0aGlzLnNlbGVjdGVkU3RhdGVzLnB1c2goc3RhdGUpO1xuXG4gICAgaWYgKHRoaXMuY2FsbGJhY2tzPy5zZWxlY3QpIHtcbiAgICAgIHRoaXMuY2FsbGJhY2tzLnNlbGVjdChzdGF0ZS5ub2RlSXRlbSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHJlRXZhbHVhdGVTZWxlY3RlZFN0YXRlKHN0YXRlOiBOb2RlU3RhdGUpOiB2b2lkIHtcbiAgICBpZiAoIVRyZWVTZXJ2aWNlLmhhc05vQ2hpbGRyZW4oc3RhdGUpKSB7XG4gICAgICB0aGlzLmNoaWxkU3RhdGVDaGFuZ2VkKHN0YXRlKTtcblxuICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBzdGF0ZS5jaGlsZHJlbikge1xuICAgICAgICB0aGlzLnJlRXZhbHVhdGVTZWxlY3RlZFN0YXRlKGNoaWxkKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgY2hpbGRTdGF0ZUNoYW5nZWQoc3RhdGU6IE5vZGVTdGF0ZSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmFueUNoaWxkU2VsZWN0ZWQoc3RhdGUpKSB7XG4gICAgICBpZiAoc3RhdGUubm9kZUl0ZW0uaWQgIT0gJzAnKSB7XG4gICAgICAgIGxldCBpdGVtSW5kZXggPSB0aGlzLnNlbGVjdGVkSXRlbXMuaW5kZXhPZihzdGF0ZS5ub2RlSXRlbS5pdGVtKTtcblxuICAgICAgICBpZiAoaXRlbUluZGV4ID09PSAtMSkge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5wdXNoKHN0YXRlLm5vZGVJdGVtLml0ZW0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmFsbENoaWxkcmVuU2VsZWN0ZWQoc3RhdGUpKSB7XG4gICAgICAgIHRoaXMuc2V0Q2hlY2tlZChzdGF0ZSwgZmFsc2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RhdGUuc2VsZWN0ZWRTdGF0ZSA9IE5vZGVTZWxlY3RlZFN0YXRlLmluZGV0ZXJtaW5hdGU7XG4gICAgICAgIHN0YXRlLnNlbGVjdGVkID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2V0VW5jaGVja2VkKHN0YXRlLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgaWYgKHN0YXRlLnBhcmVudCkge1xuICAgICAgdGhpcy5jaGlsZFN0YXRlQ2hhbmdlZChzdGF0ZS5wYXJlbnQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYW55Q2hpbGRTZWxlY3RlZChzdGF0ZTogTm9kZVN0YXRlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHN0YXRlLmNoaWxkcmVuLmZpbmQoKGl0ZW06IE5vZGVTdGF0ZSkgPT4gaXRlbS5zZWxlY3RlZFN0YXRlID09PSBOb2RlU2VsZWN0ZWRTdGF0ZS5jaGVja2VkIHx8IGl0ZW0uc2VsZWN0ZWRTdGF0ZSA9PT0gTm9kZVNlbGVjdGVkU3RhdGUuaW5kZXRlcm1pbmF0ZSkgIT0gbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgaW5pdFN0YXRlKHBhcmVudDogTm9kZVN0YXRlLCBub2RlSXRlbTogTm9kZUl0ZW08YW55Pik6IE5vZGVTdGF0ZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHBhcmVudDogcGFyZW50LFxuICAgICAgY2hpbGRyZW46IFtdLFxuICAgICAgZmlsdGVyZWRDaGlsZHJlbjogW10sXG4gICAgICBoYXNGaWx0ZXJlZENoaWxkcmVuOiBmYWxzZSxcbiAgICAgIG5vZGVJdGVtOiBub2RlSXRlbSxcbiAgICAgIGV4cGFuZGVkOiBub2RlSXRlbS5leHBhbmRlZCAhPT0gZmFsc2UsXG4gICAgICBkaXNhYmxlZDogbm9kZUl0ZW0uZGlzYWJsZWQgPT09IHRydWUsXG4gICAgICBzZWxlY3RlZFN0YXRlOiBOb2RlU2VsZWN0ZWRTdGF0ZS51bkNoZWNrZWQsXG4gICAgICBzZWxlY3RlZDogZmFsc2UsXG4gICAgICBzaG93Q2hlY2tib3g6IG5vZGVJdGVtLnNob3dDaGVja2JveFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGFsbENoaWxkcmVuU2VsZWN0ZWQoc3RhdGU6IE5vZGVTdGF0ZSk6IGJvb2xlYW4ge1xuICAgIGlmIChzdGF0ZS5ub2RlSXRlbS5jaGlsZHJlbikge1xuICAgICAgcmV0dXJuIHN0YXRlLmNoaWxkcmVuLmV2ZXJ5KGl0ID0+IGl0LnNlbGVjdGVkU3RhdGUgPT09IE5vZGVTZWxlY3RlZFN0YXRlLmNoZWNrZWQpICYmIHN0YXRlLmNoaWxkcmVuLmxlbmd0aCA9PT0gc3RhdGUubm9kZUl0ZW0uY2hpbGRyZW4ubGVuZ3RoO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gc3RhdGUuY2hpbGRyZW4uZXZlcnkoaXQgPT4gaXQuc2VsZWN0ZWRTdGF0ZSA9PT0gTm9kZVNlbGVjdGVkU3RhdGUuY2hlY2tlZCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhbnlBY3RpdmVTZWxlY3RlZChzdGF0ZTogTm9kZVN0YXRlKTogYm9vbGVhbiB7XG4gICAgbGV0IHJlc3VsdCA9IHN0YXRlLmNoaWxkcmVuLmZpbHRlcihpdCA9PiAhaXQuZGlzYWJsZWQgJiYgaXQuc2VsZWN0ZWQpLmxlbmd0aCA+IDA7XG5cbiAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIHN0YXRlLmNoaWxkcmVuKSB7XG4gICAgICBpZiAoIVRyZWVTZXJ2aWNlLmhhc05vQ2hpbGRyZW4oY2hpbGQpICYmIHRoaXMuYW55QWN0aXZlU2VsZWN0ZWQoY2hpbGQpKSB7XG4gICAgICAgIHJlc3VsdCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHB1YmxpYyBmaWx0ZXJDaGFuZ2VkKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmZpbHRlclZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5maWx0ZXJDaGFuZ2VTdWJqZWN0Lm5leHQodmFsdWUpO1xuICB9XG59XG4iXX0=
|
|
234
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ3Jhdml0eS1kZXNpZ24tc3lzdGVtL3NyYy9saWIvY29tcG9uZW50cy9ncmF2aXR5LXRyZWUtdmlldy9zZXJ2aWNlL3RyZWUtc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ3BELE9BQU8sRUFBQyxlQUFlLEVBQTJCLE1BQU0sTUFBTSxDQUFDO0FBQy9ELE9BQU8sRUFBQyxZQUFZLEVBQUUsb0JBQW9CLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUdsRSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQzs7QUFJaEUsTUFBTSxPQUFPLFdBQVc7SUFhdEI7UUFUTyxnQkFBVyxHQUFXLEVBQUUsQ0FBQztRQUV6QixrQkFBYSxHQUFVLEVBQUUsQ0FBQztRQUd6Qix3QkFBbUIsR0FBRyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDNUQseUJBQW9CLEdBQUcsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQy9ELG1CQUFjLEdBQWdCLEVBQUUsQ0FBQztRQUd2QyxJQUFJLENBQUMsK0JBQStCLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQUUsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDN0gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN4RCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLCtCQUErQixDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JELENB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QUFDOytHQTFRVSxXQUFXO21IQUFYLFdBQVc7OzRGQUFYLFdBQVc7a0JBRHZCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGUsIE9uRGVzdHJveX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcbmltcG9ydCB7ZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtOb2RlSXRlbX0gZnJvbSAnLi4vbW9kZWxzL25vZGUtaXRlbSc7XG5pbXBvcnQge05vZGVTdGF0ZX0gZnJvbSAnLi4vbW9kZWxzL25vZGUtc3RhdGUnO1xuaW1wb3J0IHtOb2RlU2VsZWN0ZWRTdGF0ZX0gZnJvbSAnLi4vbW9kZWxzL25vZGUtc2VsZWN0ZWQtc3RhdGUnO1xuaW1wb3J0IHtUcmVlQ2FsbGJhY2tzfSBmcm9tICcuLi9tb2RlbHMvdHJlZS1jYWxsYmFja3MnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVHJlZVNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHJlYWRvbmx5IGZpbHRlckNoYW5nZVN1YmplY3RTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICBwdWJsaWMgY2FsbGJhY2tzOiBUcmVlQ2FsbGJhY2tzO1xuICBwdWJsaWMgZmlsdGVyVmFsdWU6IHN0cmluZyA9ICcnO1xuICBwdWJsaWMgbm9kZUl0ZW1zOiBOb2RlSXRlbTxhbnk+W107XG4gIHB1YmxpYyBzZWxlY3RlZEl0ZW1zOiBhbnlbXSA9IFtdO1xuICBwdWJsaWMgdHJlZVN0YXRlOiBOb2RlU3RhdGVbXTtcblxuICBwcml2YXRlIGZpbHRlckNoYW5nZVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHRoaXMuZmlsdGVyVmFsdWUpO1xuICBwcml2YXRlIHNlbGVjdGVkSXRlbXNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdCh0aGlzLnNlbGVjdGVkSXRlbXMpO1xuICBwcml2YXRlIHNlbGVjdGVkU3RhdGVzOiBOb2RlU3RhdGVbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuZmlsdGVyQ2hhbmdlU3ViamVjdFN1YnNjcmlwdGlvbiA9IHRoaXMuZmlsdGVyQ2hhbmdlU3ViamVjdC5waXBlKGRlYm91bmNlVGltZSgzMDApLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5maWx0ZXJUcmF2ZXJzZSh0aGlzLnRyZWVTdGF0ZSwgdGhpcy5maWx0ZXJWYWx1ZSk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmZpbHRlckNoYW5nZVN1YmplY3RTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHB1YmxpYyBjb25uZWN0KCk6IE9ic2VydmFibGU8YW55W10+IHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEl0ZW1zU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRJbml0aWFsU3RhdGUoKTogdm9pZCB7XG4gICAgdGhpcy5zZXRJbml0aWFsU2VsZWN0ZWRTdGF0ZSh0aGlzLnRyZWVTdGF0ZSk7XG4gIH1cblxuICBwcml2YXRlIHNldEluaXRpYWxTZWxlY3RlZFN0YXRlKG5vZGVTdGF0ZXM6IE5vZGVTdGF0ZVtdKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBzdGF0ZSBvZiBub2RlU3RhdGVzKSB7XG4gICAgICBpZiAoc3RhdGUubm9kZUl0ZW0uc2VsZWN0ZWQgJiYgKCFzdGF0ZS5jaGlsZHJlbiB8fCBzdGF0ZS5jaGlsZHJlbi5sZW5ndGggPT09IDApKSB7XG4gICAgICAgIHRoaXMudG9nZ2xlU2VsZWN0ZWRTdGF0ZShzdGF0ZSwgdHJ1ZSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuc2V0SW5pdGlhbFNlbGVjdGVkU3RhdGUoc3RhdGUuY2hpbGRyZW4pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjbGVhcigpOiB2b2lkIHtcbiAgICBmb3IgKGxldCBzdGF0ZSBvZiB0aGlzLnNlbGVjdGVkU3RhdGVzKSB7XG4gICAgICBzdGF0ZS5zZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgc3RhdGUuc2VsZWN0ZWRTdGF0ZSA9IE5vZGVTZWxlY3RlZFN0YXRlLnVuQ2hlY2tlZDtcbiAgICB9XG5cbiAgICB0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoID0gMDtcbiAgICB0aGlzLnNlbGVjdGVkU3RhdGVzLmxlbmd0aCA9IDA7XG4gIH1cblxuICBwcml2YXRlIGZpbHRlclRyYXZlcnNlKHN0YXRlczogTm9kZVN0YXRlW10sIGZpbHRlcjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgbGV0IHJlc3VsdHM6IGJvb2xlYW5bXSA9IFtdO1xuXG4gICAgZm9yIChsZXQgc3RhdGUgb2Ygc3RhdGVzKSB7XG4gICAgICBpZiAoc3RhdGUuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICBzdGF0ZS5oYXNGaWx0ZXJlZENoaWxkcmVuID0gZmFsc2U7XG4gICAgICAgIHN0YXRlLmhhc0ZpbHRlcmVkQ2hpbGRyZW4gPSB0aGlzLmZpbHRlclRyYXZlcnNlKHN0YXRlLmNoaWxkcmVuLCBmaWx0ZXIpO1xuXG4gICAgICAgIGlmICh0aGlzLmFwcGx5RmlsdGVyKHN0YXRlLCBmaWx0ZXIpKSB7XG4gICAgICAgICAgc3RhdGUuaGFzRmlsdGVyZWRDaGlsZHJlbiA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXN1bHRzLnB1c2goc3RhdGUuaGFzRmlsdGVyZWRDaGlsZHJlbik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdHMuc29tZSgoaXRlbTogYm9vbGVhbikgPT4gaXRlbSk7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5RmlsdGVyKHN0YXRlOiBOb2RlU3RhdGUsIGZpbHRlcjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgc3RhdGUuZmlsdGVyZWRDaGlsZHJlbiA9IHRoaXMuZmlsdGVyKHN0YXRlLmNoaWxkcmVuLCBmaWx0ZXIpO1xuICAgIHJldHVybiBzdGF0ZS5maWx0ZXJlZENoaWxkcmVuLmxlbmd0aCA+IDA7XG4gIH1cblxuICBwcml2YXRlIGZpbHRlcihzdGF0ZXM6IE5vZGVTdGF0ZVtdLCB2YWx1ZTogc3RyaW5nKTogTm9kZVN0YXRlW10ge1xuICAgIHJldHVybiBzdGF0ZXMuZmlsdGVyKChub2RlU3RhdGU6IE5vZGVTdGF0ZSkgPT4gbm9kZVN0YXRlLmhhc0ZpbHRlcmVkQ2hpbGRyZW4gfHwgdmFsdWUgPT09ICcnIHx8IG5vZGVTdGF0ZS5ub2RlSXRlbS5uYW1lLnRvTG93ZXJDYXNlKCkuaW5kZXhPZih2YWx1ZSkgIT09IC0xKTtcbiAgfVxuXG4gIHB1YmxpYyBjaGVja2JveENsaWNrKHN0YXRlOiBOb2RlU3RhdGUpOiB2b2lkIHtcbiAgICB0aGlzLnRvZ2dsZVNlbGVjdGVkU3RhdGUoc3RhdGUsIGZhbHNlKTtcblxuICAgIGlmICh0aGlzLmNhbGxiYWNrcz8udG9nZ2xlKSB7XG4gICAgICB0aGlzLmNhbGxiYWNrcy50b2dnbGUoc3RhdGUubm9kZUl0ZW0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdG9nZ2xlU2VsZWN0ZWRTdGF0ZShzdGF0ZTogTm9kZVN0YXRlLCBpZ25vcmVEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmIChzdGF0ZS5kaXNhYmxlZCAmJiAhaWdub3JlRGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoc3RhdGUuc2VsZWN0ZWRTdGF0ZSA9PT0gTm9kZVNlbGVjdGVkU3RhdGUudW5DaGVja2VkKSB7XG4gICAgICBzdGF0ZS5zZWxlY3RlZFN0YXRlID0gTm9kZVNlbGVjdGVkU3RhdGUuY2hlY2tlZDtcbiAgICAgIHN0YXRlLnNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgIGlmIChzdGF0ZS5zaG93Q2hlY2tib3gpIHtcbiAgICAgICAgdGhpcy5hZGRTZWxlY3RlZChzdGF0ZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChzdGF0ZS5zZWxlY3RlZFN0YXRlID09PSBOb2RlU2VsZWN0ZWRTdGF0ZS5jaGVja2VkKSB7XG4gICAgICB0aGlzLnNldFVuY2hlY2tlZChzdGF0ZSwgdHJ1ZSwgaWdub3JlRGlzYWJsZWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5hbnlBY3RpdmVTZWxlY3RlZChzdGF0ZSkgJiYgIXN0YXRlLnNlbGVjdGVkKSB7XG4gICAgICAgIHRoaXMuc2V0VW5jaGVja2VkKHN0YXRlLCB0cnVlLCBpZ25vcmVEaXNhYmxlZCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdGF0ZS5zZWxlY3RlZFN0YXRlID0gTm9kZVNlbGVjdGVkU3RhdGUuY2hlY2tlZDtcbiAgICAgICAgc3RhdGUuc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICBpZiAoc3RhdGUuc2hvd0NoZWNrYm94KSB7XG4gICAgICAgICAgdGhpcy5hZGRTZWxlY3RlZChzdGF0ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoc3RhdGUucGFyZW50KSB7XG4gICAgICB0aGlzLmNoaWxkU3RhdGVDaGFuZ2VkKHN0YXRlLnBhcmVudCk7XG4gICAgfVxuXG4gICAgdGhpcy5zZWxlY3RlZEl0ZW1zU3ViamVjdC5uZXh0KHRoaXMuc2VsZWN0ZWRJdGVtcyk7XG4gIH1cblxuICBwcml2YXRlIHNldFVuY2hlY2tlZChzdGF0ZTogTm9kZVN0YXRlLCBwcm9wYWdhdGU6IGJvb2xlYW4sIGlnbm9yZURpc2FibGVkPzogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmIChzdGF0ZS5kaXNhYmxlZCAmJiAhaWdub3JlRGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoc3RhdGUuc2hvd0NoZWNrYm94KSB7XG4gICAgICBzdGF0ZS5zZWxlY3RlZFN0YXRlID0gTm9kZVNlbGVjdGVkU3RhdGUudW5DaGVja2VkO1xuICAgICAgc3RhdGUuc2VsZWN0ZWQgPSBmYWxzZTtcblxuICAgICAgaWYgKFRyZWVTZXJ2aWNlLmhhc05vQ2hpbGRyZW4oc3RhdGUpKSB7XG4gICAgICAgIHRoaXMucmVtb3ZlU2VsZWN0ZWQoc3RhdGUubm9kZUl0ZW0uaXRlbSk7XG5cbiAgICAgICAgaWYgKHRoaXMuY2FsbGJhY2tzPy51blNlbGVjdCkge1xuICAgICAgICAgIHRoaXMuY2FsbGJhY2tzLnVuU2VsZWN0KHN0YXRlLm5vZGVJdGVtKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChwcm9wYWdhdGUpIHtcbiAgICAgIGZvciAoY29uc3QgY2hpbGQgb2Ygc3RhdGUuY2hpbGRyZW4pIHtcbiAgICAgICAgdGhpcy5zZXRVbmNoZWNrZWQoY2hpbGQsIHByb3BhZ2F0ZSwgaWdub3JlRGlzYWJsZWQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghdGhpcy5hbnlDaGlsZFNlbGVjdGVkKHN0YXRlKSkge1xuICAgICAgdGhpcy5yZW1vdmVTZWxlY3RlZChzdGF0ZS5ub2RlSXRlbS5pdGVtKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZVNlbGVjdGVkKGl0ZW06IGFueSk6IHZvaWQge1xuICAgIGxldCBpbmRleCA9IHRoaXMuc2VsZWN0ZWRJdGVtcy5pbmRleE9mKGl0ZW0pO1xuICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zU3ViamVjdC5uZXh0KHRoaXMuc2VsZWN0ZWRJdGVtcyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgaGFzTm9DaGlsZHJlbihzdGF0ZTogTm9kZVN0YXRlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICFzdGF0ZS5jaGlsZHJlbiB8fCBzdGF0ZS5jaGlsZHJlbi5sZW5ndGggPT09IDA7XG4gIH1cblxuICBwcml2YXRlIGFkZFNlbGVjdGVkKHN0YXRlOiBOb2RlU3RhdGUpOiB2b2lkIHtcbiAgICAvLyBBZGQgdGhlIGN1cnJlbnQgbm9kZSB0byBzZWxlY3RlZEl0ZW1zXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRJdGVtcy5pbmRleE9mKHN0YXRlLm5vZGVJdGVtLml0ZW0pID09PSAtMSkge1xuICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnB1c2goc3RhdGUubm9kZUl0ZW0uaXRlbSk7XG4gICAgICB0aGlzLnNlbGVjdGVkU3RhdGVzLnB1c2goc3RhdGUpO1xuICAgICAgaWYgKHRoaXMuY2FsbGJhY2tzPy5zZWxlY3QpIHtcbiAgICAgICAgdGhpcy5jYWxsYmFja3Muc2VsZWN0KHN0YXRlLm5vZGVJdGVtKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBZGQgYWxsIGFuY2VzdG9ycyAocGFyZW50LCBncmFuZHBhcmVudCwgZXRjLikgdG8gc2VsZWN0ZWRJdGVtc1xuICAgIGxldCBjdXJyZW50ID0gc3RhdGUucGFyZW50O1xuICAgIHdoaWxlIChjdXJyZW50KSB7XG4gICAgICBpZiAodGhpcy5zZWxlY3RlZEl0ZW1zLmluZGV4T2YoY3VycmVudC5ub2RlSXRlbS5pdGVtKSA9PT0gLTEpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLnB1c2goY3VycmVudC5ub2RlSXRlbS5pdGVtKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFN0YXRlcy5wdXNoKGN1cnJlbnQpO1xuICAgICAgfVxuICAgICAgY3VycmVudCA9IGN1cnJlbnQucGFyZW50O1xuICAgIH1cblxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtc1N1YmplY3QubmV4dCh0aGlzLnNlbGVjdGVkSXRlbXMpO1xuICB9XG5cbiAgcHVibGljIHJlRXZhbHVhdGVTZWxlY3RlZFN0YXRlKHN0YXRlOiBOb2RlU3RhdGUpOiB2b2lkIHtcbiAgICBpZiAoIVRyZWVTZXJ2aWNlLmhhc05vQ2hpbGRyZW4oc3RhdGUpKSB7XG4gICAgICB0aGlzLmNoaWxkU3RhdGVDaGFuZ2VkKHN0YXRlKTtcblxuICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBzdGF0ZS5jaGlsZHJlbikge1xuICAgICAgICB0aGlzLnJlRXZhbHVhdGVTZWxlY3RlZFN0YXRlKGNoaWxkKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNoaWxkU3RhdGVDaGFuZ2VkKHN0YXRlOiBOb2RlU3RhdGUpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hbnlDaGlsZFNlbGVjdGVkKHN0YXRlKSkge1xuICAgICAgaWYgKHRoaXMuYWxsQ2hpbGRyZW5TZWxlY3RlZChzdGF0ZSkpIHtcbiAgICAgICAgaWYgKHN0YXRlLnNob3dDaGVja2JveCkge1xuICAgICAgICAgIHN0YXRlLnNlbGVjdGVkU3RhdGUgPSBOb2RlU2VsZWN0ZWRTdGF0ZS5jaGVja2VkO1xuICAgICAgICAgIHN0YXRlLnNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICBpZiAoc3RhdGUubm9kZUl0ZW0uaWQgIT09ICcwJyAmJiB0aGlzLnNlbGVjdGVkSXRlbXMuaW5kZXhPZihzdGF0ZS5ub2RlSXRlbS5pdGVtKSA9PT0gLTEpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5wdXNoKHN0YXRlLm5vZGVJdGVtLml0ZW0pO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFN0YXRlcy5wdXNoKHN0YXRlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3RhdGUuc2VsZWN0ZWRTdGF0ZSA9IE5vZGVTZWxlY3RlZFN0YXRlLmluZGV0ZXJtaW5hdGU7XG4gICAgICAgICAgc3RhdGUuc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RhdGUuc2VsZWN0ZWRTdGF0ZSA9IE5vZGVTZWxlY3RlZFN0YXRlLmluZGV0ZXJtaW5hdGU7XG4gICAgICAgIHN0YXRlLnNlbGVjdGVkID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghc3RhdGUuc2VsZWN0ZWQpIHtcbiAgICAgIHRoaXMuc2V0VW5jaGVja2VkKHN0YXRlLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgaWYgKHN0YXRlLnBhcmVudCkge1xuICAgICAgdGhpcy5jaGlsZFN0YXRlQ2hhbmdlZChzdGF0ZS5wYXJlbnQpO1xuICAgIH1cblxuICAgIHRoaXMuc2VsZWN0ZWRJdGVtc1N1YmplY3QubmV4dCh0aGlzLnNlbGVjdGVkSXRlbXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBhbnlDaGlsZFNlbGVjdGVkKHN0YXRlOiBOb2RlU3RhdGUpOiBib29sZWFuIHtcblxuXG4gICAgcmV0dXJuIHN0YXRlLmNoaWxkcmVuLmZpbmQoKGl0ZW06IE5vZGVTdGF0ZSkgPT4gaXRlbS5zZWxlY3RlZFN0YXRlID09PSBOb2RlU2VsZWN0ZWRTdGF0ZS5jaGVja2VkIHx8IGl0ZW0uc2VsZWN0ZWRTdGF0ZSA9PT0gTm9kZVNlbGVjdGVkU3RhdGUuaW5kZXRlcm1pbmF0ZSkgIT0gbnVsbDtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgaW5pdFN0YXRlKHBhcmVudDogTm9kZVN0YXRlLCBub2RlSXRlbTogTm9kZUl0ZW08YW55Pik6IE5vZGVTdGF0ZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHBhcmVudDogcGFyZW50LFxuICAgICAgY2hpbGRyZW46IFtdLFxuICAgICAgZmlsdGVyZWRDaGlsZHJlbjogW10sXG4gICAgICBoYXNGaWx0ZXJlZENoaWxkcmVuOiBmYWxzZSxcbiAgICAgIG5vZGVJdGVtOiBub2RlSXRlbSxcbiAgICAgIGV4cGFuZGVkOiBub2RlSXRlbS5leHBhbmRlZCAhPT0gZmFsc2UsXG4gICAgICBkaXNhYmxlZDogbm9kZUl0ZW0uZGlzYWJsZWQgPT09IHRydWUsXG4gICAgICBzZWxlY3RlZFN0YXRlOiBOb2RlU2VsZWN0ZWRTdGF0ZS51bkNoZWNrZWQsXG4gICAgICBzZWxlY3RlZDogZmFsc2UsXG4gICAgICBzaG93Q2hlY2tib3g6IG5vZGVJdGVtLnNob3dDaGVja2JveFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGFsbENoaWxkcmVuU2VsZWN0ZWQoc3RhdGU6IE5vZGVTdGF0ZSk6IGJvb2xlYW4ge1xuICAgIGlmIChzdGF0ZS5ub2RlSXRlbS5jaGlsZHJlbikge1xuICAgICAgcmV0dXJuIHN0YXRlLmNoaWxkcmVuLmV2ZXJ5KGl0ID0+IGl0LnNlbGVjdGVkU3RhdGUgPT09IE5vZGVTZWxlY3RlZFN0YXRlLmNoZWNrZWQpICYmIHN0YXRlLmNoaWxkcmVuLmxlbmd0aCA9PT0gc3RhdGUubm9kZUl0ZW0uY2hpbGRyZW4ubGVuZ3RoO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gc3RhdGUuY2hpbGRyZW4uZXZlcnkoaXQgPT4gaXQuc2VsZWN0ZWRTdGF0ZSA9PT0gTm9kZVNlbGVjdGVkU3RhdGUuY2hlY2tlZCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhbnlBY3RpdmVTZWxlY3RlZChzdGF0ZTogTm9kZVN0YXRlKTogYm9vbGVhbiB7XG4gICAgbGV0IHJlc3VsdCA9IHN0YXRlLmNoaWxkcmVuLmZpbHRlcihpdCA9PiAhaXQuZGlzYWJsZWQgJiYgaXQuc2VsZWN0ZWQpLmxlbmd0aCA+IDA7XG5cbiAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIHN0YXRlLmNoaWxkcmVuKSB7XG4gICAgICBpZiAoIVRyZWVTZXJ2aWNlLmhhc05vQ2hpbGRyZW4oY2hpbGQpICYmIHRoaXMuYW55QWN0aXZlU2VsZWN0ZWQoY2hpbGQpKSB7XG4gICAgICAgIHJlc3VsdCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHB1YmxpYyBmaWx0ZXJDaGFuZ2VkKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmZpbHRlclZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5maWx0ZXJDaGFuZ2VTdWJqZWN0Lm5leHQodmFsdWUpO1xuICB9XG59XG4iXX0=
|
|
@@ -5015,7 +5015,11 @@ class TreeService {
|
|
|
5015
5015
|
return;
|
|
5016
5016
|
}
|
|
5017
5017
|
if (state.selectedState === NodeSelectedState.unChecked) {
|
|
5018
|
-
|
|
5018
|
+
state.selectedState = NodeSelectedState.checked;
|
|
5019
|
+
state.selected = true;
|
|
5020
|
+
if (state.showCheckbox) {
|
|
5021
|
+
this.addSelected(state);
|
|
5022
|
+
}
|
|
5019
5023
|
}
|
|
5020
5024
|
else if (state.selectedState === NodeSelectedState.checked) {
|
|
5021
5025
|
this.setUnchecked(state, true, ignoreDisabled);
|
|
@@ -5025,41 +5029,33 @@ class TreeService {
|
|
|
5025
5029
|
this.setUnchecked(state, true, ignoreDisabled);
|
|
5026
5030
|
}
|
|
5027
5031
|
else {
|
|
5028
|
-
|
|
5032
|
+
state.selectedState = NodeSelectedState.checked;
|
|
5033
|
+
state.selected = true;
|
|
5034
|
+
if (state.showCheckbox) {
|
|
5035
|
+
this.addSelected(state);
|
|
5036
|
+
}
|
|
5029
5037
|
}
|
|
5030
5038
|
}
|
|
5031
5039
|
if (state.parent) {
|
|
5032
5040
|
this.childStateChanged(state.parent);
|
|
5033
5041
|
}
|
|
5034
|
-
|
|
5035
|
-
setChecked(state, propagate, ignoreDisabled) {
|
|
5036
|
-
if (state.disabled && !ignoreDisabled) {
|
|
5037
|
-
return;
|
|
5038
|
-
}
|
|
5039
|
-
state.selectedState = NodeSelectedState.checked;
|
|
5040
|
-
state.selected = true;
|
|
5041
|
-
if (TreeService.hasNoChildren(state)) {
|
|
5042
|
-
this.addSelected(state);
|
|
5043
|
-
}
|
|
5044
|
-
else if (propagate) {
|
|
5045
|
-
for (const child of state.children) {
|
|
5046
|
-
this.setChecked(child, propagate, ignoreDisabled);
|
|
5047
|
-
}
|
|
5048
|
-
}
|
|
5042
|
+
this.selectedItemsSubject.next(this.selectedItems);
|
|
5049
5043
|
}
|
|
5050
5044
|
setUnchecked(state, propagate, ignoreDisabled) {
|
|
5051
5045
|
if (state.disabled && !ignoreDisabled) {
|
|
5052
5046
|
return;
|
|
5053
5047
|
}
|
|
5054
|
-
state.
|
|
5055
|
-
|
|
5056
|
-
|
|
5057
|
-
|
|
5058
|
-
|
|
5059
|
-
this.callbacks
|
|
5048
|
+
if (state.showCheckbox) {
|
|
5049
|
+
state.selectedState = NodeSelectedState.unChecked;
|
|
5050
|
+
state.selected = false;
|
|
5051
|
+
if (TreeService.hasNoChildren(state)) {
|
|
5052
|
+
this.removeSelected(state.nodeItem.item);
|
|
5053
|
+
if (this.callbacks?.unSelect) {
|
|
5054
|
+
this.callbacks.unSelect(state.nodeItem);
|
|
5055
|
+
}
|
|
5060
5056
|
}
|
|
5061
5057
|
}
|
|
5062
|
-
|
|
5058
|
+
if (propagate) {
|
|
5063
5059
|
for (const child of state.children) {
|
|
5064
5060
|
this.setUnchecked(child, propagate, ignoreDisabled);
|
|
5065
5061
|
}
|
|
@@ -5072,17 +5068,31 @@ class TreeService {
|
|
|
5072
5068
|
let index = this.selectedItems.indexOf(item);
|
|
5073
5069
|
if (index !== -1) {
|
|
5074
5070
|
this.selectedItems.splice(index, 1);
|
|
5071
|
+
this.selectedItemsSubject.next(this.selectedItems);
|
|
5075
5072
|
}
|
|
5076
5073
|
}
|
|
5077
5074
|
static hasNoChildren(state) {
|
|
5078
5075
|
return !state.children || state.children.length === 0;
|
|
5079
5076
|
}
|
|
5080
5077
|
addSelected(state) {
|
|
5081
|
-
|
|
5082
|
-
this.
|
|
5083
|
-
|
|
5084
|
-
this.
|
|
5078
|
+
// Add the current node to selectedItems
|
|
5079
|
+
if (this.selectedItems.indexOf(state.nodeItem.item) === -1) {
|
|
5080
|
+
this.selectedItems.push(state.nodeItem.item);
|
|
5081
|
+
this.selectedStates.push(state);
|
|
5082
|
+
if (this.callbacks?.select) {
|
|
5083
|
+
this.callbacks.select(state.nodeItem);
|
|
5084
|
+
}
|
|
5085
5085
|
}
|
|
5086
|
+
// Add all ancestors (parent, grandparent, etc.) to selectedItems
|
|
5087
|
+
let current = state.parent;
|
|
5088
|
+
while (current) {
|
|
5089
|
+
if (this.selectedItems.indexOf(current.nodeItem.item) === -1) {
|
|
5090
|
+
this.selectedItems.push(current.nodeItem.item);
|
|
5091
|
+
this.selectedStates.push(current);
|
|
5092
|
+
}
|
|
5093
|
+
current = current.parent;
|
|
5094
|
+
}
|
|
5095
|
+
this.selectedItemsSubject.next(this.selectedItems);
|
|
5086
5096
|
}
|
|
5087
5097
|
reEvaluateSelectedState(state) {
|
|
5088
5098
|
if (!TreeService.hasNoChildren(state)) {
|
|
@@ -5094,26 +5104,32 @@ class TreeService {
|
|
|
5094
5104
|
}
|
|
5095
5105
|
childStateChanged(state) {
|
|
5096
5106
|
if (this.anyChildSelected(state)) {
|
|
5097
|
-
if (state.nodeItem.id != '0') {
|
|
5098
|
-
let itemIndex = this.selectedItems.indexOf(state.nodeItem.item);
|
|
5099
|
-
if (itemIndex === -1) {
|
|
5100
|
-
this.selectedItems.push(state.nodeItem.item);
|
|
5101
|
-
}
|
|
5102
|
-
}
|
|
5103
5107
|
if (this.allChildrenSelected(state)) {
|
|
5104
|
-
|
|
5108
|
+
if (state.showCheckbox) {
|
|
5109
|
+
state.selectedState = NodeSelectedState.checked;
|
|
5110
|
+
state.selected = true;
|
|
5111
|
+
if (state.nodeItem.id !== '0' && this.selectedItems.indexOf(state.nodeItem.item) === -1) {
|
|
5112
|
+
this.selectedItems.push(state.nodeItem.item);
|
|
5113
|
+
this.selectedStates.push(state);
|
|
5114
|
+
}
|
|
5115
|
+
}
|
|
5116
|
+
else {
|
|
5117
|
+
state.selectedState = NodeSelectedState.indeterminate;
|
|
5118
|
+
state.selected = false;
|
|
5119
|
+
}
|
|
5105
5120
|
}
|
|
5106
5121
|
else {
|
|
5107
5122
|
state.selectedState = NodeSelectedState.indeterminate;
|
|
5108
5123
|
state.selected = false;
|
|
5109
5124
|
}
|
|
5110
5125
|
}
|
|
5111
|
-
else {
|
|
5126
|
+
else if (!state.selected) {
|
|
5112
5127
|
this.setUnchecked(state, false);
|
|
5113
5128
|
}
|
|
5114
5129
|
if (state.parent) {
|
|
5115
5130
|
this.childStateChanged(state.parent);
|
|
5116
5131
|
}
|
|
5132
|
+
this.selectedItemsSubject.next(this.selectedItems);
|
|
5117
5133
|
}
|
|
5118
5134
|
anyChildSelected(state) {
|
|
5119
5135
|
return state.children.find((item) => item.selectedState === NodeSelectedState.checked || item.selectedState === NodeSelectedState.indeterminate) != null;
|