bbj-screen-widget 2.4.44 → 2.4.45

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.
@@ -1,6 +1,7 @@
1
1
  import { __decorate, __metadata, __param } from "tslib";
2
2
  import { Component, EventEmitter, ElementRef, ViewChild } from '@angular/core';
3
- import { Data, Property, Widget, DataOutput, Event, EventParam, Method, Param } from 'bbj-widget-base';
3
+ import { Data, Property, Widget, DataOutput, Event, EventParam, Method, Param, DataInput } from 'bbj-widget-base';
4
+ import { NzTreeComponent } from 'ng-zorro-antd/tree';
4
5
  import { ArrayService } from '@delon/util';
5
6
  import { getFontStyle } from '../shared/util/style.util';
6
7
  let TreeControlComponent = class TreeControlComponent {
@@ -22,6 +23,7 @@ let TreeControlComponent = class TreeControlComponent {
22
23
  left: 0,
23
24
  };
24
25
  this.checkable = false;
26
+ this.outputType = 'array';
25
27
  this.checkStrictly = false;
26
28
  this.showLine = false;
27
29
  this.expandAll = false;
@@ -51,6 +53,7 @@ let TreeControlComponent = class TreeControlComponent {
51
53
  this.keyChange = new EventEmitter();
52
54
  this.nodes = [];
53
55
  this.selectedKeys = [];
56
+ // checkedKeys: string[] = [];
54
57
  this.style = {};
55
58
  }
56
59
  ngOnInit() {
@@ -77,7 +80,14 @@ let TreeControlComponent = class TreeControlComponent {
77
80
  if (data) {
78
81
  data.forEach(({ title, key, parentKey, parentKey_value, icon, count }) => {
79
82
  if (key) {
80
- const node = { key, title, parentKey: parentKey_value || parentKey, icon, isLeaf: true, count };
83
+ const node = {
84
+ key,
85
+ title,
86
+ parentKey: parentKey_value || parentKey,
87
+ icon,
88
+ isLeaf: true,
89
+ count,
90
+ };
81
91
  if (this.selectedKeys.includes(key)) {
82
92
  node.selected = true;
83
93
  }
@@ -133,7 +143,12 @@ let TreeControlComponent = class TreeControlComponent {
133
143
  this.waittingSelect = null;
134
144
  this.selectedKeys = keys;
135
145
  if (this.checkable) {
136
- this.keyChange.emit(keys);
146
+ if (this.outputType === 'string') {
147
+ this.keyChange.emit(keys === null || keys === void 0 ? void 0 : keys.join(';'));
148
+ }
149
+ else {
150
+ this.keyChange.emit(keys);
151
+ }
137
152
  }
138
153
  else {
139
154
  this.keyChange.emit(keys[0]);
@@ -164,17 +179,37 @@ let TreeControlComponent = class TreeControlComponent {
164
179
  }
165
180
  select(id) {
166
181
  let find = false;
167
- if (this.nodes) {
168
- const node = this.arrayService.findTree(this.nodes, (n) => n.key === id);
169
- if (node) {
170
- this.onKeysChange([id]);
171
- this.nodeClick(node.key, node.title);
172
- find = true;
182
+ const keys = [];
183
+ if (id) {
184
+ if (this.checkable) {
185
+ if (typeof id === 'string') {
186
+ id = id.split(';');
187
+ }
188
+ keys.push(...id);
189
+ }
190
+ else {
191
+ keys.push(id);
173
192
  }
174
193
  }
175
- // 数据有可能还没加载,等数据加载了再选中
176
- if (!find) {
177
- this.waittingSelect = id;
194
+ this.selectedKeys = keys;
195
+ if (keys.length) {
196
+ if (this.nodes) {
197
+ const nodes = [];
198
+ this.arrayService.visitTree(this.nodes, (n) => {
199
+ if (keys.includes(n.key)) {
200
+ nodes.push(n);
201
+ }
202
+ });
203
+ if (nodes.length) {
204
+ this.onKeysChange(keys);
205
+ nodes.forEach((node) => this.nodeClick(node.key, node.title));
206
+ find = true;
207
+ }
208
+ }
209
+ // 数据有可能还没加载,等数据加载了再选中
210
+ if (!find) {
211
+ this.waittingSelect = id;
212
+ }
178
213
  }
179
214
  }
180
215
  nodeClick(id, title) { }
@@ -183,7 +218,7 @@ let TreeControlComponent = class TreeControlComponent {
183
218
  TreeControlComponent.decorators = [
184
219
  { type: Component, args: [{
185
220
  selector: 'sc-tree-control',
186
- template: "<div *ngIf=\"showSearch\" class=\"searchBox\">\n <input\n class=\"search-input\"\n type=\"text\"\n nz-input\n [(ngModel)]=\"searchValue\"\n [placeholder]=\"searchPlaceholder\"\n [style]=\"{ 'border-color': searchBorderColor, background: searchBackgroundColor }\"\n />\n <i nz-icon nzType=\"search\"></i>\n</div>\n\n<div class=\"warp-tree\">\n <nz-tree\n [ngClass]=\"{ 'ant-tree-nodeBgCustom': nodeBackground }\"\n [ngStyle]=\"style\"\n [nzData]=\"nodes\"\n [nzCheckable]=\"checkable\"\n [nzExpandAll]=\"expandAll\"\n [nzShowLine]=\"showLine\"\n [nzExpandedKeys]=\"expandedKeys\"\n [nzCheckStrictly]=\"checkStrictly\"\n [nzExpandedIcon]=\"nodeDefaultIcon ? multiExpandedIconTpl : null\"\n [nzTreeTemplate]=\"nzTreeTemplate\"\n [nzSearchValue]=\"searchValue\"\n [nzHideUnMatched]=\"true\"\n [nzSelectedKeys]=\"selectedKeys\"\n (nzClick)=\"onClick($event)\"\n (nzDblClick)=\"onNodeDblclick($event)\"\n (nzCheckBoxChange)=\"onCheckBoxChange($event)\"\n >\n </nz-tree>\n <ng-template #multiExpandedIconTpl let-node let-origin=\"origin\">\n <img [src]=\"nodeDefaultIcon\" [class]=\"node.isExpanded ? 'nodeImg-open' : ''\" />\n </ng-template>\n\n <ng-template #nzTreeTemplate let-node let-origin=\"origin\">\n <div\n class=\"custom-node\"\n [style.color]=\"node.isSelected ? nodeCheckedColor : ''\"\n [style.backgroundImage]=\"\n node.isSelected ? 'url(' + nodeCheckedBackground + ')' : nodeBackground ? 'url(' + nodeBackground + ')' : ''\n \"\n [style.padding]=\"\n (grid?.top || 0) + 'px ' + (grid?.right || 0) + 'px ' + (grid?.bottom || 0) + 'px ' + (grid?.left || 0) + 'px'\n \"\n >\n <img\n *ngIf=\"origin.icon && iconPosition !== 'right'\"\n [src]=\"origin.icon\"\n [style.width.px]=\"iconWidth\"\n [style.height.px]=\"iconHeight\"\n />\n <span\n *ngIf=\"edittingNode !== node\"\n class=\"folder-name\"\n [innerHTML]=\"node.title | nzHighlight: searchValue:'i':'font-highlight'\"\n (click)=\"showNode(node)\"\n ></span>\n <input *ngIf=\"edittingNode === node\" #renameInput nz-input [(ngModel)]=\"node.title\" (blur)=\"renameEnd(node)\" />\n\n <span class=\"node-count\" [class.noCount]=\"origin.count === '0'\" *ngIf=\"origin.count || origin.count === '0'\"\n >({{ origin.count }})</span\n >\n <img\n *ngIf=\"origin.icon && iconPosition === 'right'\"\n [src]=\"origin.icon\"\n [style.width.px]=\"iconWidth\"\n [style.height.px]=\"iconHeight\"\n />\n\n <!-- \n\n <img\n *ngIf=\"origin.icon && iconPosition !== 'right'\"\n [src]=\"origin.icon\"\n [style.width.px]=\"iconWidth\"\n [style.height.px]=\"iconHeight\"\n />\n <span\n *ngIf=\"edittingNode !== node\"\n class=\"folder-name\"\n [innerHTML]=\"node.title | nzHighlight: searchValue:'i':'font-highlight'\"\n ></span>\n <input *ngIf=\"edittingNode === node\" #renameInput nz-input [(ngModel)]=\"node.title\" (blur)=\"renameEnd(node)\" />\n <img\n *ngIf=\"origin.icon && iconPosition === 'right'\"\n [src]=\"origin.icon\"\n [style.width.px]=\"iconWidth\"\n [style.height.px]=\"iconHeight\"\n /> -->\n </div>\n </ng-template>\n</div>\n",
221
+ template: "<div *ngIf=\"showSearch\" class=\"searchBox\">\n <input\n class=\"search-input\"\n type=\"text\"\n nz-input\n [(ngModel)]=\"searchValue\"\n [placeholder]=\"searchPlaceholder\"\n [style]=\"{ 'border-color': searchBorderColor, background: searchBackgroundColor }\"\n />\n <i nz-icon nzType=\"search\"></i>\n</div>\n\n<div class=\"warp-tree\">\n <nz-tree\n #tree\n [ngClass]=\"{ 'ant-tree-nodeBgCustom': nodeBackground }\"\n [ngStyle]=\"style\"\n [nzData]=\"nodes\"\n [nzCheckable]=\"checkable\"\n [nzMultiple]=\"checkable\"\n [nzExpandAll]=\"expandAll\"\n [nzShowLine]=\"showLine\"\n [nzExpandedKeys]=\"expandedKeys\"\n [nzCheckStrictly]=\"checkStrictly\"\n [nzExpandedIcon]=\"nodeDefaultIcon ? multiExpandedIconTpl : null\"\n [nzTreeTemplate]=\"nzTreeTemplate\"\n [nzSearchValue]=\"searchValue\"\n [nzHideUnMatched]=\"true\"\n [nzSelectedKeys]=\"selectedKeys\"\n [nzCheckedKeys]=\"selectedKeys\"\n (nzClick)=\"onClick($event)\"\n (nzDblClick)=\"onNodeDblclick($event)\"\n (nzCheckBoxChange)=\"onCheckBoxChange($event)\"\n >\n </nz-tree>\n <ng-template #multiExpandedIconTpl let-node let-origin=\"origin\">\n <img [src]=\"nodeDefaultIcon\" [class]=\"node.isExpanded ? 'nodeImg-open' : ''\" />\n </ng-template>\n\n <ng-template #nzTreeTemplate let-node let-origin=\"origin\">\n <div\n class=\"custom-node\"\n [style.color]=\"node.isSelected ? nodeCheckedColor : ''\"\n [style.backgroundImage]=\"\n node.isSelected ? 'url(' + nodeCheckedBackground + ')' : nodeBackground ? 'url(' + nodeBackground + ')' : ''\n \"\n [style.padding]=\"\n (grid?.top || 0) + 'px ' + (grid?.right || 0) + 'px ' + (grid?.bottom || 0) + 'px ' + (grid?.left || 0) + 'px'\n \"\n >\n <img\n *ngIf=\"origin.icon && iconPosition !== 'right'\"\n [src]=\"origin.icon\"\n [style.width.px]=\"iconWidth\"\n [style.height.px]=\"iconHeight\"\n />\n <span\n *ngIf=\"edittingNode !== node\"\n class=\"folder-name\"\n [innerHTML]=\"node.title | nzHighlight: searchValue:'i':'font-highlight'\"\n (click)=\"showNode(node)\"\n ></span>\n <input *ngIf=\"edittingNode === node\" #renameInput nz-input [(ngModel)]=\"node.title\" (blur)=\"renameEnd(node)\" />\n\n <span class=\"node-count\" [class.noCount]=\"origin.count === '0'\" *ngIf=\"origin.count || origin.count === '0'\"\n >({{ origin.count }})</span\n >\n <img\n *ngIf=\"origin.icon && iconPosition === 'right'\"\n [src]=\"origin.icon\"\n [style.width.px]=\"iconWidth\"\n [style.height.px]=\"iconHeight\"\n />\n\n <!-- \n\n <img\n *ngIf=\"origin.icon && iconPosition !== 'right'\"\n [src]=\"origin.icon\"\n [style.width.px]=\"iconWidth\"\n [style.height.px]=\"iconHeight\"\n />\n <span\n *ngIf=\"edittingNode !== node\"\n class=\"folder-name\"\n [innerHTML]=\"node.title | nzHighlight: searchValue:'i':'font-highlight'\"\n ></span>\n <input *ngIf=\"edittingNode === node\" #renameInput nz-input [(ngModel)]=\"node.title\" (blur)=\"renameEnd(node)\" />\n <img\n *ngIf=\"origin.icon && iconPosition === 'right'\"\n [src]=\"origin.icon\"\n [style.width.px]=\"iconWidth\"\n [style.height.px]=\"iconHeight\"\n /> -->\n </div>\n </ng-template>\n</div>\n",
187
222
  styles: [":host{display:block;height:100%;width:100%;overflow:hidden;display:flex;flex-direction:column}.ant-tree,.ant-tree ::ng-deep .ant-tree-checkbox-inner,.ant-tree ::ng-deep .ant-tree-switcher{background:initial}.ant-tree ::ng-deep .ant-tree-switcher-icon{font-size:inherit}.ant-tree ::ng-deep .ant-tree-checkbox{color:inherit}.ant-tree ::ng-deep .ant-tree-checkbox-checked .ant-tree-checkbox-inner:after{border-color:#1890ff}.ant-tree ::ng-deep .ant-tree-switcher-noop>i{display:none}.ant-tree ::ng-deep .ant-tree-node-content-wrapper.ant-tree-node-selected,.ant-tree ::ng-deep .ant-tree-node-content-wrapper:hover{background-color:var(--selected-background)}::ng-deep .ant-tree.ant-tree-nodeBgCustom .ant-tree-node-content-wrapper{flex:1}::ng-deep .ant-tree.ant-tree-nodeBgCustom nz-tree-node-switcher{width:16px}.custom-node{display:flex;align-items:center;white-space:nowrap;background-repeat:no-repeat;background-size:180px 8px;background-position:0 bottom}.searchBox{position:relative;margin-bottom:20px}.searchBox .search-input{line-height:32px;height:32px;color:#7a8799;outline:none;box-shadow:none}.searchBox i.anticon{width:16px;height:16px;color:#8f9ab3;position:absolute;top:10px;right:10px}.warp-tree{flex:1;overflow:auto}.warp-tree::-webkit-scrollbar-thumb{background-color:var(--treeScrollbar-thumb-background,\"#ddd\")!important}.warp-tree::-webkit-scrollbar-corner{background-color:transparent}.folder-name{flex:1}.node-count{color:hsla(0,0%,100%,.8)}.node-count.noCount{color:#7a8799}"]
188
223
  },] }
189
224
  ];
@@ -192,6 +227,7 @@ TreeControlComponent.ctorParameters = () => [
192
227
  { type: ElementRef }
193
228
  ];
194
229
  TreeControlComponent.propDecorators = {
230
+ tree: [{ type: ViewChild, args: ['tree',] }],
195
231
  renameInput: [{ type: ViewChild, args: ['renameInput',] }]
196
232
  };
197
233
  __decorate([
@@ -206,6 +242,20 @@ __decorate([
206
242
  Property('复选框', { type: 'boolean' }),
207
243
  __metadata("design:type", Object)
208
244
  ], TreeControlComponent.prototype, "checkable", void 0);
245
+ __decorate([
246
+ Property('输出格式', {
247
+ type: 'string',
248
+ enum: [
249
+ { label: '数组', value: 'array' },
250
+ { label: '字符串', value: 'string' },
251
+ ],
252
+ ui: {
253
+ widget: 'select',
254
+ visibleIf: { checkable: [true] },
255
+ },
256
+ }),
257
+ __metadata("design:type", Object)
258
+ ], TreeControlComponent.prototype, "outputType", void 0);
209
259
  __decorate([
210
260
  Property('选择完全受控', {
211
261
  type: 'boolean',
@@ -251,7 +301,7 @@ __decorate([
251
301
  type: 'string',
252
302
  ui: {
253
303
  widget: 'myUpload',
254
- }
304
+ },
255
305
  }),
256
306
  __metadata("design:type", Object)
257
307
  ], TreeControlComponent.prototype, "nodeDefaultIcon", void 0);
@@ -260,7 +310,7 @@ __decorate([
260
310
  type: 'string',
261
311
  ui: {
262
312
  widget: 'myUpload',
263
- }
313
+ },
264
314
  }),
265
315
  __metadata("design:type", Object)
266
316
  ], TreeControlComponent.prototype, "nodeBackground", void 0);
@@ -277,7 +327,7 @@ __decorate([
277
327
  type: 'string',
278
328
  ui: {
279
329
  widget: 'myUpload',
280
- }
330
+ },
281
331
  }),
282
332
  __metadata("design:type", Object)
283
333
  ], TreeControlComponent.prototype, "nodeCheckedBackground", void 0);
@@ -293,8 +343,8 @@ __decorate([
293
343
  Property('搜索框颜色', {
294
344
  ui: {
295
345
  widget: 'myColor',
296
- visibleIf: { showSearch: [true] }
297
- }
346
+ visibleIf: { showSearch: [true] },
347
+ },
298
348
  }),
299
349
  __metadata("design:type", Object)
300
350
  ], TreeControlComponent.prototype, "searchBorderColor", void 0);
@@ -302,8 +352,8 @@ __decorate([
302
352
  Property('搜索框背景色', {
303
353
  ui: {
304
354
  widget: 'myColor',
305
- visibleIf: { showSearch: [true] }
306
- }
355
+ visibleIf: { showSearch: [true] },
356
+ },
307
357
  }),
308
358
  __metadata("design:type", Object)
309
359
  ], TreeControlComponent.prototype, "searchBackgroundColor", void 0);
@@ -311,8 +361,8 @@ __decorate([
311
361
  Property('搜索框提示语', {
312
362
  type: 'string',
313
363
  ui: {
314
- visibleIf: { showSearch: [true] }
315
- }
364
+ visibleIf: { showSearch: [true] },
365
+ },
316
366
  }),
317
367
  __metadata("design:type", Object)
318
368
  ], TreeControlComponent.prototype, "searchPlaceholder", void 0);
@@ -320,7 +370,7 @@ __decorate([
320
370
  Property('滚动条颜色', {
321
371
  ui: {
322
372
  widget: 'myColor',
323
- }
373
+ },
324
374
  }),
325
375
  __metadata("design:type", Object)
326
376
  ], TreeControlComponent.prototype, "treeScrollbarThumbBackground", void 0);
@@ -331,11 +381,15 @@ __decorate([
331
381
  key: { type: 'string', title: 'id' },
332
382
  parentKey: { type: 'string', title: '父级id' },
333
383
  icon: { type: 'string', title: '图标' },
334
- count: { type: 'string', title: '数量' }
384
+ count: { type: 'string', title: '数量' },
335
385
  },
336
386
  }),
337
387
  __metadata("design:type", Object)
338
388
  ], TreeControlComponent.prototype, "data", void 0);
389
+ __decorate([
390
+ DataInput('选中值'),
391
+ __metadata("design:type", Object)
392
+ ], TreeControlComponent.prototype, "value", void 0);
339
393
  __decorate([
340
394
  DataOutput('选中id'),
341
395
  Event('选中值改变', { params: 'id' }),
@@ -352,7 +406,7 @@ __decorate([
352
406
  Method('选中'),
353
407
  __param(0, Param('id')),
354
408
  __metadata("design:type", Function),
355
- __metadata("design:paramtypes", [String]),
409
+ __metadata("design:paramtypes", [Object]),
356
410
  __metadata("design:returntype", void 0)
357
411
  ], TreeControlComponent.prototype, "select", null);
358
412
  __decorate([
@@ -378,4 +432,4 @@ TreeControlComponent = __decorate([
378
432
  __metadata("design:paramtypes", [ArrayService, ElementRef])
379
433
  ], TreeControlComponent);
380
434
  export { TreeControlComponent };
381
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1jb250cm9sLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjcmVlbi13aWRnZXQvc3JjL2xpYi90cmVlLWNvbnRyb2wvdHJlZS1jb250cm9sLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBb0MsWUFBWSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakgsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV2RyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztJQVk1QyxvQkFBb0IsU0FBcEIsb0JBQW9CO0lBMEovQixZQUFvQixZQUEwQixFQUFVLFVBQXNCO1FBQTFELGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQVUsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQXhKOUUsU0FBSSxHQUFRO1lBQ1YsTUFBTSxFQUFFLEVBQUU7WUFDVixLQUFLLEVBQUUsU0FBUztZQUNoQixNQUFNLEVBQUUsUUFBUTtZQUNoQixJQUFJLEVBQUUsRUFBRTtZQUNSLEtBQUssRUFBRSxDQUFDO1lBQ1IsVUFBVSxFQUFFLENBQUM7U0FDZCxDQUFDO1FBRUYsU0FBSSxHQUFRO1lBQ1YsR0FBRyxFQUFFLENBQUM7WUFDTixLQUFLLEVBQUUsQ0FBQztZQUNSLE1BQU0sRUFBRSxDQUFDO1lBQ1QsSUFBSSxFQUFFLENBQUM7U0FDUixDQUFDO1FBRUYsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUtsQixrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUV0QixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRWpC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QUksRUFBRSxVQUFVO0tBQ2pCLENBQUM7cUNBMkprQyxZQUFZLEVBQXNCLFVBQVU7R0ExSm5FLG9CQUFvQixDQTZTaEM7U0E3U1ksb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIFNpbXBsZUNoYW5nZXMsIE9uQ2hhbmdlcywgRXZlbnRFbWl0dGVyLCBFbGVtZW50UmVmLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERhdGEsIFByb3BlcnR5LCBXaWRnZXQsIERhdGFPdXRwdXQsIEV2ZW50LCBFdmVudFBhcmFtLCBNZXRob2QsIFBhcmFtIH0gZnJvbSAnYmJqLXdpZGdldC1iYXNlJztcbmltcG9ydCB7IE56Rm9ybWF0RW1pdEV2ZW50LCBOelRyZWVOb2RlLCBOelRyZWVOb2RlT3B0aW9ucyB9IGZyb20gJ25nLXpvcnJvLWFudGQvdHJlZSc7XG5pbXBvcnQgeyBBcnJheVNlcnZpY2UgfSBmcm9tICdAZGVsb24vdXRpbCc7XG5pbXBvcnQgeyBnZXRGb250U3R5bGUgfSBmcm9tICcuLi9zaGFyZWQvdXRpbC9zdHlsZS51dGlsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2MtdHJlZS1jb250cm9sJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RyZWUtY29udHJvbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RyZWUtY29udHJvbC5jb21wb25lbnQubGVzcyddLFxufSlcbkBXaWRnZXQoJ+agkeaOp+S7ticsIHtcbiAgZ3JvdXA6ICdjb21wb25lbnQnLFxuICBpbWFnZTogJ2Fzc2V0cy9pbWcvc2NyZWVuL1RyZWUucG5nJyxcbiAgaWNvbjogJ2JpYW56dTQwJyxcbn0pXG5leHBvcnQgY2xhc3MgVHJlZUNvbnRyb2xDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBQcm9wZXJ0eSgn5a2X5L2TJywgeyB1aTogeyB3aWRnZXQ6ICdteUZvbnQnIH0gfSlcbiAgZm9udDogYW55ID0ge1xuICAgIGZhbWlseTogJycsXG4gICAgY29sb3I6ICcjNTk1RjdBJyxcbiAgICB3ZWlnaHQ6ICdub3JtYWwnLFxuICAgIHNpemU6IDE2LFxuICAgIHNwYWNlOiAwLFxuICAgIGxpbmVIZWlnaHQ6IDAsXG4gIH07XG4gIEBQcm9wZXJ0eSgn6L656LedJywgeyB1aTogeyB3aWRnZXQ6ICdteUdyaWQnIH0gfSlcbiAgZ3JpZDogYW55ID0ge1xuICAgIHRvcDogMCxcbiAgICByaWdodDogMCxcbiAgICBib3R0b206IDAsXG4gICAgbGVmdDogMCxcbiAgfTtcbiAgQFByb3BlcnR5KCflpI3pgInmoYYnLCB7IHR5cGU6ICdib29sZWFuJyB9KVxuICBjaGVja2FibGUgPSBmYWxzZTtcbiAgQFByb3BlcnR5KCfpgInmi6nlrozlhajlj5fmjqcnLCB7XG4gICAgdHlwZTogJ2Jvb2xlYW4nLFxuICAgIHVpOiB7IG9wdGlvbmFsSGVscDogJ+eItuWtkOiKgueCuemAieS4reeKtuaAgeS4jeWGjeWFs+iBlCcsIHZpc2libGVJZjogeyBjaGVja2FibGU6IFt0cnVlXSB9IH0sXG4gIH0pXG4gIGNoZWNrU3RyaWN0bHkgPSBmYWxzZTtcbiAgQFByb3BlcnR5KCfov57mjqXnur8nLCB7IHR5cGU6ICdib29sZWFuJyB9KVxuICBzaG93TGluZSA9IGZhbHNlO1xuICBAUHJvcGVydHkoJ+WxleW8gOaJgOaciScsIHsgdHlwZTogJ2Jvb2xlYW4nIH0pXG4gIGV4cGFuZEFsbCA9IGZhbHNlO1xuICBAUHJvcGVydHkoJ+WxleW8gOWxgue6pycsIHtcbiAgICB0eXBlOiAnaW50ZWdlcicsXG4gICAgbWluaW11bTogMCxcbiAgICB1aTogeyBwcmVjaXNpb246IDAsIHZpc2libGVJZjogeyBleHBhbmRBbGw6IFtmYWxzZV0gfSB9LFxuICB9KVxuICBleHBhbmRMZXZlbCA9IDA7XG5cbiAgQFByb3BlcnR5KCflm77moIflrr3luqYnLCB7IHR5cGU6ICdpbnRlZ2VyJyB9KVxuICBpY29uV2lkdGggPSAyMDtcbiAgQFByb3BlcnR5KCflm77moIfpq5jluqYnLCB7IHR5cGU6ICdpbnRlZ2VyJyB9KVxuICBpY29uSGVpZ2h0ID0gMjA7XG4gIEBQcm9wZXJ0eSgn5Zu+5qCH5L2N572uJywge1xuICAgIGVudW06IFtcbiAgICAgIHsgbGFiZWw6ICflt6YnLCB2YWx1ZTogJ2xlZnQnIH0sXG4gICAgICB7IGxhYmVsOiAn5Y+zJywgdmFsdWU6ICdyaWdodCcgfSxcbiAgICBdLFxuICB9KVxuICBpY29uUG9zaXRpb24gPSAnbGVmdCc7XG5cblxuXG4gIEBQcm9wZXJ0eSgn6IqC54K55Zu+5qCHJywge1xuICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgIHVpOiB7XG4gICAgICB3aWRnZXQ6ICdteVVwbG9hZCcsXG4gICAgfVxuICB9KVxuICBub2RlRGVmYXVsdEljb24gPSBudWxsO1xuICBAUHJvcGVydHkoJ+iKgueCueiDjOaZrycsIHtcbiAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICB1aToge1xuICAgICAgd2lkZ2V0OiAnbXlVcGxvYWQnLFxuICAgIH1cbiAgfSlcbiAgbm9kZUJhY2tncm91bmQgPSBudWxsO1xuXG4gIEBQcm9wZXJ0eSgn6IqC54K56YCJ5Lit6IOM5pmv6ImyJywgeyB1aTogeyB3aWRnZXQ6ICdteUNvbG9yJyB9IH0pXG4gIHNlbGVjdGVkQmFja2dyb3VuZCA9ICcjYmFlN2ZmJztcblxuICBAUHJvcGVydHkoJ+iKgueCuemAieS4reWtl+S9k+iJsicsIHsgdWk6IHsgd2lkZ2V0OiAnbXlDb2xvcicgfSB9KVxuICBub2RlQ2hlY2tlZENvbG9yID0gJyMzMzMnO1xuXG4gIEBQcm9wZXJ0eSgn6IqC54K56YCJ5Lit6IOM5pmvJywge1xuICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgIHVpOiB7XG4gICAgICB3aWRnZXQ6ICdteVVwbG9hZCcsXG4gICAgfVxuICB9KVxuICBub2RlQ2hlY2tlZEJhY2tncm91bmQgPSBudWxsO1xuXG4gIEBQcm9wZXJ0eSgn5Y+M5Ye76YeN5ZG95ZCNJylcbiAgcmVuYW1hYmxlOiBib29sZWFuO1xuICBAUHJvcGVydHkoJ+aYvuekuuaQnOe0ouahhicpXG4gIHNob3dTZWFyY2g6IGJvb2xlYW47XG4gIHNlYXJjaFZhbHVlOiBzdHJpbmc7XG5cbiAgQFByb3BlcnR5KCfmkJzntKLmoYbpopzoibInLCB7XG4gICAgdWk6IHtcbiAgICAgIHdpZGdldDogJ215Q29sb3InLFxuICAgICAgdmlzaWJsZUlmOiB7IHNob3dTZWFyY2g6IFt0cnVlXSB9XG4gICAgfVxuICB9KVxuICBzZWFyY2hCb3JkZXJDb2xvciA9ICcjOEY5QUIzJztcblxuICBAUHJvcGVydHkoJ+aQnOe0ouahhuiDjOaZr+iJsicsIHtcbiAgICB1aToge1xuICAgICAgd2lkZ2V0OiAnbXlDb2xvcicsXG4gICAgICB2aXNpYmxlSWY6IHsgc2hvd1NlYXJjaDogW3RydWVdIH1cbiAgICB9XG4gIH0pXG4gIHNlYXJjaEJhY2tncm91bmRDb2xvciA9ICdyZ2JhKDAsMCwwLDApJztcblxuICBAUHJvcGVydHkoJ+aQnOe0ouahhuaPkOekuuivrScsIHtcbiAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICB1aToge1xuICAgICAgdmlzaWJsZUlmOiB7IHNob3dTZWFyY2g6IFt0cnVlXSB9XG4gICAgfVxuICB9KVxuICBzZWFyY2hQbGFjZWhvbGRlciA9ICfor7fovpPlhaXmkJzntKLlhoXlrrknO1xuXG4gIEBQcm9wZXJ0eSgn5rua5Yqo5p2h6aKc6ImyJywge1xuICAgIHVpOiB7XG4gICAgICB3aWRnZXQ6ICdteUNvbG9yJyxcbiAgICB9XG4gIH0pXG4gIHRyZWVTY3JvbGxiYXJUaHVtYkJhY2tncm91bmQgPSAnI2RkZCc7XG5cblxuICBARGF0YSh7XG4gICAgcHJvcGVydGllczoge1xuICAgICAgdGl0bGU6IHsgdHlwZTogJ3N0cmluZycsIHRpdGxlOiAn5qCH6aKYJyB9LFxuICAgICAga2V5OiB7IHR5cGU6ICdzdHJpbmcnLCB0aXRsZTogJ2lkJyB9LFxuICAgICAgcGFyZW50S2V5OiB7IHR5cGU6ICdzdHJpbmcnLCB0aXRsZTogJ+eItue6p2lkJyB9LFxuICAgICAgaWNvbjogeyB0eXBlOiAnc3RyaW5nJywgdGl0bGU6ICflm77moIcnIH0sXG4gICAgICBjb3VudDogeyB0eXBlOiAnc3RyaW5nJywgdGl0bGU6ICfmlbDph48nIH1cbiAgICB9LFxuICB9KVxuICBkYXRhID0gW1xuICAgIHsgdGl0bGU6ICfmsZ/oi4/nnIEnLCBrZXk6ICczMDAnLCBwYXJlbnRLZXk6ICcnIH0sXG4gICAgeyB0aXRsZTogJ+a1meaxn+ecgScsIGtleTogJzEwMCcsIHBhcmVudEtleTogJycgfSxcbiAgICB7IHRpdGxlOiAn5p2t5bee5biCJywga2V5OiAnMTAwMScsIHBhcmVudEtleTogJzEwMCcgfSxcbiAgICB7IHRpdGxlOiAn6aG26aG25Yy6Jywga2V5OiAnMTAwMTAnLCBwYXJlbnRLZXk6ICcxMDAxJyB9LFxuICAgIHsgdGl0bGU6ICfnmoTmlrnljLonLCBrZXk6ICcxMDAxMScsIHBhcmVudEtleTogJzEwMDEnIH0sXG4gICAgeyB0aXRsZTogJ+a4qeW3nuW4gicsIGtleTogJzEwMDInLCBwYXJlbnRLZXk6ICcxMDAnIH0sXG4gICAgeyB0aXRsZTogJ+m5v+WfjuWMuicsIGtleTogJzEwMDIwJywgcGFyZW50S2V5OiAnMTAwMicgfSxcbiAgICB7IHRpdGxlOiAn6b6Z5rm+5Yy6Jywga2V5OiAnMTAwMjEnLCBwYXJlbnRLZXk6ICcxMDAyJyB9LFxuICBdO1xuXG4gIEBEYXRhT3V0cHV0KCfpgInkuK1pZCcpXG4gIEBFdmVudCgn6YCJ5Lit5YC85pS55Y+YJywgeyBwYXJhbXM6ICdpZCcgfSlcbiAga2V5Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgbm9kZXM6IE56VHJlZU5vZGVPcHRpb25zW10gPSBbXTtcblxuICBleHBhbmRlZEtleXM6IHN0cmluZ1tdO1xuXG4gIGVkaXR0aW5nTm9kZTogTnpUcmVlTm9kZTsgLy8g5q2j5Zyo6YeN5ZG95ZCN55qE6IqC54K5XG5cbiAgQFZpZXdDaGlsZCgncmVuYW1lSW5wdXQnKVxuICByZW5hbWVJbnB1dDogRWxlbWVudFJlZjtcblxuICBzZWxlY3RlZEtleXM6IHN0cmluZ1tdID0gW107XG4gIHN0eWxlID0ge307XG4gIHdhaXR0aW5nU2VsZWN0OiBzdHJpbmc7XG5cbiAgcGFkZE51bTogYW55O1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGFycmF5U2VydmljZTogQXJyYXlTZXJ2aWNlLCBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHsgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuc2V0UHJvcGVydHkoJy0tdHJlZVNjcm9sbGJhci10aHVtYi1iYWNrZ3JvdW5kJywgdGhpcy50cmVlU2Nyb2xsYmFyVGh1bWJCYWNrZ3JvdW5kIHx8ICcjZGRkJyk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMuZGF0YSkge1xuICAgICAgdGhpcy5ub2RlcyA9IHRoaXMudG9UcmVlKHRoaXMuZGF0YSk7XG4gICAgICBpZiAodGhpcy53YWl0dGluZ1NlbGVjdCkge1xuICAgICAgICB0aGlzLnNlbGVjdCh0aGlzLndhaXR0aW5nU2VsZWN0KTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGNoYW5nZXMuZm9udCkge1xuICAgICAgdGhpcy51cGRhdGVTdHlsZSgpO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzLmRhdGEgfHwgY2hhbmdlcy5leHBhbmRMZXZlbCB8fCBjaGFuZ2VzLmV4cGFuZEFsbCkge1xuICAgICAgdGhpcy5leHBhbmQoKTtcbiAgICB9XG4gIH1cblxuICB0b1RyZWUoZGF0YTogYW55W10pIHtcbiAgICBjb25zdCBub2RlTWFwID0ge307XG4gICAgY29uc3Qgbm9kZXMgPSBbXTtcbiAgICBjb25zdCByb290ID0gW107XG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIGRhdGEuZm9yRWFjaCgoeyB0aXRsZSwga2V5LCBwYXJlbnRLZXksIHBhcmVudEtleV92YWx1ZSwgaWNvbiwgY291bnQgfSkgPT4ge1xuICAgICAgICBpZiAoa2V5KSB7XG4gICAgICAgICAgY29uc3Qgbm9kZTogTnpUcmVlTm9kZU9wdGlvbnMgPSB7IGtleSwgdGl0bGUsIHBhcmVudEtleTogcGFyZW50S2V5X3ZhbHVlIHx8IHBhcmVudEtleSwgaWNvbiwgaXNMZWFmOiB0cnVlLCBjb3VudCB9O1xuICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkS2V5cy5pbmNsdWRlcyhrZXkpKSB7XG4gICAgICAgICAgICBub2RlLnNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgbm9kZU1hcFtrZXldID0gbm9kZTtcbiAgICAgICAgICBub2Rlcy5wdXNoKG5vZGUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIG5vZGVzLmZvckVhY2goKG5vZGUpID0+IHtcbiAgICAgICAgaWYgKG5vZGUucGFyZW50S2V5KSB7XG4gICAgICAgICAgY29uc3QgcGFyZW50ID0gbm9kZU1hcFtub2RlLnBhcmVudEtleV07XG4gICAgICAgICAgaWYgKHBhcmVudCkge1xuICAgICAgICAgICAgcGFyZW50LmNoaWxkcmVuID0gcGFyZW50LmNoaWxkcmVuIHx8IFtdO1xuICAgICAgICAgICAgcGFyZW50LmNoaWxkcmVuLnB1c2gobm9kZSk7XG4gICAgICAgICAgICBwYXJlbnQuaXNMZWFmID0gZmFsc2U7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJvb3QucHVzaChub2RlKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gcm9vdDtcbiAgfVxuXG4gIGV4cGFuZCgpIHtcbiAgICAvLyBUT0RPIG5655qEYnVn77yM5Zyo5pWw5o2u5pS55Y+Y5LmL5ZCObnpFeHBhbmRBbGzml6DmlYjvvIznrYnkv67lpI3kuoblj6/ku6XliIfmjaLmiJDov5nph4znmoTku6PnoIFcbiAgICAvLyBpZiAoIXRoaXMuZXhwYW5kQWxsKSB7XG4gICAgLy8gICB0aGlzLmV4cGFuZGVkS2V5cyA9IFtdO1xuICAgIC8vICAgaWYgKHRoaXMuZXhwYW5kTGV2ZWwpIHtcbiAgICAvLyAgICAgdGhpcy5hcnJheVNlcnZpY2UudmlzaXRUcmVlKHRoaXMubm9kZXMsIChpdGVtLCBwYXJlbnQsIGRlZXApID0+IHtcbiAgICAvLyAgICAgICBpZiAoZGVlcCA8PSB0aGlzLmV4cGFuZExldmVsKSB7XG4gICAgLy8gICAgICAgICB0aGlzLmV4cGFuZGVkS2V5cy5wdXNoKGl0ZW0ua2V5KTtcbiAgICAvLyAgICAgICB9XG4gICAgLy8gICAgIH0pO1xuICAgIC8vICAgfVxuICAgIC8vIH1cbiAgICB0aGlzLmV4cGFuZGVkS2V5cyA9IFtdO1xuICAgIGlmICh0aGlzLmV4cGFuZEFsbCB8fCB0aGlzLmV4cGFuZExldmVsKSB7XG4gICAgICB0aGlzLmFycmF5U2VydmljZS52aXNpdFRyZWUodGhpcy5ub2RlcywgKGl0ZW0sIHBhcmVudCwgZGVlcCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5leHBhbmRBbGwgfHwgZGVlcCA8PSB0aGlzLmV4cGFuZExldmVsKSB7XG4gICAgICAgICAgdGhpcy5leHBhbmRlZEtleXMucHVzaChpdGVtLmtleSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZVN0eWxlKCkge1xuICAgIHRoaXMuc3R5bGUgPSBnZXRGb250U3R5bGUodGhpcy5mb250KTtcbiAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1zZWxlY3RlZC1iYWNrZ3JvdW5kJywgdGhpcy5zZWxlY3RlZEJhY2tncm91bmQgfHwgJyNiYWU3ZmYnKTtcbiAgfVxuXG4gIG9uQ2xpY2soZXZlbnQ6IE56Rm9ybWF0RW1pdEV2ZW50KSB7XG4gICAgdGhpcy5vbktleXNDaGFuZ2UoZXZlbnQua2V5cyk7XG4gICAgdGhpcy5ub2RlQ2xpY2soZXZlbnQubm9kZS5rZXksIGV2ZW50Lm5vZGUudGl0bGUpO1xuICB9XG5cbiAgb25LZXlzQ2hhbmdlKGtleXM6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy53YWl0dGluZ1NlbGVjdCA9IG51bGw7XG4gICAgdGhpcy5zZWxlY3RlZEtleXMgPSBrZXlzO1xuICAgIGlmICh0aGlzLmNoZWNrYWJsZSkge1xuICAgICAgdGhpcy5rZXlDaGFuZ2UuZW1pdChrZXlzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5rZXlDaGFuZ2UuZW1pdChrZXlzWzBdKTtcbiAgICB9XG4gIH1cblxuICBvbkNoZWNrQm94Q2hhbmdlKGV2ZW50OiBOekZvcm1hdEVtaXRFdmVudCkge1xuICAgIHRoaXMub25LZXlzQ2hhbmdlKGV2ZW50LmtleXMpO1xuICB9XG5cbiAgb25Ob2RlRGJsY2xpY2soZXZlbnQ6IE56Rm9ybWF0RW1pdEV2ZW50KSB7XG4gICAgaWYgKHRoaXMucmVuYW1hYmxlKSB7XG4gICAgICB0aGlzLmVkaXR0aW5nTm9kZSA9IGV2ZW50Lm5vZGU7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMucmVuYW1lSW5wdXQpIHtcbiAgICAgICAgICB0aGlzLnJlbmFtZUlucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcmVuYW1lRW5kKG5vZGU6IE56VHJlZU5vZGUpIHtcbiAgICB0aGlzLmVkaXR0aW5nTm9kZSA9IG51bGw7XG4gICAgdGhpcy5yZW5hbWUobm9kZS5rZXksIG5vZGUudGl0bGUpO1xuICB9XG5cblxuICBzaG93Tm9kZShlKSB7XG4gICAgY29uc29sZS5sb2coZSk7XG4gIH1cblxuICBATWV0aG9kKCfmkJzntKInKVxuICBzZWFyY2goQFBhcmFtKCflhoXlrrknKSB2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5zZWFyY2hWYWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgQE1ldGhvZCgn6YCJ5LitJylcbiAgc2VsZWN0KEBQYXJhbSgnaWQnKSBpZDogc3RyaW5nKSB7XG4gICAgbGV0IGZpbmQgPSBmYWxzZTtcbiAgICBpZiAodGhpcy5ub2Rlcykge1xuICAgICAgY29uc3Qgbm9kZSA9IHRoaXMuYXJyYXlTZXJ2aWNlLmZpbmRUcmVlKHRoaXMubm9kZXMsIChuKSA9PiBuLmtleSA9PT0gaWQpO1xuICAgICAgaWYgKG5vZGUpIHtcbiAgICAgICAgdGhpcy5vbktleXNDaGFuZ2UoW2lkXSk7XG4gICAgICAgIHRoaXMubm9kZUNsaWNrKG5vZGUua2V5LCBub2RlLnRpdGxlKTtcbiAgICAgICAgZmluZCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIOaVsOaNruacieWPr+iDvei/mOayoeWKoOi9ve+8jOetieaVsOaNruWKoOi9veS6huWGjemAieS4rVxuICAgIGlmICghZmluZCkge1xuICAgICAgdGhpcy53YWl0dGluZ1NlbGVjdCA9IGlkO1xuICAgIH1cbiAgfVxuXG4gIEBFdmVudCgn54K55Ye7JylcbiAgbm9kZUNsaWNrKEBFdmVudFBhcmFtKCdpZCcpIGlkOiBzdHJpbmcsIEBFdmVudFBhcmFtKCfmoIfpopgnKSB0aXRsZTogc3RyaW5nKSB7IH1cblxuICBARXZlbnQoJ+mHjeWRveWQjScpXG4gIHJlbmFtZShARXZlbnRQYXJhbSgnaWQnKSBpZDogc3RyaW5nLCBARXZlbnRQYXJhbSgn5ZCN56ewJykgbmFtZTogc3RyaW5nKSB7IH1cbn1cbiJdfQ==
435
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS1jb250cm9sLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjcmVlbi13aWRnZXQvc3JjL2xpYi90cmVlLWNvbnRyb2wvdHJlZS1jb250cm9sLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBb0MsWUFBWSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakgsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEgsT0FBTyxFQUFxQixlQUFlLEVBQWlDLE1BQU0sb0JBQW9CLENBQUM7QUFDdkcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7SUFZNUMsb0JBQW9CLFNBQXBCLG9CQUFvQjtJQTBLL0IsWUFBb0IsWUFBMEIsRUFBVSxVQUFzQjtRQUExRCxpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUFVLGVBQVUsR0FBVixVQUFVLENBQVk7UUF4SzlFLFNBQUksR0FBUTtZQUNWLE1BQU0sRUFBRSxFQUFFO1lBQ1YsS0FBSyxFQUFFLFNBQVM7WUFDaEIsTUFBTSxFQUFFLFFBQVE7WUFDaEIsSUFBSSxFQUFFLEVBQUU7WUFDUixLQUFLLEVBQUUsQ0FBQztZQUNSLFVBQVUsRUFBRSxDQUFDO1NBQ2QsQ0FBQztRQUVGLFNBQUksR0FBUTtZQUNWLEdBQUcsRUFBRSxDQUFDO1lBQ04sS0FBSyxFQUFFLENBQUM7WUFDUixNQUFNLEVBQUUsQ0FBQztZQUNULElBQUksRUFBRSxDQUFDO1NBQ1IsQ0FBQztRQUVGLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFZ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Ozs7cURBQWtCO0FBRzNFO0lBREMsS0FBSyxDQUFDLEtBQUssQ0FBQztJQUNMLFdBQUEsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFBLEVBQWMsV0FBQSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUE7Ozs7a0RBQWlCO0FBelY1RCxvQkFBb0I7SUFMaEMsTUFBTSxDQUFDLEtBQUssRUFBRTtRQUNiLEtBQUssRUFBRSxXQUFXO1FBQ2xCLEtBQUssRUFBRSw0QkFBNEI7UUFDbkMsSUFBSSxFQUFFLFVBQVU7S0FDakIsQ0FBQztxQ0EyS2tDLFlBQVksRUFBc0IsVUFBVTtHQTFLbkUsb0JBQW9CLENBMFZoQztTQTFWWSxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgU2ltcGxlQ2hhbmdlcywgT25DaGFuZ2VzLCBFdmVudEVtaXR0ZXIsIEVsZW1lbnRSZWYsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGF0YSwgUHJvcGVydHksIFdpZGdldCwgRGF0YU91dHB1dCwgRXZlbnQsIEV2ZW50UGFyYW0sIE1ldGhvZCwgUGFyYW0sIERhdGFJbnB1dCB9IGZyb20gJ2Jiai13aWRnZXQtYmFzZSc7XG5pbXBvcnQgeyBOekZvcm1hdEVtaXRFdmVudCwgTnpUcmVlQ29tcG9uZW50LCBOelRyZWVOb2RlLCBOelRyZWVOb2RlT3B0aW9ucyB9IGZyb20gJ25nLXpvcnJvLWFudGQvdHJlZSc7XG5pbXBvcnQgeyBBcnJheVNlcnZpY2UgfSBmcm9tICdAZGVsb24vdXRpbCc7XG5pbXBvcnQgeyBnZXRGb250U3R5bGUgfSBmcm9tICcuLi9zaGFyZWQvdXRpbC9zdHlsZS51dGlsJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2MtdHJlZS1jb250cm9sJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RyZWUtY29udHJvbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RyZWUtY29udHJvbC5jb21wb25lbnQubGVzcyddLFxufSlcbkBXaWRnZXQoJ+agkeaOp+S7ticsIHtcbiAgZ3JvdXA6ICdjb21wb25lbnQnLFxuICBpbWFnZTogJ2Fzc2V0cy9pbWcvc2NyZWVuL1RyZWUucG5nJyxcbiAgaWNvbjogJ2JpYW56dTQwJyxcbn0pXG5leHBvcnQgY2xhc3MgVHJlZUNvbnRyb2xDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBQcm9wZXJ0eSgn5a2X5L2TJywgeyB1aTogeyB3aWRnZXQ6ICdteUZvbnQnIH0gfSlcbiAgZm9udDogYW55ID0ge1xuICAgIGZhbWlseTogJycsXG4gICAgY29sb3I6ICcjNTk1RjdBJyxcbiAgICB3ZWlnaHQ6ICdub3JtYWwnLFxuICAgIHNpemU6IDE2LFxuICAgIHNwYWNlOiAwLFxuICAgIGxpbmVIZWlnaHQ6IDAsXG4gIH07XG4gIEBQcm9wZXJ0eSgn6L656LedJywgeyB1aTogeyB3aWRnZXQ6ICdteUdyaWQnIH0gfSlcbiAgZ3JpZDogYW55ID0ge1xuICAgIHRvcDogMCxcbiAgICByaWdodDogMCxcbiAgICBib3R0b206IDAsXG4gICAgbGVmdDogMCxcbiAgfTtcbiAgQFByb3BlcnR5KCflpI3pgInmoYYnLCB7IHR5cGU6ICdib29sZWFuJyB9KVxuICBjaGVja2FibGUgPSBmYWxzZTtcbiAgQFByb3BlcnR5KCfovpPlh7rmoLzlvI8nLCB7XG4gICAgdHlwZTogJ3N0cmluZycsXG4gICAgZW51bTogW1xuICAgICAgeyBsYWJlbDogJ+aVsOe7hCcsIHZhbHVlOiAnYXJyYXknIH0sXG4gICAgICB7IGxhYmVsOiAn5a2X56ym5LiyJywgdmFsdWU6ICdzdHJpbmcnIH0sXG4gICAgXSxcbiAgICB1aToge1xuICAgICAgd2lkZ2V0OiAnc2VsZWN0JyxcbiAgICAgIHZpc2libGVJZjogeyBjaGVja2FibGU6IFt0cnVlXSB9LFxuICAgIH0sXG4gIH0pXG4gIG91dHB1dFR5cGUgPSAnYXJyYXknO1xuICBAUHJvcGVydHkoJ+mAieaLqeWujOWFqOWPl+aOpycsIHtcbiAgICB0eXBlOiAnYm9vbGVhbicsXG4gICAgdWk6IHsgb3B0aW9uYWxIZWxwOiAn54i25a2Q6IqC54K56YCJ5Lit54q25oCB5LiN5YaN5YWz6IGUJywgdmlzaWJsZUlmOiB7IGNoZWNrYWJsZTogW3RydWVdIH0gfSxcbiAgfSlcbiAgY2hlY2tTdHJpY3RseSA9IGZhbHNlO1xuICBAUHJvcGVydHkoJ+i/nuaOpee6vycsIHsgdHlwZTogJ2Jvb2xlYW4nIH0pXG4gIHNob3dMaW5lID0gZmFsc2U7XG4gIEBQcm9wZXJ0eSgn5bGV5byA5omA5pyJJywgeyB0eXBlOiAnYm9vbGVhbicgfSlcbiAgZXhwYW5kQWxsID0gZmFsc2U7XG4gIEBQcm9wZXJ0eSgn5bGV5byA5bGC57qnJywge1xuICAgIHR5cGU6ICdpbnRlZ2VyJyxcbiAgICBtaW5pbXVtOiAwLFxuICAgIHVpOiB7IHByZWNpc2lvbjogMCwgdmlzaWJsZUlmOiB7IGV4cGFuZEFsbDogW2ZhbHNlXSB9IH0sXG4gIH0pXG4gIGV4cGFuZExldmVsID0gMDtcblxuICBAUHJvcGVydHkoJ+Wbvuagh+WuveW6picsIHsgdHlwZTogJ2ludGVnZXInIH0pXG4gIGljb25XaWR0aCA9IDIwO1xuICBAUHJvcGVydHkoJ+Wbvuagh+mrmOW6picsIHsgdHlwZTogJ2ludGVnZXInIH0pXG4gIGljb25IZWlnaHQgPSAyMDtcbiAgQFByb3BlcnR5KCflm77moIfkvY3nva4nLCB7XG4gICAgZW51bTogW1xuICAgICAgeyBsYWJlbDogJ+W3picsIHZhbHVlOiAnbGVmdCcgfSxcbiAgICAgIHsgbGFiZWw6ICflj7MnLCB2YWx1ZTogJ3JpZ2h0JyB9LFxuICAgIF0sXG4gIH0pXG4gIGljb25Qb3NpdGlvbiA9ICdsZWZ0JztcblxuICBAUHJvcGVydHkoJ+iKgueCueWbvuaghycsIHtcbiAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICB1aToge1xuICAgICAgd2lkZ2V0OiAnbXlVcGxvYWQnLFxuICAgIH0sXG4gIH0pXG4gIG5vZGVEZWZhdWx0SWNvbiA9IG51bGw7XG4gIEBQcm9wZXJ0eSgn6IqC54K56IOM5pmvJywge1xuICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgIHVpOiB7XG4gICAgICB3aWRnZXQ6ICdteVVwbG9hZCcsXG4gICAgfSxcbiAgfSlcbiAgbm9kZUJhY2tncm91bmQgPSBudWxsO1xuXG4gIEBQcm9wZXJ0eSgn6IqC54K56YCJ5Lit6IOM5pmv6ImyJywgeyB1aTogeyB3aWRnZXQ6ICdteUNvbG9yJyB9IH0pXG4gIHNlbGVjdGVkQmFja2dyb3VuZCA9ICcjYmFlN2ZmJztcblxuICBAUHJvcGVydHkoJ+iKgueCuemAieS4reWtl+S9k+iJsicsIHsgdWk6IHsgd2lkZ2V0OiAnbXlDb2xvcicgfSB9KVxuICBub2RlQ2hlY2tlZENvbG9yID0gJyMzMzMnO1xuXG4gIEBQcm9wZXJ0eSgn6IqC54K56YCJ5Lit6IOM5pmvJywge1xuICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgIHVpOiB7XG4gICAgICB3aWRnZXQ6ICdteVVwbG9hZCcsXG4gICAgfSxcbiAgfSlcbiAgbm9kZUNoZWNrZWRCYWNrZ3JvdW5kID0gbnVsbDtcblxuICBAUHJvcGVydHkoJ+WPjOWHu+mHjeWRveWQjScpXG4gIHJlbmFtYWJsZTogYm9vbGVhbjtcbiAgQFByb3BlcnR5KCfmmL7npLrmkJzntKLmoYYnKVxuICBzaG93U2VhcmNoOiBib29sZWFuO1xuICBzZWFyY2hWYWx1ZTogc3RyaW5nO1xuXG4gIEBQcm9wZXJ0eSgn5pCc57Si5qGG6aKc6ImyJywge1xuICAgIHVpOiB7XG4gICAgICB3aWRnZXQ6ICdteUNvbG9yJyxcbiAgICAgIHZpc2libGVJZjogeyBzaG93U2VhcmNoOiBbdHJ1ZV0gfSxcbiAgICB9LFxuICB9KVxuICBzZWFyY2hCb3JkZXJDb2xvciA9ICcjOEY5QUIzJztcblxuICBAUHJvcGVydHkoJ+aQnOe0ouahhuiDjOaZr+iJsicsIHtcbiAgICB1aToge1xuICAgICAgd2lkZ2V0OiAnbXlDb2xvcicsXG4gICAgICB2aXNpYmxlSWY6IHsgc2hvd1NlYXJjaDogW3RydWVdIH0sXG4gICAgfSxcbiAgfSlcbiAgc2VhcmNoQmFja2dyb3VuZENvbG9yID0gJ3JnYmEoMCwwLDAsMCknO1xuXG4gIEBQcm9wZXJ0eSgn5pCc57Si5qGG5o+Q56S66K+tJywge1xuICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgIHVpOiB7XG4gICAgICB2aXNpYmxlSWY6IHsgc2hvd1NlYXJjaDogW3RydWVdIH0sXG4gICAgfSxcbiAgfSlcbiAgc2VhcmNoUGxhY2Vob2xkZXIgPSAn6K+36L6T5YWl5pCc57Si5YaF5a65JztcblxuICBAUHJvcGVydHkoJ+a7muWKqOadoeminOiJsicsIHtcbiAgICB1aToge1xuICAgICAgd2lkZ2V0OiAnbXlDb2xvcicsXG4gICAgfSxcbiAgfSlcbiAgdHJlZVNjcm9sbGJhclRodW1iQmFja2dyb3VuZCA9ICcjZGRkJztcblxuICBARGF0YSh7XG4gICAgcHJvcGVydGllczoge1xuICAgICAgdGl0bGU6IHsgdHlwZTogJ3N0cmluZycsIHRpdGxlOiAn5qCH6aKYJyB9LFxuICAgICAga2V5OiB7IHR5cGU6ICdzdHJpbmcnLCB0aXRsZTogJ2lkJyB9LFxuICAgICAgcGFyZW50S2V5OiB7IHR5cGU6ICdzdHJpbmcnLCB0aXRsZTogJ+eItue6p2lkJyB9LFxuICAgICAgaWNvbjogeyB0eXBlOiAnc3RyaW5nJywgdGl0bGU6ICflm77moIcnIH0sXG4gICAgICBjb3VudDogeyB0eXBlOiAnc3RyaW5nJywgdGl0bGU6ICfmlbDph48nIH0sXG4gICAgfSxcbiAgfSlcbiAgZGF0YSA9IFtcbiAgICB7IHRpdGxlOiAn5rGf6IuP55yBJywga2V5OiAnMzAwJywgcGFyZW50S2V5OiAnJyB9LFxuICAgIHsgdGl0bGU6ICfmtZnmsZ/nnIEnLCBrZXk6ICcxMDAnLCBwYXJlbnRLZXk6ICcnIH0sXG4gICAgeyB0aXRsZTogJ+adreW3nuW4gicsIGtleTogJzEwMDEnLCBwYXJlbnRLZXk6ICcxMDAnIH0sXG4gICAgeyB0aXRsZTogJ+mhtumhtuWMuicsIGtleTogJzEwMDEwJywgcGFyZW50S2V5OiAnMTAwMScgfSxcbiAgICB7IHRpdGxlOiAn55qE5pa55Yy6Jywga2V5OiAnMTAwMTEnLCBwYXJlbnRLZXk6ICcxMDAxJyB9LFxuICAgIHsgdGl0bGU6ICfmuKnlt57luIInLCBrZXk6ICcxMDAyJywgcGFyZW50S2V5OiAnMTAwJyB9LFxuICAgIHsgdGl0bGU6ICfpub/ln47ljLonLCBrZXk6ICcxMDAyMCcsIHBhcmVudEtleTogJzEwMDInIH0sXG4gICAgeyB0aXRsZTogJ+m+mea5vuWMuicsIGtleTogJzEwMDIxJywgcGFyZW50S2V5OiAnMTAwMicgfSxcbiAgXTtcblxuICBARGF0YUlucHV0KCfpgInkuK3lgLwnKVxuICB2YWx1ZTogYW55O1xuXG4gIEBEYXRhT3V0cHV0KCfpgInkuK1pZCcpXG4gIEBFdmVudCgn6YCJ5Lit5YC85pS55Y+YJywgeyBwYXJhbXM6ICdpZCcgfSlcbiAga2V5Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgbm9kZXM6IE56VHJlZU5vZGVPcHRpb25zW10gPSBbXTtcblxuICBleHBhbmRlZEtleXM6IHN0cmluZ1tdO1xuXG4gIGVkaXR0aW5nTm9kZTogTnpUcmVlTm9kZTsgLy8g5q2j5Zyo6YeN5ZG95ZCN55qE6IqC54K5XG5cbiAgQFZpZXdDaGlsZCgndHJlZScpXG4gIHRyZWU6IE56VHJlZUNvbXBvbmVudDtcblxuICBAVmlld0NoaWxkKCdyZW5hbWVJbnB1dCcpXG4gIHJlbmFtZUlucHV0OiBFbGVtZW50UmVmO1xuXG4gIHNlbGVjdGVkS2V5czogc3RyaW5nW10gPSBbXTtcbiAgLy8gY2hlY2tlZEtleXM6IHN0cmluZ1tdID0gW107XG4gIHN0eWxlID0ge307XG4gIHdhaXR0aW5nU2VsZWN0OiBzdHJpbmcgfCBzdHJpbmdbXTtcblxuICBwYWRkTnVtOiBhbnk7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgYXJyYXlTZXJ2aWNlOiBBcnJheVNlcnZpY2UsIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZikge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBkb2N1bWVudC5ib2R5LnN0eWxlLnNldFByb3BlcnR5KCctLXRyZWVTY3JvbGxiYXItdGh1bWItYmFja2dyb3VuZCcsIHRoaXMudHJlZVNjcm9sbGJhclRodW1iQmFja2dyb3VuZCB8fCAnI2RkZCcpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLmRhdGEpIHtcbiAgICAgIHRoaXMubm9kZXMgPSB0aGlzLnRvVHJlZSh0aGlzLmRhdGEpO1xuICAgICAgaWYgKHRoaXMud2FpdHRpbmdTZWxlY3QpIHtcbiAgICAgICAgdGhpcy5zZWxlY3QodGhpcy53YWl0dGluZ1NlbGVjdCk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLmZvbnQpIHtcbiAgICAgIHRoaXMudXBkYXRlU3R5bGUoKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlcy5kYXRhIHx8IGNoYW5nZXMuZXhwYW5kTGV2ZWwgfHwgY2hhbmdlcy5leHBhbmRBbGwpIHtcbiAgICAgIHRoaXMuZXhwYW5kKCk7XG4gICAgfVxuICB9XG5cbiAgdG9UcmVlKGRhdGE6IGFueVtdKSB7XG4gICAgY29uc3Qgbm9kZU1hcCA9IHt9O1xuICAgIGNvbnN0IG5vZGVzID0gW107XG4gICAgY29uc3Qgcm9vdCA9IFtdO1xuICAgIGlmIChkYXRhKSB7XG4gICAgICBkYXRhLmZvckVhY2goKHsgdGl0bGUsIGtleSwgcGFyZW50S2V5LCBwYXJlbnRLZXlfdmFsdWUsIGljb24sIGNvdW50IH0pID0+IHtcbiAgICAgICAgaWYgKGtleSkge1xuICAgICAgICAgIGNvbnN0IG5vZGU6IE56VHJlZU5vZGVPcHRpb25zID0ge1xuICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgdGl0bGUsXG4gICAgICAgICAgICBwYXJlbnRLZXk6IHBhcmVudEtleV92YWx1ZSB8fCBwYXJlbnRLZXksXG4gICAgICAgICAgICBpY29uLFxuICAgICAgICAgICAgaXNMZWFmOiB0cnVlLFxuICAgICAgICAgICAgY291bnQsXG4gICAgICAgICAgfTtcbiAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEtleXMuaW5jbHVkZXMoa2V5KSkge1xuICAgICAgICAgICAgbm9kZS5zZWxlY3RlZCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIG5vZGVNYXBba2V5XSA9IG5vZGU7XG4gICAgICAgICAgbm9kZXMucHVzaChub2RlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBub2Rlcy5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICAgIGlmIChub2RlLnBhcmVudEtleSkge1xuICAgICAgICAgIGNvbnN0IHBhcmVudCA9IG5vZGVNYXBbbm9kZS5wYXJlbnRLZXldO1xuICAgICAgICAgIGlmIChwYXJlbnQpIHtcbiAgICAgICAgICAgIHBhcmVudC5jaGlsZHJlbiA9IHBhcmVudC5jaGlsZHJlbiB8fCBbXTtcbiAgICAgICAgICAgIHBhcmVudC5jaGlsZHJlbi5wdXNoKG5vZGUpO1xuICAgICAgICAgICAgcGFyZW50LmlzTGVhZiA9IGZhbHNlO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByb290LnB1c2gobm9kZSk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHJvb3Q7XG4gIH1cblxuICBleHBhbmQoKSB7XG4gICAgLy8gVE9ETyBueueahGJ1Z++8jOWcqOaVsOaNruaUueWPmOS5i+WQjm56RXhwYW5kQWxs5peg5pWI77yM562J5L+u5aSN5LqG5Y+v5Lul5YiH5o2i5oiQ6L+Z6YeM55qE5Luj56CBXG4gICAgLy8gaWYgKCF0aGlzLmV4cGFuZEFsbCkge1xuICAgIC8vICAgdGhpcy5leHBhbmRlZEtleXMgPSBbXTtcbiAgICAvLyAgIGlmICh0aGlzLmV4cGFuZExldmVsKSB7XG4gICAgLy8gICAgIHRoaXMuYXJyYXlTZXJ2aWNlLnZpc2l0VHJlZSh0aGlzLm5vZGVzLCAoaXRlbSwgcGFyZW50LCBkZWVwKSA9PiB7XG4gICAgLy8gICAgICAgaWYgKGRlZXAgPD0gdGhpcy5leHBhbmRMZXZlbCkge1xuICAgIC8vICAgICAgICAgdGhpcy5leHBhbmRlZEtleXMucHVzaChpdGVtLmtleSk7XG4gICAgLy8gICAgICAgfVxuICAgIC8vICAgICB9KTtcbiAgICAvLyAgIH1cbiAgICAvLyB9XG4gICAgdGhpcy5leHBhbmRlZEtleXMgPSBbXTtcbiAgICBpZiAodGhpcy5leHBhbmRBbGwgfHwgdGhpcy5leHBhbmRMZXZlbCkge1xuICAgICAgdGhpcy5hcnJheVNlcnZpY2UudmlzaXRUcmVlKHRoaXMubm9kZXMsIChpdGVtLCBwYXJlbnQsIGRlZXApID0+IHtcbiAgICAgICAgaWYgKHRoaXMuZXhwYW5kQWxsIHx8IGRlZXAgPD0gdGhpcy5leHBhbmRMZXZlbCkge1xuICAgICAgICAgIHRoaXMuZXhwYW5kZWRLZXlzLnB1c2goaXRlbS5rZXkpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVTdHlsZSgpIHtcbiAgICB0aGlzLnN0eWxlID0gZ2V0Rm9udFN0eWxlKHRoaXMuZm9udCk7XG4gICAgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tc2VsZWN0ZWQtYmFja2dyb3VuZCcsIHRoaXMuc2VsZWN0ZWRCYWNrZ3JvdW5kIHx8ICcjYmFlN2ZmJyk7XG4gIH1cblxuICBvbkNsaWNrKGV2ZW50OiBOekZvcm1hdEVtaXRFdmVudCkge1xuICAgIHRoaXMub25LZXlzQ2hhbmdlKGV2ZW50LmtleXMpO1xuICAgIHRoaXMubm9kZUNsaWNrKGV2ZW50Lm5vZGUua2V5LCBldmVudC5ub2RlLnRpdGxlKTtcbiAgfVxuXG4gIG9uS2V5c0NoYW5nZShrZXlzOiBzdHJpbmdbXSkge1xuICAgIHRoaXMud2FpdHRpbmdTZWxlY3QgPSBudWxsO1xuICAgIHRoaXMuc2VsZWN0ZWRLZXlzID0ga2V5cztcbiAgICBpZiAodGhpcy5jaGVja2FibGUpIHtcbiAgICAgIGlmICh0aGlzLm91dHB1dFR5cGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHRoaXMua2V5Q2hhbmdlLmVtaXQoa2V5cz8uam9pbignOycpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMua2V5Q2hhbmdlLmVtaXQoa2V5cyk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMua2V5Q2hhbmdlLmVtaXQoa2V5c1swXSk7XG4gICAgfVxuICB9XG5cbiAgb25DaGVja0JveENoYW5nZShldmVudDogTnpGb3JtYXRFbWl0RXZlbnQpIHtcbiAgICB0aGlzLm9uS2V5c0NoYW5nZShldmVudC5rZXlzKTtcbiAgfVxuXG4gIG9uTm9kZURibGNsaWNrKGV2ZW50OiBOekZvcm1hdEVtaXRFdmVudCkge1xuICAgIGlmICh0aGlzLnJlbmFtYWJsZSkge1xuICAgICAgdGhpcy5lZGl0dGluZ05vZGUgPSBldmVudC5ub2RlO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnJlbmFtZUlucHV0KSB7XG4gICAgICAgICAgdGhpcy5yZW5hbWVJbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJlbmFtZUVuZChub2RlOiBOelRyZWVOb2RlKSB7XG4gICAgdGhpcy5lZGl0dGluZ05vZGUgPSBudWxsO1xuICAgIHRoaXMucmVuYW1lKG5vZGUua2V5LCBub2RlLnRpdGxlKTtcbiAgfVxuXG4gIHNob3dOb2RlKGUpIHtcbiAgICBjb25zb2xlLmxvZyhlKTtcbiAgfVxuXG4gIEBNZXRob2QoJ+aQnOe0oicpXG4gIHNlYXJjaChAUGFyYW0oJ+WGheWuuScpIHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnNlYXJjaFZhbHVlID0gdmFsdWU7XG4gIH1cblxuICBATWV0aG9kKCfpgInkuK0nKVxuICBzZWxlY3QoQFBhcmFtKCdpZCcpIGlkOiBzdHJpbmcgfCBzdHJpbmdbXSkge1xuICAgIGxldCBmaW5kID0gZmFsc2U7XG4gICAgY29uc3Qga2V5cyA9IFtdO1xuICAgIGlmIChpZCkge1xuICAgICAgaWYgKHRoaXMuY2hlY2thYmxlKSB7XG4gICAgICAgIGlmICh0eXBlb2YgaWQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgaWQgPSBpZC5zcGxpdCgnOycpO1xuICAgICAgICB9XG4gICAgICAgIGtleXMucHVzaCguLi5pZCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBrZXlzLnB1c2goaWQpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnNlbGVjdGVkS2V5cyA9IGtleXM7XG4gICAgaWYgKGtleXMubGVuZ3RoKSB7XG4gICAgICBpZiAodGhpcy5ub2Rlcykge1xuICAgICAgICBjb25zdCBub2RlcyA9IFtdO1xuICAgICAgICB0aGlzLmFycmF5U2VydmljZS52aXNpdFRyZWUodGhpcy5ub2RlcywgKG4pID0+IHtcbiAgICAgICAgICBpZiAoa2V5cy5pbmNsdWRlcyhuLmtleSkpIHtcbiAgICAgICAgICAgIG5vZGVzLnB1c2gobik7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKG5vZGVzLmxlbmd0aCkge1xuICAgICAgICAgIHRoaXMub25LZXlzQ2hhbmdlKGtleXMpO1xuICAgICAgICAgIG5vZGVzLmZvckVhY2goKG5vZGUpID0+IHRoaXMubm9kZUNsaWNrKG5vZGUua2V5LCBub2RlLnRpdGxlKSk7XG4gICAgICAgICAgZmluZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIOaVsOaNruacieWPr+iDvei/mOayoeWKoOi9ve+8jOetieaVsOaNruWKoOi9veS6huWGjemAieS4rVxuICAgICAgaWYgKCFmaW5kKSB7XG4gICAgICAgIHRoaXMud2FpdHRpbmdTZWxlY3QgPSBpZDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBARXZlbnQoJ+eCueWHuycpXG4gIG5vZGVDbGljayhARXZlbnRQYXJhbSgnaWQnKSBpZDogc3RyaW5nLCBARXZlbnRQYXJhbSgn5qCH6aKYJykgdGl0bGU6IHN0cmluZykge31cblxuICBARXZlbnQoJ+mHjeWRveWQjScpXG4gIHJlbmFtZShARXZlbnRQYXJhbSgnaWQnKSBpZDogc3RyaW5nLCBARXZlbnRQYXJhbSgn5ZCN56ewJykgbmFtZTogc3RyaW5nKSB7fVxufVxuIl19
@@ -11606,6 +11606,7 @@ let TreeControlComponent = class TreeControlComponent {
11606
11606
  left: 0,
11607
11607
  };
11608
11608
  this.checkable = false;
11609
+ this.outputType = 'array';
11609
11610
  this.checkStrictly = false;
11610
11611
  this.showLine = false;
11611
11612
  this.expandAll = false;
@@ -11635,6 +11636,7 @@ let TreeControlComponent = class TreeControlComponent {
11635
11636
  this.keyChange = new EventEmitter();
11636
11637
  this.nodes = [];
11637
11638
  this.selectedKeys = [];
11639
+ // checkedKeys: string[] = [];
11638
11640
  this.style = {};
11639
11641
  }
11640
11642
  ngOnInit() {
@@ -11661,7 +11663,14 @@ let TreeControlComponent = class TreeControlComponent {
11661
11663
  if (data) {
11662
11664
  data.forEach(({ title, key, parentKey, parentKey_value, icon, count }) => {
11663
11665
  if (key) {
11664
- const node = { key, title, parentKey: parentKey_value || parentKey, icon, isLeaf: true, count };
11666
+ const node = {
11667
+ key,
11668
+ title,
11669
+ parentKey: parentKey_value || parentKey,
11670
+ icon,
11671
+ isLeaf: true,
11672
+ count,
11673
+ };
11665
11674
  if (this.selectedKeys.includes(key)) {
11666
11675
  node.selected = true;
11667
11676
  }
@@ -11717,7 +11726,12 @@ let TreeControlComponent = class TreeControlComponent {
11717
11726
  this.waittingSelect = null;
11718
11727
  this.selectedKeys = keys;
11719
11728
  if (this.checkable) {
11720
- this.keyChange.emit(keys);
11729
+ if (this.outputType === 'string') {
11730
+ this.keyChange.emit(keys === null || keys === void 0 ? void 0 : keys.join(';'));
11731
+ }
11732
+ else {
11733
+ this.keyChange.emit(keys);
11734
+ }
11721
11735
  }
11722
11736
  else {
11723
11737
  this.keyChange.emit(keys[0]);
@@ -11748,17 +11762,37 @@ let TreeControlComponent = class TreeControlComponent {
11748
11762
  }
11749
11763
  select(id) {
11750
11764
  let find = false;
11751
- if (this.nodes) {
11752
- const node = this.arrayService.findTree(this.nodes, (n) => n.key === id);
11753
- if (node) {
11754
- this.onKeysChange([id]);
11755
- this.nodeClick(node.key, node.title);
11756
- find = true;
11765
+ const keys = [];
11766
+ if (id) {
11767
+ if (this.checkable) {
11768
+ if (typeof id === 'string') {
11769
+ id = id.split(';');
11770
+ }
11771
+ keys.push(...id);
11772
+ }
11773
+ else {
11774
+ keys.push(id);
11757
11775
  }
11758
11776
  }
11759
- // 数据有可能还没加载,等数据加载了再选中
11760
- if (!find) {
11761
- this.waittingSelect = id;
11777
+ this.selectedKeys = keys;
11778
+ if (keys.length) {
11779
+ if (this.nodes) {
11780
+ const nodes = [];
11781
+ this.arrayService.visitTree(this.nodes, (n) => {
11782
+ if (keys.includes(n.key)) {
11783
+ nodes.push(n);
11784
+ }
11785
+ });
11786
+ if (nodes.length) {
11787
+ this.onKeysChange(keys);
11788
+ nodes.forEach((node) => this.nodeClick(node.key, node.title));
11789
+ find = true;
11790
+ }
11791
+ }
11792
+ // 数据有可能还没加载,等数据加载了再选中
11793
+ if (!find) {
11794
+ this.waittingSelect = id;
11795
+ }
11762
11796
  }
11763
11797
  }
11764
11798
  nodeClick(id, title) { }
@@ -11767,7 +11801,7 @@ let TreeControlComponent = class TreeControlComponent {
11767
11801
  TreeControlComponent.decorators = [
11768
11802
  { type: Component, args: [{
11769
11803
  selector: 'sc-tree-control',
11770
- template: "<div *ngIf=\"showSearch\" class=\"searchBox\">\n <input\n class=\"search-input\"\n type=\"text\"\n nz-input\n [(ngModel)]=\"searchValue\"\n [placeholder]=\"searchPlaceholder\"\n [style]=\"{ 'border-color': searchBorderColor, background: searchBackgroundColor }\"\n />\n <i nz-icon nzType=\"search\"></i>\n</div>\n\n<div class=\"warp-tree\">\n <nz-tree\n [ngClass]=\"{ 'ant-tree-nodeBgCustom': nodeBackground }\"\n [ngStyle]=\"style\"\n [nzData]=\"nodes\"\n [nzCheckable]=\"checkable\"\n [nzExpandAll]=\"expandAll\"\n [nzShowLine]=\"showLine\"\n [nzExpandedKeys]=\"expandedKeys\"\n [nzCheckStrictly]=\"checkStrictly\"\n [nzExpandedIcon]=\"nodeDefaultIcon ? multiExpandedIconTpl : null\"\n [nzTreeTemplate]=\"nzTreeTemplate\"\n [nzSearchValue]=\"searchValue\"\n [nzHideUnMatched]=\"true\"\n [nzSelectedKeys]=\"selectedKeys\"\n (nzClick)=\"onClick($event)\"\n (nzDblClick)=\"onNodeDblclick($event)\"\n (nzCheckBoxChange)=\"onCheckBoxChange($event)\"\n >\n </nz-tree>\n <ng-template #multiExpandedIconTpl let-node let-origin=\"origin\">\n <img [src]=\"nodeDefaultIcon\" [class]=\"node.isExpanded ? 'nodeImg-open' : ''\" />\n </ng-template>\n\n <ng-template #nzTreeTemplate let-node let-origin=\"origin\">\n <div\n class=\"custom-node\"\n [style.color]=\"node.isSelected ? nodeCheckedColor : ''\"\n [style.backgroundImage]=\"\n node.isSelected ? 'url(' + nodeCheckedBackground + ')' : nodeBackground ? 'url(' + nodeBackground + ')' : ''\n \"\n [style.padding]=\"\n (grid?.top || 0) + 'px ' + (grid?.right || 0) + 'px ' + (grid?.bottom || 0) + 'px ' + (grid?.left || 0) + 'px'\n \"\n >\n <img\n *ngIf=\"origin.icon && iconPosition !== 'right'\"\n [src]=\"origin.icon\"\n [style.width.px]=\"iconWidth\"\n [style.height.px]=\"iconHeight\"\n />\n <span\n *ngIf=\"edittingNode !== node\"\n class=\"folder-name\"\n [innerHTML]=\"node.title | nzHighlight: searchValue:'i':'font-highlight'\"\n (click)=\"showNode(node)\"\n ></span>\n <input *ngIf=\"edittingNode === node\" #renameInput nz-input [(ngModel)]=\"node.title\" (blur)=\"renameEnd(node)\" />\n\n <span class=\"node-count\" [class.noCount]=\"origin.count === '0'\" *ngIf=\"origin.count || origin.count === '0'\"\n >({{ origin.count }})</span\n >\n <img\n *ngIf=\"origin.icon && iconPosition === 'right'\"\n [src]=\"origin.icon\"\n [style.width.px]=\"iconWidth\"\n [style.height.px]=\"iconHeight\"\n />\n\n <!-- \n\n <img\n *ngIf=\"origin.icon && iconPosition !== 'right'\"\n [src]=\"origin.icon\"\n [style.width.px]=\"iconWidth\"\n [style.height.px]=\"iconHeight\"\n />\n <span\n *ngIf=\"edittingNode !== node\"\n class=\"folder-name\"\n [innerHTML]=\"node.title | nzHighlight: searchValue:'i':'font-highlight'\"\n ></span>\n <input *ngIf=\"edittingNode === node\" #renameInput nz-input [(ngModel)]=\"node.title\" (blur)=\"renameEnd(node)\" />\n <img\n *ngIf=\"origin.icon && iconPosition === 'right'\"\n [src]=\"origin.icon\"\n [style.width.px]=\"iconWidth\"\n [style.height.px]=\"iconHeight\"\n /> -->\n </div>\n </ng-template>\n</div>\n",
11804
+ template: "<div *ngIf=\"showSearch\" class=\"searchBox\">\n <input\n class=\"search-input\"\n type=\"text\"\n nz-input\n [(ngModel)]=\"searchValue\"\n [placeholder]=\"searchPlaceholder\"\n [style]=\"{ 'border-color': searchBorderColor, background: searchBackgroundColor }\"\n />\n <i nz-icon nzType=\"search\"></i>\n</div>\n\n<div class=\"warp-tree\">\n <nz-tree\n #tree\n [ngClass]=\"{ 'ant-tree-nodeBgCustom': nodeBackground }\"\n [ngStyle]=\"style\"\n [nzData]=\"nodes\"\n [nzCheckable]=\"checkable\"\n [nzMultiple]=\"checkable\"\n [nzExpandAll]=\"expandAll\"\n [nzShowLine]=\"showLine\"\n [nzExpandedKeys]=\"expandedKeys\"\n [nzCheckStrictly]=\"checkStrictly\"\n [nzExpandedIcon]=\"nodeDefaultIcon ? multiExpandedIconTpl : null\"\n [nzTreeTemplate]=\"nzTreeTemplate\"\n [nzSearchValue]=\"searchValue\"\n [nzHideUnMatched]=\"true\"\n [nzSelectedKeys]=\"selectedKeys\"\n [nzCheckedKeys]=\"selectedKeys\"\n (nzClick)=\"onClick($event)\"\n (nzDblClick)=\"onNodeDblclick($event)\"\n (nzCheckBoxChange)=\"onCheckBoxChange($event)\"\n >\n </nz-tree>\n <ng-template #multiExpandedIconTpl let-node let-origin=\"origin\">\n <img [src]=\"nodeDefaultIcon\" [class]=\"node.isExpanded ? 'nodeImg-open' : ''\" />\n </ng-template>\n\n <ng-template #nzTreeTemplate let-node let-origin=\"origin\">\n <div\n class=\"custom-node\"\n [style.color]=\"node.isSelected ? nodeCheckedColor : ''\"\n [style.backgroundImage]=\"\n node.isSelected ? 'url(' + nodeCheckedBackground + ')' : nodeBackground ? 'url(' + nodeBackground + ')' : ''\n \"\n [style.padding]=\"\n (grid?.top || 0) + 'px ' + (grid?.right || 0) + 'px ' + (grid?.bottom || 0) + 'px ' + (grid?.left || 0) + 'px'\n \"\n >\n <img\n *ngIf=\"origin.icon && iconPosition !== 'right'\"\n [src]=\"origin.icon\"\n [style.width.px]=\"iconWidth\"\n [style.height.px]=\"iconHeight\"\n />\n <span\n *ngIf=\"edittingNode !== node\"\n class=\"folder-name\"\n [innerHTML]=\"node.title | nzHighlight: searchValue:'i':'font-highlight'\"\n (click)=\"showNode(node)\"\n ></span>\n <input *ngIf=\"edittingNode === node\" #renameInput nz-input [(ngModel)]=\"node.title\" (blur)=\"renameEnd(node)\" />\n\n <span class=\"node-count\" [class.noCount]=\"origin.count === '0'\" *ngIf=\"origin.count || origin.count === '0'\"\n >({{ origin.count }})</span\n >\n <img\n *ngIf=\"origin.icon && iconPosition === 'right'\"\n [src]=\"origin.icon\"\n [style.width.px]=\"iconWidth\"\n [style.height.px]=\"iconHeight\"\n />\n\n <!-- \n\n <img\n *ngIf=\"origin.icon && iconPosition !== 'right'\"\n [src]=\"origin.icon\"\n [style.width.px]=\"iconWidth\"\n [style.height.px]=\"iconHeight\"\n />\n <span\n *ngIf=\"edittingNode !== node\"\n class=\"folder-name\"\n [innerHTML]=\"node.title | nzHighlight: searchValue:'i':'font-highlight'\"\n ></span>\n <input *ngIf=\"edittingNode === node\" #renameInput nz-input [(ngModel)]=\"node.title\" (blur)=\"renameEnd(node)\" />\n <img\n *ngIf=\"origin.icon && iconPosition === 'right'\"\n [src]=\"origin.icon\"\n [style.width.px]=\"iconWidth\"\n [style.height.px]=\"iconHeight\"\n /> -->\n </div>\n </ng-template>\n</div>\n",
11771
11805
  styles: [":host{display:block;height:100%;width:100%;overflow:hidden;display:flex;flex-direction:column}.ant-tree,.ant-tree ::ng-deep .ant-tree-checkbox-inner,.ant-tree ::ng-deep .ant-tree-switcher{background:initial}.ant-tree ::ng-deep .ant-tree-switcher-icon{font-size:inherit}.ant-tree ::ng-deep .ant-tree-checkbox{color:inherit}.ant-tree ::ng-deep .ant-tree-checkbox-checked .ant-tree-checkbox-inner:after{border-color:#1890ff}.ant-tree ::ng-deep .ant-tree-switcher-noop>i{display:none}.ant-tree ::ng-deep .ant-tree-node-content-wrapper.ant-tree-node-selected,.ant-tree ::ng-deep .ant-tree-node-content-wrapper:hover{background-color:var(--selected-background)}::ng-deep .ant-tree.ant-tree-nodeBgCustom .ant-tree-node-content-wrapper{flex:1}::ng-deep .ant-tree.ant-tree-nodeBgCustom nz-tree-node-switcher{width:16px}.custom-node{display:flex;align-items:center;white-space:nowrap;background-repeat:no-repeat;background-size:180px 8px;background-position:0 bottom}.searchBox{position:relative;margin-bottom:20px}.searchBox .search-input{line-height:32px;height:32px;color:#7a8799;outline:none;box-shadow:none}.searchBox i.anticon{width:16px;height:16px;color:#8f9ab3;position:absolute;top:10px;right:10px}.warp-tree{flex:1;overflow:auto}.warp-tree::-webkit-scrollbar-thumb{background-color:var(--treeScrollbar-thumb-background,\"#ddd\")!important}.warp-tree::-webkit-scrollbar-corner{background-color:transparent}.folder-name{flex:1}.node-count{color:hsla(0,0%,100%,.8)}.node-count.noCount{color:#7a8799}"]
11772
11806
  },] }
11773
11807
  ];
@@ -11776,6 +11810,7 @@ TreeControlComponent.ctorParameters = () => [
11776
11810
  { type: ElementRef }
11777
11811
  ];
11778
11812
  TreeControlComponent.propDecorators = {
11813
+ tree: [{ type: ViewChild, args: ['tree',] }],
11779
11814
  renameInput: [{ type: ViewChild, args: ['renameInput',] }]
11780
11815
  };
11781
11816
  __decorate([
@@ -11790,6 +11825,20 @@ __decorate([
11790
11825
  Property('复选框', { type: 'boolean' }),
11791
11826
  __metadata("design:type", Object)
11792
11827
  ], TreeControlComponent.prototype, "checkable", void 0);
11828
+ __decorate([
11829
+ Property('输出格式', {
11830
+ type: 'string',
11831
+ enum: [
11832
+ { label: '数组', value: 'array' },
11833
+ { label: '字符串', value: 'string' },
11834
+ ],
11835
+ ui: {
11836
+ widget: 'select',
11837
+ visibleIf: { checkable: [true] },
11838
+ },
11839
+ }),
11840
+ __metadata("design:type", Object)
11841
+ ], TreeControlComponent.prototype, "outputType", void 0);
11793
11842
  __decorate([
11794
11843
  Property('选择完全受控', {
11795
11844
  type: 'boolean',
@@ -11835,7 +11884,7 @@ __decorate([
11835
11884
  type: 'string',
11836
11885
  ui: {
11837
11886
  widget: 'myUpload',
11838
- }
11887
+ },
11839
11888
  }),
11840
11889
  __metadata("design:type", Object)
11841
11890
  ], TreeControlComponent.prototype, "nodeDefaultIcon", void 0);
@@ -11844,7 +11893,7 @@ __decorate([
11844
11893
  type: 'string',
11845
11894
  ui: {
11846
11895
  widget: 'myUpload',
11847
- }
11896
+ },
11848
11897
  }),
11849
11898
  __metadata("design:type", Object)
11850
11899
  ], TreeControlComponent.prototype, "nodeBackground", void 0);
@@ -11861,7 +11910,7 @@ __decorate([
11861
11910
  type: 'string',
11862
11911
  ui: {
11863
11912
  widget: 'myUpload',
11864
- }
11913
+ },
11865
11914
  }),
11866
11915
  __metadata("design:type", Object)
11867
11916
  ], TreeControlComponent.prototype, "nodeCheckedBackground", void 0);
@@ -11877,8 +11926,8 @@ __decorate([
11877
11926
  Property('搜索框颜色', {
11878
11927
  ui: {
11879
11928
  widget: 'myColor',
11880
- visibleIf: { showSearch: [true] }
11881
- }
11929
+ visibleIf: { showSearch: [true] },
11930
+ },
11882
11931
  }),
11883
11932
  __metadata("design:type", Object)
11884
11933
  ], TreeControlComponent.prototype, "searchBorderColor", void 0);
@@ -11886,8 +11935,8 @@ __decorate([
11886
11935
  Property('搜索框背景色', {
11887
11936
  ui: {
11888
11937
  widget: 'myColor',
11889
- visibleIf: { showSearch: [true] }
11890
- }
11938
+ visibleIf: { showSearch: [true] },
11939
+ },
11891
11940
  }),
11892
11941
  __metadata("design:type", Object)
11893
11942
  ], TreeControlComponent.prototype, "searchBackgroundColor", void 0);
@@ -11895,8 +11944,8 @@ __decorate([
11895
11944
  Property('搜索框提示语', {
11896
11945
  type: 'string',
11897
11946
  ui: {
11898
- visibleIf: { showSearch: [true] }
11899
- }
11947
+ visibleIf: { showSearch: [true] },
11948
+ },
11900
11949
  }),
11901
11950
  __metadata("design:type", Object)
11902
11951
  ], TreeControlComponent.prototype, "searchPlaceholder", void 0);
@@ -11904,7 +11953,7 @@ __decorate([
11904
11953
  Property('滚动条颜色', {
11905
11954
  ui: {
11906
11955
  widget: 'myColor',
11907
- }
11956
+ },
11908
11957
  }),
11909
11958
  __metadata("design:type", Object)
11910
11959
  ], TreeControlComponent.prototype, "treeScrollbarThumbBackground", void 0);
@@ -11915,11 +11964,15 @@ __decorate([
11915
11964
  key: { type: 'string', title: 'id' },
11916
11965
  parentKey: { type: 'string', title: '父级id' },
11917
11966
  icon: { type: 'string', title: '图标' },
11918
- count: { type: 'string', title: '数量' }
11967
+ count: { type: 'string', title: '数量' },
11919
11968
  },
11920
11969
  }),
11921
11970
  __metadata("design:type", Object)
11922
11971
  ], TreeControlComponent.prototype, "data", void 0);
11972
+ __decorate([
11973
+ DataInput('选中值'),
11974
+ __metadata("design:type", Object)
11975
+ ], TreeControlComponent.prototype, "value", void 0);
11923
11976
  __decorate([
11924
11977
  DataOutput('选中id'),
11925
11978
  Event('选中值改变', { params: 'id' }),
@@ -11936,7 +11989,7 @@ __decorate([
11936
11989
  Method('选中'),
11937
11990
  __param(0, Param('id')),
11938
11991
  __metadata("design:type", Function),
11939
- __metadata("design:paramtypes", [String]),
11992
+ __metadata("design:paramtypes", [Object]),
11940
11993
  __metadata("design:returntype", void 0)
11941
11994
  ], TreeControlComponent.prototype, "select", null);
11942
11995
  __decorate([